0

我正在使用 C#、VS2010 读取 MODBUS 设备,我正在开发遥测应用程序,我的设备有数百个地址,我需要在地址 x 读取一些东西,在地址 x+130 读取另一个东西,目前我正在使用下面的代码读取135字节,虽然我只需要两个地址,但效率不高,有没有办法使用一个MODBUS请求读取两个单独的地址?我目前的代码是:

bd[0] = Convert.ToByte("01");
bd[1] = Convert.ToByte("03");
bd[2] = Convert.ToByte("00");
bd[3] = Convert.ToByte("135");
bd[4] = Convert.ToByte("00");
bd[5] = Convert.ToByte("87");
bd[6] = Convert.ToByte("180");
bd[7] = Convert.ToByte("29");
port.Write(bd, 0, 8);

我将这些字节写入连接到 MODBUS 设备的 COM 端口。

4

1 回答 1

3

许多库可以帮助您在 C# 中使用 MODBUS(如果没有特殊原因直接在低级别处理字节?)。如果寄存器一个接一个(如您所见),MODBUS 可以读取单个寄存器或多个寄存器范围,但它不允许您在单个函数调用中读取不是一个接一个的寄存器。您必须为此使用更多的函数调用。这么说,使用 2 个函数调用读取 2 个寄存器然后使用 1 个函数调用读取 135 个字节会更有效(字节数更少,因此速度更快)。最后一点,您在示例中使用的 MODBUS 函数 3 从 1 号从站的寄存器 135 开始读取 87 个寄存器(174 个字节)。根本不是您所描述的您想要它做的事情。

于 2012-05-04T14:04:16.810 回答