空舰导弹供电系统检测仪采集数据的传输设计
2018-11-21韩兆福杨明绪
韩兆福,杨明绪
(海军航空大学,山东 青岛 266041)
0 引言
某型飞机空舰导弹供电系统是为YJ-××空舰导弹供电的大功率专用电源系统。由于机上无相应的故障监控设备[1],故研制了空舰导弹供电系统检测仪。该检测仪主要用于原位检测供电系统满负载能力和纹波电压,从而判别供电系统的供电品质。由于在检测过程中需高速采集产生大量测量数据,其速率远高于实际的传输、显示和实时分析处理的能力。尤其是导弹发射启动阶段,过程相当短,必须有足够的采集点。如何实现可靠的高速传输,同时满足实时性要求是一个必须解决的问题[1]。
1 软件开发总体构思
软件开平台选用美国国家仪器公司的LabVIEW+RT模块+现场可编辑门阵列(field programmable gate array,FPGA)模块[2]。依据检测仪的硬件组成,其应用软件主要包括触摸屏式计算机虚拟仪器(touch pad computer virtual instrument,TPC VI)软件、实时虚拟仪器(real time virtual instrument,RT VI软件)和可编程逻辑门阵列虚拟仪器(field programmable gate array virtual instrument,FPGA VI)软件三部分[3]。为便于编程控制,将检测仪的整体工作状态分为6个状态,并由3个事件进行控制。检测仪状态转换关系如图1所示。
图1 检测仪状态转换关系图
检测仪可分为6个工作状态。
①单机状态,即cRIO系统与触摸屏计算机TPC尚未完成TCP通信连接。一旦TCP通信连接成功,系统自动转入状态2。
②双机连接成功,但检查通道未加电的状态,提示“未加电”。一旦检查通道加电,系统自动转入状态3。
③实时监控检查通道的电压,提示“准备好”,等待用户触发“开始”事件。
④模拟启动状态,此阶段接通附加负载和稳定负载。当计时器的计时时间大于启动时间,自动转入状态4。
⑤模拟稳定状态,此阶段断开附加负载。
⑥退出应用程序。
检测仪的状态主要由3个事件来控制。
①“开始”事件。首先判断检测仪是否处于准备好状态,并且电压在规定范围内。如满足条件,则接通附加负载和稳定负载,并转入状态4;否则,不做任何动作。
②“停止”事件。当检测仪处于负载启动或稳定阶段,断开附加负载和稳定负载,但仍然实时监控检查通道的电压,转入状态3。
③“退出”事件。无论检测仪处于什么状态,都将检测仪恢复到未加负载状态,同时关闭应用软件。
检测仪状态的合理划分,可有效控制检测仪的状态,有利于软件开发、多人合作、设计相互转换之间的信息交换。检测仪的软件整体可划分为初始化、等待(状态1)、低速采集(状态2)和高速采集(状态3)4种状态。各状态之间的相互转换关系如图2所示。
根据检测流程,采用模块化设计,方便应用软件的设计和多人合作开发。软件采用原型系统方法进行设计,待某一功能完全调试成功后,再逐步进行新的功能开发。检测仪的工作状态通过连接自检模拟电源进行测试,其过程与最终的机上检测完全相同。
图2 检测仪状态转换关系图
2 采集数据的传输设计
为解决高速传输带来的传输量大的难题,采用了变速率采样-缓冲式存传输技术[3]。由于启动阶段的关键是测量采集,稳定阶段的采集周期可适当加长,以重点保证此前测量数据的传输。为此,将测量采集和传输的过程分为4个阶段,采用非常规的方式达到实时传输的目的。各阶段的具体任务如图3所示。
图3 测量各阶段的具体任务图
启动电流脉冲的宽度不超过100 ms,为确保达到200点以上的采样点,则最长的采样周期为500 μs,而硬件模块所允许的最短周期为18.5 μs(16 μs+2.5 μs)。如果采样周期的取值太靠近所允许的最短周期,势必会带来大数据量的传输问题。为此,实际的采样周期采取折中方案,可取100 μs。
第一阶段:连续高速采样,不发送数据,持续时间大约为120 ms。
第二阶段:连续中速采样,不发送数据,持续时间大约为120 ms。
第三阶段:低速采样,定长发送数据,直至所有的测量数据被发送出去。
第四阶段:低速采样,逐点发送测量数据,实时更新。
硬件上,通过cRIO模块完成被测信号与FPGA机箱的连接,然后由FPGA机箱采集相应的信号。采集数据的传输包括2个步骤[4]:FPGA→RT的DMA FIFO传输和RT→TPC的TCP传输。传输的数据主要有各采集点相对于采集开始点的时间,两路负载端电压的采集值以及两路与负载电流成比例的霍尔传感器输出电压采集值,每个传输帧都包含有这5个数据,即:
Framei={Ti,UA,UB,IA,IB}
式中:Framei为传输帧;Ti为当前时间;UA为A路负载端电压;UB为B路负载端电压;IA为A路电流;IB为B路电流。
2.1 传输数据格式的选择
由于传输数据类型的不同,所产生传输帧的长度也不同,因此,应选择合适的数据类型,尽可能缩短传输帧长度,以减少传输的时间。传输帧中的5个数据共有3种类型[5]。
①当前时间。
当前时间,Ti对应于计时器的输出,其单位有刻度、微秒和毫秒3种选项。根据采集速率的要求,计时器的计时单位选定为微秒;数据类型为无符号32位整型U32。
②电压采集值。
模拟量采集模块NI 9221的电压采集数据格式为字长16位、整数为7位的带符号定点数据格式FXP(16,7)。
③电流采集值。
模拟量采集模块NI 9205的电压采集数据格式为字长26位、整数为5位的带符号定点数据格式FXP(26,5)。
定点格式具有结构紧凑、空间小的优点,但也存在读取麻烦的不足。由于FPGA模块不支持浮点运算,且需要转换的3种类型数据格式各不相同,而DMA FIFO传输必须采用统一的数据格式。考虑到采用FXP(16,5)也可满足电流采集值的精度要求,为此DMA FIFO传输数据格式最终采用不带符号的16位整型格式U16。定点格式如图4所示。
图4 定点格式示意图
2.2 传输数据格式变换和传输帧的DMA FIFO发送
在数据采集、传输的过程中,若采用U32进行传输,则需要4个U32(当前时间占用1个U32,两路电压合用1个U32,两路电流各占用1个U32),共128位。在设计的过程中,采用U16格式[6],一个传输帧有6个U16,总共96位,与U32格式相比,可节省25%的传输时间。
传输前各类数据需要作出相应的变换,从而获得统一的不带符号16位整型格式的数据。
当前时间Ti:计时器的输出数据无符号32位整型U32通过格式转换分成两组U16传输,前16位为一组U16高位,后16位为一组U16低位。
电压采集值U:采集模块NI 9221采集电压模拟量,数据格式为FXP(16,7)共有16位其中整数部分为7位,其余为小数部分,可以直接采用U16格式进行传输。
电流采集值I:采集模块NI 9205采集电流模拟量,数据格式为FXP(26,5),共有26位。其中:整数部分为5位,21位小数部分。在传输过程中,应采取传输格式为U32,按照精度需求将其进行变换,后将数据右移10位,将数据转化成为FXP(16,5)共16位。其中:5位整数位,其余位数为小数位,用U16格式可以进行传输。
此时的传输帧为:
Feamei={U16TH,U16TL,U16UA,U16UB,U16IA,U16IB}
式中:Framei为传输帧;U16TH为当前时间的高16位;U16TL为当前时间的低16位;U16UA为转换后的A路负载端电压;U16UB为转换后的B路负载端电压;U16IA为转换后的A路电流;U16IB为转换后的B路电流。
2.3 DMA FIFO接收与TCP发送
通过直接内存存取(direct memory access,DMA)方式进行数据的接收,可以最大限度节省处理器资源;先入先出(first in first out,FIFO)是数据接收和解析中常见的一种数据结构,它的优点是可以有效地隔离数据的接收、解析之间的耦合关系,从而简化处理方式。
采数据采集过程中,存在高速采集与低速采集两种具体的情况。为满足数据采集的实时性要求,兼顾低速采集时能及时发送数据和高速采集时TCP数据帧长度。在软件设计过程中,采取如下解决办法:仅当时间大于100 ms或DMA FIFO缓冲区中的数据超过200帧时,一次性读取DMA FIFO缓冲区中的数据[7]。通过这样的程序设计,在数据传输过程中一旦接收到数据,将立即通过TCP发送到TPC。
2.4 TCP接收和数据格式转换
TPC不断读取经TCP转换来自RT的数据帧后,得到双精度浮点格式数据。
当前时间:接收到的两组U16整型数据经过格式转换重新转换成一组U32整型数据,最后转换成双精度浮点格式数据。
①电压:接收到两组U16整型数据A路负载电压VA、B路负载电压VB经过格式转换转换成数据格式为FXP(16,7)的整型数据,最后转换成双精度浮点格式数据。
②电流:接收到的两组U16整型数据A路电流IA、B路电流IB经过格式转换转换成数据格式为FXP(16,5)的整型数据,最后转换成双精度浮点格式数据。
3 结束语
该检测仪通过采集数据的传输设计,实现了采集数据可靠的高速传输,同时满足了实时性要求。该设备具有运行可靠、智能化程度高、通用性强、便携性好等特点,不仅适用外场使用,而且还便于机动转场保障,有效解决了某型飞机空舰导弹供电系统性能难以检测的难题。其检测平台只需软件升级和改变部分连接电缆,即可将该检测仪推广应用到其他主战机型,可避免面向机型设计带来的重复投资现象,具有显著的经济效益和推广应用前景。