首先解释一下SWAP指令
SWAP这个交换指令在指令集中的位置如下
具体作用:
我用红色字体做了标准,相当于做了个比方,PLC的整数通过二进制地址存放时,是从高地址开始的,而KUKA机器人相反,例如,上图中1和2为Q0(Q0.0~0.7)和Q1(Q1.0~1.7),3和4为Q2(Q2.0~2.7)和Q3(Q3.0~3.7),PLC将双整数放入Q地址的时候,以二进制,先从Q3开始的,Q3存满后,存入Q2,依次Q1,Q0。而KUKA机器人处理数据相反,将整数转化为二进制,先从Q0开始,然后依次Q1至Q3。
PLC中实验程序对比如下:例如传输一个整数11,数据类型为16位整数,这里先说明一下,实际项目中KUKA机器人里如果有整数型变量,一般是定义一个16位的组信号存放整数,具体机器人程序中定义如下图所示:
接下来,继续说PLC的程序
同样是11的整数,未经过转换是这样的:
经过转换后11的整数存放如下:
因此,上面两张图对比发现,经过交换指令处理后,KUKA机器人输入端口就可直接读取数据,无需另写程序转换,例如任务号,品规等。
具体项目实例:
首先导入KUKA机器人GSD文件,分配IO
程序处理如下,程序中为SCL语言
QW600是发送给机器人的,是将IW104里的数据,经过了SWAP的交换处理.
之所以分享这份帖子,是之前许多项目中电气工程师和机器人工程师在数据传输的对接工作上,配合存在问题,机器人端口接收到数据但发现不对,PLC调试人员那边解释说已经发送了,相互之间不理解,就会存在误差。
当然处理的方法不止这一种,机器人内部也可以写程序进行转换,或者IO配置的时候就可以交叉配置。方法是多种的,但希望能互相理解这样的问题。另外,不是每种机器人都有类似问题,ABB,FANUC等其他品牌,要视具体情况而定。