modbus RTU 通讯的寄存器地址,与报文发送地址关系

现在在测试   S7 200,224XP  PLC通过RS485通讯与能量表通讯,PLC做主站,能量表做从站,PLC读能量表的数据。  能量表本身是M-BUS协议,通过一个转换硬件,变成标准的RS485。
通讯线:2芯屏蔽双绞线。
硬件接口:RS-485 
波特率:默认:9600 bps 
字节格式 默认:
起始位(1bit)+数据位(8bit)+偶校验(1bit)+停止位(1bit) 根据客户要求修改
传输模式:RTU 
MDU地址:1~247 
功能码:02H 03H 06H 10H 
CRC:CRC-16     (这个是能量表转化后的协议)。
但他们发来的地址是报文形式的,看不懂找不到地址啊

我想用西门子200的库编写的程序,其他都好了,就只有那个adr  不知道。如下图红色的地方。

能量表厂家发来
//命令 03 收发的报文格式: (读)
*pc-->mcu: 从机地址(1Byte)+ 功能码(1Byte)+ 起始地址(2By t e)+ 数据度(2By t e)+  CRC 码(2Byte) 
*mcu-->pc:从机地址(1Byte)+功能码(1Byte)+字节数(1By t e)+寄存器数据 1(2By te)+…..+  寄存器数据 n(2Byte)+ CRC 码(2By t e)

1、读取温度值带两位小数的情况
//命令 03H:实现读取“供水温度”数值
发送:01 03 40 20 00 01 90 00 
接收:01 03 02 89 D8 DF 8E 
解析:
供水温度 = 25.20℃ = 0x89D8&0x7FF;
0x89D8&0x8000=0x1000,最高位为1表示两位小数,即数值扩大100倍。
//命令 03H:实现读取“回水温度”数值
发送:01 03 40 21 00 01 C1 C0 
接收:01 03 02 89 EF 9E 58 
解析:
回水温度 = 25.43℃= 0x89EF&0x7FF;
0x89EF&0x8000=0x1000,最高位为1表示两位小数,即数值扩大100倍。


问题是正规的modbus  寄存器地址是40001开始的啊,可是报文中的供水温度地址是   4020H,   转化成10进制是16416.  这就不对了啊,求   就比如供水温度  我在库调用的块中   地址填什么  。还是这个库不能用,  只能用自由口自己编程。

图片说明:

modbus RTU 通讯的寄存器地址,与报文发送地址关系    modbus RTU 通讯的寄存器地址,与报文发送地址关系   

最佳答案

看了您的截图1和说明,归纳起来其实是地址错误。
1. 您用了modbus通信的03功能码,读或写对应的是保持寄存器地址40001-49999。因此您截图中的modbus指令中Addr不能直接写289。必须填写的是modbus通信额保持寄存器地址才行。
2. 报文中的供水温度地址是4020H, 转化成10进制是16416.也许会用到modbus的扩展地址,地址范围为 400001 - 465536

3.关于S7-200 CPU如何访问大于 9999 的保持寄存器地址, 可以看看以下的说明

通常 modbus 协议的保持寄存器地址范围在 40001 - 49999 之间。对于多数应用来说已经够了。但有些 modbus 从站把地址映射到保持寄存器区的地址超过 9999 的部分。
S7-200 modbus Master 协议库支持超过 9999 的保持寄存器地址。地址范围为 400001 - 465536。只需在调用 MBUS_MSG 子程序时给 Addr 参数赋相应的值即可,例如 416768。

提问者对于答案的评价:
后来也这样弄好了

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc203994.html

(2)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月1日 下午7:16
下一篇 2017年11月1日 下午7:16

相关推荐

  • S7-200和S7-200SMART的异同点

    请教下各位老师,S7-200和S7-200smart有什么区别?编程指令及功能价格等等 最佳答案 区别很大S7-200需要编程电缆,就目前网络时代,还是比较落后,S7-200SMA…

    SIMATIC S7-200 2021年7月5日
  • 双子累加的复位

    LD     SM0.4 EU INCD   MD0 LDD>=…

    SIMATIC S7-200 2021年7月5日
  • STEP7-Micro/WIN 4.0SP W7 64位系统在编译程序时出错

    请输入详细STEP 7-Micro/WIN系统错误系统错误:为内部决策比较数据出现一个意外的错误。我们建议您用另一个文件名保存您的项目,然后退出并重新启动程序。确认后出现…

    SIMATIC S7-200 2021年7月5日
  • s7-200与计算机通讯问题

    我是个新手,我在S7-200和计算机连接时总是连接不上,显示一些错误,我以前用一个RS232转USB在通讯端口上试了一下,后来发现端口很热,我拔下来了,现在,我买了下载下载线可是连…

    SIMATIC S7-200 2020年11月1日
  • 西门子S7-226需要消耗多大的电流

    西门子S7-226需要消耗多大的电流?或者说,需要给226提供多大的电源 最佳答案 看看这个你就知道了。http://www.ad.siemens.com.cn/products/…

    SIMATIC S7-200 2020年11月1日
  • 定时器疑惑

    定时器自己复位不了自己,怎么回事LDN    T37TON    T37, 50LD&nb…

    SIMATIC S7-200 2020年11月1日
  • 专家跪求,谢谢。我刚刚学这。感激不尽。

    怎样在PLC编程软件里检测我编的程序是否成功 问题补充:有没有可以在梯形图上以能流的方式看见的。我看见过别人的可以在电脑上看见一条绿色的线代表电流通了。灰色就是还没有到的地方。能流…

    SIMATIC S7-200 2021年7月4日
  • 200 SMART 485接口能不能同时接两个外设

    超级菜鸟跪求:200 SMART 485接口能不能同时接两个外设,如果不能是不是要添加扩展485模块,如果可以具体又怎么操作,跪谢 问题补充:谢谢各位大侠的回复…

    SIMATIC S7-200 2021年7月5日
  • 奇偶错误

    用笔记本在线监控PLC200程序,弹出对话框内容为:"硬件检测到一个奇偶错误",请问各位高手,这是什么原因,该如何解决?谢谢! 最佳答案 应该是PG/PC通讯的…

    SIMATIC S7-200 2021年7月4日
  • 求助大神门

    怎样让plc接收电脑发送的数据 最佳答案 我的理解是PLC与上位机通信,比如wincc,组态王等 提问者对于答案的评价:谢谢!

    SIMATIC S7-200 2021年7月5日