很久以来使用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了,写的不正确的请指正海涵。
楼主最近还看过