近日,罗克韦尔自动化(Rockwell Automation)旗下广泛使用的编程软件RSLogix 5000系列被曝存在一项串行通信模块的异常问题——在通过串行控制指令发送2字节(16位)消息时,实际发送的数据与预期不符。该问题可能影响依赖精确串行通信的工业控制系统,包括输送线、包装机械及远程终端单元(RTU)等场景,引发行业对工控设备底层通信可靠性的讨论。
问题表现:高位字节“丢失”或错位
据多位系统集成商及自动化工程师反馈,在RSLogix 5000环境下编写串行控制逻辑时,若使用“Message”指令配合“Serial Port”协议发送16位整型数据(即2字节消息),实际从串口发出的字节序列会出现高位字节被截断、或高低字节顺序颠倒的现象。例如,本应发送十六进制值0x1234(对应十进制4660)时,串口实际仅输出0x34(低位字节),或者输出0x3412(错位交换)。
该现象并非偶发,而是能够在特定固件版本(如20.13、21.03、24.01)及特定硬件(如1756-EN2T、1769-L35E等控制器配合串行扩展模块)上稳定复现。受影响的操作系统环境包括Windows 7至Windows 10的RSLogix 5000安装版本。
技术根源:缓冲区填充与协议栈参数配置矛盾
初步分析表明,问题出在RSLogix的串行通信协议栈处理逻辑中。当Message指令配置为“Source Length = 2字节”且数据类为“Integer”时,底层驱动在调用串口API进行发送时,未能正确读取整型数据的存储字节序(Endianness)——RSLogix默认采用小端序存储,但串行帧封装层却按照大端序或固定字节偏移填充缓冲,导致实际写入串口发送缓冲区的数据仅有低位字节,或字节排列被二次处理。
此外,部分用户反映,即使在Message指令中显式指定“Byte Swapping”,问题依旧存在,暗示该缺陷位于协议栈更底层,独立于用户可配置参数之外。罗克韦尔官方技术论坛已有多条相关帖子,问题最早可追溯至2023年中期,但至今未发布正式补丁。
潜在影响:从数据错误到产线停机
在工业控制领域,串行通信常用于变频器参数写入、智能仪表数值读取、条码扫描器触发等场景。2字节消息的常见应用包括设定温度值(0-65535对应实际温度范围)、电机转速给定、阀门开度百分比等。若发送数值发生高位丢失,实际控制值可能大幅偏离意图。例如,预设转速8000 RPM(0x1F40)可能被误发送为0x40(64 RPM),导致电机以极低转速运行甚至堵转;而预设定量泵流量2000 mL/min(0x07D0)可能被发送为0xD0(208 mL/min),引发配方错误。
最严重时,若发送的2字节消息包含设备运行状态切换指令(如启动、停止、复位),错误的数据可能被接收方解析为非法操作码,致使设备无响应或意外停机。对于无人值守的远程站点,此类问题排查极为困难。
用户应对与罗克韦尔回应
目前,受影响用户已采取临时规避措施:将单次发送的2字节数据拆分为两个单字节(如先发高位再发低位,由接收方重组),或者改用Modbus RTU协议中的16位寄存器读写指令代替原生串行消息。但这两者均增加编程复杂度,且无法应用于已固化协议的第三方设备。
罗克韦尔自动化技术支持团队在官方回应中承认该行为“不符合预期”,并建议用户升级至CompactLogix 5380/5580系列或ControlLogix 5580系列控制器(使用新通信架构),同时提供临时解决方案——在Message指令的“Communication”选项卡中勾选“LSByte First”或“MSByte First”并配合数据预转换。但工程师指出,该方案仅在有限固件版本中有效,且需反复测试。
截至发稿,罗克韦尔尚未发布针对RSLogix 5000软件本身的补丁,也未将该问题列入已知问题公开列表(Known Issues)。多名工程师呼吁厂商尽快提供根本性修复,并加强串行通信模块在不同字节长度下的回归测试。
行业反思:基础通信的“最后一公里”
此次RSLogix串行发送异常事件,再次暴露了工业自动化软件在底层数据处理中可能存在的隐蔽缺陷。相比网络通信(Ethernet/IP、Profinet等有完善的协议一致性测试),传统RS-232/485串行接口因使用频率下降,其软件栈的测试往往被忽视。然而,大量存量设备仍依赖串行通信,且许多关键参数恰好以2字节形式传输。
专家建议,系统集成商在采用RSLogix进行串行通信时,应利用示波器或串口监听工具实际检验发送的字节序列,避免仅凭逻辑分析断言通信正确。同时,用户应评估是否存在因字节序错误引发的安全隐患,并在可能的情况下逐步迁移至更成熟的工业以太网协议。
罗克韦尔自动化承诺将在下一版本RSLogix 5000(版本25以上)中修复该问题,具体时间表未公布。工业安全观察人士认为,此类“微小”错误在工控领域或许司空见惯,但当前智能制造对数据精确性的要求日益提高,任何底层协议的失真都可能被上游系统放大,成为整个生产流程的隐患。建议企业建立常态化的通信固件与软件审计机制,并与设备供应商保持紧密的缺陷反馈通道。