我试图弄清楚如何从modbus设备(Powerscout 24)中读取不同元素的不同值。有一个手册这里,上面写着
寻址元素 PowerScout 24有八个元素。Modbus和BACnet各自使用不同的方式在PS24上指定一个元素。在Modbus模式下,十进制网络交换机设置计量元件“A”的基地址。计量元素“B”通过“H”将始终具有一个高于前面元素的Modbus地址。例如,如果将旋转地址开关设置为001,则将在Modbus地址001访问计量元件“A”寄存器值,在Modbus地址002访问元素“B”寄存器,在地址003访问元素“C”等。
因此,根据我的理解,如果我想读取元素A(或奴隶1)的寄存器4012的值,我会在4012读取持有寄存器。
如果我想读元素B,寄存器是4013?但这怎么可能,4013是用于一个不同的值-位移PF系统。(请查阅第65页的顶部)
我试过使用这个库EasyModbusTCP
ModbusClient modbusClient = new ModbusClient("192.168.1.250", 502); //Ip-Address and Port of Modbus-TCP-Server
modbusClient.Connect();
int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(4000,1);
//Read 10 Holding Registers from Server, starting with Address 1我对此进行了测试,它的工作原理是它只能读取元素A(从1)的寄存器。我还没有弄清楚如何读取其他元素的寄存器。
我检查了库的另一部分(RTU -从串口读取),这定义了一个从读取,但我需要通过TCP读取设备,而不是串行,所以我不能这样实现它。
有人能解释我如何通过TCP读取不同的元素吗?
发布于 2016-04-05 19:47:30
因此,我找到了一个读取特定元素(奴隶)的解决方案。通过简单的modbustcp,您可以更改modbus客户端的UnitIdentifier。
modbusClient.UnitIdentifier = 3;这将使任何读到modbus客户端从第三个元素读取。
https://stackoverflow.com/questions/36429252
复制相似问题