华盛论文咨询网

总线通信数据管理及解析方法

来源:华盛论文咨询网 发表时间:2020-08-05 08:58 隶属于:科技论文 浏览次数:

摘要 RS422总线采用差分传输方式,具有全双工的特性,即具有4根信号线,接收发送互不干扰。通信双方在同一周期内完成数据互换,根据指定长度即可获取正确的数据包。然而当双方设备的

  RS422总线采用差分传输方式,具有全双工的特性,即具有4根信号线,接收发送互不干扰。通信双方在同一周期内完成数据互换,根据指定长度即可获取正确的数据包。然而当双方设备的任务周期出现偏差,底层数据接收晚于上层应用调度时,常常会出现半包数据丢失,找不到包头包尾等问题[1]。RS422总线普遍应用于各类场景,其包头、包尾、校验位、计算方式、长度等多变且难以统一[2],甚至消息数量也存在不确定性,不同应用需求导致开发者多次重复开发,费时费力,没有形成一套统一的配置管理方法。电子通信环境复杂,总线数据传输可能出现偶发干扰,从而引入非正常数据[3],因此组包过程需要具备一定的抗冗余能力,保证在不丢包的基础上正确解析[4]。

总线通信数据管理及解析方法

  1串行通信协议

  UART是一种异步全双工串行通信协议,因为没有参考时钟信号,所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数,从而按照相同的速率方式进行通信。异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然而在同一个字符中的两个相邻位的时间间隔是固定的,可通过波特率进行设置,即每秒传送的二进制位数。每一个传送字符包含1个起始位,8个数据位,1个奇偶校验位,1个停止位,如图1所示。图1串行通信协议数据格式在实际通信中,起始位常发送一个逻辑“0”信号,表示传输字符的开始。数据位可以是8位的逻辑“0”或“1”,一般采用小端传输,即LSB先发,MSB后发。在数据位后加上奇偶校验位,使得字符中逻辑“1”的位数为偶数(偶校验)或奇数(奇校验)。停止位是一个字符的结束标志,可以是1位、1.5位、2位的高电平,用于保持双方同步,停止时间间隔越长,传送的容错能力就越强。针对上述协议,RS422总线的初始化配置至少应包含表1内容,其中循环标志设定了总线的工作状态。

  2数据管理配置

  根据串行通信协议特点,针对不同应用进行统一的开发管理,本文对RS422总线的收发数据进行了如下配置,详见表2,具体包括通道号、消息标识、包长、包头、包尾、校验类型、停止位等,可采用结构体的形式在初始化阶段进行配置。需要说明的是,表2为应用层数据设置,上述表1位传输协议配置。开发者可根据自身需求,对各配置项进行裁剪增添。RS422总线是在RS232总线基础上发展而来的,不同于RS232总线点对点的通信规范,RS422总线支持同一线路单机发送、多机接收,且其特有的电气特性使传输距离和传输速率得以提升。“一对多”式通信协议不仅可以提升传输效率,还能在一定程度上节约网络资源,此时就需要对软件的收发通道进行合理编号,用以区分不同的发送源数据。另外,通过设置消息标识符,接收方可对消息进行筛选,有目的地进行数据包解析。包长、包头、包尾限定出一个完整的数据段,校验和则用于保证数据的正确性,防止因受干扰而出现数据错乱,一般有加和及补码两种方式。

  3数据收发流程

  发送数据时,首先利用表2中的发送结构体进行数据配置,设置包头、包尾、标识符、消息长度等相关信息,然后根据校验类型,向待发送数据包填写校验和,最后调用发送驱动,读取UART线状态寄存器,当发送FIFO存储器不为空时保持等待,直到条件满足后逐字节写入发送保持寄存器。数据接收过程涉及数据存储、整合、解析、组包等,具体流程见图2。首先应判断当前通道接收的消息数量是否单一,若单一则直接获取序号,进行接收解包流程,若不为一,则需通过标识位判断是否为目标消息。在确认待接收数据为目标消息后,根据包头、包长、校验位等进行解包,解包算法详见下一章节。

  4数据解包算法

  本节以某型直升机机电系统RS422总线通信为背景,介绍一种普适性较高的解包算法,开发者可根据实际应用中的数据特性,进一步细化。首先建立一个适当容量的环形缓冲区,软件实现可采用结构体,包含读、写指针,一维数组,数组长度,并在读写过程中循环遍历数组元素。由于RS422总线是异步串行通信,收发时差可能导致数据缺失,故需要将每周期接收到的数据依次存放在环形缓冲区,并在接收数据长度大于目标数据长度后,进行搜索解包。环形缓冲区利用写指针进行存储,读指针进行解析,解包成功后读指针将跳过当前数据包,以避免重复解析,如此循环首尾相接。图3所示为环形缓冲区,目标包头为0xAA55,标识位0x01,消息长度0x08,check为补码校验位。当环形缓冲区(a)的数据长度大于目标数据包长度时,开始从strat处搜索解包,读取前4个字节,读指针移动见(b),依次判断包头、字节长度是否正确,若正确则进行校验和计算,读指针移动至(e),根据校验结果取出或丢弃当前数据包。当包头判断错误时,读指针需要回退3个字节,如(c)所示,此时需要考虑0xAAAA55的情况。当包头正确,字节长度错误时,读指针需要回退2个字节,如(d)所示,此时需要考虑0xAA55AA55的情况,以避免丢包。当接收消息不唯一时还需要判断标识位,同理可利用上述方法,但需要注意读指针回退的字节长度。另外,环形缓冲区每次写入和读出都需要判断是否发生溢出,即读、写指针移动到存储数组的最后一个字节时,返回起始strat位置,重新开始下一轮的解析。

  5结语

  本文研究了一种RS422总线通信数据管理及解析方法,对使用RS422总线遇到的常见问题进行了分析,并针对接收丢包、重复开发、缺乏统一管理等问题设计了一套通用的管理解析方法。依次介绍了数据管理配置、发送接收流程以及解包算法。经实际工程验证,该方法有效解决了丢包等问题,并在一定程度上提升了开发效率,可应用于不同的需求场景。

  参考文献:

  [1]姬进.一种通用可配置RS422总线管理技术[J].电子测试,2018,000(003):164-165.

  [2]邢达波,艾波.机载RS422总线采集技术应用研究[J].中国科技信息,2016,000(021):73-74.

  [3]邢达波,李铁林,艾波.机载RS422总线数据异常分析研究[J].中国科技信息,2017(2):28-29.

  [4]王彦庆,宁亚峰,谷计划.浅论机载RS422总线采集技术应用研究[J].工程技术(引文版),2017(1):00312-00312.

  《总线通信数据管理及解析方法》来源:《信息通信》,作者:宋丫 宁慧君 白曦

转载请注明来自:http://www.lunwenhr.com/hrlwfw/hrkjlw/14814.html

声明:《总线通信数据管理及解析方法》

科技职称论文范文分类入口

信息化论文软件项目管理论文