工业码垛机器人笔者所在科研团队开发的新型工业码垛机器人(机构简图如图1所示),其主体机械结构是基于平衡吊原理的七杆机构,具有承载力大、稳定性好、结构紧凑、节省能耗等特点。机器人的动力由四台交流伺服电机提供,分别负责机器人沿水平方向、沿垂直方向的直线运动,绕基座垂直轴的旋转运动和绕抓手转轴的旋转运动。四台电机既可单控,也可群控,大大简化了路径规划算法。
图1 新型工业码垛机器人机构简图
现场总线和CANopen
在工业控制领域,采用现场总线的最大优点是可以节约连接导线、维护和安装费用。同时,现场总线能够传送多个过程变量,而传统的4~20mA控制回路一般只能携带一个过程变量。采用现场总线后,在传输变量过程的同时,仪表的标识符和简单的诊断信息也可一并传送。采用现场总线的设备还具有更好的兼容性和扩展性。几种常见的现场总线性能如表1所示。
由上表可以看出,CAN总线在数据传输方面功能强大、性能优越,另外CAN总线传输速率较快,适用于大批量运动控制信息的实时交换处理。此外,CAN作为一种标准化的嵌入式网络,具有高度灵活的配置能力,从而在工业领域获得广泛应用。
CANopen协议是CAN-in-Automation(CiA)定义的标准之一,在发布后不久就获得了广泛承认。在工业技术十分先进的欧洲,CANopen协议被认为是在基于CAN的工业系统中占据领导地位的标准。依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。CANopen协议使开发人员从CAN相关事务的繁琐处理中解放出来,例如,位定时以及执行相关的功能。它提供了针对实时数据、组态数据以及网络管理数据的标准化通信对象,方便用于面向运动的机器控制网络。
硬件设计与实现
本工业码垛机器人的控制系统采用集散控制结构(见图2),选择高精度、大功率交流伺服电机作为主要执行器件。所选伺服电机电气性能好、响应速度快、变速时间短,具有较高的位置控制精度,为提升机器人的性能水平奠定了基础。需要指出的是,所选电机的伺服驱动器均具有CAN总线控制模式驱动功能且具有CANopen协议所需的完备对象字典,方便了笔者所在科研团队组建机器人运动控制网络。
图2 工业码垛机器人运动控制系统图
在图2所示的工业码垛机器人控制系统中,上位主控机选用PC-104工控机,通过PCI总线连接PCI-CAN适配卡,按CANopen协议标准与交流伺服电机控制器进行通信。下位电机伺服驱动器接受上位机发出的指令语言,按指令要求控制电机转动,由电机带动执行机构完成动作。同时,电机伺服驱动器通过交流电机上的光电编码器检测同步感应电机运动状态,结合预先设定在驱动器中的PI调节参数,实现对电机运动状态的实时控制。
采用驱动器与工控机经由CAN总线和PCI-CAN适配卡连接,主要是基于以下考虑。
1 实现一根双绞线串接全部设备,节省安装维护费用。
2 实时性强,信息可共享,提高多控制器系统的监测、诊断和控制性能。
3 通过离线的任务调度、作业下载以及错误监控等方式,可实现工作人员远程操作。在工业码垛机器人现场应用中增加操作人员的安全系数。
4 CAN现场总线发展较为成熟,可供选择的关联驱动器以及控制卡品种众多,方便产品升级与维护。
统软件设计与实现
对于工业码垛机器人运动控制系统来说,上位主控机的控制程序十分重要,其主要部分可分为三大模块,即1)PC与人对话模块;2)CANopen协议通信模块;3)运动控制模块。通过人机对话模块可以给用户提供友好的控制界面,使用户通过触摸屏实施对机器人的控制,包括码放点、抓取点的合理定位,码放方式和货物数量品种的正确选择等。运动控制模块可计算出所选码放方式下电机所需要的运动控制数据,再通过CANopen协议通信模块对机器人的4个关节节点进行数据传输与反馈接收管理。
机器人CANopen协议通信模块主要功能为接收经过运动控制模块计算出的运动控制数据,将其编译为驱动器可以接收的符合CANopen协议的命令控制字并发送;接收驱动器返回的数据和命令并传送给相应的运动控制模块,若没有接收到伺服驱动器的反馈信息,则继续发送信息给驱动器,超时则转入错误处理模块进行错误显示并报警。
图3 CANopen协议通信程序流程图
实际应用过程中,控制系统CANopen初始化及应用流程如下。
1 电机驱动器初始化设置。设置电机驱动器的控制方式为总线控制方式,电机驱动器的节点ID,系统通信波特率可在电机驱动器的HMI界面中进行设置,也可采用电机驱动器自带的本地调试软件PowerSuit进行本地设置。
2 PCI-CAN适配卡初始化设置。在工控机一侧对PCI-CAN适配卡进行初始化设置,主要设置内容有CAN总线节点个数,波特率,CANopen协议命令的收发方式以及滤波方式等。
工业码垛机器人的运动控制程序主要完成对码垛方式的分解,解算相应驱动电机的运行参数并通过CANopen协议通信模块发送以完成工业码垛机器人的作业动作。具体解算方式因货物形状、码放位置和码放方式有所区别,在此不一一赘述。
错误处理模块的主要功能是接收驱动器返回的错误类型代码,根据电机驱动器厂家定义的对象字典判断所属错误类型并执行对应的错误处理函数或报警。