三菱 FX5U PLC 的 Socket TCP 通信功能可实现与其他支持 TCP/IP 协议的设备(如 PC、触摸屏、其他 PLC、物联网网关等)的灵活数据交互,广泛应用于工业物联网、远程监控、多设备协同控制等场景。以下是其核心配置、编程及应用要点:
硬件支持:FX5U 系列 PLC 需配备以太网模块(如内置以太网口的 FX5U-xxx 系列,或扩展模块 FX5-ENET/IP),支持 10/100Mbps 自适应以太网,最多可同时建立8 个 TCP 连接(客户端 / 服务器模式均可)。
协议基础:基于标准 TCP/IP 协议,通过 Socket 接口实现字节级数据收发,支持自定义数据格式(无需依赖固定协议,灵活性高)。
通信模式:
FX5U 通过专用 Socket 指令实现 TCP 通信,核心指令如下:
| 指令 | 功能描述 | 关键参数 |
|---|
SOCK_OPEN | 建立 TCP 连接(客户端)或创建监听(服务器) | 连接编号、模式(客户端 / 服务器)、IP、端口 |
SOCK_CLOSE | 关闭 TCP 连接 | 连接编号 |
SOCK_SEND | 发送数据 | 连接编号、发送缓冲区地址、数据长度 |
SOCK_RECV | 接收数据 | 连接编号、接收缓冲区地址、最大长度 |
SOCK_STATUS | 读取连接状态(是否连接、错误码等) | 连接编号、状态存储地址 |
示例:客户端主动连接并发送数据
用SOCK_OPEN指令,设置模式为 “客户端”,目标 IP192.168.3.20,端口5000,连接编号1。
通过SOCK_STATUS判断连接状态(D8061=16#0000 表示连接成功)。
连接成功后,用SOCK_SEND将D100-D103中的 4 字节数据发送到目标设备。
若需接收数据,用SOCK_RECV将接收的数据存到D200开始的寄存器中。
示例:服务器监听并接收数据
用SOCK_OPEN指令,设置模式为 “服务器”,监听端口5000,连接编号1。
客户端连接后,SOCK_STATUS返回连接成功状态。
用SOCK_RECV实时接收客户端数据,存到D300开始的寄存器中,处理后用SOCK_SEND回复。
由于 Socket TCP 为字节流传输,需自定义数据格式确保收发双方解析一致,例如:
连接失败排查:
数据收发异常:
多连接管理:若使用多个 TCP 连接(如连接 2 台设备),需为每个连接分配独立编号(1-8),分别管理SOCK_OPEN、SOCK_SEND等指令,避免冲突。
PLC 与 PC 上位机通信:用 C# 或 Python 编写 PC 端程序(基于Socket库),作为服务器监听端口;FX5U 作为客户端连接后,实时发送设备运行数据(如温度、压力),PC 端接收后显示并存储到数据库。
多 PLC 协同控制:车间内 3 台 FX5U 分别控制 3 条生产线,通过 Socket TCP 连接到中心 FX5U(服务器),实时上报生产状态,中心 PLC 汇总后协调各线节拍。
通过 Socket TCP 通信,FX5U 可突破传统 PLC 的协议限制,灵活接入工业网络,是实现智能制造和设备互联的重要手段。调试时建议先用网络调试助手(如 “TCP&UDP 测试工具”)模拟收发,验证通信链路后再接入实际设备。