工业通信场景下,设备存在AB双路冗余数据通道,两路通道传输存在延时差,容易出现同一帧数据重复输出、丢帧等异常问题。本模块用于两路数据源的数据接收、缓存与拼接,增加超时判断、包序号去重、CRC校验功能,解决冗余通道选通时重复发包、帧解析异常、内存访问段错误等问题,保障工业设备数据传输稳定可靠。
点击空白处退出提示
工业通信场景下,设备存在AB双路冗余数据通道,两路通道传输存在延时差,容易出现同一帧数据重复输出、丢帧等异常问题。本模块用于两路数据源的数据接收、缓存与拼接,增加超时判断、包序号去重、CRC校验功能,解决冗余通道选通时重复发包、帧解析异常、内存访问段错误等问题,保障工业设备数据传输稳定可靠。
本项目包含多通道数据接收缓存模块、数据超时判断模块、数据包去重模块、数据拼接填充模块以及CRC16校验计算模块。支持两路数据源独立接收缓存,可设置时间窗口判断超时,超时或者两路数据全部接收完成之后执行数据拼接,数据长度不足时自动补0填充,通过包序号识别重复数据包,同时内置CRC16校验功能保障帧数据完整性,有效解决冗余通道通信过程中的重复发包、丢包等异常问题。
采用C++语言进行开发,独立封装各个业务模块,使用缓冲区缓存两路通道收到的数据,通过时间戳实现超时逻辑判断;实现查表法CRC16算法完成数据校验,增加包序号比对逻辑过滤重复数据包,修复内存越界、野指针、段错误等C/C++开发常见bug,模块耦合度低,可以直接移植到各类嵌入式平台,代码附带详细注释便于二次开发与维护。



评论