資源簡(jiǎn)介
通過(guò)modbus協(xié)議讀取和寫入寄存器數(shù)據(jù)java詳細(xì)demo,如果是modbus TCP只需要看com.rib.cdm.utils.ModbusTcpUtils這個(gè)類就行了,這個(gè)類是詳細(xì)的讀取以及寫入demo。如果需要modbus RTU,那么只需要看com.dn9x.modbus.controller.WriteToModbus這個(gè)類就行了,這個(gè)是modbus RTU的讀寫demo
代碼片段和文件信息
package?com.dn9x.modbus.controller;
import?java.util.Arrays;
import?com.serotonin.io.serial.SerialParameters;
import?com.serotonin.modbus4j.ModbusFactory;
import?com.serotonin.modbus4j.ModbusMaster;
import?com.serotonin.modbus4j.exception.ModbusTransportException;
import?com.serotonin.modbus4j.msg.ReadDiscreteInputsRequest;
import?com.serotonin.modbus4j.msg.ReadDiscreteInputsResponse;
import?com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
import?com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse;
import?com.serotonin.modbus4j.msg.WriteRegistersRequest;
import?com.serotonin.modbus4j.msg.WriteRegistersResponse;
public?class?WriteToModbus?{
????//?MODBUS網(wǎng)絡(luò)上從站地址
????private?final?static?int?SLAVE_ADDRESS?=?5;
????//?串行口波特率
????private?final?static?int?BAUD_RATE?=?9600;
????public?static?void?main(String[]?args)?throws?Exception?{
????????SerialParameters?serialParameters?=?new?SerialParameters();
????????//?設(shè)定MODBUS通訊的串行口
????????serialParameters.setCommPortId(“COM3“);
????????//?設(shè)定成無(wú)奇偶校驗(yàn)
????????serialParameters.setParity(0);
????????//?設(shè)定成數(shù)據(jù)位是8位
????????serialParameters.setDataBits(8);
????????//?設(shè)定為1個(gè)停止位
????????serialParameters.setStopBits(1);
????????serialParameters.setPortOwnerName(“Numb?nuts“);
????????//?串行口上的波特率
????????serialParameters.setBaudRate(BAUD_RATE);
????????ModbusFactory?modbusFactory?=?new?ModbusFactory();
????????ModbusMaster?master?=?modbusFactory.createRtuMaster(serialParameters);
????????try?{
????????????master.init();
????????????readDiscreteInputTest(master?SLAVE_ADDRESS?0?8);
????????????writeRegistersTest(master?SLAVE_ADDRESS?0?new?short[]?{?0x31?0xb?0xc?0xd?0xe
????????????????????0x9?0x8?0x7?0x6?});
????????????readHoldingRegistersTest(master?SLAVE_ADDRESS?0?8);
????????}?finally?{
????????????master.destroy();
????????}
????}
????/**
?????*?讀開關(guān)量型的輸入信號(hào)
?????*?
?????*?@param?master
?????*????????????主站
?????*?@param?slaveId
?????*????????????從站地址
?????*?@param?start
?????*????????????起始偏移量
?????*?@param?len
?????*????????????待讀的開關(guān)量的個(gè)數(shù)
?????*/
????private?static?void?readDiscreteInputTest(ModbusMaster?master?int?slaveId?int?start?int?len)?{
????????try?{
????????????ReadDiscreteInputsRequest?request?=?new?ReadDiscreteInputsRequest(slaveId?start?len);
????????????ReadDiscreteInputsResponse?response?=?(ReadDiscreteInputsResponse)?master.send(request);
????????????if?(response.isException())
????????????????System.out.println(“Exception?response:?message=“?+?response.getExceptionMessage());
????????????else
????????????????System.out.println(Arrays.toString(response.getBooleanData()));
????????}?catch?(ModbusTransportException?e)?{
????????????e.printStackTrace();
????????}
????}
????/**
?????*?讀保持寄存器上的內(nèi)容
?????*?
?????*?@param?master
?????*????????????主站
?????*?@param?slaveId
?????*????????????從站地址
?????*?@param?start
?????*????????????起始地址的偏移量
?????*?@param?len
?????*????????????待讀寄存器的個(gè)數(shù)
?????*/
???
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-08-16?15:20??modbus\
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\
?????文件????????1513??2017-08-21?16:50??modbus\modbus\.classpath
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\.idea\
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\.idea\artifacts\
?????文件?????????299??2017-07-13?15:04??modbus\modbus\.idea\artifacts\modbus_war.xm
?????文件????????1247??2017-07-13?15:04??modbus\modbus\.idea\artifacts\modbus_war_exploded.xm
?????文件????????1188??2017-07-13?15:04??modbus\modbus\.idea\compiler.xm
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\.idea\copyright\
?????文件??????????76??2017-07-13?15:03??modbus\modbus\.idea\copyright\profiles_settings.xm
?????文件?????????301??2017-08-16?14:26??modbus\modbus\.idea\encodings.xm
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\.idea\libraries\
?????文件?????????551??2017-07-13?15:04??modbus\modbus\.idea\libraries\Maven__com_infiniteautomation_modbus4j_2_0_7.xm
?????文件?????????564??2017-07-13?15:04??modbus\modbus\.idea\libraries\Maven__com_serotonin_serotonin_timer_2_0_6.xm
?????文件?????????564??2017-07-13?15:04??modbus\modbus\.idea\libraries\Maven__com_serotonin_serotonin_utils_2_1_7.xm
?????文件?????????572??2017-07-13?15:04??modbus\modbus\.idea\libraries\Maven__commons_logging_commons_logging_1_1_1.xm
?????文件?????????556??2017-07-13?15:04??modbus\modbus\.idea\libraries\Maven__org_apache_commons_commons_lang3_3_0.xm
?????文件????????1185??2017-07-13?15:07??modbus\modbus\.idea\misc.xm
?????文件?????????252??2017-08-10?18:03??modbus\modbus\.idea\modules.xm
?????文件???????65006??2017-08-16?14:34??modbus\modbus\.idea\workspace.xm
?????文件????????1215??2017-08-16?15:07??modbus\modbus\.project
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\.settings\
?????文件?????????575??2017-06-20?21:47??modbus\modbus\.settings\.jsdtscope
?????文件?????????430??2017-06-20?21:47??modbus\modbus\.settings\org.eclipse.jdt.core.prefs
?????文件??????????90??2017-08-16?15:59??modbus\modbus\.settings\org.eclipse.m2e.core.prefs
?????文件?????????659??2017-06-21?15:16??modbus\modbus\.settings\org.eclipse.wst.common.component
?????文件?????????252??2017-06-20?21:47??modbus\modbus\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件??????????49??2017-06-20?21:47??modbus\modbus\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件???????????6??2017-06-20?21:47??modbus\modbus\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????文件??????????50??2017-06-20?21:47??modbus\modbus\.settings\org.eclipse.wst.validation.prefs
?????目錄???????????0??2017-08-16?15:20??modbus\modbus\lib\
............此處省略63個(gè)文件信息
評(píng)論
共有 條評(píng)論