Modbus TCP/IP 地址到 PLC 地址
Posted
技术标签:
【中文标题】Modbus TCP/IP 地址到 PLC 地址【英文标题】:Modbus TCP/IP Address to PLC Addess 【发布时间】:2021-12-05 11:03:28 【问题描述】: 我想在你在图片中看到的plc地址的两个四位数字之间加0。我应该使用左移吗?
你能帮帮我吗?
PLC 地址 = 404606 --> 我想要值
PLC 地址 = 440606 --> 显示给我的值
【问题讨论】:
截图来自哪个应用程序? Modbus 寄存器为 16 位,因此范围从(物理地址)0 到 65535。有多种写入这些地址的方法;您正在使用的应用程序似乎使用旧的 Modicon 约定,该约定在寄存器前加上命令(4 = 读取保持寄存器)。因为输入 4605 可能会提供所需的结果(有关详细信息,请参阅 this article 中的“当 40001 真正表示 1,或 0 真正表示 1”时)。 【参考方案1】:很好的 Modbus。重新阅读您的问题后,我相信您正在尝试将应用程序地址定位为保持寄存器 404606。编辑控件需要保持寄存器的十进制线偏移(例如,对于 40020,您将输入 19)。
因此,要为 PLC 地址静态文本获取 HR 404606,您需要在 编辑控件 中输入 4605。
【讨论】:
感谢您的回复【参考方案2】:您将应用层地址与有线地址混淆了。 Modbus FC 基本上定义了前导数字(0、1、3 或 4,即线圈、(离散)输入、输入寄存器、保持寄存器)。
所以在应用层,保持寄存器 4001 40001 400001 电线上的一切看起来都“相同”。线路“偏移量”比应用程序“偏移量”小 1(即应用程序层 40001 线路上的偏移量为 0x0000)。无法指定线路上的应用层位数。
我们所做的是坚持使用 5 位数字,当线路偏移量超过 9999(线路上的 0x270F 或更多在应用程序级别为 10000 或更多)时,切换到 6 位应用层地址,即 49999(5位应用层) 下一个 HR 显示为 410000(6 位应用层) 取决于 465536 (65536 偏移量为 0xFFFF 在线上)
在数据包级别没有必要“转移”(如果您是这样想的话)。
【讨论】:
以上是关于Modbus TCP/IP 地址到 PLC 地址的主要内容,如果未能解决你的问题,请参考以下文章
如何通过tcp/ip协议读取西门子s7-300plc地址块的数据
modbus TCP/IP、EtherNet/IP与TCP/IP、以太网通讯是啥关系?