ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

库卡机器人程序案例解读:从KRL骨架到外部自动控制

库卡机器人程序案例解读:从KRL骨架到外部自动控制 简介面向库卡机器人开发与调试人员的程序案例文档从工业现场常见的抓件、移动、等待等动作出发系统展示KRL程序从初始化、中断保护到工具坐标系设定的完整写法。文档虽只有1个PDF文件约132KB却浓缩了库卡机器人编程中的关键范式包括FOLD结构、BASISTECH INI初始化、WHEN $STOPMESS中断处理、PTP/LIN运动指令及吸盘控制等逻辑。当前已有1579人学习下载适合正在入门或希望规范程序框架的操作者与电气工程师参考。透过该案例可理解程序主流程如何拆分为多个子程序并掌握位置变量、速度参数、I/O触发与等待语句的组合方式进而迁移到自己的工作站项目中具有较高实用参考价值。1. 拿到库卡机器人程序案例.pdf先把它当成程序骨架图接手旧线体改造时交接资料里常会出现一份「库卡机器人程序案例.pdf」里面是前人调试留下的 KRL 源码片段、点位数据和几个子程序模块。它不像操作手册那样讲按钮而是把“程序怎么搭、运动怎么写、报警怎么处理”直接摊开。对要改节拍、加检测工序或者把机器人从手动模式切到外部自动的工程师来说这份案例比示教器截图更有信息量。我拿到这类文件一般不会急着看运动指令而是先按文件后缀和模块划分重建它的程序骨架再逐块对照现场 I/O。2. 库卡机器人编程的程序骨架先分清 SRC/DAT 与状态机库卡机器人的程序不是一个独立文件而是一组文件配合运行。先从文件结构入手后面读案例里的任何一个子程序都不会跑偏。2.1 src、dat 和 sub 文件各管什么库卡机器人程序案例 PDF 里最常见的就是.src和.dat成对出现两者同名同目录加载程序时 KSS 会同时读取。.src是执行逻辑.dat是数据声明区不能混着写。案例里如果只给了片段你很难判断哪些是变量、哪些是执行语句就是因为把文件类型丢了。我一般会用下面这张表把案例里出现的文件归类文件后缀用途常见内容.src程序逻辑DEF...END、循环、条件分支、运动指令.dat数据声明点位、信号、工具号、速度参数.sub可复用子程序复位、取放、报警处理模块.config系统配置$CONFIG.DAT等一般不随项目程序走分清这层之后案例里的“程序清单”就不会只是一串代码而是能看到它的调用关系。2.2 主程序加状态机的拆分方式程序案例 PDF 里经常出现“main、初始化、手动程序、自动程序、复位程序、急停程序、模式切换”这些词这就是典型的“主程序 状态机”组织方式。主程序只负责状态分发不做具体动作初始化负责把运动系统、速度、工具坐标系设好自动程序放节拍逻辑复位程序处理气缸回到初始位置急停程序独立成块不占用主流程扫描时间。这种拆法的好处是后面加一个传感器、改一个等待时间不用翻几百行代码。案例里如果是一个几千行的单程序多半是现场后续硬塞逻辑的结果别照抄。2.3 最小主程序和初始化代码库卡机器人程序案例里最值得抄的是初始化部分常见的写法是这样的ACCESS RVP DEF MAIN() ; 1. 运动系统初始化必须在第一条运动指令前执行 BAS(#INITMOV, 0) ; 2. 调试期把速度压下来 BAS(#VEL_PTP, 20) ; PTP 速度 20% BAS(#VEL_CP, 0.5) ; LIN/CIRC 速度 0.5 m/s PTP HOME ; 3. 主循环分发状态 LOOP IF $IN[1] THEN CALL AUTO() ENDIF IF $IN[2] THEN CALL MANUAL() ENDIF IF $IN[3] THEN CALL RESET_TASK() ENDIF WAIT SEC 0.1 ENDLOOP END这段代码有四个关键点。BAS(#INITMOV, 0)会把 KSS 的运动初始化参数恢复成默认值漏掉它后面的运动指令可能直接报错。BAS(#VEL_PTP, 20)和BAS(#VEL_CP, 0.5)是覆盖全局速度上下限的常见做法现场调试时先压速度比任何高级配置都实际。$IN[1]到$IN[3]是数字量输入信号接的是按钮或 PLC 输出。最后的WAIT SEC 0.1别删除不然控制器在空循环里持续满载程序响应反而变慢。看完这一段再回头看案例里的 main 模块基本就是这个套路只是把CALL的对象换成现场实际功能。3. 库卡机器人运动指令PTP/LIN/CIRC 与点位数据怎么读程序案例 PDF 里占比最大的就是运动指令。这里有选型逻辑也有参数陷阱值得逐条拆。3.1 三种运动类型的定位库卡机器人编程中运动指令就三个主打类型其余多是变体。案例里每一条运动指令出现的位置都能反映当时的设计意图指令插补方式适用场景典型写法PTP关节插补大范围移动、回原点、空间无要求PTP HOME Vel100 % PDAT1LIN笛卡尔直线直线取放、保持工具姿态LIN PICK CONT Vel1.2 m/s CPDAT1CIRC圆弧插补弧焊、倒角过渡CIRC P_MID, P_END C_CONT Vel1.0 m/s CPDAT2PTP路径不可预测机械臂在姿态变化大时容易撞周边设备LIN路径有保证但目标点必须在当前基坐标系可达到空间内CIRC需要三个点确定一个圆辅助点和终点不能与起点共线否则直接报拟合错误。案例里如果某个取放工位用了LIN而不用PTP通常是为了保证末端姿态在插入动作过程中不偏转。3.2 E6POS 点位结构中的 X/Y/Z/A/B/C库卡机器人程序案例中的点位定义基本长这样DECL E6POS P_PICK {X 520.5, Y -180.0, Z 780.0, A 0.0, B -90.0, C 0.0}X/Y/Z是 TCP 相对当前基坐标系的笛卡尔坐标单位 mmA/B/C是绕 Z/Y/X 轴的欧拉角顺序是 Z 到 Y 到 X焊枪倾斜主要靠 B 角实现。行尾的S/T状态位和坐标状态默认省略改写案例时尽量保留原始行不要手工删字段。我改点位时不手算坐标而是示教器上把机器人移到目标位置再用“在线修正”写入保存后回读确认 A/B/C。库卡机器人示教器使用中这一点最容易被忽略直接改数值结果姿态角在零点附近跳变程序跑起来吓人。3.3 CONT、Vel 和轨迹圆滑三者的配合连续轨迹控制直接影响节拍和到位精度看案例代码时要特别注意 CONT 这个关键字; P1 不停顿直接过渡到 P2 LIN P1 CONT Vel1.5 m/s CPDAT1 Tool[1] Base[0] LIN P2 C_CONT Vel1.5 m/s CPDAT2 Tool[1] Base[0] ; 需要精确到位时不带 CONT LIN P3 Vel0.8 m/s CPDAT3 Tool[1] Base[0]CONT表示当前点不精确停止轨迹在拐角处圆滑过渡能省节拍没有CONT则每个点都先减速到零再启动定位更准但慢。放料前、插入孔前、气缸动作前的点不要加CONT其他地方追求节拍可以加。案例里如果整段程序每个点都带CONT先怀疑是赶节拍再检查有没有精度需求。Vel对PTP是百分比对LIN/CIRC是 m/s最容易写反的是把LIN ... Vel1.5 %当 m/s 用结果真机慢得不像话。提示凡是案例里写了Tool[1]的指令更换末端工具后整条轨迹都要重新验证不是只改点位。3.4 工具坐标系与基坐标系决定点位归属每条运动指令后面的Tool[1] Base[0]决定了这个点相对谁计算。Tool 是法兰盘上工具的中心点Base 是工件坐标系。换了夹爪TCP 变了原来的点位全部要重新示教工件装夹角度变了改 Base 比逐个改点更合理。案例 PDF 里如果带了某条线的 TCP 数据别直接复制到另一台机器人上坐标系不一致的时候点位差几毫米就是撞机。4. 库卡机器人程序改造I/O、中断与外部自动控制案例程序能不能落地取决于 I/O 和后处理逻辑这一部分在 PDF 里往往被压缩成几行但恰恰是最值钱的。4.1 把输入输出定义成有意义的信号名程序案例里到处是裸的$IN[5]、$OUT[3]不改名没办法维护。常见做法是在.dat文件里声明 SIGNALSIGNAL AUTO_START $IN[1] SIGNAL MANUAL_MODE $IN[2] SIGNAL GRIPPER_ON $OUT[5] SIGNAL ALARM_STOP $OUT[20]声明之后程序里写AUTO_START而不是$IN[1]旁人接手也能直接看懂。注意$IN和$OUT本身是 BOOL信号定义不要乱加数据类型。模拟量用$ANIN[...]读取后再在程序里换算成浮点数直接整成“32 个输入都是浮点数”的写法只是给自己挖坑。4.2 用 INTERRUPT 处理急停和气缸报警急停、气缸报警这类信号必须异步响应不能放在 LOOP 里一个个查。库卡机器人编程里对应的机制是 INTERRUPT; 声明中断第 7 路输入变为 TRUE 时跳转到报警处理 INTERRUPT DECL 7 WHEN $IN[7] DO ALARM_HANDLER() INTERRUPT ON 7 DEF ALARM_HANDLER() ; 停住机器人输出报警标志给 PLC STOP $OUT[20] TRUE END逻辑说明INTERRUPT DECL建立信号与子程序之间的关联WHEN $IN[7] DO检测到上升沿就异步切入。中断是抢占式的程序无论执行到哪一行都会被插进去适合急停和人机交互。STOP是减速停在当前轨迹末端不是瞬间抱闸真要锁轴还要额外输出联锁给驱动。程序结束前记得INTERRUPT OFF 7否则下次启动时会有重复声明的问题。气缸报警在案例里通常会单独占一路输入与急停分开。处理时先STOP再做一次完整复位流程确认夹具压力恢复后才清除报警标志。4.3 外部自动模式下接收 PLC 指令旧线改造中碰到最多的是“库卡机器人外部控制模版”也就是把机器人切到外部自动由 PLC 发启动指令; 外部自动启动握手 $OUT[1] TRUE ; 告诉 PLC 机器人已就绪 WAIT FOR $IN[1] ; 等 PLC 启动命令 WAIT FOR NOT $IN[1] ; 等命令撤销避免重复触发 CALL AUTO()WAIT FOR是条件等待程序在等待时不退出当前模块。外部自动模式下示教器要拨到 AUT 或 EXT 挡位不能停在 T1。做这条流程时先跟 PLC 工程师对齐$IN信号地址表再动机器人程序否则案例里再好的逻辑也跑不通。5. 验证案例程序先仿真、再单步、后联动程序案例不是拿来抄完就上机的验证顺序决定了停机时间。5.1 先在电脑上用库卡机器人仿真验证改写完案例程序后我一般不会直接开真机全速跑。电脑上装 KUKA.Sim 或 KRC Office 仿真环境把改好的.src和.dat导入工程先跑一遍完整路径看有没有不可达点、奇异点和工具干涉。仿真环境里碰撞只撞虚拟体可以反复试错确认路径没问题再进现场。5.2 示教器单步验证的三种模式模式行为适用阶段T1 手动慢速单步执行一条指令第一次试路径T2 手动快速连续运行但速度受限观察完整流程和 I/O 时序AUT/EXT 外部自动全速运行受 PLC 控制联调T1 模式下逐条执行点位姿态有问题一眼就能看到。T2 模式跑整段流程重点看气缸动作和机器人轨迹的先后关系。5.3 案例落地时的三个坑第一个坑案例里的点位是用原工具的 TCP 示教的换了夹爪不重新示教就运行第一下撞墙的往往不是机器人是夹具。第二个坑WAIT SEC写在带CONT的运动点后机器人还没真正到位就开始计时节拍和精度全乱要在精确到位点后去掉CONT。第三个坑没做备份就改.dat。程序改崩了想还原发现原先的 E6POS 数据没存档手写 X/Y/Z/A/B/C 最容易漏 B 角。改任何程序前先做一次完整的归档备份这是库卡机器人调试现场的常规动作。验证顺序固定为电脑仿真、T1 单步、T2 走流程、外部自动联动。每一步确认信号时序正常后再切下一挡程序案例才能真正变成线上能跑的程序。本文还有配套的精品资源点击获取
返回列表