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最核心的部分,决定机器人如何从当前点移动到目标点。三种基本指令的语法与执行逻辑如下:

指令语法示例运动方式适用场景
MOVJMOVJ P001 VJ=50.0关节插补,各轴独立运动到目标角度快速定位、空行程、抓取前接近
MOVLMOVL P002 V=200.0直线插补,工具中心点沿直线移动焊接、涂胶、切割等需要直线轨迹的作业
MOVCMOVC P003 P004 V=100.0圆弧插补,经过中间点到达终点圆弧焊缝、倒角、曲线过渡

MOVJ的速度用VJ指定,单位是最大速度的百分比;MOVL和MOVC用V指定,单位是mm/s。执行逻辑上,MOVJ先计算各轴目标角度,再按关节插补规划轨迹,因此路径不是直线,但速度快、不易超限。MOVL则要求工具中心点沿直线运动,控制器需要实时逆解各轴角度,速度过快可能导致关节超速或奇异点报警。MOVC需要两个位置变量:第一个是圆弧中间点,第二个是终点,机器人先以MOVL方式接近中间点,再沿圆弧到终点。

示教时,MOVJ常用于“从待机点到抓取点上方”的快速移动;MOVL用于“从上方到抓取点”的精确直线下降;MOVC用于“绕过障碍或完成圆弧轨迹”。三者配合,可以覆盖大多数搬运、焊接、涂胶作业。

七、执行逻辑与调试要点

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 程序结构与运动指令执行逻辑 作业(JOB)结构 头部:作业名/控制组 位置变量 P000~P127 寄存器 R000~R127 I/O 指令 DOUT/WAIT 控制指令 JUMP/IF/CALL 运动指令 MOVJ/MOVL/MOVC END / RET 结束 逐行解释执行,顺序决定动作 三种运动指令执行逻辑对比 MOVJ P001 VJ=50.0 关节插补:各轴独立运动到目标角度 路径非直线,速度快,适合空行程 速度单位:最大速度百分比(VJ) MOVL P002 V=200.0 直线插补:工具中心点沿直线移动 需实时逆解,速度过快易超限 速度单位:mm/s(V) MOVC P003 P004 V=100.0 圆弧插补:经过中间点P003到终点P004 先接近中间点,再沿圆弧运动 适合圆弧焊缝、倒角、曲线过渡 执行顺序:MOVJ 快速接近 → MOVL 直线精定位 → MOVC 圆弧轨迹

掌握以上六部分,就具备了阅读和编写简单INFORM程序的能力。实际编程时,建议先在示教器上手动示教几个关键点,写入P变量,再按“MOVJ接近—MOVL精定位—DOUT动作—WAIT确认—MOVL退出”的节奏组织指令。这样写出的程序结构清晰,调试时也容易定位问题。