返回主站|会员中心|保存桌面

发那科机器人配件(中国)服务中心    

发那科机器人配件、模块、伺服电机

网站公告
发那科示教器、驱动器、伺服电机、通讯板卡,各型号齐全!
站内搜索
 
新闻分类
  • 暂无分类
友情链接
首页 > 新闻中心 > 欧姆龙PLC和发那科机器人如何进行信息交付!
新闻中心
欧姆龙PLC和发那科机器人如何进行信息交付!
发布时间:2025-12-28        浏览次数:0        返回列表

欧姆龙(OMRON)PLC 与发那科(FANUC)机器人之间的通信和数据交互方法,这是工业自动化中控制器与机器人协同作业的典型需求。

欧姆龙 PLC 与发那科机器人的通信以工业以太网为核心载体,主流采用发那科专属的 Focas/EthernetIP 协议或通用 MC 协议,下面我会详细讲解最实用、最稳定的实现方案,覆盖配置、编程和异常处理全流程。

一、通信准备工作

1. 硬件与环境要求

设备 / 软件具体要求
欧姆龙 PLC需带以太网模块 / 端口(如 NJ/NX 系列内置以太网、CP1H-ETN、CJ2M-ETN、CS1W-ETN21)
发那科机器人R-30iB/R-30iB Plus/R-40iB 控制器(均内置以太网口,支持 Focas2/EthernetIP)
网络配置PLC 与机器人接入同一工业交换机,配置同一网段 IP(如 PLC:192.168.1.10,机器人:192.168.1.20)
软件工具欧姆龙:Sysmac Studio(NJ/NX)/CX-Programmer(CJ/CP/CS);发那科:RoboGuide(离线编程)/ 示教器(在线配置)

2. 核心通信协议选择

优先推荐以下两种协议(按工业场景适配度排序):

协议类型适用场景优势
Focas2 协议(发那科专属)大部分场景(指令下发、状态读取、位置监控)功能最全,支持发那科所有机器人指令,稳定性高
EtherNet/IP高速实时交互(如高频 IO、位置同步)工业标准协议,欧姆龙 PLC 原生支持,延迟 < 10ms

二、主流方案:基于 Focas2 协议的以太网通信

这是发那科机器人与第三方 PLC 通信的标准方案,下面分「机器人端配置」「PLC 端编程」「数据交互示例」三部分讲解。

1. 发那科机器人端配置(示教器 + RoboGuide)

步骤 1:启用以太网与 Focas2 协议

  1. 登录机器人示教器(需管理员权限),进入「SETTING」→「NETWORK」→「ETHERNET」

  2. 设置机器人 IP(如 192.168.1.20)、子网掩码(255.255.255.0)、网关(192.168.1.1)

  3. 进入「SETTING」→「INTERFACE」→「Focas2」,勾选「Enable Focas2 over Ethernet」,端口默认8193

  4. 重启机器人控制器使配置生效

步骤 2:配置机器人 I/O 信号映射(可选)

若需通过 PLC 控制机器人启停 / 报警复位,可配置数字信号映射:

  • 机器人端:将「启动」映射到 DI [1]、「停止」映射到 DI [2]、「报警复位」映射到 DI [3]

  • 机器人状态:将「运行中」映射到 DO [1]、「报警」映射到 DO [2]、「急停」映射到 DO [3]

2. 欧姆龙 PLC 端编程(分 NJ/NX 和 CJ/CP/CS 系列)

方案 A:NJ/NX 系列(Sysmac Studio,ST 语言)

NJ/NX 系列支持原生 TCP/IP 通信,可直接调用 Socket 指令实现 Focas2 协议交互,以下是完整示例:

st

// 欧姆龙NJ/NX系列ST语言程序(Focas2协议通信)
PROGRAM MAIN
VAR
    // 通信基础参数
    g_sSocket: SOCKET;               // 套接字句柄
    g_bConnected: BOOL := FALSE;     // 连接状态
    g_sRobotIP: STRING := '192.168.1.20'; // 机器人IP
    g_nPort: UINT := 8193;           // Focas2默认端口
    g_nTimeout: UINT := 5000;        // 通信超时(ms)
    
    // 控制指令与状态
    g_nRobotCmd: INT := 0;           // 下发指令(1=启动,2=停止,3=复位)
    g_nRobotStatus: INT := 0;        // 机器人状态(0=空闲,1=运行,2=报警,3=急停)
    g_rJointPos: ARRAY[0..5] OF REAL; // 关节位置数据
    
    // Focas2协议数据缓冲区
    g_sSendBuf: ARRAY[0..255] OF BYTE; // 发送缓冲区
    g_sRecvBuf: ARRAY[0..255] OF BYTE; // 接收缓冲区
    g_nSendLen: UINT := 0;           // 发送数据长度
    g_nRecvLen: UINT := 0;           // 接收数据长度
    
    // 定时器
    g_tCycleTimer: TON;              // 通信循环定时器(100ms)
END_VAR

// 1. 建立Focas2通信连接
IF NOT g_bConnected THEN
    // 创建TCP客户端套接字
    g_sSocket := SocketCreate(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    IF g_sSocket <> INVALID_SOCKET THEN
        // 连接发那科机器人
        g_bConnected := SocketConnect(g_sSocket, g_sRobotIP, g_nPort, g_nTimeout);
        IF g_bConnected THEN
            SyslogWrite('成功连接发那科机器人: ' + g_sRobotIP, LOG_INFO);
            SocketSetOption(g_sSocket, SO_RCVTIMEO, g_nTimeout); // 设置接收超时
        ELSE
            SyslogWrite('机器人连接失败,错误码: ' + INT_TO_STRING(SocketGetLastError()), LOG_ERROR);
            SocketClose(g_sSocket);
        END_IF;
    END_IF;
END_IF;

// 2. 100ms循环通信
g_tCycleTimer(IN := g_bConnected, PT := T#100MS);
IF g_tCycleTimer.Q THEN
    g_tCycleTimer.IN := FALSE; // 复位定时器

方案 B:CJ/CP/CS 系列(CX-Programmer,梯形图 + Function Block)

CJ/CP/CS 系列需使用欧姆龙官方的「FINS/TCP」或「Socket FB 库」实现通信,核心步骤:

  1. 在 CX-Programmer 中添加「Socket 通信 FB 块」(如 TCPClient_Open、TCPClient_Send、TCPClient_Recv)

  2. 配置 FB 块参数:机器人 IP(192.168.1.20)、端口(8193)、超时时间(5000ms)

  3. 编写梯形图逻辑:

    • 触发 TCPClient_Open 建立连接

    • 通过 TCPClient_Send 下发 Focas2 指令

    • 通过 TCPClient_Recv 接收机器人状态 / 位置数据

    • 增加超时判断和重连逻辑

3. Focas2 协议核心指令映射

功能欧姆龙 PLC 操作发那科机器人响应
控制机器人启停写入机器人 DI 信号(DI [1]=1 启动,DI [2]=1 停止)执行启动 / 停止程序,回传 DO [1]=1(运行中)
读取机器人状态发送「读取状态」Focas2 指令回传运行 / 报警 / 急停状态(DO [1]/DO [2]/DO [3])
读取关节位置发送「读取关节坐标」Focas2 指令回传 6 轴角度(浮点数格式)
复位机器人报警写入机器人 DI [3]=1复位报警,回传 DO [2]=0

三、备选方案:EtherNet/IP 通信(高实时性场景)

适用于需要高频数据交互(如 10ms 级位置同步)的场景,步骤如下:

1. 机器人端配置

  1. 发那科示教器进入「SETTING」→「ETHERNET/IP」,设置为「Slave(从站)」模式

  2. 配置输入 / 输出字节数(如 Input=16 字节,Output=16 字节),映射 DI/DO/ 关节位置数据

2. PLC 端配置(Sysmac Studio/CX-Programmer)

  1. 欧姆龙 PLC 启用「EtherNet/IP Master(主站)」功能

  2. 添加发那科机器人为 EtherNet/IP 从站,配置 IP 地址和数据映射表:

    • PLC 输出(Output)→ 机器人输入(Input):控制指令、速度等

    • PLC 输入(Input)→ 机器人输出(Output):状态、位置等

  3. 使用「MOV」指令读写映射区数据,实现高速交互

st

// 示例:EtherNet/IP数据读写(NJ系列)
// PLC Output(CIO 100) → 机器人Input:控制指令
CIO[100] := g_nRobotCmd; 

// PLC Input(CIO 200) ← 机器人Output:状态
g_nRobotStatus := CIO[200]; 

// PLC Input(CIO 201-206) ← 机器人Output:关节位置
FOR i := 0 TO 5 DO
    g_rJointPos[i] := REAL_TO_LREAL(WORD_TO_DWORD(CIO[201+i*2], CIO[202+i*2]));
END_FOR;

四、通信调试与异常处理

1. 调试步骤

  1. 网络连通性测试:PLC ping 机器人 IP,确保网络无丢包

  2. 协议调试

    • 发那科端:使用 RoboGuide 的「Focas2 Monitor」监控通信数据

    • 欧姆龙端:Sysmac Studio/CX-Programmer 开启「在线监视」,查看缓冲区数据

  3. 功能测试:先测试静态数据读写(如读取状态),再测试动态指令(如启动运动)

2. 常见异常及解决方法

异常现象原因解决方法
通信连接失败IP 不在同一网段 / 机器人 Focas2 未启用检查 IP 配置,示教器确认 Focas2 端口 8193 已开启
数据读取乱码数据格式不匹配(字节序 / 浮点数)统一字节序(小端序),浮点数按 4 字节解析
指令无响应机器人未进入远程模式示教器切换为「REMOTE」模式,启用「外部自动运行」
通信延迟大网络拥堵 / 循环周期过长使用工业交换机,缩短通信周期(≤100ms)

五、工业场景落地建议

  1. 安全机制

    • PLC 端增加急停信号(X10),直接触发机器人急停(DI [10]),不依赖通信

    • 机器人端增加指令校验,非法指令(如超限位)直接忽略并回传报警

  2. 数据优化

    • 关节位置等浮点数数据放大 100 倍转为整数传输,避免精度丢失

    • 非实时数据(如报警信息)降低读取频率(1s / 次),减少通信负载

  3. 冗余设计

    • 关键指令(如停止)增加重复发送机制(连续 3 次),确保机器人接收

    • 通信断开时,PLC 自动输出报警并触发机器人本地安全程序

总结

  1. 核心方案:欧姆龙 PLC 与发那科机器人优先使用Focas2 协议(以太网) 通信,功能最全、稳定性最高,NJ/NX 系列用 ST 语言直接调用 Socket 指令,CJ/CP/CS 系列用 FB 块实现。

  2. 高实时场景:选择 EtherNet/IP 协议,通过主从站数据映射实现 10ms 级高速交互。

  3. 关键要点:确保机器人启用 Focas2/EtherNetIP、PLC 与机器人网络连通、增加异常处理和安全机制,是通信稳定的核心。

收缩
  • 电话咨询

  • 13175557688
  • 添加微信客服