机载通信ARINC429协议总线心跳故障案例分析

2021-10-26 11:56:32李兴智刘逸涵
山西电子技术 2021年5期
关键词:接收数据时钟总线

宋 丫,李兴智,刘逸涵

(中国航空工业集团公司西安航空计算技术研究所,陕西 西安 710077)

0 引言

ARINC429协议总线(以下简称ARINC429总线)是一种常见的飞机数据传输总线,它克服了模拟量传输带来的高成本、传输线过多和可靠性差的问题,进而在减轻飞机重量的同时,使飞机信息传输的精准度得以提升[1]。

ARINC429总线控制器由两个接收器、一个发送器以及若干主机可编程控制寄存器组成,它具有如下特征:1) 循环自测试功能;2) 25或32位字长;3) 奇偶校验位;4) 接收与发送字的生成;5) 支持中断和查询两种操作方式;6) 异步串行传输;7) 100 kbps或12.5 kbps传输速率[2]。

对于32位字长的ARINC429消息,其包含有标志位(Label)、源/目的识别位(S/D)、数据位(data)、标记位(SIGN)、状态位(SSM)、奇偶校验位(Parity)[3]。数据格式分为主机端格式与线上传输格式,一般采用主机端格式定义数据结构,消息组成如图1所示。

图1 ARINC429总线数据格式

目前,机载通信常用的ARINC429总线消息主要分为周期性和事件性,其中周期性消息是指多个Label号数据按照一定的时间间隔进行传送,周期由主机端时钟控制,数据字之间间隔4个位的空闲时间。事件性消息则由特定事件触发,一般由多个Label号相同的数据字组成,某一时刻连续发送,包含包头包尾以便识别解析[4]。对于周期性消息,由于发送端与接收端的系统时钟存在差异,且多个Label号数据需要一定的传输时间,从而导致发送和接收可能出现在周期间隔中的任何时刻,即我们常说的异步传输。

为了提高ARINC429总线的可靠性,及时监测总线功能是否正常,在设计机载通信系统时,常常需要建立一定的通信故障判断机制,根据总线通信原理判断线路通断,同时检查数据是否正常更新。

1 案例背景

远程接口单元通过ARINC429总线接收来自座舱压力传感器的数据信息,再通过网络总线传输至综合管理计算机。为了保证数据的可靠性,实时监测机上设备状态,远程接口单元需要对ARINC429总线通路及座舱压力传感器数据更新进行判断,并及时上报综合管理计算机。

判断总线通路是否断开,一般采用读取接收缓存的方式,连续多个周期接收缓存无数据则可认为通信中断,此时可判定总线故障或通信设备下线。在判断接收数据是否更新时,通常在消息中设置一个心跳位,通过心跳不断更新,判断当前数据是否为最新包。

在一起机上偶发的ARINC429总线心跳故障案例中,座舱压力传感器每周期固定向远程接口单元发送8个Label号数据字,其中Label号为313(八进制)的数据字包含1bit心跳位,并1、0交替变化。远程接口单元每周期接收数据后保存本地,同时判断心跳位是否发生变化,连续10个周期(100 ms)心跳不变则上报该设备心跳故障。经长时间试验,发现该故障具有周期特性,设备上线大约二十分钟后上报心跳故障,持续几十秒恢复正常,如此循环往复。

2 故障分析

首先心跳故障的根本原因是连续10个周期接收到的心跳位无更新,此时有两种可能:1) 座舱压力传感器发送数据有误;2) 远程接口单元接收解析不对。从根源处进行故障隔离,持续读取远程接口单元ARINC429总线接收缓存的原始数据,筛选出所有Label号为313的数据包,解析出心跳位并实时监控。试验显示,心跳位持续稳定更新,大约二十分钟后故障再次复现,上报设备心跳故障。同时该ARINC429总线设置256数据字大缓存,而设备每周期仅发送8个数据字,绝不会出现缓存溢出,至此可将故障定位于远程接口单元的判故机制。

周期性故障一般与软件运行的时序有关,进一步分析试验数据发现,当故障出现时,远程接口单元每周期接收到的数据包个数与座舱压力传感器发送的8个不一致,即发送接收时机与时钟中断发生错位,此时当前周期未收到包含心跳的Label数据,而下个周期收到两个包含心跳的Label数据。远程接口单元软件在处理接收数据时采用周期覆盖式,当收到两个心跳时,新数据覆盖旧数据,导致0-1交替变化的心跳被连续覆盖,从而导致故障发生。

究其根本是由于远程接口单元与座舱压力传感器是异步运行的,没有同步机制,两者均是在自身时钟控制下,以固定周期进行消息收发,且两个设备上电顺序及时间随机;再者两个产品的自身时钟精度也存在差异,时钟信号在微观上也有偏差,导致系统运行一段时间后,两者的本地时间出现相对差额,如图2所示。

图2 异步系统周期示意图

如图所示,A、B为两个异步设备,各自时钟周期存在微小差异。A设备在每个周期的固定点发送数据(向上箭头),B设备在每个周期的固定点接收数据(向下箭头),圆圈处为放大后的示意图,正方形为ARINC429总线的一个数据字。一段时间后,两个设备的发送和接收点会越来越近,由于A设备发送数据需要一定时间,随着系统的运行,B设备的接收点会出现在A设备的发送过程中,此时就会表现为远程接口单元接收到的数据与座舱压力传感器发送的个数不一致,一个周期内出现两包心跳数据。

3 优化改进

针对上述故障原因,对远程接口单元接收数据判故方法进行改进,去除周期覆盖式的接收机制,只要在接收缓存中识别到Label号为313的数据包,即心跳所在数据包,就进行一次心跳更新,同时清空故障计数,并保存最新一次的心跳值。

考虑到心跳0-1跳变存在一定的风险,容易受机上干扰产生数据位错误,可以在数据负载允许的条件下,设置3位或多位心跳,变化范围0-7等,发送端设备每周期心跳加1,接收端设备检测到心跳变化即完成一次有效更新,如此可避免因干扰导致的误判。

4 总结

本文介绍了一起机上偶发的ARINC429总线心跳故障案例,分析了异步系统间周期传输消息的特征,并结合ARINC429总线格式,提出了一种稳定有效的故障判断机制,为后续工程应用提供了一定的参考经验。

猜你喜欢
接收数据时钟总线
冲激噪声背景下基于幅度预处理的测向新方法*
电讯技术(2021年10期)2021-11-02 01:25:36
别样的“时钟”
古代的时钟
低复杂度多输入多输出雷达目标角度估计方法
基于PCI Express总线的xHC与FPGA的直接通信
测控技术(2018年6期)2018-11-25 09:50:12
机载飞控1553B总线转以太网总线设计
测控技术(2018年8期)2018-11-25 07:42:08
有趣的时钟
单片机模拟串口数据接收程序的实现及优化
时钟会开“花”
多通道ARINC429总线检查仪