发那科机器人与西门子 PLC 通讯方案
在工业自动化现场,发那科(FANUC)机器人与西门子 PLC 的组合十分常见,但两者协议壁垒常常让工程师头疼——发那科机器人原生支持 EtherNet/IP,而西门子 PLC(S7-1200/1500)主打 Profinet,直接通讯往往语言不通。
本文整理两种经过现场验证的通讯方案(网关跨协议版 + Modbus TCP 低成本版),步骤拆解到每一步操作,标注新手常踩的坑,附 PLC 测试代码和故障排查方法,适合工控工程师参考落地。
核心前提(避免做无用功)
- 发那科机器人:支持 EtherNet/IP 或 Modbus TCP 功能(需确认系统选件,无选件需联系厂家授权,如 Modbus TCP 需 R602 选件),本文以 R-30iB 系列为例。
- 西门子 PLC:S7-1200/S7-1500(本文分型号适配步骤),安装 TIA Portal(博图)软件(V15 及以上版本)。
- 硬件准备:网线、协议网关(仅网关版需要)、调试电脑。
- 核心原则:无论哪种方案,机器人、网关(如有)、PLC 的 IP 必须在同一网段,数据长度(输入/输出字数)必须完全一致,否则通讯必失败。
方案一:网关版(推荐,稳定高效,适配 S7-1500+ 发那科 R-30iB)
适用场景:中大型产线、需要高速实时通讯(如焊接、搬运协同)、多设备联动,通过 Profinet 转 EtherNet/IP 网关打破协议壁垒,全程实操可复现。
第一步:发那科机器人侧配置(EtherNet/IP 从站,核心步骤)
机器人侧核心是开启 EtherNet/IP 功能、设置 IP 和数据参数,每一步都需确认状态,避免后续返工。
- 功能验证(关键前置) 打开机器人示教器,按下【MENU】键 → 进入【状态(Status)】→ 选择【版本 ID(Version ID)】,确认列表中存在'EtherNet/IP'选项,若无则需购买对应选件,否则无法继续配置。
- 设置 IP 地址(通讯基础) 路径:【MENU】→ 【设置(Setup)】→ 【主机通讯(Host Comm)】→ 【TCP/IP】; 选择【端口#1】,设置 IP 地址(如 192.168.1.100),子网掩码 255.255.255.0(与后续网关、PLC 保持一致); ⚠️ 避坑点:修改 IP 后必须重启机器人控制器,否则 IP 不生效,很多新手卡在这里!
- EtherNet/IP 核心配置(数据交互关键) 重启机器人后,路径:【MENU】→ 【I/O】→ 【EtherNet/IP】; 此时会看到 Connection 1 状态为'运行(Run)',无法修改参数,需选中该连接,按下【F5】键,设置为'无效(Inactive)'(解锁参数); 按下【F4】进入适配器配置,设置:输入大小(Input Size)=4 Words(64 位),输出大小(Output Size)=4 Words(64 位); ⚠️ 重点:该数据长度需牢记,后续网关、PLC 配置必须完全一致,差 1 字节都会导致通讯失败; 设置完成后,再次按下【F5】激活连接,重启机器人,确认 Connection 1 状态恢复为'运行(Run)',底层链路打通。
- 获取 EDS 文件(网关识别机器人用) 在示教器【文件】菜单中备份 EDS 文件,或记录文件中'Connection Point(连接点/实例号)',后续配置网关时需填写。
第二步:协议网关配置('翻译官'部署,承上启下)
网关的作用是实现 Profinet 与 EtherNet/IP 的协议转换,一边对接西门子 PLC(Profinet 主站),一边对接发那科机器人(EtherNet/IP 从站),配置核心是'参数对应'。
- 网关软件安装 安装网关配套配置软件,打开软件新建项目。
- Profinet 侧配置(对接 PLC) 在软件左侧 Profinet 设置栏,设备名称留空(由 TIA Portal 后续分配,填错会导致 PLC 无法识别网关); 数据处理设置:'掉线后数据处理'设为'保持最后值',避免机器人因通讯中断突然急停,引发生产事故。
- EtherNet/IP 侧配置(对接机器人) 切换到 EtherNet/IP 设置页,网关作为主站连接机器人; 设置网关 IP(如 192.168.1.10),确保与机器人 IP(192.168.1.100)在同一网段; 添加从站:输入机器人 IP(192.168.1.100),填写之前记录的'连接点(实例号)'; 数据映射:严格对应机器人设置的 4 字输入、4 字输出,⚠️ 关键逻辑:网关的'输出'对应机器人的'输入',网关的'输入'对应机器人的'输出',别配反!
- 配置下载与生效 点击软件'下载'按钮,将配置下载到网关,重启网关,观察网关指示灯有节奏闪烁,说明网关配置生效。
第三步:西门子 PLC 侧配置(S7-1500,TIA Portal 实操)
PLC 侧核心是导入网关 GSDML 文件、硬件组态、数据映射,完成与网关的通讯,进而实现与机器人的数据交互。
- 导入 GSDML 文件 打开 TIA Portal,新建项目,选择对应 S7-1500 型号; 路径:【选项】→ 【管理通用站描述文件】,导入网关对应的 GSDML 文件(官网可下载最新版本),刷新硬件目录,即可找到网关型号。
- 硬件组态与设备点名 在'网络视图'中,将网关拖入 Profinet 网络,连接 Profinet 网线; 右键点击网关图标,选择【分配设备名称】,输入与网关软件中一致的名称(之前留空的名称,此处统一填写),点击【分配】; 当软件提示'设备名称匹配成功'(绿色对勾),说明 PLC 与网关建立物理连接,随后为网关分配 IP(如 192.168.1.11),与机器人、网关在同一网段。
数据映射与程序编写 双击网关设备,在'设备视图'中添加 IO 模块,选择'4 Words Input / 4 Words Output'配置(与机器人、网关保持一致); 记录 PLC 分配的地址区(如 IW256 开始为机器人状态,QW256 开始为 PLC 控制命令); 下载硬件组态到 PLC,编写测试程序(附实测代码 + 详细注释),实现信号交互:
第四步:通讯测试与验证(实测关键步骤)
配置完成后,必须进行测试,确保通讯稳定、数据交互正常,避免现场调试踩坑。
- 状态检查 确认机器人示教器 EtherNet/IP 连接为'运行',网关指示灯正常闪烁,TIA Portal 中网关设备状态为'在线'。
- 信号交互测试
- PLC→机器人:在 TIA Portal 监控表中,将 QW256 设为 16#0001(启动信号),观察机器人示教器中对应 DI 点是否置位,机器人是否执行启动动作;
- 机器人→PLC:手动在机器人示教器中置位 DO 点,观察 TIA Portal 监控表中 IW256 对应数据是否变化,确保状态正常反馈。
- 稳定性测试 持续运行 30 分钟,观察数据无丢包、无误码,机器人动作与 PLC 命令一致,说明通讯稳定。
方案二:Modbus TCP 版(低成本,适配 S7-1200+ 发那科机器人)
适用场景:小型工作站、简单信号交互(如启动、停止、状态反馈)、低成本需求,无需额外网关,通过 Modbus TCP 协议直接通讯,实测 S7-1200 与发那科 R-30iB 完美兼容。
第一步:发那科机器人侧配置(Modbus TCP 服务器/从站)
- 功能验证 打开示教器,【MENU】→ 【I/O】→ 【Modbus TCP】,若无此选项,需安装 Modbus TCP 软件选项(R602)。
- 基础参数设置 角色设为【服务器(Server)/从站(Slave)】; 机架号(Rack)设为 96(发那科 Modbus TCP 标准机架号),插槽(Slot)设为 1; 设置输入字数(Input Words)和输出字数(Output Words),各设为 4 字(64 位),修改后重启机器人控制器生效。
- I/O 信号分配 【MENU】→ 【I/O】→ 【数字量(DI/DO)】,找到机架号 96 的设备,分配具体点位范围(如 DI1-DI64、DO1-DO64),用于后续信号映射。
第二步:西门子 S7-1200 PLC 侧配置(Modbus TCP 客户端/主站)
- 建立连接 打开 TIA Portal,新建 S7-1200 项目,进入【程序块】→ 【系统块】→ 【连接】,新建连接,选择【TCON_IP_V4】; 填写机器人 IP 地址(如 192.168.1.100),端口号设为 502(Modbus TCP 默认端口),记录连接 ID(如 1)。
- 调用 MB_CLIENT 指令
在 OB1 中调用 MB_CLIENT 指令,参数配置如下:
- REQ:用上升沿触发(如 M0.0 配合 P 触发器),避免高频连续触发;
- CONNECT_ID:填入上述连接 ID(如 1);
- IP_PORT:502;
- MB_MODE:0(读)、1(写);
- MB_DATA_ADDR:寄存器起始地址(⚠️ 避坑点:发那科 DO 对应 400001 开始,DI 对应 400065 开始,需根据分配的字数调整);
- MB_DATA_LEN:4(与机器人设置的字数一致);
- MB_DATA_PTR:指向 DB 块(如 P#DB1.DBX0.0 WORD 4),用于存放读写数据。
数据处理与测试代码 ⚠️ 注意:S7-1200 与发那科字节顺序可能不一致(大小端问题),若 PLC 写入 16#0001,机器人读到 16#0100,需用 SWAP 指令交换字节; 附实测测试代码(含详细注释):
第三步:通讯测试与故障排查
- 测试步骤 启动 PLC 和机器人,触发读请求,观察 DB 块中是否正确读取机器人 DI 状态;触发写请求,发送启动信号,观察机器人是否响应。
- 常见故障解决(实测总结)
- 连接失败:检查机器人防火墙设置,确保允许 PLC IP 连接;确认端口 502 未被占用,网线连接正常。
- 数据错误:核对 MB_DATA_ADDR 地址是否正确,检查字节顺序,必要时使用 SWAP 指令。
- 读写超时:调整 REQ 触发方式,避免高频连续触发,等待 DONE 或 ERROR 信号结束后再发送下一条请求。
两大方案对比与核心避坑总结(必看)
对比项
| 对比项 | 网关版(Profinet 转 EtherNet/IP) | Modbus TCP 版 |
|---|---|---|
| 适用场景 | 中大型产线、高速实时通讯、多设备联动 | 小型工作站、简单信号交互、低成本需求 |
| 硬件成本 | 需额外购买协议网关 | 无额外成本(仅需网线) |
| 实时性 | 高(适合急停、运动轨迹控制) | 一般(适合离散量信号) |
| 配置难度 | 中等(需配置网关,步骤较多) | 简单(直接协议对接) |
核心避坑点(实测踩过的坑,帮你省时间)
- 参数一致性:机器人、网关(如有)、PLC 的输入/输出字数必须完全一致,IP 必须在同一网段,这是通讯成功的前提,缺一不可。
- 发那科重启生效:修改机器人 IP、Modbus TCP 参数、EtherNet/IP 数据长度后,必须重启控制器,否则参数不生效。
- 网关映射逻辑:网关的'输入/输出'与机器人的'输入/输出'是交叉映射,别配反,否则信号无法正常交互。
- GSD/EDS 文件:PLC 导入网关 GSDML 文件、网关导入机器人 EDS 文件,必须使用最新版本,否则会出现设备无法识别的问题。
- Modbus 地址:发那科 DI/DO 对应 Modbus 寄存器地址有固定偏移(DO=400001,DI=400065),需核对手册,避免地址写错导致数据读取失败。
总结
本文两种方案均经过工业现场实测验证,可根据自身项目的成本、通讯需求选择:中大型产线优先选网关版,追求稳定高效;小型工作站选 Modbus TCP 版,低成本快速落地。
所有步骤均拆解到具体按键和代码,新手可直接照搬,老手可快速跳过基础步骤,重点看避坑点和故障排查。如果在调试过程中遇到问题,建议查阅相关手册或咨询技术支持。
