我正在试图弄清楚如何从modbus设备(Powerscout 24)中读取不同元素的不同值。手册here表示
解决元素
PowerScout 24有八个元素。每个使用Modbus和BACnet 在PS24上指定元素的不同方法。在Modbus模式下, 十进制网络开关设置计量元素的基址 “A.”计量元素“B”到“H”将始终具有Modbus 地址比之前的元素高一个。例如,如果 旋转地址开关设置为001然后计量元件“A” 寄存器值将在Modbus地址001,元素“B”访问 寄存器将在Modbus地址002,元素“C”at处访问 地址003,等等。
根据我的理解,如果我想读取元素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读取不同的元素吗?
答案 0 :(得分:0)
所以我找到了解读特定元素(Slaves)的解决方案。从easy modbustcp中,您可以更改modbus客户端的UnitIdentifier。
modbusClient.UnitIdentifier = 3;
这将使对modbus客户端的任何读取从第3个元素读取。