2. iQ-F以太网通信基础

在三菱iQ-F系列(FX5U、FX5UC等)PLC上做以太网集成,最先要分清一件事:你用的是CPU本体自带的以太网口,还是扩展的FX5-ENET模块。两者都能跑以太网通信,但在物理接口数量、连接数上限、支持功能、编程指令和参数设置位置上都有明显差异。很多现场问题——比如"为什么连不上第二台设备""为什么SLMP通信报错""为什么不能做Modbus TCP客户端"——根源往往就是一开始没把这两者区分清楚。

一、内置以太网口与FX5-ENET模块的本质区别

FX5U CPU本体自带1个以太网口(10BASE-T/100BASE-TX自适应,RJ45),这是CPU的一部分,不需要额外购买。它的定位是"基础通信口",支持与GX Works3编程软件连接、SLMP(三菱专用协议)通信、简单CPU通信、Socket通信(TCP/UDP)、以及作为Modbus TCP客户端或服务器使用。但它的连接数有限,通常同时可建立的Socket连接数量较少,且部分高级功能(如CC-Link IE Field Basic的从站功能)需要额外配置或受限于固件版本。

FX5-ENET是安装在CPU右侧总线上的扩展模块,相当于给PLC"加一个网口"。它同样支持SLMP、Socket通信、简单CPU通信,但关键差异在于:它提供独立的IP地址和端口配置,可以分担通信负载;连接数上限更高,适合多台上位机或多台设备同时访问;部分型号支持更多协议角色,例如作为Modbus TCP服务器时能接受更多客户端连接。此外,FX5-ENET的通信参数在GX Works3的"模块参数"中单独设置,与CPU内置口分开管理,互不干扰。

简单判断原则:如果只是编程下载、连一个触摸屏或一台上位机,CPU内置口通常够用;如果要同时连多台设备、做数据采集网关、或需要独立网段隔离,优先考虑加装FX5-ENET。

下面这张图把两者的关键差异和连接关系放在一起对比,便于快速定位选型依据。

FX5U CPU内置以太网口 vs FX5-ENET扩展模块 — 连接与功能对比 FX5U CPU 本体 内置以太网口(1个 RJ45) 10/100 Mbps 自适应 · 独立IP 支持:SLMP · Socket · 简单CPU通信 Modbus TCP 客户端/服务器(有限连接) 连接数较少 · 与编程口共用带宽 FX5-ENET 扩展模块 扩展以太网口(1个 RJ45) 10/100 Mbps · 独立IP与端口 支持:SLMP · Socket · 简单CPU通信 Modbus TCP 服务器(更多客户端连接) 连接数上限更高 · 可独立网段隔离 总线扩展 编程电脑 GX Works3 下载/监控 触摸屏 HMI SLMP / Modbus TCP 上位机 SCADA 数据采集 / 远程监控 其他PLC SLMP 互连 选型要点: ① 单设备连接、编程调试 → CPU内置口即可;② 多设备并发、独立网段、高连接数 → 加装FX5-ENET; ③ 两者IP地址必须规划在不同子网或同一子网但不同地址,避免冲突;④ 端口号不可重复绑定。

二、IP地址与子网规划:别让"能ping通"变成"能通信"

以太网通信的第一道门槛是IP地址规划。iQ-F的以太网口默认IP通常是192.168.1.1或192.168.0.1(视固件和出厂设置而定),子网掩码255.255.255.0。很多工程师习惯直接改IP就完事,但真正决定"能不能通"的是IP地址、子网掩码、默认网关三者的配合。

假设一个典型场景:CPU内置口设为192.168.1.10/24,FX5-ENET设为192.168.2.10/24,上位机SCADA在192.168.1.100/24。此时SCADA能直接访问CPU内置口,但访问FX5-ENET需要经过路由或双网卡配置。如果现场没有路由器,最稳妥的做法是把两个网口规划在同一子网的不同地址,例如CPU内置口192.168.1.10,FX5-ENET 192.168.1.20,掩码都是255.255.255.0。这样上位机只需一个网段就能同时访问两个口,减少网络复杂度。

子网划分的核心计算:掩码255.255.255.0表示前24位是网络号,后8位是主机号,可用主机地址范围是192.168.1.1~192.168.1.254(去掉网络地址.0和广播地址.255)。如果设备数量超过254台,才需要考虑255.255.254.0(/23)或更大子网。工业现场通常设备不多,/24足够用,关键是所有设备必须在同一子网内,或者有正确的网关路由。

常见错误:把PLC的IP设成192.168.1.1,而路由器或网关也是192.168.1.1,导致IP冲突,表现为"有时能通有时不通"。规划时先列出所有设备的IP清单,确保地址唯一。

三、端口号与协议选择原则

IP地址解决"找到设备",端口号解决"找到设备里的哪个服务"。iQ-F以太网通信常用的端口号如下:

协议/功能默认端口方向典型用途
SLMP(三菱专用)TCP:5000 / UDP:5000PLC为服务器GX Works3、HMI、SCADA读写PLC
Modbus TCP502PLC可作客户端或服务器与第三方仪表、变频器通信
Socket TCP(自定义)用户自定义(如8000)主动/被动均可与上位机自定义协议通信
Socket UDP(自定义)用户自定义(如8001)主动/被动均可广播、低延迟小数据量
简单CPU通信基于SLMP,端口5000PLC间或PLC与上位机无需编程的数据交换

协议选择原则可以归纳为三条:第一,优先用SLMP。如果通信双方都是三菱设备或支持SLMP的上位机,SLMP是最省事的方案,GX Works3里勾选"简单CPU通信"就能配置,不需要写Socket代码。第二,跨品牌用Modbus TCP。第三方仪表、变频器、电力仪表大多支持Modbus TCP,iQ-F可以作为客户端主动读取,也可以作为服务器被读取。注意Modbus TCP的端口固定502,且寄存器地址需要做"协议地址"与"PLC软元件地址"的映射。第三,自定义协议用Socket。当对方设备只支持裸TCP/UDP且协议格式自定义时,用Socket通信指令(如SP.SOCSND、SP.SOCRCV)自行组包解析,灵活但工作量大。

端口号规划还有一个容易忽略的点:同一个IP上不能有两个服务绑定同一端口。例如CPU内置口已经用了5000做SLMP,FX5-ENET如果也设5000,虽然IP不同不冲突,但如果上位机通过同一个网段访问,需要明确指定目标IP+端口。建议做法是:CPU内置口用5000,FX5-ENET用5001或502,在SCADA里分别配置连接参数,避免混淆。

配置示例(GX Works3中的关键参数位置):

CPU内置以太网口:
  导航窗口 → 参数 → FX5UCPU → 模块参数 → 以太网端口
  → 设置IP地址:192.168.1.10 / 255.255.255.0
  → 设置SLMP端口:5000(TCP)
  → 设置Modbus TCP端口:502(如启用)

FX5-ENET模块:
  导航窗口 → 参数 → 模块信息 → FX5-ENET
  → 设置IP地址:192.168.1.20 / 255.255.255.0
  → 设置SLMP端口:5001(TCP)
  → 设置Socket连接:自定义端口8000(TCP客户端/服务器)

最后强调一个实操判断依据:配置完成后,先用电脑ping PLC的IP,确认物理链路和IP层通;再用GX Works3的"诊断"功能查看以太网端口状态,确认SLMP端口已打开;最后用简单的读取指令(如读取D100)验证数据层通。三层都通过,才算真正"通信成功",而不是仅仅"ping通"。