摘要 RS422A、RS485等异步串行通讯技能广泛应用于机载核算机实时操控体系,提高了飞机的可维护性和可扩展性。为使其安稳作业,不只需求牢靠硬件渠道,还需紧密的软件算法°文中描绘了某机载核算机为完结与多个设备进行实时异步串行通讯,规划了一致的硬件渠道,并依据每个设备不同的通讯协议,给出了不同的软件算法,要点论述了软件规划及原理。依据该原理研发的产品已通过实验、联试和用户运用,证明其作业牢靠、功用杰出。
关键词 RS422A;RS485;通讯软件规划
1 RS422A规范
RS422A是一种在工程中广泛运用的接口规范,其选用差分传输方法,也称为“平衡传输”,规范全称是“平衡电压数字接口电路的电气特性”。可见RS422A界说的是接口电路的电气特性,而对数据格局未作界说。RS422A是全双工通讯,通讯的两边均含有一个发送、接纳驱动器。其间接纳驱动器的两个平衡线衔接端点界说为A和B,发送驱动器的两个平衡线衔接端点界说为Y和Z,一般运用平衡双绞线将一端的Y和A、Z和B相连。一般发送驱动器端Y、Z之间的正电平在2~6 V,代表正逻辑,负电平在-6~-2 V,代表负逻辑。在接纳端,当A、B之间有>+ 200 mV的电平常,输出正逻辑电平-200 mV时,输出负逻辑电平。RS422A最大传输间隔为4 000英尺(约1 219 m),最大传输速率为10 Mbit· s-1。其间平衡双绞线的长度与传输速率成反比,在100 kbit·s-1速率下,才可到达最大传输间隔。只要在较短的间隔下才干获得最高速率传输。一般100 m长的双绞线可获取的最大传输速率为1Mbit·s-1。
2 硬件规划
关于RS422A、RS485等异步串行通讯的硬件规划,首要有两种方法。
(1)选用协议芯片加接口驱动芯片的方法。该方法技能较老练,但运用的元器件较多,占用印制板的板面较大。
(2)选用SOC的方法,将协议芯片的逻辑功用在可编程逻辑器件FPGA中编程完结。该方法运用的元器件较少,但在FPGA中写出较完善的协议逻辑的难度较大。
本工程中选用第一种方法,用协议芯片16C552或16C554加接口驱动芯片进行通讯。并规划缭绕自测试电路。选用16C552芯片完结全双工收发RS-422器功用,RS-422驱动电路由DS26LS31MJ(4路RS-422发送器)、DS26LS32MJ(4路RS-422接纳器)、终端匹配电路和维护电路组成。
3 软件规划
3.1 通讯协议的界说
RS422A规范只对接口的电气特性做出规则而不触及协议,因而可界说本身的高层通讯协议。在本规划方案中,在底层以Byte为单位通讯,选用UART字的格局。在上层协议中选用数据包为单位通讯。
通讯协议中首要规则:(1)通讯两边的传送操控方法,即主从指令呼应方法或周期通讯方法等。(2)通讯周期。(3)通讯速率,即波特率。(4)通讯字格局。通讯的最小信息单位是UART字,每个UART字由11位二进制数组成,如图1所示。
第1位:开始位(逻辑“0”状况为有用);第2~9位:信息位;第10位:奇偶校验位(约定为偶校验);第11位:中止位(逻辑“1”状况为有用)。每个UART字按低位到高位的先后顺序串行传送。关于16位二进制数据分红两个UART字,按由低到高的先后顺序传送。(5)通讯包格局。通讯传送的基本单位是通讯包,通讯包由包头、包状况、数据字和包尾组成,最终的包尾是校验和字,其结构如图2所示。
校验和字为通讯包中除校验和字外一切字累加和的补码。校验和校验正确的依据为接纳到的UART字块中一切字的累加和等于0。
包头一般规则为0xAA55或0x55AA,与数据字相同的概率较小。包头一旦与数据字相同,则或许误以为该数据字为包头,然后组包过错。
通讯协议应规则每个数据字中每一位的界说。若通讯协议中存在多种包长或多种数据包界说,则应在包状况中阐明该包的包长或包序号,由包序号可清晰该包数据的具体界说。
3.2 接纳数据
首要,需承认接纳数据的方法,即挑选查询接纳或是中止接纳。嵌入式实时操控体系应尽量削减中止的运用,在查询接纳可满意通讯要求,且不影响实时性的情况下,尽量选用查询的方法接纳数据。
若通讯协议规则,要接纳的数据包的长度小于或等于硬件接纳FIFO缓冲区的长度,且两包数据间的间隔时刻大于或等于最小查询周期,则可选用查询的方法接纳数据。否则需选用中止的方法接纳,才干确保数据不丢掉。
选用查询的方法接纳数据时,以最小周期进行重复查询,若硬件接纳FIFO缓冲区中有数据则收入软件中设定的容量较大的先入先出行列缓冲区。
选用中止的方法接纳数据时,硬件接纳FIFO缓冲区中有数据则会引发中止,中止服务程序中将硬件接纳FIFO缓冲区中有数据则收入软件中设定的容量较大的先入先出行列缓冲区。
然后,再以通讯协议规则的接纳数据周期,从软件行列缓冲区中取数、找包头、按包长组包、算校验和。当未收到完好数据包或校验和错时,进行过错计数。
上述分两步接纳数据的流程暗示如图3所示。以该方法,可无需耗费剩下的时刻,并确保数据不丢掉。
3.3 发送数据
发送数据作为自动的行为,尽量不运用中止。当需发送的数据包长度小于或等于硬件发送FIFO缓冲区时,可直接发送。当需发送的数据包长度大于硬件发送FIFO缓冲区时,可分为屡次发送。软件即将发送的数据安排好后存入容量较大的先入先出行列缓冲区。再以软件运转的最小周期,将行列缓冲区中的数据分批装入硬件发送FIFO缓冲区进行发送。
4 数据组包的算法
以通讯协议规则的接纳数据周期,从软件行列缓冲区中取数,进行数据组包的算法是较为重要的,其确保了软件采信数据的有用性和完好性。并和通讯协议密切相关。包长固守时的流程如图4所示,其首要进程如下:
(1)承认要接纳的通道号是否合法。
(2)在软件行列缓冲区中,当剩下字节数大于等于包长时,才有或许获得新的一包完好数据。剩下字节数小于包长则以为无新的一包完好数据,比及下个周期再组包接纳。
(3)在剩下字节数大于等于包长的条件下,依照通讯协议中规则的包头,从行列中顺次查找,非包头则抛掉,直至找到包头。
(4)以包头为开始,按包长取出一包数据,核算校验和。若校验和正确则得到一包有用数据。
(5)软件行列缓冲区中若还有满意数据,则持续查找包头并组包,若有新的一包有用数据则选用最新数据,避免数据积压。
用该算法,当有过错数据呈现时,可查看出过错并丢掉犯错的数据包,找出下一包正确的数据。不会因一包数据犯错而影响后续多包数据。
要接纳的数据包长变化时,通讯协议需规则,依据包头后的包状况字清晰该包数据的包长。先假定当时要接纳的是最短包,以缓冲区中剩下字节数大于或等于最短包长,作为找包头的前提条件。找到包头后,依据包状况字承认该包包长,若缓冲区中剩下字节数小于该包包长,则以为数据未完结接纳,将包头和包状况字仍留存在缓冲区中,等候下个周期弥补新数据后再进行组包接纳。包长变化时接纳数据组包的流程较杂乱,如图5所示。
5 结束语
文中规划的算法充分考虑了传输进程或许呈现的各种情况,分两步完结数据接纳,小周期或中止仅进行硬件缓冲区的接纳,满意实时性要求且确保数据不会因未及时接纳而丢掉;大周期进行数据组包,并以最方便的方法找到有用数据包。体系与12个设备进行RS422A或RS485通讯,经验证,文中规划的算法归纳机载核算机实时操控体系的实时性和牢靠性要求。