[西门子] 干货分享 | 西门子PLC和EPSON机械手的Modbus通讯

[复制链接]
查看284 | 回复0 | 2024-8-28 19:24:07 | 显示全部楼层 |阅读模式
>很久以来使用EPSON机械手和PLC交互,都是直接购买对应的通讯板卡,这样一来GSD文件一导入对应的通讯地址也就有了,编程方便,通讯可靠。

但是甲方有时候就是那么死抠,为了省那么一点,反正工程师写程序又不花钱,不方便又不是不能用,不稳定又不是干不了。于是开启了这次的modbus之旅。


首先说明一点,modbus TCP不是modbus RTU.这次采用的时TCP的方式,直接接网线的那种。
首先来看下硬件EPSON LS6-B602S,对应的控制器为RC90-B.支持Modbus tcp的通讯方式

介绍了机械手然后说一下PLC,这个没有什么特别的,就是普通西门子plc,这次使用的是一个1515的双网口plc,不要以为很高端,要带13个伺服轴,你就可以想象怎么个极限使用了。


1、机械手设置,首先打开机械手软件RC+7.0,设置IP地址及对应的通讯



设置对应的控制信号地址,打开输入输出可以看到起始地址都是512




如此设置完毕,机械手这边的输入和输出就设置好了。至于机械手程序,很简单了拿到这些交互点,还是不是随便写。


2、介绍PLC这边的设置及程序

说实话找Modbus对应和PLC通讯地址,很多地方都没有说,即使写了的也是很模糊的一张图片。但是足够了。

毕竟只要能通讯上,剩下的自己试试就知道了。
---通讯地址      
这张模糊的地址分布,大致给我们说清了 机械手512开始的地址,对应40032/30032开始的寄存器,而且是以word的形式,这特么不是modbus RTU吗就是?不管了反正不是串口是网口而且是需要设置IP地址,不需要写03,06这类指令,,哈哈哈



于是我们需要在PLC端建立对应的通讯地址

这里我只是需要7个字,如果需要多的继续设置就好。


3、PLC的modbus指令


这块就不过多写这个指令每个引脚的功能了,大家自己去看。总之指令需要指定通讯对象的IP地址及端口号,然后指定是读还是写的模式。读就是读取对方发送的内容,写就是对对象发送控制指令。ok简短解说看程序。


--指定IP地址和端口



--读模式,读取需要的7个word


这里主要注意:mode=0读取,modbus通讯30032输入地址--对应机械手输出第32个word,第64个byte,从512开始的16个位变量。块上对应的数字7代表需要读取的长度。MB_DATA_PTR需要使用P#开头指定的地址,去掉P#直接拖拽DB地址不可以。具体怎么写可以通过指令帮助查看。


---写指令


这个指令和上面的读注意事项一样。
这样把程序下载进去,就可以查看双方发送和接收的数据了。


本来准备想写很多的,真的动手了反而就只想写这些注意点了,自己踩了几个坑,1是P#开头的地址,最后看了帮助文档很久才发现这个问题。2是发送和接收指令的切换条件,开始用1HZ指令切换的,会出现发送没有完成,写又开始的状况,最后干脆两个互锁,交替发送就可以了。
差不多就这样了,大家随便看看,稍微点启发然后试试肯定能弄起来,若有不明白的在留言把。很久没有弄PLC了,写的不正确的请指正海涵。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则