3. MOTOMAN编程环境与通信接口
在视觉引导抓取系统中,MOTOMAN控制器并不是孤立工作的。相机完成识别后,需要把目标位姿、抓取策略或任务指令送到机器人控制器;机器人执行结果、当前位姿、报警状态也要回传给上位机。理解这一层“编程环境与通信接口”,本质上是在理解数据从视觉程序进入运动控制器的通道。MOTOMAN提供了多条通道:面向运动任务的INFORM语言、面向高性能扩展的MotoPlus、面向工业现场总线的Ethernet/IP,以及面向通用软件集成的TCP/IP套接字。它们不是互相替代的关系,而是分别解决不同层级的问题。
INFORM语言:机器人本体的任务描述层
INFORM是Yaskawa/MOTOMAN控制器上的机器人语言,运行在控制器内部,直接描述运动指令、I/O操作、变量运算和程序流程。视觉引导抓取中,INFORM程序通常承担“接收目标位姿—计算抓取点—执行接近、抓取、退出”的任务。它最关键的视觉相关能力,是把外部数据写入位置变量,再以该变量作为运动目标。
例如,视觉系统给出目标在机器人基坐标系下的位姿,可以通过位置变量Pxxx接收。典型写法如下:
' 视觉目标位姿写入 P010(示例)
P010 = P000 ' 先复制一个基准位姿
SET P010 (1) = 420.0 ' X mm
SET P010 (2) = -85.0 ' Y mm
SET P010 (3) = 310.0 ' Z mm
SET P010 (4) = 178.0 ' Rx deg
SET P010 (5) = 0.0 ' Ry deg
SET P010 (6) = 90.0 ' Rz deg
MOVJ P010 VJ=30.0 ' 关节插补接近
MOVL P010 V=120.0 ' 直线到位
DOUT OT#(1) ON ' 夹爪闭合
TIMER T=0.3
MOVL P011 V=80.0 ' 退出到安全点
这里要注意坐标系约定:P变量中的X、Y、Z与Rx、Ry、Rz是相对机器人基坐标或用户坐标的位姿,视觉给出的坐标必须先经过手眼标定矩阵转换,不能直接写入。若使用用户坐标系,应在程序开头用UF#(n)指定,保证全文与图示参照一致。INFORM的优点是实时性好、与运动控制结合紧密;缺点是复杂字符串处理、网络协议解析和大规模逻辑运算能力有限,因此它更适合作为“执行末端”,而不是“通信中枢”。
MotoPlus:控制器内的高性能扩展层
MotoPlus是Yaskawa提供的C语言级开发环境,可在控制器内运行用户任务,直接访问机器人状态、I/O、文件系统和网络接口。它适合做INFORM不擅长的部分:解析上位机报文、维护抓取队列、做坐标变换、与视觉结果做匹配、记录日志。MotoPlus任务与INFORM程序之间可以通过变量、I/O或共享内存交互。一个常见的分工是:MotoPlus负责TCP/IP通信和协议解析,把结果写入指定位置变量;INFORM负责等待信号并执行运动。这样既保留了INFORM的运动可靠性,又获得了C语言的灵活性。
Ethernet/IP:面向工业现场的总线通道
Ethernet/IP基于标准以太网和CIP协议,在MOTOMAN控制器上通常以扫描器/适配器方式工作。它适合与PLC、远程I/O、视觉传感器做周期性数据交换。视觉引导中,Ethernet/IP常用于传输触发信号、抓取完成信号、工件类型编号、简单的坐标偏移量等。其优势是实时性稳定、接线和组态规范;局限是单次数据量有限,复杂位姿和字符串通常需要拆成多个整型或浮点寄存器传输。配置时需要明确:控制器作为适配器时的输入/输出字节长度、与PLC的IP地址和子网掩码、数据映射地址,以及字节序。若视觉系统只支持TCP/IP而不支持Ethernet/IP,则需要通过上位机或网关做协议转换。
TCP/IP套接字:与上位机通信的通用通道
当视觉算法运行在工控机或边缘计算设备上时,TCP/IP套接字是最直接的通信方式。MOTOMAN控制器可作为客户端或服务器。工程上更常见的是控制器作为客户端,主动连接视觉上位机的指定端口;或者控制器作为服务器,等待上位机连接。无论哪种方式,都需要约定报文格式、分隔符、编码和超时重传策略。
一个可执行的配置思路如下:在控制器侧设置网络参数,使控制器与上位机处于同一网段,例如控制器192.168.1.10,上位机192.168.1.100,端口5000。在MotoPlus中创建套接字、绑定或连接、循环接收。上位机发送一条抓取指令,格式可采用ASCII行协议,例如:
GRAB,1,420.0,-85.0,310.0,178.0,0.0,90.0\n
其中GRAB为命令字,1为工件序号,后六个字段为位姿。控制器解析后写入P变量,置位完成标志,INFORM程序检测到标志后执行抓取。抓取结束后回传:
DONE,1,OK\n
若失败则回传DONE,1,NG,原因码。这种一问一答的时序关系,是视觉引导系统稳定运行的关键。实际调试时,应先用网络调试工具手动发送报文,确认控制器能正确解析并回传,再接入视觉程序。同时要设置接收超时,避免因网络阻塞导致机器人长时间等待。
通信配置中的关键判断与排障
实际工程中,通信失败往往不是单一原因。可以从三个层面排查。第一层是物理与网络层:控制器与上位机是否在同一网段,网线、交换机、防火墙是否放行目标端口,能否用ping和telnet验证连通性。第二层是协议层:TCP连接是否建立,报文分隔符是否一致,是否出现粘包或半包。若使用行协议,应确保每条报文以\n结束,接收端按行读取。第三层是数据层:坐标是否经过手眼标定转换,单位是毫米还是米,角度是度还是弧度,P变量的六个分量顺序是否与视觉输出一致。很多“机器人抓偏”的问题,根源不在运动程序,而在坐标约定或单位不一致。
对于Ethernet/IP,还要检查输入输出字节长度是否与PLC组态一致,映射地址是否对应,以及控制器是否处于远程模式。若数据能写入但机器人不动作,应检查INFORM程序是否在等待正确的I/O信号,或MotoPlus任务是否真正置位了标志。建议在调试阶段增加状态回传,例如把当前步骤号、P变量值和错误码周期性发给上位机,便于快速定位。
分层选择建议
如果任务只是简单的周期性触发和少量偏移量,优先使用Ethernet/IP,稳定且易于PLC集成。如果视觉结果复杂、需要字符串协议和队列管理,优先使用TCP/IP套接字配合MotoPlus。如果只是控制器内部运动逻辑和少量变量交互,INFORM即可完成。实际系统常常是组合使用:Ethernet/IP负责安全与触发,TCP/IP负责位姿数据,MotoPlus负责解析与调度,INFORM负责最终运动执行。理解这四者的分工,才能在视觉引导抓取项目中把通信链路设计得清晰、可维护、可排障。