4. XG-X通信协议详解
KEYENCE XG-X 系列视觉控制器在与 PLC 集成时,并不是“插上网线就能通”,而是要先确定用哪一种工业协议、由谁做数据发起方、数据放在哪一段地址区,再决定映射的字节序与数据类型。XG-X 支持 EtherNet/IP、PROFINET、TCP/IP 无协议(Socket)、MC 协议等多种方式,它们分别对应不同的 PLC 生态与实时性需求。理解这些协议的定位差异,是后续配置与排障的基础。
四种协议的定位与适用场景
EtherNet/IP 基于 CIP 协议,是罗克韦尔(Allen-Bradley)、欧姆龙 NJ/NX 等 PLC 的常用选择。XG-X 作为 EtherNet/IP 适配器(Adapter),PLC 作为扫描器(Scanner)发起隐式(Implicit)I/O 通信,周期性交换输入/输出数据,适合需要实时同步检测结果的产线。其数据以 Assembly(实例)为单位组织,配置时需关注 Input/Output Assembly 的实例号与字节长度。
PROFINET 是西门子 S7-1200/1500、ET200 系列的主流协议。XG-X 作为 PROFINET IO Device,PLC 作为 IO Controller,通过 GSDML 文件导入设备描述,再分配设备名称与 IP。数据以输入/输出模块(Module/Submodule)形式映射到 PLC 的 I 区与 Q 区,实时性由 RT(实时)通道保证。
TCP/IP 无协议(Socket) 是最灵活的方式:XG-X 作为服务器或客户端,PLC 通过开放式 Socket 指令(如西门子 TCON/TSEND/TRCV、三菱 OPEN/SEND/RECV)收发自定义字符串或二进制帧。它不依赖任何工业协议栈,适合非实时、结果上报、参数下发等场景,但需要自行定义帧格式与握手逻辑。
MC 协议 是三菱 PLC 的专用协议,XG-X 可作为 MC 协议客户端,直接读写三菱 PLC 的软元件(D、M、X、Y 等)。它适合三菱 FX5U、Q、L、iQ-R 系列,配置简单,无需 GSDML 或 EDS 文件,但实时性弱于 EtherNet/IP 与 PROFINET,通常用于结果写入与触发信号读取。
EtherNet/IP 配置与数据映射
以罗克韦尔 CompactLogix 为例,配置分三步。第一步在 XG-X 侧进入“通信设定 → EtherNet/IP”,设定 IP 地址(如 192.168.1.50)、子网掩码,并选择 Input Assembly 与 Output Assembly 的实例号。XG-X 通常提供固定实例,例如 Input 实例 100、Output 实例 101,长度各 32 字节。第二步在 Studio 5000 中添加 Generic Ethernet Module,输入 XG-X 的 IP,选择 Comm Format 为 Data-INT 或 Data-DINT,填入 Assembly 实例号与长度。第三步建立标签映射:PLC 侧生成 `XGX:I.Data[0]` 到 `XGX:I.Data[15]`(INT 时 32 字节 = 16 个 INT),以及 `XGX:O.Data[0]` 等输出标签。
数据映射的关键是字节序与对齐。XG-X 内部结果通常按小端(Little-Endian)排列,而 EtherNet/IP 的 INT 在 PLC 中也是小端,因此直接对应即可。若使用 DINT 或 REAL,需确认 XG-X 输出的是 32 位整数还是浮点。例如检测结果“OK/NG”常放在 Input 第 0 个 INT 的 bit0,坐标 X 放在第 1、2 个 INT 组成 DINT,角度放在第 3 个 INT(放大 100 倍)。配置完成后,在 Studio 5000 的 Controller Tags 中监视 `XGX:I.Data[0]`,触发一次检测,观察 bit0 是否随结果翻转,即可验证映射正确。
PROFINET 配置与数据映射
西门子侧配置流程为:在 TIA Portal 中安装 XG-X 的 GSDML 文件,从硬件目录拖入设备,分配设备名称(如 xgx-vision-01)与 IP(如 192.168.0.60)。随后在设备概览中插入输入/输出模块,例如“Input 32 Byte”与“Output 32 Byte”。编译下载后,PLC 的 I 地址与 Q 地址自动分配,例如 I0.0~I31.7 对应 XG-X 的输入数据,Q0.0~Q31.7 对应输出数据。
映射时需注意 PROFINET 的字节序为大端(Big-Endian),而西门子 S7-1200/1500 的 DB 块中 INT 也是大端,因此若 XG-X 输出小端数据,需要在 PLC 侧用 `SWAP` 指令交换高低字节。例如 XG-X 输出的坐标 X 为 16 位整数 0x0102(小端),PLC 读到的 IW0 为 0x0201,需 `SWAP` 后才是 0x0102。这是 PROFINET 集成中最常见的“数值不对”原因。建议在 XG-X 侧将结果统一按大端输出,或在 PLC 侧建立统一的字节交换 FC 块。
TCP/IP 无协议与 MC 协议
TCP/IP 无协议适合快速验证与自定义场景。XG-X 可设为服务器,监听端口 8500。PLC 侧用 TCON 建立连接,TSEND 发送触发命令(如 ASCII 字符串 "TRIG\r\n"),TRCV 接收 XG-X 返回的结果字符串(如 "OK,123.4,56.7\r\n")。解析时按逗号分割,再转换为数值。这种方式无需 EDS/GSDML,但需自行处理粘包、超时与重连。建议在帧头加长度字段或固定结束符,并在 PLC 侧设置接收超时(如 500 ms),超时后重发触发。
MC 协议则更直接。以三菱 FX5U 为例,XG-X 作为 MC 客户端,配置目标 PLC IP(如 192.168.1.10)、端口 5000、网络号 0、站号 0。读写指令中,D 寄存器用于存放结果,M 寄存器用于触发与完成标志。例如 XG-X 将检测结果写入 D100(OK=1,NG=0),坐标写入 D101、D102,PLC 侧用 `MOV` 或 `DMOV` 读取。MC 协议配置简单,但需注意三菱的软元件地址格式(如 D100 对应十进制,X/Y 为十六进制),以及读写单位是字还是位。
协议选择与映射检查要点
选择协议时,优先看 PLC 品牌:罗克韦尔/欧姆龙选 EtherNet/IP,西门子选 PROFINET,三菱选 MC 协议,其他或非实时场景选 TCP/IP。其次看实时性:EtherNet/IP 与 PROFINET 的周期通常为 2~10 ms,适合高速产线;TCP/IP 与 MC 协议为 10~100 ms 级,适合结果上报。最后看数据量:Assembly 与 I/Q 区长度有限,若需传输图像或大量坐标,应改用 TCP/IP 或 FTP。
映射检查可按以下顺序:先确认物理链路与 IP 可达(ping 通),再确认协议层连接建立(EtherNet/IP 看 Scanner 状态,PROFINET 看 Device 是否在线),然后确认数据长度与实例号/模块一致,最后用已知值验证字节序。例如在 XG-X 侧强制输出一个固定值 0x1234,在 PLC 侧监视对应地址,若读到 0x3412 则说明字节序相反,需调整。每次修改映射后,务必重新下载并复位 PLC,避免旧配置残留。