核心说明:控制机器人末端执行器(TCP)运动,分关节/直线/圆弧运动,终止类型FINE(精确限制发布)/CNT[n](连续路径)二选一。
| 指令 | 标准格式 | 核心功能 | 实操示例 | 使用注意 |
|---|---|---|---|---|
| 关节运动(J) | J P[i] 速度% 终止类型 | 各轴独立运动,路径不可控,快速大范围限制发布 | J P[0] 100% FINE J P[1] 80% CNT20 |
适合避障/回原点,不要求路径精度 |
| 直线运动(L) | L P[i] 速度mm/s 终止类型 | TCP沿直线运动,路径可控,精确限制发布 | L P[2] 300mm/sec FINE L P[3] 200mm/sec CNT10 |
适合抓取/放置/焊接,要求轨迹精度 |
| 圆弧运动(C) | C P[i] P[j] 速度 终止类型 | TCP沿三点圆弧运动(起点-中间点-终点) | C P[4] P[5] 200mm/sec FINE | 适合圆弧焊缝/弧形轨迹,需示教中间点 |
| 简化圆弧(C) | C P[i] 速度 终止类型 | 以当前位置为起点,直接圆弧到目标点 | C P[6] 150mm/sec CNT20 | 适合连续圆弧路径,简化示教 |
| 相对偏移运动 | J/L OFFSET(P[i],X,Y,Z,W,P,R) 速度 终止类型 | 基于参考点做六轴偏移,无需重新示教 | L OFFSET(P[2],50,0,-20,0,0,0) 200mm/sec FINE | X/Y/Z为位置偏移,W/P/R为姿态偏移 |
| 绝对坐标运动 | J P[i] 速度 终止类型 UFRAME[k] UTOOL[m] | 指定坐标系的绝对位置运动 | J P[7] 80% FINE UFRAME[1] UTOOL[2] | 强制指定坐标系,避免坐标混乱 |
核心说明:实现机器人与外部传感器、电磁阀、工装等硬件的信号交互,分数字I/O和模拟I/O。
| 指令 | 格式 | 功能 | 示例 | 应用场景 |
|---|---|---|---|---|
| 数字输出(DO) | DO[i]=ON/OFF/PULSE | 控制数字输出信号,驱动外部执行器 | DO[201]=ON DO[202]=PULSE |
抓手开合、电磁阀、指示灯 |
| 数字输入(DI) | DI[i](用于条件判断) | 读取数字输入信号状态 | WAIT DI[101]=ON IF DI[102]=OFF THEN... |
传感器检测、限位开关、工装到位 |
| 继电器输出(RO) | RO[i]=ON/OFF | 控制继电器输出,适配大电流负载 | RO[1]=ON | 接触器、大功率电机控制 |
| 继电器输入(RI) | RI[i](用于条件判断) | 读取继电器输入信号 | WHILE RI[5]=OFF DO... | 外部继电器状态检测 |
| 组输出(GO) | GO[i]=十六进制值 | 同时控制一组数字输出,提高效率 | GO[1]=16#0F | 多工位同时触发、批量信号控制 |
| 指令 | 格式 | 功能 | 示例 | 应用场景 |
|---|---|---|---|---|
| 模拟输出(AO) | AO[i]=数值(0~10V/4~20mA) | 输出模拟量,控制连续调节设备 | AO[1]=5.0 AO[2]=8.5 |
变频器速度、压力阀、流量调节 |
| 模拟输入(AI) | AI[i](赋值给寄存器) | 读取外部模拟量,存入寄存器 | R[10]=AI[1] R[11]=AI[2] |
压力、温度、流量采集,模拟量检测 |
核心说明:控制TP程序的执行流程,包含结构定义、条件判断、循环、跳转、等待等,是程序逻辑的基础。
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 程序开始 | /PROG 程序名 /ATTR ... /INST |
定义TP程序头部信息和属性 | /PROG MAIN /ATTR OWNER=MNEDITOR; |
| 程序结束 | END; | 标记程序执行结束,退出程序 | END_PROG: MESSAGE "结束"; END; |
| 子程序调用 | CALL 子程序名; | 调用并执行外部子程序 | CALL MOVE_HAND; CALL WELD_ARC; |
| 带参子程序调用 | CALL 程序名(参数1,参数2...); | 传递参数给子程序,精准控制 | CALL MOVE_OFFSET(50,-30,80); |
| 返回主程序 | RETURN; | 从子程序执行完毕,返回主程序 | LBL[1]: ... RETURN; |
| 标签定义 | LBL[i:注释]; | 定义跳转目标位置,方便限制发布 | LBL[1:START]; LBL[99:ERROR]; |
| 无条件跳转 | JMP LBL[i]; | 跳转到指定标签,继续执行 | JMP LBL[1]; JMP LBL[99]; |
| 指令 | 标准格式 | 功能 | 实操示例 |
|---|---|---|---|
| IF条件判断 | IF 条件 THEN 语句 [ELSE 语句] ENDIF |
单/双条件分支,按需执行 | IF R[1]>10 THEN J P[2] 80% FINE ELSE J P[3] 80% FINE ENDIF |
| SELECT多分支 | SELECT 变量 CASE 值1:语句 CASE 值2:语句 DEFAULT:语句 ENDSELECT |
多条件分支,适配多工位/多模式 | SELECT R[2] CASE 1:CALL MOVE_UP CASE 2:CALL MOVE_DOWN DEFAULT:CALL STOP ENDSELECT |
| FOR固定循环 | FOR 变量=起始 TO 结束 [STEP 步长] 语句 ENDFOR |
固定次数循环,适配批量处理 | FOR R[3]=1 TO 5 STEP 1 J P[9+R[3]] 80% CNT10 ENDFOR |
| WHILE条件循环 | WHILE 条件 DO 语句 ENDWHILE |
条件满足时持续循环,灵活控制 | WHILE DI[101]=OFF DO WAIT 0.1 ENDWHILE |
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 时间等待 | WAIT 秒数; | 延时指定时间,确保动作到位 | WAIT 0.5; WAIT 2.0; |
| I/O等待 | WAIT 条件; | 等待I/O/寄存器条件满足 | WAIT DI[102]=ON; WAIT R[1]>=5; |
| 位置等待 | WAIT POSITION; | 等待机器人到达指限制发布置 | L P[2] 300mm/sec CNT10 WAIT POSITION; |
| 中断等待 | WAIT INTERRUPT[i]; | 等待指定中断信号触发 | WAIT INTERRUPT[1]; |
核心说明:通过寄存器实现数据存储、运算、传递,分通用寄存器(R)和位置寄存器(PR),是程序灵活控制的关键。
| 指令类型 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 赋值 | R[i]=数值/表达式/系统变量 | 给寄存器赋值,支持直接/间接赋值 | R[1]=10; R[2]=R[1]+5; R[3]=$SPEED_LIMIT; |
| 算术运算 | R[i]=R[j] 运算符 R[k] | 支持加减乘除、取余等基本运算 | R[4]=R[1]*2; R[5]=R[2]/R[1]; R[6]=R[3] MOD 10; |
| 三角函数运算 | R[i]=SIN/COS/TAN(角度) | 支持正弦、余弦、正切运算(角度制) | R[7]=SIN(30); R[8]=COS(45); |
| 比较运算 | R[i] 比较符 R[j] | 用于条件判断,支持><=/>=/==/!= | IF R[1]>R[2] THEN... WHILE R[3]<=10 DO... |
| 指令类型 | 格式 | 功能 | 示例 | |
|---|---|---|---|---|
| 位置赋值 | PR[i]=P[j]/LPOS | 将示教点/当前位置存入位置寄存器 | PR[1]=P[2]; PR[2]=LPOS; |
|
| 分量修改 | PR[i,COMP]=数值 | 修改位置寄存器指定分量(X/Y/Z/W/P/R) | PR[1,X]=50.0; PR[1,Z]=-20.0; |
|
| 位置运算 | PR[i]=PR[j]+/-PR[k] | 位置寄存器之间的加减运算 | PR[3]=PR[1]+PR[2]; PR[4]=PR[1]-PR[2]; |
|
| 位置偏移 | J/L P[j]+PR[i] 速度 终止类型 | 基于示教点做位置寄存器偏移 | J P[5]+PR[1] 80% FINE; | 灵活调整位置,无需重新示教 |
核心说明:机器人运动的位置基准,分用户坐标系(UFRAME)和工具坐标系(UTOOL),运动前必须正确选择,否则位置偏移。
| 指令 | 格式 | 核心功能 | 示例 | 使用注意 |
|---|---|---|---|---|
| 用户坐标系选择 | UFRAME_NUM=i; | 选择第i个用户坐标系(适配工装/产线) | UFRAME_NUM=1; | 需提前示教用户坐标系参数 |
| 工具坐标系选择 | UTOOL_NUM=i; | 选择第i个工具坐标系(适配抓手/焊枪) | UTOOL_NUM=2; | 需提前标定工具TCP点 |
| 定义用户坐标系 | UFRAME[i]=PR[j]; | 通过位置寄存器设置用户坐标系参数 | UFRAME[1]=PR[10]; | 适合批量修改坐标系 |
| 定义工具坐标系 | UTOOL[i]=PR[j]; | 通过位置寄存器设置工具坐标系参数 | UTOOL[2]=PR[11]; | 适合工具更换后快速标定 |
| 启用位置偏移 | OFFSET PR[i]; | 全局启用位置寄存器偏移功能 | OFFSET PR[1]; | 所有运动均叠加该偏移 |
| 取消位置偏移 | OFFSET CANCEL; | 取消全局位置偏移,恢复原位置 | OFFSET CANCEL; | 偏移使用完毕后必须取消 |
核心说明:实现程序计时(超时检测、延时)和计数(循环次数、产量统计),标配定时器/计数器各32个。
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 定时器清零 | TIMER[i]=RESET; | 将第i个定时器值重置为0 | TIMER[1]=RESET; |
| 启动定时器 | TIMER[i]=ON; | 启动第i个定时器,开始计时 | TIMER[1]=ON; |
| 停止定时器 | TIMER[i]=OFF; | 停止第i个定时器,保留当前值 | TIMER[1]=OFF; |
| 读取定时器值 | R[j]=TIMER[i]; | 将定时器当前值存入通用寄存器 | R[10]=TIMER[1]; |
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 计数器清零 | COUNT[i]=0; | 将第i个计数器值重置为0 | COUNT[1]=0; |
| 计数器自增 | COUNT[i]=COUNT[i]+n; | 计数器增加指定数值,默认+1 | COUNT[1]=COUNT[1]+1; |
| 计数器自减 | COUNT[i]=COUNT[i]-n; | 计数器减少指定数值 | COUNT[1]=COUNT[1]-1; |
| 计数器判断 | IF COUNT[i] 条件 THEN... | 根据计数值执行条件分支 | IF COUNT[1]>=100 THEN CALL END_PROG; |
核心说明:包含焊接、码垛等行业专用指令,以及消息、报警、系统变量等系统交互指令,适配特定工艺和操作需求。
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 弧焊启动 | ARC START[i]; | 启动第i组弧焊参数(电流/电压/送丝) | ARC START[1]; |
| 弧焊运动 | L/C P[j] 速度 ARC[i] 终止类型 | 运动同时保持弧焊,参数持续生效 | L P[11] 150mm/sec ARC[1] FINE; |
| 弧焊收弧 | ARC END[i]; | 结束弧焊,执行收弧参数(电流衰减) | ARC END[1]; |
| 焊接横摆 | WEAVE 模式[i][摆幅,摆频,停留]; | 焊接时执行横摆动作,适配宽焊缝 | WEAVE 1[20,10,0.5]; |
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 码垛初始化 | PALLETIZING-B_i; | 初始化第i组码垛参数(每层数量/层间距) | PALLETIZING-B_1; |
| 码垛运动 | L PAL_i[BTM] 速度 终止类型 | 运动到当前待码垛点位(自动计算) | L PAL_1[BTM] 200mm/sec FINE; |
| 码垛更新 | PAL_END_i; | 计算并更新下一个码垛点位 | PAL_END_1; |
| 读取码垛层数 | R[j]=PAL_i[LAYER]; | 读取当前码垛层数,存入寄存器 | R[20]=PAL_1[LAYER]; |
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 消息显示 | MESSAGE "文本"++变量; | 在示教器显示提示消息,支持变量拼接 | MESSAGE "循环次数:"++COUNT[1]; |
| 用户报警 | ALARM[i] "文本"++变量; | 触发第i号用户报警,示教器弹窗提示 | ALARM[10] "压力过高:"++R[10]++"MPa"; |
| 程序暂停 | PAUSE; | 暂停程序执行,需手动恢复 | LBL[99:ERROR] PAUSE; |
| 程序继续 | RESUME; | 从暂停状态恢复程序执行 | 手动触发或中断中调用 |
| 强制终止 | ABORT; | 立即终止程序执行,无法恢复 | ABORT; |
| 系统变量赋值 | $VAR_NAME=数值; | 修改系统变量,控制机器人参数 | $SPEED_LIMIT=80; $ACCEL_LIMIT=70; |
| 系统变量读取 | R[i]=$VAR_NAME; | 读取系统变量,存入通用寄存器 | R[30]=$AXIS_POS[1]; |
核心说明:实现程序的紧急响应(如急停、安全门触发)和外部信号触发执行指定逻辑,提高程序的安全性和灵活性。
| 指令 | 格式 | 功能 | 示例 |
|---|---|---|---|
| 定义中断程序 | /INT_PROG 程序名 ... ENDINT |
定义中断触发后执行的程序 | /INT_PROG EMG_STOP J P[0] 100% FINE ENDINT |
| 启用中断 | ENABLE INTERRUPT[i]; | 启用第i号中断,等待触发 | ENABLE INTERRUPT[1]; |
| 禁用中断 | DISABLE INTERRUPT[i]; | 禁用第i号中断,不再响应 | DISABLE INTERRUPT[1]; |
| 清除中断 | CLEAR INTERRUPT[i]; | 清除第i号中断的触发状态 | CLEAR INTERRUPT[1]; |
| 中断等待 | WAIT INTERRUPT[i]; | 暂停程序,等待指定中断触发 | WAIT INTERRUPT[1]; |
UFRAME_NUM/UTOOL_NUM选择正确坐标系,否则会出现位置严重偏移,引发碰撞。FINE,机器人完全到位后执行下一条;连续路径(避障/安全移动)用CNT[10~50],减少启停冲击。P[i]点位必须提前在示教模式下手动示教并保存,无示教点位会直接导致机器人报错。J P[0] 100% FINE,避免碰撞。