4. iQ-R以太网通信基础
在 iQ-R 系列 PLC 的以太网通信中,真正决定“数据怎么走、连接怎么建、异常怎么判”的,并不是 IP 地址本身,而是传输层协议的选择与套接字连接的管理方式。iQ-R 的以太网接口模块(如 RJ71EN71、RJ71EIP91 等)以及内置以太网端口的 CPU,都通过“套接字(Socket)”这一抽象接口与外部设备交换数据。理解 TCP 与 UDP 的差异、端口号的规划原则,以及套接字从打开到关闭的完整生命周期,是后续编写通信程序、排查连接故障的基础。
一、TCP 与 UDP:先选协议,再谈连接
TCP 是面向连接的可靠传输协议。通信双方必须先建立连接,数据按序到达,丢包会重传,接收方会确认。对于 iQ-R 与上位机、MES、数据库之间的数据交互,如果要求“数据不能丢、顺序不能乱”,例如配方下发、生产结果上传、报警记录传输,应优先选择 TCP。UDP 则是无连接协议,发送方直接把数据报投递出去,不保证到达、不保证顺序,但开销小、延迟低。对于周期性广播、状态心跳、对实时性要求高而允许少量丢包的场景,例如设备状态广播、简单的周期计数同步,UDP 更合适。
在 iQ-R 的通信指令中,TCP 与 UDP 的选择通常体现在“打开方式”参数上。以内置以太网端口的套接字通信为例,打开处理(OPEN)需要指定协议类型、本地端口号、对方 IP 与对方端口号,以及连接方式(主动/被动)。主动连接(Active)由 PLC 发起,相当于客户端;被动连接(Passive)由 PLC 等待对方接入,相当于服务器。UDP 则没有严格的主动/被动之分,但仍需指定本地端口与对方端口,且通常以“无连接”方式直接收发。
二、端口号规划:避免冲突与便于运维
端口号是传输层区分不同套接字的标识。iQ-R 的以太网通信中,端口号规划需要同时考虑三件事:一是不能与模块自身已占用的端口冲突,例如 MELSOFT 连接、SLMP、FTP、SNTP 等;二是同一 PLC 上多个套接字不能使用相同的本地端口;三是要与对方设备的端口约定一致。通常建议将 1024 以下的知名端口留给系统服务,用户通信使用 1024~65535 之间的端口,并在项目文档中固定登记。
例如,某条产线中 iQ-R 作为服务器等待上位机采集,可规划本地端口 5000 用于生产数据上传,本地端口 5001 用于报警推送;上位机作为客户端分别连接这两个端口。若 PLC 主动连接 MES,则可使用本地端口 6000,对方端口 8000。端口号一旦确定,应在程序注释、网络拓扑图和设备台账中保持一致,避免后期维护时“端口对不上”导致连接失败。
三、套接字通信原理:从打开到关闭
套接字通信的本质,是 PLC 在以太网端口上创建一个“通信端点”,并把它与本地端口、对方 IP/端口绑定起来。以 TCP 服务器为例,PLC 执行被动打开后,套接字进入监听状态,等待对方发起连接;一旦对方接入,连接建立,双方即可通过发送/接收指令交换数据。TCP 客户端则由 PLC 主动发起连接,连接成功后同样进入数据收发阶段。UDP 没有连接建立过程,打开后即可直接发送或接收数据报。
在 iQ-R 中,套接字的状态通常可以通过通信指令的完成标志和错误代码来判断。例如,打开处理成功时完成标志置位;若失败,错误代码会指示原因,如端口已被占用、对方无响应、参数设置错误等。通信过程中,如果对方断开,TCP 套接字会进入关闭状态,PLC 需要重新打开才能再次通信;UDP 则不会感知对方是否在线,需要应用层通过超时或心跳机制判断。
四、连接管理:主动、被动与异常处理
连接管理的关键在于“谁先发起、谁负责维持、异常后如何恢复”。对于 TCP,主动方负责发起连接,被动方负责监听;双方都可以主动关闭连接。实际工程中,建议由上位机作为客户端主动连接 PLC 服务器,这样 PLC 端程序更简单,只需被动打开并等待即可。若 PLC 需要主动上报数据,则 PLC 作为客户端连接上位机服务器,此时上位机需要保持监听。
异常处理方面,常见的连接问题包括:端口被占用、对方 IP 不可达、协议类型不匹配、打开方式错误、对方提前关闭连接等。排查时应先确认端口号是否冲突,再检查 IP 与路由是否可达,然后核对协议类型与打开方式是否与对方一致。对于 TCP,还可以通过连接状态监视功能观察套接字是否处于打开状态;对于 UDP,则应重点检查数据报是否被防火墙拦截。
总结来说,iQ-R 以太网通信的基础并不复杂,但需要把“协议选择、端口规划、套接字生命周期、连接管理”四件事串起来理解。TCP 适合可靠传输,UDP 适合轻量广播;端口号要统一规划并登记;套接字从打开到关闭的每个状态都要有对应的程序处理;连接异常时要按端口、IP、协议、打开方式逐项排查。掌握这些内容后,后续的 SLMP 通信、Socket 编程和网络诊断都会更加顺畅。