通过外部PLC对机器人自动运行进程进行控制,其控制原理是:外部PLC通过外部自动运行接口向机器人控制系统发出机器人进程的相关信号(如:运行许可、故障确认、程序启动等),机器人控制系统向外部PLC系统发送有关运行状态和故障状态的信息。
1. 基本流程
1.1 示教器操作(KUKA SmartPAD)
示教器用于切换模式、配置机械臂的状态和确认机械臂的操作权限。对于外部自动模式,示教器需要进行以下步骤操作:
步骤 1:启动和登录
- 打开KUKA SmartPAD并登录管理员账户。
- 确认机械臂已经启动并且处于待机状态。
步骤 2:切换到外部自动模式
- 按下示教器上的“模式切换”按钮,选择外部自动模式(EXT模式)。此时,系统会将控制权移交给外部的控制器(如倍福PC)。
步骤 3:配置安全设置
- 确保所有的安全设置和急停按钮功能正常,外部控制信号已配置好。这些安全设置可以通过示教器菜单中的安全设置选项进行检查。
步骤 4:启用驱动器
- 按下启用驱动器按钮(通常是一个绿色的按钮),激活机械臂的运动驱动系统。此操作仅在外部自动模式选择后进行。
步骤 5:监控系统状态
- 在外部自动模式下,示教器将主要用于监控机械臂的运行状态,包括报警、错误或状态信息。尽管操作由外部PC控制,但示教器仍可用于查看关节角度、状态日志等。
1.2 倍福PC操作(基于TwinCAT等控制软件)
倍福PC主要用于控制机械臂的外部信号、程序执行和逻辑控制。具体操作如下:
步骤 1:启动倍福PC和TwinCAT系统
- 打开倍福PC并启动TwinCAT等控制软件。确保系统处于运行模式(RUN),并与KUKA机械臂的控制器建立通信。
步骤 2:建立通信
- 确保倍福PC与KUKA控制器通过**工业以太网(EtherCAT)**或其他通讯协议连接。通信协议应该已经预先设置好,包括IP地址和端口号。
步骤 3:加载并配置PLC程序
- 在TwinCAT中,加载控制KUKA机械臂的PLC程序。这些程序包含了运动逻辑和控制指令。
- 配置好外部I/O信号,如启动信号、急停信号、机械臂准备好状态信号等,确保倍福PC能够接收来自KUKA控制器的反馈信号。
步骤 4:启动外部自动程序
- 在TwinCAT的PLC界面中,启动已经编写的控制程序。这些程序应包含对机械臂的运动指令、路径规划以及传感器反馈的处理。
- 通过倍福PC,向KUKA机械臂发送“启动”信号(EXT_START),此信号由倍福PC控制的PLC程序触发,以启动外部自动模式下的机械臂操作。
步骤 5:实时监控与调试
- 使用倍福PC的调试和监控功能,实时查看机械臂的运动状态、传感器反馈和PLC逻辑执行情况。
- 监控运行过程中的错误或异常信息,并根据需要进行程序调整或逻辑修改。
2. 示教器操作具体配置
2.1 配置外部自动输入端
通过示教器进入外部自动输入输出的配置页面:
输入端需要配置以下十个信号:
PGNO_TYPE- 程序号类型:
此变量确定了以何种格式来读取上级控制系统传送的程序编号。
值 | 说明 | 实例 |
---|---|---|
1 | 以二进制数值读取。上级控制系统以二进制数值形式传递程序号。 | 00100110 程序号是38 |
2 | 以BCD 值读取。上级控制系统以BCD 值的形式传递程序号。 | 00100110 程序号是26 |
3 | 以N 选 1读取。上级控制系统以N 选 1的形式传递程序号。 | 00000100 程序号是3 |
本系列文章PGNO_TYPE信号一般取值为1,即以二进制的编码形式传递程序号。
PGNO_LENGTH- 程序号长度:
此变量确定了上级控制系统传送的程序编号的位宽。 值域: 1 … 16。
PGNO_PARITY- 程序号的奇偶位:
上级控制系统传递奇偶位的输入端,没有特殊要求一般不设置校验。
输入端 | 函数 |
---|---|
负值 | 奇校验 |
0 | 无分析 |
正值 | 偶校验 |
PGNO_VALID- 程序号有效:
上级控制系统传送读取程序号指令的输入端,可以理解为传输程序号的时使能信号的形式。
输入端 | 函数 |
---|---|
负值 | 在信号的脉冲下降沿应用编号。 |
0 | 在线路EXT_START处随着信号的脉冲上升沿应用编号 |
正值 | 在信号的脉冲上升沿应用编号。 |
$EXT_START- 外部启动:
设定了该输入端后,输入/输出接口激活时将启动或继续一个程序 (一般为 CELL.SRC),该信号是个脉冲上升沿。
$MOVE_ENABLE- 运行开通:
该信号确定了上级控制系统对机器人驱动器使能控制。
信号 | 功能 |
---|---|
TRUE | 可手动运行和执行程序 |
FALSE | 停住所有驱动装置并锁住所有激活的指令 |
$CONF_MESS- 确认信息提示:
通过给该信号使能,当故障原因排除后,上级控制系统将确认机器人的故障信息。
$DRIVES_ON- 驱动装置接通:
通过该信号给机器人伺服驱动装置上电,该信号触发至少持续20ms的高脉冲则上级控制系统会接通机器人驱动装置。
$DRIVES_OFF- 驱动装置关闭:
如果在该输入端持续施加至少持续20 ms的低脉冲 ,则上级控制系统会关断机器人驱动装置。
$I_O_ACT -外部接口激活:
示教器选择了外部自动运行这一运行方式并且输入端 $I_O_ACT 为 TRUE (一般 始终设为 $IN[1025])后,输出端$I_O_ACTCONF - 外部自动运行激活为 TRUE。
2.2 配置外部自动输出端
输出信号总共4个菜单:
$ALARM_STOP - 紧急停止
该信号在机器人自身急停和外部急停下触发时,会发出一个报警停机控制信号。
$USER_SAF - 操作人员防护装置 / 防护门
该信号在外部自动模式时,防护装置(如安全门、卷帘门)被打开的时候,机器人会发出一个用户安全停止控制信号。
$PERI_RDY- 驱动装置处于待机状态
通过设定此输出信号,机器人控制系统通知上级控制系统,机器人驱动装置已接通。
$STOPMESS- 停止信息
该输出信号由机器人控制系统来设定,以向上级控制器显示出现了一条要求停住机器人的信息提示。
例如,当按下紧急停止按键或运行开通、操作人员防护装置被打开等情况出现时,机器人会发出该信号。
$I_O_ACTCONF- 外部自动运行激活
选择了外部自动运行这一运行方式并且输入端 $I_O_ACT 为 TRUE (默认为 $IN[1025])后,输出端为 TRUE。
$PRO_ACT- 程序激活/正在运行
当机器人程序(CELL.SRC)启动运行后,始终给该输出端赋值。
$PGNO_REQ- 程序号问询
该输出端信号变化时,要求上级控制器传送一个程序号。如果PGNO_TYPE值为3,则PGNO_REQ不被分析。
$APPL_RUN- 应用程序在运行中
该信号是机器人通知上级控制器正在处理有关程序(CELL.SRC中的程序)。
$IN_HOME- 机器人位于起始位置 (HOME)
该输出信号告知PLC,机器人正位于其起始位置(HOME)。
$ON_PATH- 机器人位于轨迹上
只要机器人位于编程设定的轨迹上,此输出信号即被赋值。
$NEAR_POSRET 在路径附近
精度可更改,默认 200MM。
$T1, T1 模式下即输出该信号
$T2, T2 模式下输出该信号
$AUT 内部自动模式下输出该信号
$ EXTERN 外部自动模式下输出该信号
2.3 CELL程序的结构和功能
CELL程序是KUKA机械臂在外部自动模式下运行的重要组成部分,负责执行各种任务并确保与PLC的有效交互。
-
初始化部分
- 在程序开始时,通常会有初始化代码,用于设置必要的变量和状态,例如:
- 设置运动参数(速度、加速度等)
- 初始化IO信号
- 设定安全状态
- 在程序开始时,通常会有初始化代码,用于设置必要的变量和状态,例如:
-
主控制循环
- 程序的主体通常是一个控制循环,该循环根据接收到的外部信号执行不同的操作。主要包括:
- 监测PLC发来的信号
- 根据外部输入信号控制机械臂的运动状态(如启动、停止、运动到指定位置等)
- 程序的主体通常是一个控制循环,该循环根据接收到的外部信号执行不同的操作。主要包括:
-
信号处理
- CELL程序中需要处理多种信号,包括但不限于:
- sEXT_START: 启动信号
- sDRIVERS_OFF: 关闭驱动器信号
- PGNO_REQ: 程序号请求信号
- sPGNO_VALID: 程序号有效信号
- SMOVE_ENABLE: 移动使能信号
- CELL程序中需要处理多种信号,包括但不限于:
-
任务执行部分
- 根据PLC信号的状态,CELL程序会执行相应的动作,比如:
- 移动到指定位置
- 执行特定的操作(如夹持、放置等)
- 监控任务状态并反馈给PLC
- 根据PLC信号的状态,CELL程序会执行相应的动作,比如:
-
异常处理
- 在程序中,通常会添加异常处理机制,用于检测和应对各种潜在的错误情况,例如:
- 检测信号丢失或超时
- 根据情况采取相应的措施(如停机、报警等)
- 在程序中,通常会添加异常处理机制,用于检测和应对各种潜在的错误情况,例如:
-
结束部分
- 程序结束时,会进行必要的收尾工作,例如清理状态、关闭驱动器、发送完成信号等。
在RAPID编程语言中,注释通常以分号(;
)开始,RAPID解释器会忽略注释内容。
; CELL程序定义
; 这是外部自动模式下的主控程序,用于管理外部控制系统发送的程序号。
DEF Cell()
; 外部程序示例声明
;EXT EXAMPLE1()
;EXT EXAMPLE2()
;EXT EXAMPLE3()
; 初始化部分
INIT
; 初始化基础技术包
BASICTECH INI
; 检查机器人是否在HOME位置
CHECK HOME
; 以100%的速度移动到HOME位置
PTP HOME Vel=100% DEFAULT
; 初始化外部自动模式
AUTOEXT INI
; 主循环开始
LOOP
; 从外部控制系统获取程序号
P00(#EXT_PGNO, #PGNO_GET, DMY[], 0)
; 根据接收到的程序号选择执行不同的子程序
SWITCH PGNO
; 如果程序号为1,执行EXAMPLE1程序
CASE 1
; 确认程序号已被接收
P00(#EXT_PGNO, #PGNO_ACKN, DMY[], 0)
; 调用用户程序1
EXAMPLE1()
; 如果程序号为2,执行EXAMPLE2程序
CASE 2
; 确认程序号已被接收
P00(#EXT_PGNO, #PGNO_ACKN, DMY[], 0)
; 调用用户程序2
EXAMPLE2()
; 如果程序号为3,执行EXAMPLE3程序
CASE 3
; 确认程序号已被接收
P00(#EXT_PGNO, #PGNO_ACKN, DMY[], 0)
; 调用用户程序3
EXAMPLE3()
; 如果程序号未定义,则发送故障信号
DEFAULT
; 发送程序号故障信号
P00(#EXT_PGNO, #PGNO_FAULT, DMY[], 0)
; 结束程序号选择
ENDSWITCH
; 主循环结束
ENDLOOP
; CELL程序结束
END
; CELL程序示例
DEF CELL()
; 初始化
DECL INT PGNO ; 程序号
DECL BOOL EXT_START ; 外部启动信号
DECL BOOL DRIVERS_OFF ; 驱动器关闭信号
DECL BOOL SMOVE_ENABLE ; 移动使能信号
; 初始化信号
EXT_START = FALSE
DRIVERS_OFF = FALSE
SMOVE_ENABLE = TRUE
; 等待外部启动信号
WAIT FOR EXT_START
; 使能驱动器
IF SMOVE_ENABLE THEN
; 启动机器人
; 这里可以添加运动指令,例如移动到起始位置
PTP {X 100, Y 100, Z 200, A 0, B 0, C 0} ; 移动到指定位置
; 发送程序号请求信号
SendPGNO_REQ()
ENDIF
; 等待接收程序号
WAIT FOR PGNO_REQ
PGNO = GetPGNO() ; 获取程序号
; 程序号有效化
WAIT 0.5 ; 等待0.5秒
SendPGNO_VALID(PGNO) ; 发送程序号有效信号
; 主循环
WHILE TRUE
; 检测外部停止信号
IF DRIVERS_OFF THEN
; 停止机器人
StopRobot()
EXIT ; 退出循环
ENDIF
; 执行运动操作
PerformTask(PGNO)
ENDWHILE
; 程序结束
SetIdleState() ; 设置空闲状态
END
第一种风格
-
程序结构:这种风格使用了
SWITCH
语句来根据程序号选择执行不同的子程序。它适用于有固定数量的子程序,并且每个子程序都由外部控制系统通过程序号来选择。 -
信号处理:使用了
P00
系统程序来处理外部信号,如获取程序号(#PGNO_GET
)、确认程序号(#PGNO_ACKN
)和发送程序号故障信号(#PGNO_FAULT
)。 -
循环机制:使用了一个
LOOP
...ENDLOOP
循环来不断检查外部控制系统发送的程序号,并根据程序号执行相应的子程序。 -
注释:代码中包含了详细的注释,有助于理解每个步骤的作用。
第二种风格
-
程序结构:这种风格更加详细地展示了初始化、信号声明、等待外部启动信号、使能驱动器、发送程序号请求信号、获取程序号、程序号有效化以及主循环中的运动操作。
-
信号声明:明确声明了用于存储程序号、外部启动信号、驱动器关闭信号和移动使能信号的变量。
-
条件逻辑:使用了
IF
语句来检查移动使能信号,并在条件满足时启动机器人和发送程序号请求信号。 -
等待机制:使用了
WAIT FOR
语句来等待外部启动信号和程序号请求信号,这有助于同步机器人与外部控制系统的动作。 -
错误处理:包含了对外部停止信号的检测,并在检测到停止信号时停止机器人并退出循环。
-
任务执行:通过调用
PerformTask(PGNO)
函数来执行与程序号相关的任务,这提供了一种更灵活的方式来处理不同的程序号。 -
程序结束处理:在程序结束时调用
SetIdleState()
函数来设置机器人的空闲状态。
第一种风格则更加简洁,适用于程序号较少且固定的情况。第二种风格提供了更多的细节和控制,使得程序的执行流程更加清晰。它适用于需要更精细控制机器人与外部控制系统交互的场景。
在T1或T2模式下运行CELL.src程序,执行图3的①部分,KUKA机器人执行回HOME点,执行BCO运行,窗口显示“已达BCO”,BCO运行使KUKA机器人运行到轨迹上。
在AUT_EXT(外部自动运行)模式下,图3的②部分指令LOOP和ENDLOOP之间循环执行程序。
2.4 外部自动启动时序
1)接通驱动装置
2)确认报警信息
3)外部启动cell程序
4)传递程序号并处理应用程序