您好!欢迎光临工博士智能制造网!平台热线:021-80392549
工博士机器人网
ABB机械手配件经销商
产品:75  浏览:173468
3
您当前的位置:首页 » 新闻中心 » ABB西门子PLC发送实时位置数据的方法
产品分类
新闻中心
ABB西门子PLC发送实时位置数据的方法
发布时间:2021-04-26        浏览次数:1467        返回列表


在ABB机器人系统集成项目中,由于控制要求,我们需要监控机器人的实时位置,这就要求机器人将当前的位置数据实时发送给主控系统。对于不同的主控系统,机器人发送当前位置数据的方式多种多样。如果用PC作为上位机读取机器人的实时位置信息,那么我们可以利用IRC5 OPC服务器读取机器人的位置数据,然后发送给PC上位机。

当然,机器人控制器也可以通过PC SDK进行二次开发,然后通过PC Interface选项直接读取控制器中机器人的位置信息。如果用PLC作为上位机读取机器人的实时位置信息,那么我们可以使用工业现场通讯,比如ProfiBus、ProfiNet、DeviceNet等。,然后利用ABB机器人内置的数据处理指令编写实时位置数据发送程序,实现机器人的位置数据发送。


变量声明


机器人的当前位置是刀具末端的当前位置,即TCP的当前坐标,由X,Y,Z的坐标值和绕X,Y,Z轴旋转的角度值分别组成。这些数据的类型都是实数。ABB机器人中,num和dnum用于表示实数,其中num类型与西门子PLC中的实数类型一致,均为32位单精度实数;而dnum类型数据是64位双精度实数。因此,在机器人中,我们可以声明num变量来存储机器人的当前位置数据。同时,其他类型的数据变量被声明为数据处理的中间转换变量。


组输出信号配置


ABB机器人可以通过两种方式传输真实数据:第 一,利用模拟输出信号传输真实数据。由于模拟信号抗干扰性能差,需要安装昂贵的模数信号扩展模块,在传输大量真实数据时很少使用模拟信号;第二,组输出信号用于传输真实数据。组输出信号不仅可以通过安装相对便宜的数字I/O信号扩展模块来实现,还可以通过安装现场通信模块来实现。在本例中,第二种方法用于以ProfiBus现场总线通信的形式传输机器人的当前位置数据。


由于机器人的当前位置数据都是32位单精度实数,所以我们定义的每组输出信号长度也应该是32位。



中断子程序写入


创建中断子程序,编写程序读取机器人当前位置的X,Y,Z坐标数据。由于ABB机器人系统使用四元数表示TCP绕相应坐标轴的旋转角度,因此需要使用EulerZYX指令将四元数表示的角度数据转换成欧拉角表示的旋转角度数据。


发送机器人当前位置数据子程序的编写


创建一个子程序发送机器人当前位置数据,在中断子程序中调用。首先,使用PackRawBytes指令将读取的机器人当前位置数据打包为浮点形式,然后存储在rawbyte类型容器变量的声明的四个连续字节中。


然后使用FOR指令进行循环解包操作,即将打包的数据解包到声明的字节型四维数组变量中,每个字节对应数组变量中的一维字节元素。


由于西门子PLC中的数据采用大端存储方式,而ABB机器人中的数据采用小端存储方式,为了让PLC能够正确分析发送的数据,我们需要对机器人的位置数据进行移位。所谓大端模式,是指数据的高字节存储在内存的低地址,而数据的低字节存储在内存的高地址,地址从小到大递增,数据从高到低放置.

小端模式意味着数据的高字节存储在内存的高地址,而数据的低字节存储在内存的低地址。这种存储模式有效地将高位和低位地址与数据位的权重相结合。高地址部分的权重高,低地址部分的权重低,这与我们的逻辑方法一致。


ABB机器人当前位置数据的移位操作,首先通过NumToDnum指令将解包后的字节型数据转换为dnum型,然后按照西门子PLC中实型数据的高低字节顺序进行移位操作,数据移位指令使用BitLShDnum。同时,四个移位的字节类型数据由BitOrDnum指令进行逻辑或运算,以重建32位单精度数据,该数据存储在声明的Dnum类型变量中。当然,这种移位操作也可以在PLC中实现。


而后,利用setgo指令将转换后的机器人当前位置数据分配给相应的组输出信号,然后发送给PLC。




更多了解ABB机器人

 

联系热线:156 0178 5639 联系人:李经理 联系地址:上海市宝山区富联一路98弄6号

技术和报价服务:星期一至星期六 8:00-22:00 ABB机械手配件经销商