运动指令
这是最基本、最常用的指令,用于控制机器人移动到指定位置。

(图片来源网络,侵删)
PTP (Point-to-Point) - 点到点运动
- 功能: 机器人以最短路径快速移动到目标点,各轴同时到达,路径不一定是直线,适用于快速定位,不关心路径。
- 速度: 由
VEL(速度) 参数控制。 - 示例:
PTP P1 VEL=50 % ; 快速移动到名为 P1 的点,速度为最大速度的50% PTP P2 C_PTP=0.5 ; 移动到 P2 点,并设置过渡时间为 0.5 秒
LIN (Linear) - 直线运动
- 功能: 机器人末端工具中心点 (TCP) 沿着一条直线从起点移动到终点,路径精确,适用于焊接、涂胶、切割等需要精确路径的应用。
- 速度: 由
VEL(速度) 和ORI(姿态) 参数控制。 - 示例:
LIN P1 VEL=0.5 m/s ; 以 0.5 米/秒的速度直线移动到 P1 点 LIN P2 C_DIS=100 ; 移动到 P2 点,并设置过渡距离为 100 毫米
CIRC (Circular) - 圆弧运动
- 功能: 机器人 TCP 沿着圆弧路径移动,需要定义三个点:起点、中间点和终点。
- 示例:
; 从 P1 点出发,经过 P2 点(中间点),最终到达 P3 点,形成一个圆弧 CIRC P2 P3 VEL=0.3 m/s
SPL (Spline) - 样条曲线运动
- 功能: 通过多个路径点生成平滑的样条曲线,实现非常流畅的运动,适用于要求极高路径平滑度的应用,如喷涂、复杂装配。
- 示例:
; 定义一系列点,机器人将平滑地通过这些点 SPL P1, P2, P3, P4 VEL=0.4 m/s
逻辑与流程控制指令
用于控制程序执行的流程,实现复杂的逻辑。
IF / ELSEIF / ELSE - 条件判断
- 功能: 根据条件表达式的真假来执行不同的代码块。
- 示例:
IF DI_IN[1] = TRUE THEN ; 如果输入信号 1 为真,则执行这里的代码 PTP P10 ELSEIF DI_IN[2] = TRUE THEN ; 否则如果输入信号 2 为真,则执行这里的代码 PTP P20 ELSE ; 否则,执行这里的代码 PTP P30 ENDIF
LOOP / ENDLOOP - 循环
- 功能: 重复执行一段代码,直到循环条件不满足。
- 示例:
; 循环 10 次 LOOP 10 PTP P1 LIN P2 ENDLOOP
WAIT - 等待
-
功能: 程序暂停,直到某个条件被满足,这是与外部设备(如传感器、PLC)同步的关键指令。
-
示例:
; 等待,直到输入信号 1 变为 TRUE WAIT DI_IN[1] = TRUE ; 等待,直到输出信号 2 变为 FALSE,最多等待 5 秒 WAIT DO_OUT[2] = FALSE TIMEOUT=5 sec
CONTINUE 和 STOP - 流程跳转
-
功能:
(图片来源网络,侵删)CONTINUE: 立即结束当前循环的本次迭代,跳转到下一次迭代。STOP: 立即停止程序执行,机器人停止在当前位置。
-
示例:
LOOP ; ... 一些代码 ... IF DI_IN[1] = TRUE THEN CONTINUE ; 如果条件满足,跳过本次循环的剩余部分 ENDIF ; ... 更多代码 ... ENDLOOP ; 如果某个条件发生,紧急停止程序 IF EmergencySignal THEN STOP ENDIF
输入/输出 指令
用于与外部世界进行交互。
DI_IN / DO_OUT - 数字输入/输出
-
功能: 读取或设置数字信号,通常连接到传感器、气缸、指示灯等。
-
示例:
(图片来源网络,侵删); 读取数字输入信号 1 的状态,并存储到变量中 PartPresent := DI_IN[1] ; 设置数字输出信号 5 为 TRUE,通常用于启动一个气缸 DO_OUT[5] := TRUE
AI_IN / AO_OUT - 模拟输入/输出
-
功能: 读取或设置模拟量信号,通常是电压或电流信号,用于连接需要模拟量控制的设备,如比例阀、传感器等。
-
示例:
; 读取模拟输入通道 1 的值 (单位通常是伏特) Pressure := AI_IN[1] ; 设置模拟输出通道 2 的值为 3.5 伏特 AO_OUT[2] := 3.5
程序与数据管理指令
DEF / END - 定义程序和数据
-
功能:
DEF ... : ...: 定义一个主程序或子程序,格式为DEF 程序名 (参数列表) : 数据类型。END: 结束一个程序或模块的定义。
-
示例:
; 定义一个名为 PickAndPlace 的主程序 DEF PickAndPlace() : ; ... 程序体 ... END ; 定义一个名为 MoveToHome 的子程序,带一个参数 DEF MoveToHome(speed) : PTP PHome VEL=speed % END
CALL - 调用子程序
- 功能: 在一个程序中执行另一个已经定义好的子程序。
- 示例:
; 调用 MoveToHome 子程序,并传入速度值 80 CALL MoveToHome(80)
DECL - 声明变量
-
功能: 在程序中声明变量,并指定其数据类型(如
NUM,BOOL,POS等)。 -
示例:
; 声明一个名为 counter 的整数变量,并初始化为 0 DECL INT counter := 0 ; 声明一个名为 targetPos 的位置变量 DECL POS targetPos
工具与坐标系指令
TOOL - 切换工具坐标系
- 功能: 告诉机器人当前使用的是哪个工具,必须在程序开头或需要切换工具时使用。
- 示例:
; 使用名为 Tool1 的工具坐标系 TOOL_DATA Tool1 := ... ; 通常在数据声明中定义 TOOL Tool1
BASE - 切换基坐标系
- 功能: 告诉机器人当前的参考坐标系(世界坐标系)是哪一个,当机器人安装在导轨上时,需要切换不同的基坐标。
- 示例:
; 使用名为 Base1 的基坐标系 BASE_DATA Base1 := ... ; 通常在数据声明中定义 BASE Base1
系统与安全指令
HALT - 程序暂停
- 功能: 暂停程序的执行,但机器人保持当前状态,按启动键后,程序会从
HALT的下一句继续执行。
STOP - 程序停止
- 功能: 立即停止程序执行,机器人停止在当前位置,与
HALT不同,STOP后通常需要重新启动程序。
EXIT - 程序退出
- 功能: 完全结束当前程序的运行,返回到调用它的程序或主菜单。
总结表格
| 指令类别 | 常用指令 | 功能描述 |
|---|---|---|
| 运动指令 | PTP |
点到点快速定位 |
LIN |
直线插补运动 | |
CIRC |
圆弧插补运动 | |
| 逻辑控制 | IF / ELSEIF / ELSE |
条件分支判断 |
LOOP / ENDLOOP |
循环执行代码 | |
WAIT |
等待外部信号或条件 | |
| I/O指令 | DI_IN / DO_OUT |
读写数字信号 |
AI_IN / AO_OUT |
读写模拟信号 | |
| 程序管理 | DEF / END |
定义程序/子程序 |
CALL |
调用子程序 | |
DECL |
声明变量 | |
| 坐标系 | TOOL |
切换工具坐标系 |
BASE |
切换基坐标系 | |
| 系统指令 | HALT |
暂停程序 |
STOP |
停止程序 |
这些是 KUKA 机器人编程的基石,掌握这些指令,你就可以开始编写基本的机器人程序了,在实际应用中,还会用到更高级的功能,如 路径监控 (PATH)、外部速度/位置同步 (EPOS)、碰撞检测 (COLLISION) 等,但它们都建立在这些基础指令之上。
标签: KUKA机器人常用指令大全 KUKA机器人基本指令代码 KUKA机器人编程指令详解
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。