您现在所在的是:

施耐德电气论坛

回帖:18个,阅读:1803 [上一页] [1] [2] [下一页]
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/15 14:50:00
#0楼
前面的帖子,基本说完了树莓派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

其他的设置一般默认即可,除非有特殊需要。当然,不明白的地方不要乱动,免得意外惊喜。



50
18664371537
文章数:28
年度积分:50
历史总积分:50
品牌积分(施耐德):14
注册时间:2020/5/15
发站内信
发表于:2020/5/15 16:11:22
#1楼
楼主,树莓派做modbus TCP Slave的例子有吗,研究很很久,一直没找出地址的对应关系。
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/15 16:58:02
#2楼
回复 #1楼 18664371537
都在从设备设置里啊,每个“通道”其实是一条读写指令,长度确定多少寄存器。 然后在从站IO映射里,填上对应的变量就好了,你愿意用数组就配置方便,一次就填好了,用的时候按下标用就行,直接逐个填写变量更好,都不用移动了。。。。就是这样啊。你可以用一个仿真PLC来测试,让树莓派读写PC上的仿真PLC的数据。
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/15 16:59:56
#3楼
回复 #1楼 18664371537
哦,你说做slave啊?我试试。上面说的是做主。
50
18664371537
文章数:28
年度积分:50
历史总积分:50
品牌积分(施耐德):14
注册时间:2020/5/15
发站内信
发表于:2020/5/15 17:09:57
#4楼
树莓派做主站,下位机从站,总线失败,找不到问题。
50
18664371537
文章数:28
年度积分:50
历史总积分:50
品牌积分(施耐德):14
注册时间:2020/5/15
发站内信
发表于:2020/5/15 17:14:05
#5楼
附件 微信图片_20200515170840.jpg
树莓派做主站,下位机从站,总线失败,找不到问题。
50
18664371537
文章数:28
年度积分:50
历史总积分:50
品牌积分(施耐德):14
注册时间:2020/5/15
发站内信
发表于:2020/5/15 17:15:14
#6楼
附件 1.jpg

附件 3.jpg



附件 2.jpg
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/15 20:39:38
#7楼
eth1? 你点接口旁边的。。。, 看看都显示哪些网卡,你有第二块网卡?一般是eth0
50
18664371537
文章数:28
年度积分:50
历史总积分:50
品牌积分(施耐德):14
注册时间:2020/5/15
发站内信
发表于:2020/5/16 8:01:10
#8楼
回复 #7楼 FreeTigerMan
eth1是我用的绿联的USB转网口扩展的,莫非是这个不支持?
5190
FreeTigerMan
文章数:555
年度积分:165
历史总积分:5190
品牌积分(施耐德):895
注册时间:2002/9/9
发站内信
发表于:2020/5/16 10:26:05
#9楼
回复 #8楼 18664371537
我是用eth0做通的。按说是可以的。你是从显示的窗口选的eth1的话应该可以,说明系统检测到了。要是自己输入的就不一定了。另外你到ModbusTCPSlaveIEC对象里,看那个Diag变量的内容,里面有详细的状态显示,应该可以判断问题的原因。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005