0

我目前正在与 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 文档,找不到任何创建正确寄存器对象的方法,也找不到任何有关如何设置要写入的正确寄存器的示例。

如果有人有任何想法,我将不胜感激。:)

4

1 回答 1

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 位字,所以每个值有两个寄存器。

于 2016-06-10T17:52:01.347 回答