工业机器人的学习曲线往往不是线性的——当你掌握了基础示教和简单搬运之后,面对复杂的产线集成需求,坐标系配置、IO规划与通讯协议这些"进阶关卡"便会接踵而至。本文将从实战角度出发,系统梳理发那科(FANUC)机器人进阶应用中的几个核心模块。
一、坐标系配置:从"会动"到"动得准"
发那科机器人共支持多种坐标系,其中与现场应用最紧密的是用户坐标系(User Frame)和工具坐标系(Tool Frame)。
1.1 工具坐标系(TCP)的精确标定
工具坐标系的准确性直接决定轨迹精度。当更换焊枪、吸盘等末端执行器后,必须重新标定。
标准三点法(TCP Method)操作流程:
TEXT
1. 示教器依次进入:MENU --> SETUP --> FRAME --> TOOL
2. 选择空闲工具号(如 Tool 1),按 F2 [DETAIL] 进入详细设置
3. 选择 METHOD 为 "THREE POINT"(三点法)
4. 将机器人移动至一个固定参考尖点(如锥形针尖),记录 Point 1
5. 改变机器人姿态(尽量大角度旋转腕部),再次对准同一尖点,记录 Point 2
6. 再次变换姿态,记录 Point 3
7. 系统自动计算出 TCP 位置,按 F5 [DONE] 确认
标定完成后,可手动操作机器人以多种姿态接近参考尖点,观察 TCP 是否始终重合。若偏差超过 0.5mm,建议重新标定或改用六点法(含方向设定)。
1.2 用户坐标系(UFRAME)的设定
用户坐标系常用于斜面孔位加工或变位机协同场景。其核心思路是将工件坐标系"告诉"机器人。
三点法设定步骤:
步骤 | 操作内容 | 说明 |
|---|---|---|
1 | MENU --> SETUP --> FRAME --> USER | 进入用户坐标系界面 |
2 | 选择空闲编号(如 UFRAME[1]) | 按 F2 进行详细设定 |
3 | 记录原点(ORIGIN) | 示教工件原点位置 |
4 | 记录 X 方向点(X DIRECTION) | 示教X轴正方向上任意一点 |
5 | 记录 Y 方向点(Y DIRECTION) | 示教XY平面内Y正方向一点 |
6 | 确认生成坐标系 | 系统自动计算并保存 |
代码中调用用户坐标系:
TP
! 在 TP 程序中指定用户坐标系和工具坐标系
UFRAME_NUM=1 ;
UTOOL_NUM=3 ;
L P[1:HOME] 100mm/sec FINE ;
在多工位交替作业时,务必在每次切换工位前明确赋值 UFRAME_NUM。常见的"撞机"事故往往源于坐标系遗忘复位。
二、程序流程控制:逻辑与循环
发那科 TP 语言虽不如高级语言灵活,但通过条件跳转、循环标签和宏指令,足以实现复杂的生产逻辑。
2.1 条件分支与等待
TP
1: ! 判断数字输入信号 DI[1] 是否为 ON
2: IF DI[1]=ON THEN ;
3: JMP LBL[100] ;
4: ELSE ;
5: JMP LBL[200] ;
6: ENDIF ;
7: LBL[100] ;
8: CALL JOB:PART_A ;
9: JMP LBL[300] ;
10: LBL[200] ;
11: CALL JOB:PART_B ;
12: LBL[300] ;
等待类指令在联机调试中极为常用:
TP
! 等待某个输入信号为 ON,超时则报警
WAIT DI[5]=ON TIMEOUT=30 LBL[999] ;
! 等待设定时间(单位:秒)
WAIT 2.50 (sec) ;
关于超时跳转的说明
关于超时跳转的说明
TIMEOUT=30 LBL[999] 的含义是:最多等待 30 秒,若 DI[5] 仍未变为 ON,则程序跳转至标签 999 处执行报警逻辑。这是防止机器人"死等"造成产线停机的关键手段。
2.2 循环结构
发那科推荐使用 FOR 循环和 LBL/JMP 组合实现多重循环。
TP
! 利用 FOR 循环实现 5 次重复搬运
R[1]=0 ;
FOR R[1]=1 TO 5 ;
CALL JOB:PICK ;
CALL JOB:PLACE ;
ENDFOR ;
对于无限循环(如机器人等待启动信号),常用如下结构:
TP
1: LBL[10] ;
2: IF DI[7]=ON THEN ;
3: JMP LBL[20] ; ! 启动信号到达,跳出等待循环
4: ENDIF ;
5: WAIT 0.50 (sec) ;
6: JMP LBL[10] ;
7: LBL[20] ;
2.3 寄存器与位置寄存器
R[i](数字寄存器):存储整数或实数,常用于计数、逻辑判断。
PR[i](位置寄存器):存储位置数据(X、Y、Z、W、P、R),常用于动态偏移。
TP
! 使用 PR 实现动态堆垛偏移
PR[10,1]=PR[10,1]+50 ; ! X 方向每次递增 50mm
L P[1] 100mm/sec FINE OFFSET PR[10] ;
数字寄存器支持加减乘除及函数运算,例如 R[2]=R[1]*2、R[3]=ABS[R[2]]。合理使用寄存器可大幅减少程序冗余。
三、IO 点分配与规划
IO 规划是连接 PLC 与机器人的"神经系统"。发那科机器人标配 DI/DO(数字量) 与 RI/RO(机器人内部继电器),还可扩展 AI/AO(模拟量) 与 GI/GO(组输入/输出)。
3.1 信号映射配置
进入 MENU --> I/O --> DI/DO,即可查看当前信号状态。若要修改信号映射(将物理端口绑定到逻辑地址),需进入:
TEXT
MENU --> I/O --> 按下 F2 [CONFIG] --> 选择对应板卡(如 PROCESS_IO)
典型 IO 分配表示例:
信号名 | 地址 | 方向 | 功能说明 |
|---|---|---|---|
DI[1] | 机器人启动请求 | 输入 | PLC 请求启动 |
DI[2] | 夹具夹紧完成 | 输入 | 工件夹持到位反馈 |
DI[3] | 安全门状态 | 输入 | 门开则急停 |
DO[1] | 运行中 | 输出 | 告知 PLC 机器人正在工作 |
DO[2] | 程序完成 | 输出 | 单循环完成信号 |
DO[3] | 报警输出 | 输出 | 触发产线蜂鸣器 |
3.2 使用 IO 信号控制程序流
TP
! 主程序逻辑示例
1: JMP LBL[1] ;
2: LBL[10] ; ! 等待启动
3: IF (DI[1]=ON AND DI[2]=ON) THEN ;
4: DO[1]=ON ; ! 告诉 PLC 机器人开始运行
5: JMP LBL[20] ;
6: ENDIF ;
7: JMP LBL[10] ;
8: LBL[20] ;
9: CALL JOB:AUTO_CYCLE ;
10: DO[1]=OFF ;
11: DO[2]=ON ; ! 完成信号
12: WAIT 0.50 (sec) ;
13: DO[2]=OFF ;
14: JMP LBL[10] ;
3.3 组输入输出(GI/GO)与模拟量
当需要传输多字节数据(如工件型号编码)时,可使用组输入/输出。一个组可包含 1~16 个点位,数值范围为 0~65535。
TP
! 将组输出 GO[1](8位)设置为数值 25(代表工件类型)
GO[1]=25 ;
模拟量 AI/AO 常用于弧焊电压电流监控或外部传感器读取。
四、常用通讯配置
现代产线中,机器人几乎很少"孤立运行",更多是作为从站接入 PLC 网络。
4.1 Ethernet/IP 通讯配置
发那科支持通过 Ethernet/IP 与 AB PLC 或其它主站通讯。
配置步骤概览:
TEXT
1. MENU --> SETUP --> HOST COMM
2. 选择 TCP/IP 设置,配置机器人 IP 地址(如 192.168.1.10)
3. MENU --> I/O --> 选择 ETHIP 板卡
4. 设定 RACK/SLOT 参数(通常 RACK=1, SLOT=1)
5. 设定输入输出字节长度(如各 32 字节)
映射示例: 将 PLC 发送来的第 1~16 位映射为 DI[101]~DI[116],将 DO[101]~DO[116] 映射为发送给 PLC 的输出。
4.2 Profinet 通讯
若现场为西门子 PLC,通常采用 Profinet。需在机器人端安装 Profinet 板卡(如 CC-Link 或 Profinet 选项),并在示教器上启用相应选项功能。
TEXT
MENU --> SETUP --> PROFINET
配置 I/O 起始地址、设备名称及 IP 后,即可在 PLC 侧通过 TIA Portal 组态识别。
4.3 Socket 通讯(TCP/IP 直连)
对于视觉系统或上位机,常用 Socket 通讯实现字符串数据交互。
TP
! 建立 TCP 连接(需提前在 KAREL 程序中配置)
CALL SOCKET_CONNECT ;
机器人需具备 Ethernet 选项功能
需编写 KAREL 程序进行底层 Socket 调用
上位机需开放固定端口
若需求简单,优先考虑 I/O 映射 或 组 I/O 传输,避免复杂 Socket 编程。
五、综合案例:码垛工作站程序框架
以下整合上述知识点,给出一个双工位码垛程序的核心逻辑:
TP
! ============ 主程序 MAIN ============
1: UFRAME_NUM=1 ;
2: UTOOL_NUM=2 ;
3: DO[1]=OFF ; DO[2]=OFF ;
4: LBL[10] ; ! 等待循环
5: IF (DI[1]=ON) THEN ;
6: JMP LBL[20] ;
7: ENDIF ;
8: JMP LBL[10] ;
9: LBL[20] ;
10: DO[1]=ON ; ! 告知 PLC 开始取件
11: CALL JOB:FETCH ; ! 从工位 A 抓取
12: IF R[1]>10 THEN ; ! 堆叠计数判断
13: CALL JOB:PLACE_B ; ! 放至托盘 B
14: R[1]=0 ;
15: ELSE ;
16: CALL JOB:PLACE_A ; ! 放至托盘 A
17: R[1]=R[1]+1 ;
18: ENDIF ;
19: DO[1]=OFF ;
20: DO[2]=ON ; WAIT 0.20(sec) ; DO[2]=OFF ;
21: JMP LBL[10] ;
六、调试与排错建议
单步执行:在 T1 模式下使用
FWD键单步运行,观察每行逻辑跳转是否符合预期。信号监控:将示教器画面切换至 I/O 界面,同时观察 DI/DO 与内部信号变化。
备份习惯:每次修改坐标系或 IO 映射后,务必执行 MENU --> FILE --> BACKUP 备份所有文件。
报警排查:查看报警履历(MENU --> ALARM --> HISTORY),快速定位历史故障时间点。
任何涉及坐标系修改、IO 强制输出的操作,都必须先在 T1(低速) 模式下验证。严禁在 AUTO 模式下直接强制 DO 输出,以免造成设备损坏或人身伤害。
结语
发那科机器人进阶应用的核心在于坐标系、逻辑控制、IO 规划与通讯四者的融会贯通。掌握这些模块,意味着你不再只是"按着示教器走点"的操作员,而是能够独立设计工作站逻辑、排解通讯故障的集成工程师。建议在真实设备上反复练习坐标系标定与 IO 映射流程,熟能生巧。
