lzmtxp99
级别: 家园常客
精华主题: 0
发帖数量: 506 个
工控威望: 730 点
下载积分: 2103 分
在线时间: 535(小时)
注册时间: 2010-12-16
最后登录: 2026-03-05
查看lzmtxp99的 主题 / 回贴
楼主  发表于: 22天前
最近用西门子S7-1200用了MODBUS RTU与智能设备通信,同时用了MODBUS TCP与上位机通信,但是有一个问题就是MODBUS RTU有一个访问地址40001没法替换,只能用这个地址,同时MODBUS TCP的访问的起始地址也是从40001开始的,就像问下这两个通信的起始地址是不是同一个,还有就是MODBUS TCP的起始地址能不能改到400001?
格林
我听到了花开的声音,也看到了花落的结局.
级别: 工控侠客
精华主题: 0
发帖数量: 161 个
工控威望: 3418 点
下载积分: 3782 分
在线时间: 62(小时)
注册时间: 2011-06-08
最后登录: 2026-03-23
查看格林的 主题 / 回贴
1楼  发表于: 6天前
MODBUS-RTU的报文格式是:站号+功能码+起始地址+连续地址长度+CRC校验码。
同时读取多个从站的40001寄存器的时候是通过站号区分的。
MODBUS-TCP协议是将MODBUS-RTU的报文内容嵌入到TCP数据帧中并取消了CRC校验码,例如MODBUS-RTU的主站报文为:01 03 00 00 00 01 84 0A   01是站号,03是功能码,00 00是起始地址,00 01是连续地址长度,84 0A是CRC校验码。
那么在TCP报文中也能找到01 03 00 00 00 01这串数字
格林
我听到了花开的声音,也看到了花落的结局.
级别: 工控侠客
精华主题: 0
发帖数量: 161 个
工控威望: 3418 点
下载积分: 3782 分
在线时间: 62(小时)
注册时间: 2011-06-08
最后登录: 2026-03-23
查看格林的 主题 / 回贴
2楼  发表于: 前天
通过MODBUS-RTU或MODBUS-TCP访问西门子的MODBUS地址是一样的,MODBUS-RTU走的是485总线,MODBUS-TCP走的是网线,在MODBUS-TCP报文中有一部分字节内容与MODBUS-RTU的字节内容相同,只是去掉了CRC校验码。