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

KUKA机器人常用指令大全

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

KUKA机器人KRL指令大全(含搬运/焊接案例)

KUKA机器人KRL指令大全(含搬运/焊接案例)

一、KRL基础说明

KUKA机器人采用KRL(KUKA Robot Language)编程,基于C语言语法,是工业现场实操核心语言,核心规则:

  • 指令严格区分大小写,所有语句以分号;结尾;
  • 变量声明必须在程序开头,使用DECL关键字;
  • 运动位置支持笛卡尔坐标(X/Y/Z/A/B/C)关节坐标(A1/A2/A3/A4/A5/A6)
  • 速度/加速度可按百分比(%)或实际值(m/s、°/s)定义,现场常用百分比;
  • 系统变量以$开头,为预定义变量,可直接调用(部分只读)。

二、核心运动指令(现场最常用)

控制机器人关节/末端运动轨迹,运动前必须激活TOOL(工具坐标系)和BASE(工件坐标系),否则默认WORLD(世界坐标系)和TOOL0(法兰默认工具)。

指令 格式 功能说明 实操示例
PTP PTP <位置> [运动参数]; 点到点运动,关节插值,速度快,仅保证起止点精度
★ 适合:大范围移动、回零、上下料
PTP {X 100,Y 200,Z 300,A 0,B 90,C 0} Vel=50%;
PTP {A1 0,A2 -90,A3 90} Vel=30%;(关节坐标)
LIN LIN <位置> [运动参数]; 直线运动,末端沿直线轨迹,轨迹精度高
★ 适合:焊接、搬运、喷涂、精确定位
LIN {X 150,Y 200,Z 350} Vel=20% CP;(CP=连续路径)
CIRC CIRC <中间点>,<目标点> [运动参数]; 圆弧运动,通过「起点+中间点+目标点」确定圆弧
★ 适合:圆弧焊接、圆弧搬运、圆角打磨
CIRC {X 120,Y 200,Z 320}, {X 140,Y 200,Z 300} Vel=15%;
SPLINE SPLINE <位置1>,<位置2>... [运动参数]; 样条曲线运动,多段轨迹平滑过渡无停顿
★ 适合:高精度连续轨迹(抛光、涂胶)
SPLINE {X100,Y200,Z300}, {X120,Y220,Z300} Vel=20%;
BRAKE BRAKE [STOPI]; 紧急停止,立即减速至停止
STOPI:急停并中断当前程序
BRAKE;(普通急停)
BRAKE STOPI;(急停+中断程序)
HALT HALT; 程序暂停,保持当前位置,按启动键继续
★ 适合:现场人工干预(如上料、检测)
HALT;(暂停等待工件到位)

常用运动参数(可组合使用)

  • Vel=xx%:运动速度(0-100%),PTP最大100%,LIN/CIRC现场常用10-30%;
  • Acc=xx%/Dec=xx%:加速度/减速度,与速度匹配,避免机械冲击;
  • CP:连续路径,多段轨迹间无停顿(焊接/涂胶必用);
  • Blend=xx:融合半径(mm),轨迹间平滑过渡,比CP更灵活;

三、程序控制指令(流程逻辑)

用于控制程序执行顺序,语法与C语言高度兼容,现场常用「条件判断+循环+子程序」实现复杂工艺。

3.1 条件判断

指令 格式 实操示例
IF/ELSE/ENDIF IF <条件> THEN
  // 执行语句
ELSE
  // 条件不满足执行
ENDIF;
IF $IN[1]=TRUE THEN
  LIN {X100,Y200,Z300} Vel=20%;
ELSE
  HALT;
ENDIF;
ELSEIF IF <条件1> THEN
  // 语句1
ELSEIF <条件2> THEN
  // 语句2
ENDIF;
IF $OUT[1]=TRUE THEN
  PTP Home;
ELSEIF $POS_ACT.Z>500 THEN
  LIN Down;
ENDIF;

3.2 循环指令

指令 格式 适用场景
FOR/ENDFOR DECL INT i;
FOR i=初始值 TO 终值 [STEP 步长]
  // 循环语句
ENDFOR;
定次循环(如多次上下料、重复焊接)
WHILE/ENDWHILE WHILE <条件> DO
  // 循环语句
ENDWHILE;
条件循环(如等待信号、不确定次数作业)

3.3 子程序与中断

指令 格式 功能说明
DEF/ENDDEF DEF 子程序名([参数])
  // 子程序语句
ENDDEF;
定义子程序,实现程序模块化(封装取料/放料等动作)
CALL CALL 子程序名([参数]); 调用子程序,需先定义再调用
中断声明/激活 INTERRUPT DECL 中断号 DO 子程序 WHEN 条件;
INTERRUPT ON 中断号;
异常处理(如急停信号、碰撞检测触发程序)

四、I/O输入输出操作(衔接外部设备)

通过系统变量直接读写I/O,实现机器人与夹具、传送带、焊机等外部设备联动,现场最常用数字量DI/DO

4.1 数字量I/O(DI=输入,DO=输出)

类型 格式 实操示例
数字输出DO $OUT[地址]=BOOL值; $OUT[1]=TRUE;(夹爪闭合)
$OUT[2]=FALSE;(传送带停止)
$OUT[1..5]=TRUE;(批量设置1-5号DO为高)
数字输入DI $IN[地址] IF $IN[3]=TRUE THEN ...(检测工件到位信号)
WAIT FOR $IN[4]=TRUE;(等待夹具夹紧信号)

4.2 模拟量I/O(速度/压力调节)

类型 格式 说明
模拟输入AI $ANIN[地址] 读取0-10V/4-20mA,返回REAL型(0.0-100.0)
模拟输出AO $ANOUT[地址]=REAL值; 输出0-10V/4-20mA,值范围0.0-100.0

4.3 常用I/O联动指令

指令 格式 功能说明
DELAY DELAY 时间; 延时等待(单位:秒),夹具动作/信号稳定必用
WAIT FOR WAIT FOR <条件>; 等待条件满足后继续,替代固定延时,更智能
WAIT SEC WAIT SEC 时间; 固定时间等待,与DELAY功能一致,可互换
实操技巧:尽量用WAIT FOR $IN[n]=TRUE替代DELAY,避免固定延时导致的程序冗余(如工件到位无需等待2秒,信号到即继续)。

五、坐标系/工具工件数据指令

KUKA机器人运动基于「工具坐标系(TOOL)+工件坐标系(BASE)」,必须提前标定并激活,否则无法保证运动精度,现场一般在示教器可视化标定,无需手动编程。

5.1 坐标系激活与切换

指令 格式 功能说明
BASE BASE(工件坐标系号); 激活指定工件坐标系(1-64),BASE0=世界坐标系
TOOL TOOL(工具坐标系号); 激活指定工具坐标系(1-64),TOOL0=机器人法兰
$BASE/$TOOL $BASE={X/Y/Z/A/B/C}; 直接赋值坐标系数据,适合临时修改
BASE(1); // 激活1号工件坐标系(标定后的工作台坐标系)
TOOL(2); // 激活2号工具坐标系(夹爪工具)
LOAD(2); // 激活对应载荷数据(更换工具必做)

5.2 常用位置系统变量

变量 类型 功能说明
$POS_ACT POS 读取末端当前笛卡尔坐标(X/Y/Z/A/B/C),只读
$AXIS_ACT AXIS 读取当前关节坐标(A1-A6),只读
$POS_MES POS 读取手动示教位置,可赋值给自定义变量

六、数据处理与变量操作

KRL语言需先声明(DECL)再使用变量,支持多种数据类型,现场常用「整型、布尔型、位置型、实数型」。

6.1 常用数据类型声明

数据类型 关键字 声明示例 适用场景
整型 INT DECL INT i=0; 计数、I/O地址、循环变量
布尔型 BOOL DECL BOOL flag=FALSE; I/O状态、条件判断标记
实数型 REAL DECL REAL vel=20.0; 速度、距离、模拟量数值
笛卡尔位置型 POS DECL POS P1={X100,Y200,Z300,A0,B90,C0}; 运动位置存储
关节位置型 AXIS DECL AXIS A1={A10,A2-90,A390}; 关节运动位置存储

6.2 变量运算与赋值

i = i + 1; // 整型自增(循环计数)
P1.X = P1.X + 50; // 位置X轴偏移50mm
vel = 20.0 * 0.8; // 实数运算(速度调整)

// 逻辑运算(&&=与、||=或、!=非)
IF $IN[1]=TRUE && $IN[2]=FALSE THEN ...
// 比较运算(==等于、>大于、<小于)
IF $POS_ACT.Z > 500 THEN ...

七、安全控制指令(现场操作必备)

用于机器人状态检测、安全模式切换、紧急处理,严禁随意修改安全参数,仅调用预定义指令/系统变量。

指令/变量 格式/用法 功能说明
STOP_REMOTE STOP_REMOTE; 远程停止,切断外部启动信号,进入安全停止
ENABLE_SAFETY ENABLE_SAFETY; 激活安全使能(需满足急停复位、安全门关闭)
COLLISION COLLISION ON/OFF; 开启/关闭碰撞检测,检测到碰撞立即停止
$SAFETY_STATUS IF $SAFETY_STATUS!=0 THEN ... 读取安全状态(0=正常,1=急停,2=安全门打开)
$MODE_OP IF $MODE_OP!=1 THEN ... 读取操作模式(0=手动,1=自动,2=远程自动)
$DRIVES_ON WAIT FOR $DRIVES_ON=TRUE; 读取伺服使能状态(TRUE=使能开,FALSE=关)
安全要点:高精度作业前执行COLLISION ON,更换末端工具后必须重新标定TOOL并激活对应LOAD载荷,防止惯量不匹配撞机。

八、搬运实操案例(工件上下料)

案例说明:机器人夹爪上下料(传送带→工作台)
  • 工具:2号夹爪工具(TOOL2),已标定;
  • 工件坐标系:1号工作台坐标系(BASE1);
  • I/O分配:$IN[1]=工件到位(传送带)、$IN[2]=夹爪夹紧检测、$OUT[1]=夹爪闭合、$OUT[2]=夹爪打开、$OUT[3]=传送带启动;
  • 工艺要求:检测到工件到位后,取料→放料→传送带复位,循环执行。

完整KRL程序代码(含注释)

DECL INT cycle=0; // 声明循环计数变量
DECL POS Home={X0,Y0,Z800,A0,B0,C0}; // 回零位置
DECL POS Pick_Pos={X200,Y300,Z150,A0,B90,C0}; // 取料位置(传送带)
DECL POS Pick_Up={X200,Y300,Z300,A0,B90,C0}; // 取料上升位置
DECL POS Place_Pos={X500,Y200,Z150,A0,B90,C0}; // 放料位置(工作台)
DECL POS Place_Up={X500,Y200,Z300,A0,B90,C0}; // 放料上升位置

// 1. 初始化:激活坐标系、载荷,回零
BASE(1); // 激活1号工件坐标系
TOOL(2); // 激活2号夹爪工具
LOAD(2); // 激活2号载荷数据
COLLISION ON; // 开启碰撞检测
PTP Home Vel=80% Acc=80%; // 回零
$OUT[3]=TRUE; // 启动传送带

// 2. 定次循环:执行10次上下料
FOR cycle=1 TO 10 STEP 1
// 等待工件到位信号
WAIT FOR $IN[1]=TRUE; // 传送带工件到位
$OUT[3]=FALSE; // 传送带停止

// 取料动作:到取料上方→下降→夹爪闭合→上升
PTP Pick_Up Vel=60%; // 点到点移动到取料上方
LIN Pick_Pos Vel=20%; // 直线下降到取料位置
$OUT[1]=TRUE; // 夹爪闭合
DELAY 0.5; // 延时0.5s,确保夹紧
WAIT FOR $IN[2]=TRUE; // 检测夹爪夹紧
LIN Pick_Up Vel=20%; // 直线上升

// 放料动作:到放料上方→下降→夹爪打开→上升
PTP Place_Up Vel=60%; // 点到点移动到放料上方
LIN Place_Pos Vel=20%; // 直线下降到放料位置
$OUT[2]=TRUE; // 夹爪打开
DELAY 0.3; // 延时0.3s,确保工件放下
LIN Place_Up Vel=20%; // 直线上升

// 复位:夹爪复位,启动传送带
$OUT[1]=FALSE;
$OUT[2]=FALSE;
$OUT[3]=TRUE; // 重启传送带
PTP Home Vel=80%; // 回零,准备下一次循环
ENDFOR; // 循环结束

// 3. 作业完成:复位输出,回零,提示信息
$OUT[1..3]=FALSE; // 批量复位所有输出
PTP Home Vel=80%; // 最终回零
MSG("上下料完成,共执行" + cycle + "次循环"); // 示教器显示提示
HALT; // 程序暂停

案例关键指令说明

  • PTP用于大范围移动(取料上方→放料上方),速度快,提升效率;
  • LIN用于精确定位(上升/下降),保证末端垂直运动,防止碰撞工件;
  • 多次使用WAIT FOR替代固定延时,确保动作可靠性(如夹爪夹紧检测);
  • 循环使用FOR/ENDFOR,定次执行,计数变量可统计作业次数;
  • 程序开头初始化坐标系和载荷,是所有运动的前提,避免撞机。

九、焊接实操案例(直线+圆弧焊接)

案例说明:机器人弧焊(工件直线+圆弧连续焊接)
  • 工具:3号焊枪工具(TOOL3),已标定;
  • 工件坐标系:2号焊接工作台坐标系(BASE2);
  • I/O分配:$IN[5]=焊枪到位、$OUT[5]=焊机启动、$OUT[6]=送丝启动、$OUT[7]=气体保护启动;
  • 工艺要求:连续路径焊接(无停顿),先直线焊接,再圆弧焊接,焊接完成后延时收弧,关闭焊机。

完整KRL程序代码(含注释)

DECL POS Weld_Home={X0,Y0,Z600,A0,B0,C0}; // 焊接回零位置
DECL POS Weld_Start={X100,Y200,Z200,A0,B90,C0}; // 焊接起点
DECL POS Weld_Line={X300,Y200,Z200,A0,B90,C0}; // 直线焊接终点
DECL POS Weld_Circ_Mid={X400,Y300,Z200,A0,B90,C0}; // 圆弧中间点
DECL POS Weld_End={X300,Y400,Z200,A0,B90,C0}; // 圆弧焊接终点
DECL POS Weld_Up={X300,Y400,Z300,A0,B90,C0}; // 焊接完成上升位置

// 1. 焊接前初始化
BASE(2); // 激活2号焊接工件坐标系
TOOL(3); // 激活3号焊枪工具
LOAD(3); // 激活焊枪载荷
COLLISION ON; // 开启碰撞检测
PTP Weld_Home Vel=70%; // 焊接回零
WAIT FOR $IN[5]=TRUE; // 等待焊枪到位

// 2. 移动到焊接起点,准备焊接
PTP Weld_Start Vel=50%; // 移动到焊接起点
DELAY 0.2; // 信号稳定延时

// 3. 启动焊接设备,气体提前保护
$OUT[7]=TRUE; // 启动气体保护
DELAY 1.0; // 气体提前送1s,排除空气
$OUT[5]=TRUE; // 启动焊机
$OUT[6]=TRUE; // 启动送丝
DELAY 0.3; // 焊机启动延时

// 4. 连续路径焊接:直线+圆弧(CP无停顿)
LIN Weld_Line Vel=15% CP; // 直线焊接,CP连续路径
CIRC Weld_Circ_Mid, Weld_End Vel=12% CP; // 圆弧焊接,CP连续无停顿

// 5. 焊接完成,收弧处理
DELAY 0.5; // 延时收弧,保证焊接质量
$OUT[5]=FALSE; // 关闭焊机
$OUT[6]=FALSE; // 停止送丝
DELAY 1.0; // 延时关气体,保护熔池
$OUT[7]=FALSE; // 关闭气体保护

// 6. 焊接完成,复位动作
LIN Weld_Up Vel=20%; // 焊枪上升,远离工件
PTP Weld_Home Vel=70%; // 回到焊接回零位置
MSG("直线+圆弧焊接完成!"); // 示教器提示
HALT; // 程序暂停

案例关键指令说明

  • 焊接轨迹添加CP参数,实现连续路径运动,避免机器人启停导致的焊接断点;
  • 焊接速度控制在10-15%,保证焊接熔深和质量,圆弧焊接速度略低于直线;
  • 执行气体提前送、延时关,排除焊接区域空气,保护熔池,防止气孔;
  • CIRC圆弧焊接通过「起点(Weld_Line)+中间点(Weld_Circ_Mid)+目标点(Weld_End)」精准确定圆弧轨迹;
  • 焊接前必须激活焊枪专属TOOL和BASE,确保焊接轨迹与工件重合。

十、其他常用指令(提升编程效率)

指令 格式 功能说明 实操示例
MSG MSG(<文本/变量>); 示教器屏幕显示提示信息,程序状态提醒 MSG("焊接完成,请取件");
RET RET; 子程序提前返回,退出当前子程序 IF $IN[1]=FALSE THEN RET;
LOAD LOAD(<载荷号>); 激活指定载荷数据,更换工具必做 LOAD(2); // 激活2号夹爪载荷
COMMENT COMMENT <文本>; 程序注释,可视化更好,与//功能一致 COMMENT "取料位置,夹爪闭合";
FLANGE FLANGE(<法兰号>); 激活指定末端法兰,多法兰机器人使用 FLANGE(1); // 激活1号末端法兰

十一、KRL编程实操核心注意事项

  1. 运动前必做:先激活TOOL和BASE,否则默认坐标系会导致运动偏差、撞机;
  2. I/O地址对应:DO/DI地址必须与硬件接线表一致,避免接错信号导致设备误动作;
  3. 连续运动优化:多段LIN/CIRC轨迹加CP或Blend,避免频繁启停,提升作业效率;
  4. 变量规范:自定义变量必须先DECL声明、再初始化,否则出现随机值导致逻辑错误;
  5. 程序模块化:将重复动作(取料、放料、焊接)封装为子程序,便于调试和修改;
  6. 速度匹配:运动速度与加速度/减速度匹配(如Vel=30%对应Acc=30%),避免机械冲击;
  7. 批量操作:批量I/O操作使用$OUT[1..5]=TRUE,简化程序代码;
  8. 测试规范:新程序先在手动模式下单步运行,验证位置和I/O动作,再切换自动模式。

十二、常用系统变量速查(现场直接调用)

系统变量 数据类型 功能说明 读写属性
$OUT[<n>] BOOL 数字输出n,控制外部设备 可写
$IN[<n>] BOOL 数字输入n,检测外部信号 只读
$ANIN[<n>] REAL 模拟输入n,读取0-10V/4-20mA 只读
$ANOUT[<n>] REAL 模拟输出n,输出0-10V/4-20mA 可写
$POS_ACT POS 末端当前笛卡尔坐标(X/Y/Z/A/B/C) 只读
$AXIS_ACT AXIS 当前关节坐标(A1-A6) 只读
$MODE_OP INT 操作模式(0=手动,1=自动,2=远程) 只读
$DRIVES_ON BOOL 机器人伺服使能状态 只读
$SAFETY_STATUS INT 机器人安全状态(0=正常) 只读
$PROG_STATE INT 程序运行状态(0=停止,1=运行) 只读
$POS_MES POS 手动示教的位置坐标 只读

关于本站
不销售任何资料软件,不销售会员和积分不销售任何资料软件,不销售会员和积分
联系我们

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

联系人:赵云龙

邮件:Hackdragon@vip.qq.com

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


网站地图 PLC