| 作者 | 主题 |
|---|---|
|
YiMoon 至圣
经验值:11740 发帖数:1228 精华帖:36 |
楼主
主题:多个IP地址的Modbus TCP通讯注意事项
之前,只会用Modubs RTU,在200,200Smart PLC上,后来用上了1200,刚开始还在坚持用MODBUS TRU,随着使用1200多了,且SIEMENS一网到底的组态,发现modbus TCP很实用(不用再去增加RS485板卡或模块,节省成本),再加上PORTAL集成了Modbus TCP通讯指令,那就更方便了。 刚开始的项目上,使用的通讯还比较简单,都是读写站的多个寄存器地址,期间也拜读了“yming大侠写的关于MODBUS TCP V4.0 使用系列“,很受用。但后来,随着项目的复杂,要求读2块以上的仪表,一些问题就随之而来了。 下面主要是针对多站的注意事项,单站的使用可以参考yiming的帖子和S7-1200 EASY PLUS,里面有相关讲解和轮询的例子。 读写仪表,主要是用到MB_CLIENT块 ,以读写两块表为例: 1.两块表的背景数据块须不一样; 2 两块表的CONNECT参数必须不一样; 3. CONNECT DB块中的ID和IP必须不一样 4.远程端口要和仪表侧一样,一般设定为502
Keep calm and carry on!!!
|
|
shine 至圣 经验值:19820 发帖数:8803 精华帖:39 |
6楼
主题:回复:多个IP地址的Modbus TCP通讯注意事项不一样的理由: 读取2个client,需用到2个client的实例,所以需要不同的背景数据块 client的地址信息保存在connect参数中,而同一个网络中,每个client的地址肯定是不同的,所以需要设置不同的参数 |
|
shine 至圣 经验值:19820 发帖数:8803 精华帖:39 |
11楼
主题:回复:多个IP地址的Modbus TCP通讯注意事项严格的说,应该是IP和PORT的组合不一样就可以了,可以是相同IP,不同PORT。 比如测试的时候,电脑上开两个MODBUS SLAVE软件,IP是相同的,通过不同的PORT进行区别。 在CPU的连接资源之内,可以通过不同的调用实例,同时连接,如果超过,就需要轮询了,轮询可以只调用一个实例,ID不变,通过 断开连接->修改连接参数->连接->读写 这样的循环进行 |
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
15楼
主题:回复:多个IP地址的Modbus TCP通讯注意事项Shine说的没错。 “严格的说,应该是IP和PORT的组合不一样就可以了,可以是相同IP,不同PORT。” 这与普通服务器是一样的。你可以在一台服务器上安装WEB服务,还可以安装 Mail服务、还可以安装 其他服务。它们都是使用同一个IP地址呀。只是端口号不同。 一台装置上的端口号有多少呢? 大约 65500个呢!只不过将502端口默认给了ModBus协议。此外,你也可以使用其他“别人不用的端口来提供 ModBus TCP服务的端口,503,504,505 .。。等等,可以每一个端口提供一种MB服务(就是提供 外部访问不同的数据)。 每一个端口可以接收指定的IP地址访问,也可以接收任意IP地址的访问。(设定访问客户端IP 0.0.0.0即可。)因为这是提供给任意的IP地址访问,所以,当多个客户端请求连接时,需要写好连接时序,客户端收到数据后,也要及时断开连接。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|