modbus tcp通讯 modbus4j java实现

modbus协议内容网上已经很齐全了,这里就不赘述了。(此篇文章根据网上已有内容整理)

核心依赖: modbus4j-3.0.4-SNAPSHOT.jar

  • modbus tcp slave

1.获取tcp slave 

//springboot项目实现CommandLineRunner类和@Component注解,程序启动时就加载tcp slave
@Component
public class Slave implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        createSalve();
    }

    private void createSalve() {
        //创建modbus工厂
        ModbusFactory modbusFactory = new ModbusFactory();
        //创建TCP服务端
        final ModbusSlaveSet salve = modbusFactory.createTcpSlave(true);
        //向过程影像区添加数据
        salve.addProcessImage(Register.getModscanProcessImage(1));
        //获取寄存器
        salve.getProcessImage(1);
        try {
            salve.start();
        } catch (ModbusInitException e) {
            e.printStackTrace();
        }
    }

}

 2.创建线圈和寄存器

public class Register {
    static BasicProcessImage getModscanProcessImage(int slaveId) {
        BasicProcessImage processImage = new BasicProcessImage(slaveId);
        processImage.setInvalidAddressValue(Short.MIN_VALUE);
        //创建可读写开关量
        processImage.setCoil(0, true);
        processImage.setCoil(1, false);
        processImage.setCoil(2, true);
        processImage.setCoil(3, false);
        processImage.setCoil(4, true);
        processImage.setCoil(5, false);
        processImage.setCoil(6, true);
        processImage.setCoil(7, true);
        processImage.setCoil(8, true);
        processImage.setCoil(9, true);

        //创建只读开关量
        processImage.setInput(0, false);
        processImage.setInput(1, false);
        processImage.setInput(2, true);
        processImage.setInput(3, false);
        processImage.setInput(4, true);
        processImage.setInput(5, true);
        processImage.setInput(6, true);
        processImage.setInput(7, false);
        processImage.setInput(8, true);
        processImage.setInput(9, true);

        //创建 保持寄存器
        processImage.setHoldingRegister(0, (short) 1);
        processImage.setHoldingRegister(1, (short) 10);
        processImage.setHoldingRegister(2, (short) 100);
        processImage.setHoldingRegister(3, (short)
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值