4. MOTOMAN编程语言INFORM入门
INFORM是安川MOTOMAN机器人控制柜(如DX200、YRC1000)使用的专用编程语言。它不像通用高级语言那样自由,而是围绕“示教—再现”这一工业场景设计:程序由若干条指令按顺序组成,机器人逐行解释执行,每条指令完成一个明确动作或逻辑判断。理解INFORM的关键,是把它看成“写给伺服系统的一组动作与条件清单”,而不是一段算法。
一、程序结构:作业(JOB)与指令行
INFORM程序的基本单位是作业(JOB),扩展名为.JBI。一个作业由头部信息、指令序列和结束指令组成。头部包含作业名、控制组、版本等;指令序列是核心,每行一条指令,格式为“指令名 + 操作数”;最后以END结束。程序按行号顺序执行,遇到END或RET返回。
指令分为几类:运动指令(MOVJ、MOVL、MOVC)、I/O指令(DOUT、WAIT、DIN)、控制指令(JUMP、LABEL、CALL、IF、TIMER)以及寄存器操作指令(SET、ADD、MUL)。程序执行时,控制器逐行读取,先解析操作数,再驱动伺服或读写I/O,然后进入下一行。这种“逐行解释”意味着指令顺序直接决定动作顺序,不能像高级语言那样随意跳转,除非使用JUMP和LABEL。
二、位置变量:机器人动作的“坐标锚点”
位置变量(P变量)是INFORM中存储机器人位姿的核心数据类型。每个位置变量包含六个分量:X、Y、Z(笛卡尔坐标,单位mm)和Rx、Ry、Rz(姿态角,单位度),此外还隐含工具号、用户坐标系号等信息。例如P000到P127是常用范围,示教时按“示教”键即可把当前机器人位姿写入指定P变量。
位置变量有两种使用方式:一是直接作为运动指令的目标点,如MOVJ P001;二是通过寄存器间接指定,如MOVJ P000配合SET P000 P001实现变量赋值。注意,位置变量存储的是“示教时的位姿”,如果机器人更换工具或修改用户坐标系,同一P变量的实际空间位置会随之变化。因此,在程序开头通常要确认工具号和坐标系号。
三、寄存器:程序中的“数值容器”
寄存器(R变量)用于存储整数或实数,范围通常为R000到R127。它不直接驱动机器人,而是参与逻辑判断、计数、偏移计算。例如,用SET R000 5把5写入R000,用ADD R000 1实现自增。寄存器常与位置变量配合:SET P000 P001把P001的值复制给P000;ADD P000 R000则把R000的值加到P000的X分量上,实现位置偏移。
寄存器还用于I/O条件判断,如IF R000>10 JUMP *LOOP。需要注意的是,INFORM的寄存器是全局的,同一控制柜内所有作业共享,因此命名和初始化要谨慎,避免不同作业互相干扰。
四、I/O指令:与外部设备的“握手”
I/O指令负责机器人控制器与外部设备(气缸、传感器、PLC)的信号交互。常用指令有:
DOUT OT#(1) ON:将通用输出1置为ON,驱动外部设备动作。WAIT IN#(1)=ON:等待输入1变为ON,常用于等待气缸到位或工件检测。DIN B000 IN#(1):把输入1的状态读入字节变量B000。PULSE OT#(1) 0.5:输出一个0.5秒的脉冲信号。
I/O指令的执行逻辑是“立即生效”:DOUT执行后输出端子立刻变化;WAIT则阻塞程序,直到条件满足或超时。实际调试时,常用WAIT IN#(1)=ON T=3.0设置3秒超时,避免程序无限等待。
五、控制指令:让程序“会判断、能循环”
控制指令赋予程序逻辑能力。常见的有:
LABEL *START:定义标签,作为跳转目标。JUMP *START:无条件跳转到标签。IF R000=1 JUMP *START:条件跳转,条件成立才跳转。CALL JOB:SUB1:调用子作业,执行完返回。TIMER T=1.0:延时1秒。
这些指令让INFORM可以完成“检测—判断—分支—循环”的简单逻辑。例如,当传感器检测到工件时跳转到抓取程序,否则循环等待。注意,INFORM没有复杂的表达式,条件判断通常只支持比较和逻辑与或,编写时要保持简洁。
六、简单运动指令:MOVJ、MOVL、MOVC
运动指令是INFORM最核心的部分,决定机器人如何从当前点移动到目标点。三种基本指令的语法与执行逻辑如下:
| 指令 | 语法示例 | 运动方式 | 适用场景 |
|---|---|---|---|
| MOVJ | MOVJ P001 VJ=50.0 | 关节插补,各轴独立运动到目标角度 | 快速定位、空行程、抓取前接近 |
| MOVL | MOVL P002 V=200.0 | 直线插补,工具中心点沿直线移动 | 焊接、涂胶、切割等需要直线轨迹的作业 |
| MOVC | MOVC P003 P004 V=100.0 | 圆弧插补,经过中间点到达终点 | 圆弧焊缝、倒角、曲线过渡 |
MOVJ的速度用VJ指定,单位是最大速度的百分比;MOVL和MOVC用V指定,单位是mm/s。执行逻辑上,MOVJ先计算各轴目标角度,再按关节插补规划轨迹,因此路径不是直线,但速度快、不易超限。MOVL则要求工具中心点沿直线运动,控制器需要实时逆解各轴角度,速度过快可能导致关节超速或奇异点报警。MOVC需要两个位置变量:第一个是圆弧中间点,第二个是终点,机器人先以MOVL方式接近中间点,再沿圆弧到终点。
七、执行逻辑与调试要点
INFORM程序执行时,控制器按行号顺序读取指令。运动指令执行时,机器人开始运动,程序指针停在当前行,直到运动完成才进入下一行。这意味着如果MOVL后面紧跟DOUT,输出动作会在直线运动结束后才发生。如果需要“运动中输出”,应使用MOVL P002 V=200.0 DOUT OT#(1) ON这种带附加输出的写法,或使用MOVL P002 V=200.0 UNTIL IN#(1)=ON实现提前结束。
调试时,常用“单步执行”逐行检查:先确认P变量示教正确,再检查I/O信号是否按预期变化,最后观察运动轨迹是否与示教一致。若出现“位置超限”报警,通常是MOVJ的目标点超出关节软限位;若出现“速度超限”,则可能是MOVL速度设置过高或路径经过奇异点。此时应降低速度或改用MOVJ过渡。
掌握以上六部分,就具备了阅读和编写简单INFORM程序的能力。实际编程时,建议先在示教器上手动示教几个关键点,写入P变量,再按“MOVJ接近—MOVL精定位—DOUT动作—WAIT确认—MOVL退出”的节奏组织指令。这样写出的程序结构清晰,调试时也容易定位问题。