登录
首页 PLC论坛 施耐德电气PLC
回帖 发帖
正文

主题:在PLC论坛聊一聊树莓派(七)-TCP-Modbus

点击:1798 回复:18

前面的帖子,基本说完了树莓派Codesys功能的全景图,但一些协议的详细配置没细讲。
看到有朋友对TCP-Modbus的使用感兴趣,本帖详细讲一下。
TCP-Mobus作为施耐德产品的主力协议,应用还是很广泛的,在现场做一些PLC间的通讯和HMI通讯,还是很方便的。
协议的工作原理我在之前现场总线的帖子介绍的比较多,当然也是因为比较简单而且开放,所以很多设备都支持。
Codesys配置TCP-Modbus,一样不外乎以下参数:
通道(使用哪个网卡,一般通过本地IP地址等参数来识别)
主设备数据地址(读来的数据存在哪里)
从设备地址(IP),从设备ID(多数是1,多台的要单独设置)
从设备数据地址(从从设备的哪些寄存器地址读数据)
超时/错误/状态等数据,以方便做错误处理,工业场合,这些是一定要考虑的,否则会出大事的。
首先配置通道,这个是以太网,而且你要告诉Codesys你用的是哪块网卡
附件 image.jpg
在以太网的通用设置里,接口点旁边的 ... 按钮,可以看到你的树莓派的所有网卡,一般用eth0,IP设置已经自动从操作系统取过来了。
其他设置用默认值即可,正确的做法,是把诊断数据块也适当处理,这样用户在通讯中断是可以很快找到原因,方便维护。
Ethernet下面可以挂各种协议,像Ethernet/IP,CAT等,TCP-Modbus主站只是其中一种协议。
再点开TCP-Modbus Master,
基本用默认配置就可以,这里会设置响应时间,超时等,现场根据情况调整,测试无所谓。
一个重要的参数是:自动重新连接, 默认不选中,是基于安全考虑的,现场使用还是选上方便,但自动连接可能让一些网络问题不好被发现,使用的时候一定要清楚后果。
附件 image.jpg
设好主设备,再设从设备,
从设备的通用设置有IP地址,超时,端口一般是502,不要动。超时也不要动,除非你对以太网的工作原理非常熟悉:
附件 image.jpg
通过上面的设置,树莓派已经知道从哪个网卡,通过什么协议,到哪个从设备的502端口读取数据了,但读哪些数据呢? 就要通过Modbus从站通道来设置了:
附件 image.jpg
Codesys的这个驱动还是非常强大的,功能强大了,就要求使用的人也具备相当的知识,增加通道时可以看到可以选择函数代码(功能码),参见我之前的帖子,学会3读16写就包打天下了,高手可以尝试23,一个数据包搞定读写,效率加倍。
这里面的错误处理:保持最后值和清零的设置一定要小心,根据现场需要,兼顾安全和稳定的要求来设置。
设置完这些,就差最后一个问题:读来的数放哪里? 通过从设备IO映射来把读到的数据放到需要的变量即可:
附件 image.jpg
其他的设置一般默认即可,除非有特殊需要。当然,不明白的地方不要乱动,免得意外惊喜。
20-05-15 14:50
楼主,树莓派做modbus TCP Slave的例子有吗,研究很很久,一直没找出地址的对应关系。
20-05-15 16:11
都在从设备设置里啊,每个“通道”其实是一条读写指令,长度确定多少寄存器。 然后在从站IO映射里,填上对应的变量就好了,你愿意用数组就配置方便,一次就填好了,用的时候按下标用就行,直接逐个填写变量更好,都不用移动了。。。。就是这样啊。你可以用一个仿真PLC来测试,让树莓派读写PC上的仿真PLC的数据。
20-05-15 16:58
哦,你说做slave啊?我试试。上面说的是做主。
20-05-15 16:59
树莓派做主站,下位机从站,总线失败,找不到问题。
20-05-15 17:09
附件 微信图片_20200515170840.jpg
树莓派做主站,下位机从站,总线失败,找不到问题。
20-05-15 17:14
附件 1.jpg
附件 3.jpg
附件 2.jpg
20-05-15 17:15
eth1? 你点接口旁边的。。。, 看看都显示哪些网卡,你有第二块网卡?一般是eth0
20-05-15 20:39
eth1是我用的绿联的USB转网口扩展的,莫非是这个不支持?
20-05-16 08:01
我是用eth0做通的。按说是可以的。你是从显示的窗口选的eth1的话应该可以,说明系统检测到了。要是自己输入的就不一定了。另外你到ModbusTCPSlaveIEC对象里,看那个Diag变量的内容,里面有详细的状态显示,应该可以判断问题的原因。
20-05-16 10:26

上一页下一页

工控新闻

更多新闻资讯