如何使用jamod库在Java中实例化Register对象?

时间:2016-06-02 15:51:43

标签: java modbus modbus-tcp

我目前正在使用jamod设置一个小型的工作控制系统。我们正在使用多个PLC,我需要使用MODBUS协议进行通信。我已经能够读取控制器测量的值,但是我没有成功写入控制器(调整安培数)。

我的问题是,如何使用jamod实例化Register对象?

Register[] reg_1 = new Register[5];
        reg_1[0].setValue(16000);

这不起作用。基本上我想将位置0的寄存器值设置为整数16000.我也尝试过使用

reg_1[0].setValue(Integer.parseInt("16000"));

我一直在查看jamod文档,无法找到创建正确的寄存器对象的任何方法,也没有找到如何设置正确的寄存器写入的示例。

如果有人有任何想法,我会非常感激。 :)

1 个答案:

答案 0 :(得分:1)

我明白了。在我的例子中,设置Register []进行写入的正确方法是设置几个由UINT_16组成的SimpleRegister,然后将它们放入Register []数组中,如下所示:

        Register reg1 = new SimpleRegister(48911);
        Register reg2 = new SimpleRegister(23593);
        Register reg3 = new SimpleRegister(48911);
        Register reg4 = new SimpleRegister(23593);

        WriteMultipleRegistersRequest req = new WriteMultipleRegistersRequest(41200,new Register[]{reg1,reg2,reg3,reg4});
        WriteMultipleRegistersResponse res = new WriteMultipleRegistersResponse();

其中41200是注册写入开始的参考点。您可以使用多个金额(即1或100)执行此操作,并相应地调整您的寄存器金额。在我的情况下,我从modbus发送和接收两个8位字,所以每个值有两个寄存器。