首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Modbus-TCP中读取不同元素

从Modbus-TCP中读取不同元素
EN

Stack Overflow用户
提问于 2016-04-05 14:27:39
回答 1查看 1.8K关注 0票数 0

我试图弄清楚如何从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

代码语言:javascript
复制
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读取不同的元素吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-05 19:47:30

因此,我找到了一个读取特定元素(奴隶)的解决方案。通过简单的modbustcp,您可以更改modbus客户端的UnitIdentifier。

代码语言:javascript
复制
modbusClient.UnitIdentifier = 3;

这将使任何读到modbus客户端从第三个元素读取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36429252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档