欢迎访问 工业自动化技术交流圈!一起拆解 PLC 难题、优化 HMI 界面、探讨设备选型与方案设计。

发那科机器人常用指令大全

日期:01-25  点击:  属于:电气论道

发那科机器人TP语言全部指令大全

一、运动控制指令(TP核心指令)

核心说明:控制机器人末端执行器(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和模拟I/O。

2.1 数字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 多工位同时触发、批量信号控制

2.2 模拟I/O指令(模拟量控制)

指令 格式 功能 示例 应用场景
模拟输出(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程序的执行流程,包含结构定义、条件判断、循环、跳转、等待等,是程序逻辑的基础。

3.1 程序结构指令

指令 格式 功能 示例
程序开始 /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];

3.2 条件与循环指令

指令 标准格式 功能 实操示例
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

3.3 等待指令

指令 格式 功能 示例
时间等待 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),是程序灵活控制的关键。

4.1 通用寄存器(R)- 数值存储

指令类型 格式 功能 示例
赋值 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...

4.2 位置寄存器(PR)- 位置/姿态存储

指令类型 格式 功能 示例
位置赋值 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个。

6.1 定时器指令(TIMER)

指令 格式 功能 示例
定时器清零 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];

6.2 计数器指令(COUNT)

指令 格式 功能 示例
计数器清零 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;
// 定时器经典应用:DI检测+5s超时报警(防止程序卡死) TIMER[1]=RESET; TIMER[1]=ON; WHILE DI[101]=OFF DO WAIT 0.1; IF TIMER[1]>=5.0 THEN ALARM[10] "DI[101]检测超时,工装未到位"; JMP LBL[99:ERROR]; ENDIF ENDWHILE TIMER[1]=OFF;

七、特殊功能指令(行业专用/系统交互)

核心说明:包含焊接、码垛等行业专用指令,以及消息、报警、系统变量等系统交互指令,适配特定工艺和操作需求。

7.1 焊接专用指令(Arc Tool)

指令 格式 功能 示例
弧焊启动 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];

7.2 码垛专用指令(Pallet Tool)

指令 格式 功能 示例
码垛初始化 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];

7.3 系统交互指令

指令 格式 功能 示例
消息显示 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];
// 1. 定义中断程序(单独编写) /INT_PROG DOOR_INTERRUPT /ATTR OWNER=MNEDITOR; /INST // 安全门打开,紧急回原点 MESSAGE "安全门打开,执行紧急回原点"; DO[201]=OFF; // 抓手复位 J P[0] 100% FINE; // 回安全原点 DISABLE INTERRUPT[1]; // 禁用中断 CLEAR INTERRUPT[1]; // 清除中断状态 MESSAGE "中断处理完成,等待复位"; ENDINT; // 2. 主程序中启用中断 /INST SETUP: UFRAME_NUM=1; UTOOL_NUM=2; ENABLE INTERRUPT[1] DOOR_INTERRUPT WHEN DI[200]=ON; // DI[200]为安全门信号 MESSAGE "程序启动,中断已启用"; // 后续主程序逻辑...

九、TP指令核心使用说明(必看,避免故障)

  • 坐标系必选:所有运动指令前,必须通过UFRAME_NUM/UTOOL_NUM选择正确坐标系,否则会出现位置严重偏移,引发碰撞。
  • 速度规范:关节运动(J)速度用百分比(%),直线/圆弧运动(L/C)用mm/s,禁止混用,否则速度失效。
  • 终止类型选择:精确限制发布(抓取/放置/焊接)用FINE,机器人完全到位后执行下一条;连续路径(避障/安全移动)用CNT[10~50],减少启停冲击。
  • 点位示教:所有P[i]点位必须提前在示教模式下手动示教并保存,无示教点位会直接导致机器人报错。
  • I/O匹配:DO/DI/AO/AI编号必须与机器人I/O配置表一致,提前在系统中完成外部硬件映射,否则无法与工装交互。
  • 超时保护:所有I/O等待(如传感器检测)必须添加定时器超时报警,防止程序因硬件故障卡死。
  • 安全原点:所有程序必须定义安全原点P[0],异常(报警/中断)时优先执行J P[0] 100% FINE,避免碰撞。
  • 代码复制:所有代码块支持点击一键复制,直接粘贴到发那科示教器TP编程界面,无需手动排版。
  • 寄存器使用:通用寄存器(R)和位置寄存器(PR)避免重复使用,建议在程序开头标注寄存器用途,防止数据混乱。
  • 系统变量:修改系统变量(如$SPEED_LIMIT)时,需确认参数范围,避免因参数错误导致机器人运动异常。

关于本站
不销售任何资料软件,不销售限制发布和积分不销售任何资料软件,不销售限制发布和积分
联系我们

工作时间:周一至周五 9:00-18:00

联系人:赵云龙

邮件:Hackdragon@vip.qq.com

底部导航
聚焦电气自动化领域的一站式共享服务平台,致力于打破行业资源壁垒,推动技术、资源、人才的高效流转与协同共赢。平台精准对接电气工程师、企业技术负责人、院校科研人员等核心群体,覆盖工业控制、智能限制发布、新能源自动化等全细分领域。


网站地图 PLC