3. iQ-F内置以太网通信基础

三菱FX5U(iQ-F系列)CPU模块自带一个以太网端口,无需额外扩展模块即可实现与上位机、触摸屏、其他PLC或第三方设备的网络通信。要真正把这条链路用起来,需要依次解决三个层面的问题:网络层参数(IP地址与子网)、传输层协议(TCP还是UDP)、以及应用层的套接字指令(SP.SOCOPEN/SP.SOCCLOSE/SP.SOCRCV/SP.SOCSND)。本节按这个顺序展开,并给出一个可复现的简单客户端/服务器实验。

一、IP地址与子网设置

FX5U的内置以太网参数在GX Works3的“模块参数→以太网端口设置”中配置。关键参数包括:IP地址、子网掩码、默认网关。以教学示例为例,PLC设为192.168.1.10,子网掩码255.255.255.0,网关192.168.1.1;上位机PC设为192.168.1.100,掩码相同。判断两台设备是否在同一子网,可用“IP与掩码按位与”的方法:192.168.1.10 AND 255.255.255.0 = 192.168.1.0,192.168.1.100 AND 255.255.255.0 = 192.168.1.0,网络号相同,属于同一子网,可直接通信,无需经过网关。

若把PC改为192.168.2.100,网络号变为192.168.2.0,与PLC不同子网,此时必须依赖网关路由,否则通信失败。这是现场最常见的“能ping通自己、ping不通对方”的原因之一。配置完成后建议先用PC的ping 192.168.1.10验证链路,再进入协议与指令层面。

子网掩码决定“网络号+主机号”的划分。同一子网内通信靠ARP直接寻址;跨子网必须经网关转发。PLC与上位机若不在同一子网,套接字连接通常无法建立。

二、TCP与UDP协议选择

FX5U的套接字通信支持TCP和UDP两种传输层协议,选择依据是可靠性需求与实时性需求的权衡。

对比项TCPUDP
连接方式面向连接,需三次握手无连接,直接发送
可靠性有确认、重传、顺序保证不保证到达与顺序
开销较大,建立/关闭有过程小,适合短报文
典型场景参数下发、数据采集、文件传输周期性状态广播、实时性优先

工程上,若通信内容不能丢、不能乱序(如配方下发、生产数据上传),选TCP;若只是周期性发送状态且允许偶尔丢包(如广播式心跳),可选UDP。FX5U的SP.SOCOPEN指令中通过参数指定协议类型,TCP时还需区分主动(客户端)与被动(服务器)打开。

三、套接字通信指令

FX5U使用四个专用指令完成套接字生命周期管理:

  • SP.SOCOPEN:打开连接。指定连接编号、协议(TCP/UDP)、本地端口、对方IP与端口、打开方式(Active/Passive)。
  • SP.SOCSND:发送数据。指定连接编号、发送数据起始软元件、发送字节数。
  • SP.SOCRCV:接收数据。指定连接编号、接收缓冲区起始软元件、最大接收字节数。
  • SP.SOCCLOSE:关闭连接,释放套接字资源。

典型调用顺序为:SOCOPEN → SOCSND/SOCRCV(可多次)→ SOCCLOSE。每条指令都有完成标志位(如SOCOPEN的完成位)和出错标志位,编程时必须监视完成位再进入下一步,否则会出现“连接未建立就发送”的错误。

// 示例:TCP客户端打开连接(连接编号1)
// 参数:协议=TCP,本地端口=5000,对方IP=192.168.1.100,对方端口=6000,Active
SP.SOCOPEN  D100  M100  D200
// D100起存放连接参数,M100为完成位,D200为出错代码存放区

// 发送8字节数据(D300~D303)
SP.SOCSND  K1  D300  K8  M110

// 接收最多16字节到D400起
SP.SOCRCV  K1  D400  K16  M120

// 关闭连接
SP.SOCCLOSE K1  M130

四、简单客户端/服务器实验

下面给出一个可复现的最小实验:PC作为TCP服务器,FX5U作为TCP客户端,PLC主动连接PC并发送一段数据,PC回送一段数据,PLC接收后关闭连接。

实验参数(示例):PC端用网络调试助手监听6000端口,IP为192.168.1.100;PLC IP为192.168.1.10,本地端口5000,对方端口6000,协议TCP,Active方式。

PLC侧操作:在GX Works3中编写上述指令序列,将SOCOPEN的完成位M100作为SOCSND的触发条件,SOCSND完成位M110作为SOCRCV的触发条件,SOCRCV完成位M120作为SOCCLOSE的触发条件。下载后运行,观察各完成位是否依次置位。

PC侧观察:网络调试助手应显示“客户端已连接”,随后收到PLC发来的8字节数据;在调试助手中手动发送一段文本,PLC的D400起应出现对应数据。

结果判断:若SOCOPEN出错,常见错误码指向“对方未监听”或“IP不可达”;若SOCSND出错,多为连接已断开;若SOCRCV长时间无数据,检查PC是否真的发送、以及接收字节数设置是否过小。实验成功后,可把PC与PLC角色互换,让PLC作服务器(Passive),PC作客户端,进一步理解Active/Passive的区别。

FX5U 内置以太网套接字通信链路(TCP客户端 / PC服务器) FX5U PLC(客户端) IP: 192.168.1.10 掩码: 255.255.255.0 本地端口: 5000 协议: TCP / Active PC(服务器) IP: 192.168.1.100 掩码: 255.255.255.0 监听端口: 6000 网络调试助手 同一子网 192.168.1.0/24 SP.SOCOPEN 建立连接 SP.SOCSND 发送8字节 SP.SOCRCV 接收≤16字节 SP.SOCCLOSE 关闭连接 完成位 M100 完成位 M110 完成位 M120 完成位 M130 数据流:PLC D300~D303(8字节)→ TCP → PC:6000;PC 回送 → TCP → PLC D400起(≤16字节) 判断依据:M100→M110→M120→M130 依次置位;PC调试助手显示连接与收发内容;出错时查D200错误码

把上述实验跑通后,再回头理解IP与子网、TCP/UDP选择、四条指令的分工,就会形成一条完整的“网络层—传输层—应用层”认知链。实际项目中,连接编号、端口号、缓冲区地址都应根据设备规划统一分配,避免与已有连接冲突。