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内置口分开管理,互不干扰。
下面这张图把两者的关键差异和连接关系放在一起对比,便于快速定位选型依据。
二、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足够用,关键是所有设备必须在同一子网内,或者有正确的网关路由。
三、端口号与协议选择原则
IP地址解决"找到设备",端口号解决"找到设备里的哪个服务"。iQ-F以太网通信常用的端口号如下:
| 协议/功能 | 默认端口 | 方向 | 典型用途 |
|---|---|---|---|
| SLMP(三菱专用) | TCP:5000 / UDP:5000 | PLC为服务器 | GX Works3、HMI、SCADA读写PLC |
| Modbus TCP | 502 | PLC可作客户端或服务器 | 与第三方仪表、变频器通信 |
| Socket TCP(自定义) | 用户自定义(如8000) | 主动/被动均可 | 与上位机自定义协议通信 |
| Socket UDP(自定义) | 用户自定义(如8001) | 主动/被动均可 | 广播、低延迟小数据量 |
| 简单CPU通信 | 基于SLMP,端口5000 | PLC间或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通"。