• 大小: 8.68MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-04-06
  • 语言: Java
  • 标签: Modbus  ModbusTCP  modbusRTU  

资源简介

通过modbus协议读取和写入寄存器数据java详细demo,如果是modbus TCP只需要看com.rib.cdm.utils.ModbusTcpUtils这个类就行了,这个类是详细的读取以及写入demo。如果需要modbus RTU,那么只需要看com.dn9x.modbus.controller.WriteToModbus这个类就行了,这个是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网络上从站地址
    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();
        // 设定MODBUS通讯的串行口
        serialParameters.setCommPortId(“COM3“);
        // 设定成无奇偶校验
        serialParameters.setParity(0);
        // 设定成数据位是8位
        serialParameters.setDataBits(8);
        // 设定为1个停止位
        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();
        }
    }

    /**
     * 读开关量型的输入信号
     * 
     * @param master
     *            主站
     * @param slaveId
     *            从站地址
     * @param start
     *            起始偏移量
     * @param len
     *            待读的开关量的个数
     */
    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();
        }
    }

    /**
     * 读保持寄存器上的内容
     * 
     * @param master
     *            主站
     * @param slaveId
     *            从站地址
     * @param start
     *            起始地址的偏移量
     * @param len
     *            待读寄存器的个数
     */
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           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.xml
     文件        1247  2017-07-13 15:04  modbus\modbus\.idea\artifacts\modbus_war_exploded.xml
     文件        1188  2017-07-13 15:04  modbus\modbus\.idea\compiler.xml
     目录           0  2017-08-16 15:20  modbus\modbus\.idea\copyright\
     文件          76  2017-07-13 15:03  modbus\modbus\.idea\copyright\profiles_settings.xml
     文件         301  2017-08-16 14:26  modbus\modbus\.idea\encodings.xml
     目录           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.xml
     文件         564  2017-07-13 15:04  modbus\modbus\.idea\libraries\Maven__com_serotonin_serotonin_timer_2_0_6.xml
     文件         564  2017-07-13 15:04  modbus\modbus\.idea\libraries\Maven__com_serotonin_serotonin_utils_2_1_7.xml
     文件         572  2017-07-13 15:04  modbus\modbus\.idea\libraries\Maven__commons_logging_commons_logging_1_1_1.xml
     文件         556  2017-07-13 15:04  modbus\modbus\.idea\libraries\Maven__org_apache_commons_commons_lang3_3_0.xml
     文件        1185  2017-07-13 15:07  modbus\modbus\.idea\misc.xml
     文件         252  2017-08-10 18:03  modbus\modbus\.idea\modules.xml
     文件       65006  2017-08-16 14:34  modbus\modbus\.idea\workspace.xml
     文件        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.xml
     文件          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个文件信息

评论

共有 条评论