1553总线测试仿真系统设计与实现
摘 要:为了解决1553总线的测试和故障排查问题,以AEC1553PCIFBC31RT2S2型1553B信号解调板为基础,设计、构建了1553总线测试仿真系统,完成了系统软件的设计、研制、调试和测试工作。系统软件包括1553总线信号实时采集、实时分析处理、实时显示和总线仿真等多个软件模块,采用多线程软件设计技术保证了信号采集和数据转换的实时性和可靠性。实际应用表明,该系统缩短了排故周期,提高了效率试飞。
关键词:1553总线; 信号解调; 实时处理; 仿真
中图分类号:TN91934 文献标识码:A 文章编号:1004373X(2012)10005304
飞行试验是飞机及相关航空产品设计定型中非常重要的阶段,而飞行试验数据处理又是飞行试验过程中不可缺少的重要环节。随着新型号的不断出现和新技术的发展,航电系统的结构越来越复杂,系统越复杂故障发生点就越多,这给试飞测试和试飞数据处理工作带来了巨大的挑战,当故障出现时如何在最短时间内将故障定位,如何缩短数据处理周期,都是试飞测试和试飞数据处理必须解决的问题。
针对以上问题,本文提出了飞行试验中1553总线测试和仿真系统的设计和实现方法,该系统是基于MILSTD1553(GJB289A)数据总线标准[1]开发的,主要用于对1553B信号进行测试和仿真。该系统能对飞机上的总线信号进行实时采集、实时处理、实时监测和记录,能够对飞行总线数据进行事后分析和实验室1553总线信号仿真[2]功能,可以加快用户对总线错误定位的速度,缩短数据处理周期,减少试验次数降低试验费用。
1 系统设计
1.1 统组成
系统硬件由工控计算机和双通道多功能1553B数据通信卡组成。系统的主要功能靠软件来实现,各软件模块间的工作流程示意图如图1所示。系统软件从结构上主要分为2部分:1553B测试软件和1553B仿真软件,图1中除仿真模块之外的所有模块都属于测试软件中的功能模块。
图1 各软件模块间工作流程示意图1.2 1553B信号实时测试软件设计与实现
1.2.1 软件结构设计
1553B总线信号实时测试软件,主要设计思想是根据功能需求,采用了模块化设计。主要功能模块有:总线信号实时采集模块、实时分析处理模块、数据回放模块、实时显示监控模块、原始数据记录模块和数据处理结果存储模块共6部分。
为了提高1553B测试软件的运行效率,本系统软件采用了多线程编程技术对1553B进行信号采集和处理,主线程和子线程之间通过信号量实现同步。下面对多线程编程技术进行简单介绍,给出使用多线程编程技术的必要性和对软件运行效率的影响。
1.2.2 多线程编程技术
Windows是一个多任务操作系统,它们在每一时刻中都可以有多个进程同时工作,而一个正在执行的程序就是一个进程,每个进程至少有一个线程,也可以有多个线程[3]。
每一个进程至少有一个主执行线程,它是由系统自动创建的。用户可以根据需要在应用程序中创建其他线程,多个线程并发的运行于同一进程[4]。这样可以将一些占用时间长的程序任务放到后台去处理,提高程序的运行速度,占用更少的资源等。对复杂的应用程序来说,线程的应用给应用程序提供了高效、快速、安全的数据处理能力。
要充分发挥多线程编程技术的优势,必须要解决好线程之间的同步问题,线程同步就是如何让多个线程不要同时访问同一个数据,让多个线程能够协调一致的工作,以免破坏数据的完整性和防止死锁情况的发生。常用的线程同步技术有信号量(Semaphores)、互斥锁(Mutex)和临界段(Critical Sections)[5]。
1.2.3 实时测试软件实现方法
实时测试软件中的总线数据实时分析处理是主线程,信号采集由单独的子线程来完成,这样可以保证总线能够得到及时采集和分析处理,通过消息告诉主线程数据已经采集好了,主线程收到消息之后开始进行解算、分析。
在实时测试软件中当主线程运行时,首先要建立主线程和子线程之间,通信的消息,然后建立采集线程工作函数(定义采集线程的入口函数),定义创建ICD结构树的过程和一组消息分析函数,然后对1553B多功能解调卡进行初始化。总线信号采集系统在总线上相当于是一个监视器,因此要将采集卡设置在监听模式[6]。
要对总线数据开始进行实时测试,首先要进行采集总线信号。创建采集线程时,将主线程与子线程的堆栈尺寸设为相同,并且其长度会根据需要自动变长,给出采集线程执行时代码所在函数的地址(线程工作函数),将采集线程设为创建后立即执行的运行模式,采集线程采满数据之后通过消息通知主线程,主线程开始对采集到的数据进行分析处理。
对采集到的数据进行分析处理的内容主要包括,将采集到的原始数据,按照100%1553B事后处理软件输入数据的格式,写到存储介质上;将用户需要实时监控的参数按照GJB289A中的消息结构和通信标准、1553总线中总线控制器、远程终端的地址、子地址、收/发等信息和ICD信息进行实时处理[7],并将分析处理结果以数字、文字和曲线的形式进行实时显示,同时写人结果数据文件中,其格式和事后处理软件的输出格式完全相同。实时处理软件模块的程序逻辑流程图,如图2所示。
图2 实时测试软件逻辑流程图1.2.4 实时测试软件界面设计
实时测试软件界面设计原则是界面友好,为用户传递的信息准确无二意性,可操作性要强。实时测试和事后回放主界面中右侧表格中奇数行,显示消息中每个元素的名称,是从ICD数据库中读取的内容,偶数行显示每个元素总线数据的解算结果。由于采用了多线程设计,用户在测试和回放过程中可以随时增加需要测试显示的数据块,处理软件会立即响应,而不会出现单线程软件中的死机现象。测试主界面如图3所示。
图3 实时测试软件主界面1.3 1553B信号仿真软件设计与实现
1.3.1 仿真软件结构设计
仿真软件由消息配置、消息发送和停止发送3个模块组成。其中,消息配置包括消息块信息的增、删、改等消息编辑功能,消息编辑包括消息名称定义、消息格式选择、消息选项设置、指令字配置和数据字配置共5部分,软件结构示意图如图4所示。
图4 总线仿真软件结构示意图仿真软件的设计思想是要准确地控制总线多功能解调卡,要深入了解并掌握每个API函数的意义和使用方法,如何将API函数和实验室需要的总线数据紧密结合,使板卡的功能发挥到极致,是在软件设计中比较关键的技术环节,该板卡的所有API函数都封装在动态链接库(同时提供了常规函数库)中,因此在软件设计时必须确定采用哪种函数库,和采用哪种调用方法,从而在软件实现方法上实现突破。针对这些情况下,通过对动态链接库和常规函数库的比较分析,调用方法的比较分析,最终确定本系统开发所采用的API函数调用技术。
1.3.2 动态链接库技术
动态链接库与常规函数库的区别在于:常规函数库,连接器复制它需要的所有库函数,并把确切的函数地址传给调用这些函数的程序。而对于动态链接库,函数存储在一个独立的DLL文件中。在创建Windows程序时,链接过程并不把DLL链接到程序中。直到程序运行并调用其中的一个函数时,该程序才要求给出这个函数的地址[8]。
根据以上对2种不同函数库技术特点的分析,本系统软件在设计时,采用了板卡供应商所提供的API函数的动态链接库。
调用一个存储在动态链接库中的过程或函数有静态和动态2种方式。静态调用指在单元的Interface部分用External指示字列出要从DLL中调用的过程,DLL和DLL中的函数在程序执行前被加载。静态调用所需要的代码量少,但它有2个缺点:一是当要加载的动态链接库不存在或在动态链接库中没有找到要调用的函数时,程序就会停止运行;二是一旦动态链接库加载,就一直停留在应用程序的地址空间[9]。
动态调用不需要单元的Interface部分把要调用的所有函数列出,只要调用前引入,用Loadlibrary函数指定需要加载的DLL,用GerProcAddress函数指定需要调用的函数[10]。如果指定的DLL出错,最多时API调用失败,不会导致程序终止。
基于对动态链接库2种调用方式的分析、对比实验,1553总线测试仿真软件采用动态调用动态链接库的方式,实现API函数的调用。
1.3.3 1553B仿真软件实现方法
仿真软件算法根据国军标《飞机内部时分制指令/响应式多路传输数据总线》中的消息格式,以及不同格式的消息结构特点,仿真出总线控制器和各个远程终端之间的总线工作状态。总线系统中消息格式分为总线控制器向远程终端的传输BC RT,远程终端向总线控制器的传输RT BC,远程终端向远程终端的传输RT RT共3种格式。
仿真软件算法实现步骤如下:
(1) 采用动态调用板卡控制函数的动态链接库,用Loadlibrary进行加载;
(2) 采用GerProcAddress函数指定需要调用函数的地址,仿真系统作为1553总线系统中的BC进行信号仿真;
(3) 对1553B多功能卡进行设置,包括板卡初始化、板卡;
(4) 根据用户需要仿真的消息结构、周期、时间间隔、通道号(A、B总线)和消息内容组建消息包;
(5) 根据用户需要仿真的总消息中各个消息包的结构,建立消息链标;
(6) 启动BC,对1553B信号进行仿真输出,如果是周期消息就一直输出,直到用户给出停止操作,如果是非周期函数,执行一次发送后就不再发送。
仿真软件的逻辑流程图如图5所示。
图5 仿真软件逻辑流程图仿真软件用户界面主要是消息配置和消息编辑界面,分别如图6,图7所示。
图6 消息配置界面2 系统测试与结果分析
2.1 系统测试方法
系统功能和性能的测试是在实验室进行的,利用成熟的1553B信号源,采取先进行单独的航电子系统测试,然后再进行综合航电系统测试的方法来进行该系统的实时采集、实时处理、实时记录等功能,用现有飞机的飞行数据测试了事后回放和事后处理模块的性能。
首选测试方法是与其他系统进行实例对比,通过不同系统之间测试结果的一致性来判断结果的准确性,例如:总线控制器给雷达发一个消息,将本系统监测到的消息与信号源发出的消息进行一致性对比。
第2种方法是采用理论衡量法,总线上的某个子系统执行了某条指令之后,按照国标军标的规定,理论上本系统应该出现一种测试结果,然后将本系统实际的测试结果和理论测试结果进行对比,确定双方的一致性。
第3种方法是采用不同的分析处理方式对总线数据进行分析处理,将结果进行对比,对于本系统来说,将实时测试模块的测试结果与事后处理软件的分析处理结果进行对比。
图7 消息编辑界面2.2 系统测试结果分析
通过对整个系统性能进行的测试,均达到了实际工作要求的指标,ICD管理软件对ICD信息的分解和管理达到100%的准确率,满足用户需求;系统时延的测试结果是小于等于60 ms,完全满足用户提出的测试仿真系统小于等于70 ms的时延;在消息采集完整性测试中,通过对记录数据进行随机查找指令字和事后分析处理的方法进行测试,测试结果都表明,总线上的消息百分之百地的被采集并记录下来,没有丢消息的现象。仿真消息能够准确地传输到用户所设定的实验室总线终端中,而且消息内容准确无误;系统连续开机8 h测试,系统运行非常稳定。
3 结 语
根据试飞测试需求,选用以1553B总线信号解调板AEC1553PCIFBC31RT2/S2为硬件基础,设计和开发的1553B总线测试仿真系统,采用通用化、标准化、模块化的设计思想,具有良好的实用价值,可以作为运输机上百分之百地1553B信号采集、记录装置、试飞数据地面处理系统、作为进行排故实验时的信号源,目前已应用到各个重点型号中。具有良好的扩展性,可以通过技术改造后,形成体积小巧的百分之百地1553B信号采集、记录单元,应用到歼击机和直升机上。
参 考 文 献
[1] 国防科学技术工业委员会.GJB289A数字式时分制指令/响应型多路传输数据总线\[S\].北京:国防科学技术工业委员会,1998.
[2] 樊昌信,曹丽娜.通信原理\[M\].北京:国防工业出版社,2007.
[3] 龙启明,刘斌,程捷,等.Delphi 7高级编程范例\[M\].北京:清华大学出版社,2004.
[4] 吕伟臣.Delphi 6入门与提高\[M\].北京:清华大学出版社,2002.
[5] 求是科技.Delphi 7数据库开发技术与工程实践\[M\].北京:人民邮电出版社,2004.
[6] 佚名.AEC1553PCIFBC31RT2/S2用户手册\[M\].北京:北京神州飞航科技有限公司,2008.
[7] 沈毅.遥测标准和测试方法科研参考文献(上)\[M\].北京:遥测技术研究所,1996.
[8] 白云,高育鹏,胡小江.基于LabVIEW的数据采集与处理技术\[M\].西安:西安电子科技大学出版社,2009.
[9] 周果宏,罗述谦,罗起.Delphi 程序设计(Delphi 2005)题解、编程技巧与疑难解答\[M\].2版.北京:清华大学出版社,2007.
[10] 黄文钰.Delphi 8 程序设计经典解析\[M\].北京:清华大学出版社,2006.2012年5月15日第35卷第10期
下一篇:基于LIN总线的车灯控制系统设计