论文部分内容阅读
[摘 要]针对定长或者有数据结束标志的RS422数据包,KAM500能够顺利实现数据采集。本文主要描述了某飞行试验中遇到的非定长,无结束标志的RS422数据包采集的过程与分析。本文对于工程中遇到的类似的RS422数据包采集问题具有一定的借鉴意义。
[关键词]非定长数据包 RS422 KAM500
中图分类号:TF046.6 文献标识码:A 文章编号:1009-914X(2013)20-166-02
1.前言
随着电子科学技术产业的发展和机载航电系统的革新,飞机上有大量的数据需要传输,因此各种各样的总线技术孕育而生。在这些新的机载航电总线中,RS422总线就是这些众多机载总线中的一种。本文主要讲述的是在KAM500采集系统下,针对某新型毫米波雷达与任务机之间非定长的RS422通讯数据采集的办法和实现。
2.RS422总线介绍及RS422协议模式
RS422是属于通用异步串行接口(UART)协议中的一种,UART是按照标准的波特率完成双向的通讯。UART 提供了一个全双工标准接口,用于与外设之间的串行通讯。UART 通过缓冲来接收数据,借助IOB端口的特殊功能和UART IRQ中断,可以同时完成UART 接口的接收与发送过程。也就是说,它可以在寄存器数据被读取之前就开始接收新的数据。但是,如果新接收的数据被送进寄存器之前,寄存器内的旧数据还未被读走,就会发生数据遗失。
RS422串口通信协议是UART协议中的一种,又名为TIA/EIA-422-A标准。RS422能够将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范(平衡传输即是采用差动电压的方式来传输数据)。它的工作原理是将传输数据的每个字符一位接一位地传输。图1给出了其工作模式:
图 1 RS422数据传输格式
其中各位的意义如下:
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。
3.RS422总线协议的几种模式下KAM500的设置办法
KAM-500是性能卓越的模块式PCM数据采集系统,符合IRIG-106标准,也满足民用飞机适航标准,已被批准可以应用于飞机机载测试设备系统。KAM-500数据采集系统具有各种功能模块,如:与各种形式传感器相适应的A/D信号调节模块、总线监测模块、固态记忆存储及数据传输模块等。针对RS422总线数据的采集,KAM500数据采集系统所采用的模块是UAR/002系列。这是一块具有四个RS422总线通道的采集板卡,最多能够设置126个数据块,每一个数据块的最大长度为511个字节.每一个数据块,当同步头被确认的时候则采集下来,以数据块的长度或者结束标志作为数据块采集的结束标志。
在KSM軟件中,针对UAR/002板卡需要设置以下几个参数,如下图2所示:
1 channel:即被测的RS422总线是利用板卡中的哪一个通道进行采集监听;
2 baudrate:即被测的RS422总线的通讯速率;
3 bits:数据位的个数
4 Parity:校验方式,有三种可选,奇校验,偶校验和无校验
5 然后再在message的页面下编辑数据包名称,设置同步头和数据包的长度或者数据包的结束标志,所有这些设置依据被测RS422总线的通讯协议。
图2 KAM500软件下UAR/002的设置
针对RS422通讯协议的不同,KAM500软件KSM按照表2中所列出的进行以下相应的设置:
表2 不同通讯协议下的RS422,KAM500软件的设置
4.某型毫米波敌我识别系统与任务机之间的协议分析和采集
4.1 处理机和毫米波询问应答机之间的RS422通讯协议:
RS422串行接口工作方式
通讯方式:异步,全双工
波特率:115200bps
校验:奇校验
数据传输格式:11位串行数据(1位起始位,8位数据位,1位奇偶校验位,1位停止位)
报文基本格式如表3所示:
表3 通讯数据的报文格式
字节数 名称 内容 说明 备注
2 起始标志 3E3EH 通讯同步码
1 报文格式 块标示 描述报文的性质,8位无符号2进制数
2 报文长度 从起始位到校验和的总长度
n-4 报文内容 报文的具体内容 n>4
1 校验和 校验码 为全部字节的异或和 n>4
毫米波询问应答机到综合任务处理机的RS422数据
表4 询问应答机到综合任务处理机的RS422数组
消息编号 信息内容 块标识 信息长度(byte) MIID/00 MIS工作状态 OXC1 XX
MIID/01 MIS故障信息 OXC2 XX
MIID/02 MIS识别目标信息 OXC3 XX
MIID/03 XX模式询问结果 OXC4 XX
MIID/04 XX模式询问结果 OXC5 16-96
MIID/05 XX模式询问结果 OXC6 18-98
4.2 通讯协议的分析、尝试与实现
可以看出,依据通讯协议,毫米波与任务机之间的422总线传输的数据为8位数据位,1位停止位,1位为校验位,校验方式为奇校验,波特率为115200bit/s。毫米波与任务机之间传输的数据包均以3E3E作为起始标志。
其中,毫米波到任务机422总线有6个数据块,块标示依次为C1-C6。各个块依据实时传输的内容的不一样,数据块的长度是可变的。例如,块标示为C6的这个数据块的长度则是从18-98之间变化,而块标示为C5这个数据块则变化从16-96。而且由于数据块的结尾都是校验异或和,因此数据块末尾也会根据发送的内容而产生变化。
通过上面的分析,可以看出,毫米波和任务机之间的422通讯不属于之前给出的那四种情况中的任何一种,因为传输的数据块不仅长度不确定,而且没有结束的标识符。由于数据末尾没有固定的结束标识符,所以选择以往采取设置数据块长度和判断块头的办法的试验结果如下:
表5 毫米波422数据采集尝试的办法及结果
因此这两種办法中的任何一种都无法很好的保证数据的有效性。
通过分析,在二次数据处理,针对422总线数据,我们将双字的高8位提取出来,然后再进行拼字,这一点上符合前文所讲的KAM500内部UART的传输方式,数据的二次处理上没有问题。以上两种办法的差异结果主要原因在于数据二次处理时的编程方式,由于二次处理只针对头几个字判断,然后再按照实际任务中设置的实际目标个数将数据包内容进行拼字,这样在处理第一种设置时的采集数据时,当消息块的内容达不到最大数据时,后续的数据块则填充到后面的对应的参数里面,这样就会造成中间填充到入的消息块被当成第一个块的数据采集下来,但是数据处理时只是按照实际的目标个数处理数据时,后面采集的数据则无法判读,要么直接舍去了,要么就淹没在错误的数据包里了。如下图2所示:
图2 数据丢失原因图解
经过分析,由于将数据包分为C1-C6之后,某一个数据包的形式如下图3所示:
图3 数据包的结构
因此笔者想到,将块头设置为3ECX,而将块尾设置为3E,然后根据块最大报文长度设置相应的参数个数。同时,在数据处理的时候,DW00对应为3E,DW01对应为CX,数据处理的程序中的最后一个参数则对应下一个数据包的同步头3E,如下图4所示:
图4 最终的设置办法
UAR/002在监听采集422数据时,首先根据在KSM编程下设置的参数个数,开拓出一个缓存区。依据之前UART传输协议的分析可知,UAR/002板卡根据带头和带尾的判断,将数据采集下来,将新的数据块覆盖在旧的数据所占的缓存区上。当消息块的长度达不到时,未被覆盖的缓存区依旧沿用缓存区上次存储的数据,然后再将这些数据统一打包传输到BCU板卡,统一写到帧格式里面,从而确保数据的完整性。
在数据处理时,由于UART 每次只接收8位数据,所以在接收了两个8 位数据之后,才将其存入KAM500内的16 位SRAM 内,所以在预处理时,首先判读数据包的同步头(假设为3EC1),然后再取对应参数的高8位,然后再将数据拼接起来,组成类似3EC1这样的一个双字的数据结构,然后再根据ICD文件,对于不同的参数进行具体的分析。预处理程序的部分解析代码如下:
Int__ fastcall TForm1::fun_422(float f1,float f2)//取两个字的高8位
{
Int c1,c2;short int v;
pi=pv;
if(pi==16056)
{c1=(int)f1;
c2=(int)f2;
c1=c1<<8;
c1=c1+c2;}
return c1;}
Float_fastcall TForm1::yw8(float dath,float dat1,float xs)//双8合并16位
{
float ret;
int nh,nl,n;
nh=dath;
nl=datl;
ret=(nh*pow(2,8)+nl)*xs;
return ret;
}
经过地面试验验证,上述的办法很好的解决了丢数据的问题,做到了完整采集,保证了型号任务。
5 结束语
本文通过上述的分析,提出了通过将同步头拆分的为同步头和数据结尾,然后按照数据块头和数据块尾的判断方法采集毫米波和任务机之间的422通讯数据。这一办法通过地面和飞行试验,较好的规避了在数据包按照长度采集时产生的buge,实现了毫米波和任务机之间422总线数据的监听与采集,保证了型号任务的试飞任务。同时对于其它类似于毫米波这种可变数据块长度,结尾为不是确定数值的RS422通讯协议的数据采集具有一定的工程参考意义。
参考文献:
[1] ACRA公司.《UAR/002板卡使用手册》.2006年2.2.14版
[关键词]非定长数据包 RS422 KAM500
中图分类号:TF046.6 文献标识码:A 文章编号:1009-914X(2013)20-166-02
1.前言
随着电子科学技术产业的发展和机载航电系统的革新,飞机上有大量的数据需要传输,因此各种各样的总线技术孕育而生。在这些新的机载航电总线中,RS422总线就是这些众多机载总线中的一种。本文主要讲述的是在KAM500采集系统下,针对某新型毫米波雷达与任务机之间非定长的RS422通讯数据采集的办法和实现。
2.RS422总线介绍及RS422协议模式
RS422是属于通用异步串行接口(UART)协议中的一种,UART是按照标准的波特率完成双向的通讯。UART 提供了一个全双工标准接口,用于与外设之间的串行通讯。UART 通过缓冲来接收数据,借助IOB端口的特殊功能和UART IRQ中断,可以同时完成UART 接口的接收与发送过程。也就是说,它可以在寄存器数据被读取之前就开始接收新的数据。但是,如果新接收的数据被送进寄存器之前,寄存器内的旧数据还未被读走,就会发生数据遗失。
RS422串口通信协议是UART协议中的一种,又名为TIA/EIA-422-A标准。RS422能够将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡传输规范(平衡传输即是采用差动电压的方式来传输数据)。它的工作原理是将传输数据的每个字符一位接一位地传输。图1给出了其工作模式:
图 1 RS422数据传输格式
其中各位的意义如下:
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。
3.RS422总线协议的几种模式下KAM500的设置办法
KAM-500是性能卓越的模块式PCM数据采集系统,符合IRIG-106标准,也满足民用飞机适航标准,已被批准可以应用于飞机机载测试设备系统。KAM-500数据采集系统具有各种功能模块,如:与各种形式传感器相适应的A/D信号调节模块、总线监测模块、固态记忆存储及数据传输模块等。针对RS422总线数据的采集,KAM500数据采集系统所采用的模块是UAR/002系列。这是一块具有四个RS422总线通道的采集板卡,最多能够设置126个数据块,每一个数据块的最大长度为511个字节.每一个数据块,当同步头被确认的时候则采集下来,以数据块的长度或者结束标志作为数据块采集的结束标志。
在KSM軟件中,针对UAR/002板卡需要设置以下几个参数,如下图2所示:
1 channel:即被测的RS422总线是利用板卡中的哪一个通道进行采集监听;
2 baudrate:即被测的RS422总线的通讯速率;
3 bits:数据位的个数
4 Parity:校验方式,有三种可选,奇校验,偶校验和无校验
5 然后再在message的页面下编辑数据包名称,设置同步头和数据包的长度或者数据包的结束标志,所有这些设置依据被测RS422总线的通讯协议。
图2 KAM500软件下UAR/002的设置
针对RS422通讯协议的不同,KAM500软件KSM按照表2中所列出的进行以下相应的设置:
表2 不同通讯协议下的RS422,KAM500软件的设置
4.某型毫米波敌我识别系统与任务机之间的协议分析和采集
4.1 处理机和毫米波询问应答机之间的RS422通讯协议:
RS422串行接口工作方式
通讯方式:异步,全双工
波特率:115200bps
校验:奇校验
数据传输格式:11位串行数据(1位起始位,8位数据位,1位奇偶校验位,1位停止位)
报文基本格式如表3所示:
表3 通讯数据的报文格式
字节数 名称 内容 说明 备注
2 起始标志 3E3EH 通讯同步码
1 报文格式 块标示 描述报文的性质,8位无符号2进制数
2 报文长度 从起始位到校验和的总长度
n-4 报文内容 报文的具体内容 n>4
1 校验和 校验码 为全部字节的异或和 n>4
毫米波询问应答机到综合任务处理机的RS422数据
表4 询问应答机到综合任务处理机的RS422数组
消息编号 信息内容 块标识 信息长度(byte) MIID/00 MIS工作状态 OXC1 XX
MIID/01 MIS故障信息 OXC2 XX
MIID/02 MIS识别目标信息 OXC3 XX
MIID/03 XX模式询问结果 OXC4 XX
MIID/04 XX模式询问结果 OXC5 16-96
MIID/05 XX模式询问结果 OXC6 18-98
4.2 通讯协议的分析、尝试与实现
可以看出,依据通讯协议,毫米波与任务机之间的422总线传输的数据为8位数据位,1位停止位,1位为校验位,校验方式为奇校验,波特率为115200bit/s。毫米波与任务机之间传输的数据包均以3E3E作为起始标志。
其中,毫米波到任务机422总线有6个数据块,块标示依次为C1-C6。各个块依据实时传输的内容的不一样,数据块的长度是可变的。例如,块标示为C6的这个数据块的长度则是从18-98之间变化,而块标示为C5这个数据块则变化从16-96。而且由于数据块的结尾都是校验异或和,因此数据块末尾也会根据发送的内容而产生变化。
通过上面的分析,可以看出,毫米波和任务机之间的422通讯不属于之前给出的那四种情况中的任何一种,因为传输的数据块不仅长度不确定,而且没有结束的标识符。由于数据末尾没有固定的结束标识符,所以选择以往采取设置数据块长度和判断块头的办法的试验结果如下:
表5 毫米波422数据采集尝试的办法及结果
因此这两種办法中的任何一种都无法很好的保证数据的有效性。
通过分析,在二次数据处理,针对422总线数据,我们将双字的高8位提取出来,然后再进行拼字,这一点上符合前文所讲的KAM500内部UART的传输方式,数据的二次处理上没有问题。以上两种办法的差异结果主要原因在于数据二次处理时的编程方式,由于二次处理只针对头几个字判断,然后再按照实际任务中设置的实际目标个数将数据包内容进行拼字,这样在处理第一种设置时的采集数据时,当消息块的内容达不到最大数据时,后续的数据块则填充到后面的对应的参数里面,这样就会造成中间填充到入的消息块被当成第一个块的数据采集下来,但是数据处理时只是按照实际的目标个数处理数据时,后面采集的数据则无法判读,要么直接舍去了,要么就淹没在错误的数据包里了。如下图2所示:
图2 数据丢失原因图解
经过分析,由于将数据包分为C1-C6之后,某一个数据包的形式如下图3所示:
图3 数据包的结构
因此笔者想到,将块头设置为3ECX,而将块尾设置为3E,然后根据块最大报文长度设置相应的参数个数。同时,在数据处理的时候,DW00对应为3E,DW01对应为CX,数据处理的程序中的最后一个参数则对应下一个数据包的同步头3E,如下图4所示:
图4 最终的设置办法
UAR/002在监听采集422数据时,首先根据在KSM编程下设置的参数个数,开拓出一个缓存区。依据之前UART传输协议的分析可知,UAR/002板卡根据带头和带尾的判断,将数据采集下来,将新的数据块覆盖在旧的数据所占的缓存区上。当消息块的长度达不到时,未被覆盖的缓存区依旧沿用缓存区上次存储的数据,然后再将这些数据统一打包传输到BCU板卡,统一写到帧格式里面,从而确保数据的完整性。
在数据处理时,由于UART 每次只接收8位数据,所以在接收了两个8 位数据之后,才将其存入KAM500内的16 位SRAM 内,所以在预处理时,首先判读数据包的同步头(假设为3EC1),然后再取对应参数的高8位,然后再将数据拼接起来,组成类似3EC1这样的一个双字的数据结构,然后再根据ICD文件,对于不同的参数进行具体的分析。预处理程序的部分解析代码如下:
Int__ fastcall TForm1::fun_422(float f1,float f2)//取两个字的高8位
{
Int c1,c2;short int v;
pi=pv;
if(pi==16056)
{c1=(int)f1;
c2=(int)f2;
c1=c1<<8;
c1=c1+c2;}
return c1;}
Float_fastcall TForm1::yw8(float dath,float dat1,float xs)//双8合并16位
{
float ret;
int nh,nl,n;
nh=dath;
nl=datl;
ret=(nh*pow(2,8)+nl)*xs;
return ret;
}
经过地面试验验证,上述的办法很好的解决了丢数据的问题,做到了完整采集,保证了型号任务。
5 结束语
本文通过上述的分析,提出了通过将同步头拆分的为同步头和数据结尾,然后按照数据块头和数据块尾的判断方法采集毫米波和任务机之间的422通讯数据。这一办法通过地面和飞行试验,较好的规避了在数据包按照长度采集时产生的buge,实现了毫米波和任务机之间422总线数据的监听与采集,保证了型号任务的试飞任务。同时对于其它类似于毫米波这种可变数据块长度,结尾为不是确定数值的RS422通讯协议的数据采集具有一定的工程参考意义。
参考文献:
[1] ACRA公司.《UAR/002板卡使用手册》.2006年2.2.14版