在最近项目需要用到ABB机器人和西门子 plc进行数据传输,ABB机器人控制柜上自身带有一个16输入16输出的IO板子,简单的bool量通讯,直接用通过IO接线就可以实现。想要更加方便的传输数据,就可以用到PROFINET通讯。在abb信号传输数据类型支持Digital Input\Output及Analog Input\Output,还有Group Input\Output. 项目上需要的传输数据是±360°内的任意角度值,然后精度需要小数点两位。为了实现这一功能,采用了两个数据类型,一个bool量用数值正负的判断,两个数据类型是Group用于传输角度数据。把传输角度数据除以100,用于实现小数精度。 下面的是ABB机器人中的程序,GI600是组输入信号名称,然后Reg600是机器人中num类型的信号名称,IN100是个bool变量数据。Reg601则是机器人本身可以用到数据。 Reg600:=GI600; IF IN100=0 THEN Reg601:=reg600/100; ELSE Reg601:=-reg600/100; ENDIF 同样的方法, 西门子plc侧的数据也要经过处理,才能用于传输,把正数用单独的bool量的0表示,负数则赋值成1。然后把角度数值放大100倍,转换成整数。 依次类推,好多情况在不支持负数及小数传输的数据类型下,都可以运用此原理进行转换。 希望对接触做PLC和ABB机器人的项目 工控人能够提供到一点帮助,当我自己也是想好久,因为查了好久的资料也没有找到直接的解决方法。在大家的故事中,也学习到了大家分享的经验,对一些平时不懂,或者未接触到的,有的一个新的认知。 来源:西门子工业技术论坛 |