基于Profinet协议的协同控制方案 | 涵盖硬件配置、通信设置、编程实现全流程
在现代工业自动化体系中,PLC(可编程逻辑控制器)与工业机器人的协同作业已成为核心环节。西门子PLC凭借其稳定的控制性能,KUKA机器人以其高精度的运动控制能力,二者的联动应用在汽车制造、电子装配等自动化产线中不可或缺,能够显著提升生产效率、降低人工干预成本。
本文聚焦于通过Profinet协议实现西门子PLC对KUKA机器人的外部控制,达成二者的精准协调作业。内容覆盖硬件选型、软件配置、信号时序设计及核心程序编写,核心目标是通过外部自动运行接口,实现上级控制器(西门子PLC)对机器人进程的全面管控,包括运行许可下发、故障状态反馈、程序启动执行等关键功能。
外部自动运行接口的核心逻辑是:上级控制系统(PLC)向机器人控制系统发送控制信号,机器人控制系统向上级反馈运行状态与故障信息,通过标准化的IO配置实现双向通信。
KUKA机器人系统:完整机器人本体、KRC机器人控制器、SmartPAD示教器
通信模块:Profinet控制器/设备模块、DeviceNet主站/从站模块
网络设备:普通交换机(单设备连接)或PN/PN Coupler(多设备组网)
外部主控设备:西门子1214PLC(核心控制单元)
PLC组态工具:博途(TIA Portal)- 用于PLC的硬件组态、程序编写与调试
机器人配置工具:WorkVisual - 用于KUKA机器人的Profinet通信参数配置
版本兼容性要求:确保PLC与机器人的Profinet选项版本匹配(例如KRC4-ProfiNet4.1)
1. 启动WorkVisual软件,为机器人添加Profinet通信选项
2. 配置设备名称与网络参数:设置IP地址、子网掩码(需与PLC保持同一网段)
3. IO映射优化:删除冗余信号(如256字节安全信号),仅保留关键输入/输出端
4. 导出GSDML文件:该文件包含机器人的Profinet设备描述,用于PLC端导入组态
1. 打开博途软件,导入KUKA机器人的GSDML文件(路径:AdditionalFilesGSD)
2. 添加Profinet设备:在设备组态界面中添加KUKA机器人Profinet设备,分配输入/输出地址(起始字节可自定义,无需与WorkVisual完全一致)
3. 网络参数匹配:设置PLC的IP地址、子网掩码(示例:IP 192.168.1.4,子网掩码 255.255.255.0),确保与机器人端网络参数一致
4. 机器人IO模块配置:在博途软件中完成机器人IO模块的逻辑组态,建立信号映射关系
| 配置项< | 机器人端设置< | PLC端设置 |
|---|---|---|
| 设备名称 | 自定义(如krc5搬运机器人) | 与机器人端完全一致 |
| IP地址 | 192.168.1.X(X≠PLC地址) | 192.168.1.4(示例) |
| 子网掩码 | 255.255.255.0 | 255.255.255.0 |
| 关键文件 | 导出GSDML文件 | 导入GSDML文件 |
输入端信号用于PLC向机器人发送控制指令,核心信号定义如下:
| 信号名称< | 功能描述< | 信号类型< | 关键参数 |
|---|---|---|---|
| PGNO | 当前程序号 | 数字信号 | 最大值由PGNO_LENGTH定义 |
| PGNO_TYPE | 程序号类型 | 数字信号 | 默认值为1 |
| PGNO_LENGTH | 程序号位字节宽度 | 数字信号 | 示例值7(最大值127) |
| PGNO_VALID | 程序编号有效 | 脉冲信号 | IN[42](示例),信号为TRUE时程序号生效 |
| $EXT_START | 外部启动 | 脉冲信号 | 上升沿触发,IN[100](示例) |
| $MOVE_ENABLE | 运行开通 | 电平信号 | TRUE=允许运行,IN[1025](示例) |
| $CONF_MESS | 故障确认 | 脉冲信号 | IN[1026](示例),故障复位触发 |
| $DRIVES_ON | 驱动装置接通 | 脉冲信号 | 高脉冲≥20ms,IN[100](示例) |
| $DRIVES_OFF | 驱动装置关闭 | 电平信号 | 下降沿生效,IN[1025](示例) |
输出端信号用于机器人向PLC反馈运行状态,核心信号定义如下:
$PERI_RDY:中间回路充电完成,驱动装置就绪(逻辑1=就绪)
$ALARM_STOP:急停状态反馈(正常=1,急停按下=0)
$USER_SAF:安全防护状态(护栏开关/确认开关状态反馈)
$PRO_ACT:机器人程序运行中(处理程序/中断时=1)
$IN_HOME:机器人位于原点(HOME点=1)
$ON_PATH:机器人位于编程轨迹上(无公差,偏离即复位)
PGNO_REQ:程序号请求(信号变化时需PLC发送程序号)
APPL_RUN:机器人正在处理应用程序(运行中=1)
$STOPMESS:要求停止机器人的信息提示(如急停、防护装置触发)
在T1模式下将用户程序(如EXAMPLE1())插入CELL.src,选定该程序后,将机器人运行模式切换至EXT_AUTO(外部自动模式)。
PLC上电后,立即向机器人发送$MOVE_ENABLE高电平信号(IN[1025]),该信号需持续保持。
延迟500ms后,PLC向机器人发送$DRIVES_OFF高电平信号(IN[1025]),持续保持。
延迟500ms后,PLC向机器人发送$DRIVES_ON脉冲信号(IN[100]);机器人接收后反馈$PERI_RDY信号,PLC收到该信号后断开$DRIVES_ON。
PLC发送$EXT_START脉冲信号(IN[100]),触发机器人启动CELL.src程序(此时机器人暂不运动)。
PLC接收到机器人的PGNO_REQ信号后,发送目标程序号(如CASE1对应EXAMPLE1(),通过IN[33]高电平实现)。
延迟500ms后,PLC发送PGNO_VALID脉冲信号(IN[42]),机器人程序号生效,开始执行EXAMPLE1()程序。
程序号变更:重复步骤6-7,PLC重新发送程序号与PGNO_VALID脉冲,机器人切换至新程序
机器人停止:断开$DRIVES_OFF信号,机器人伺服系统关闭(紧急停止可通过$ALARM_STOP信号触发)
停止后重启:重复步骤3-5,即可重新启动机器人自动运行
故障复位:机器人出现故障时,PLC发送$CONF_MESS脉冲信号(IN[1026]),即可完成故障复位
在博途软件中定义PLC与机器人的信号映射关系,分为输入映射(KUKA→PLC)和输出映射(PLC→KUKA):
| 信号名称< | 数据类型< | 偏移量< | 默认值< | 功能描述 |
|---|---|---|---|---|
| robot_out1_ALARM_STOP | Bool | 0.0 | false | 机器人急停状态 |
| robot_out2_USER_SAF | Bool | 0.1 | false | 操作人员防护装置状态 |
| robot_out3_PER_RDY | Bool | 0.2 | false | 驱动装置就绪 |
| robot_out4_HOME | Bool | 0.3 | false | 机器人原点位置反馈 |
| robot_out5_IO_ACTCONF | Bool | 0.4 | false | 外部自动运行激活状态 |
| robot_out6_STOPMESS | Bool | 0.5 | false | 故障停止信号 |
| robot_out7_PRO_ACT | Bool | 0.6 | false | 程序运行中反馈 |
| robot_out8_pgno_req | Bool | 0.7 | false | 程序编号请求 |
| 信号名称< | 数据类型< | 偏移量< | 功能描述 |
|---|---|---|---|
| robot_in1_PGNO_PARITY | Bool | 34.0 | 程序号奇偶校验(0=无校验) |
| robot_in2_PGNO_VALID | Bool | 34.1 | 程序编号有效 |
| robot_in3_EXT_START | Bool | 34.2 | 程序启动 |
| robot_in4_MOVE_ENABLE | Bool | 34.3 | 运行开通 |
| robot_in5_CONF_MESS | Bool | 34.4 | 故障复位 |
| robot_in6_DRIVES_OFF | Bool | 34.5 | 驱动器关闭 |
| robot_in7_DRIVES_ON | Bool | 34.6 | 驱动装置接通 |
| robot_in17-24 | Byte | 36.0 | 程序号(默认16#0) |