基于1553B总线的飞控软件测试仿真平台设计
2020-12-08王新亮薛琪琪董敏周王民钢
王新亮,陈 凯,薛琪琪,董敏周,王民钢
(西北工业大学 航天学院,西安 710000)
0 引言
为了保证导弹飞行任务的成功率,需要一套完善的弹载飞控软件测试仿真平台,以完成导弹的性能测试和发射流程控制[1]。近年来,开发出的适用于多种应用环境的仿真平台多采用分布式控制模式,应用CAN总线、429总线、485总线和1553B总线等进行仿真系统各部分之间数据指令的通信,实现分布式仿真平台的设计[2]。
1553B总线是一种命令响应式多路数据总线,它具有高可靠、抗干扰能力强、灵活、速率较高(1Mbit/s)、扩充和维护简便等特点,其强大的功能能够满足不同用户的工业测量和自动化控制需求,良好的兼容性适用于各类系统配置。因此,1553B总线以其良好的实时性、可靠性及高效性在航空航天等领域得到广泛的应用[3]。
实际应用中,不同型号导弹采用的1553B总线协议不完全一致,工作环境有所差异,不同工作时间总线上传输的数据内容、物理意义不同,使1553B总线测试软件对不同工作环境的通用性不高,灵活性较差。文献[4]设计并实现了一种基于仿真卡的1553B仿真测试软件,但对测发控仿真系统硬件设计没有提及;文献[5]介绍了1553B总线全仿真平台的软件、硬件的设计与实现,并验证其可行性,但是缺少可视化的图形界面;文献[6]基于UML,在LabVIEW中实现了某型武器火控系统内部的1553B通讯仿真,但使用LabVIEW实现通用性较差。
本文利用HiGale View仿真系统,基于C语言和M语言编程,开发了基于1553B总线通信的导弹飞控软件测试系统仿真平台。介绍了仿真平台的体系结构和软件设计与具体实现,并验证其通信功能稳定可靠。
1 系统组成及原理
基于1553B总线的飞控软件测试仿真平台系统组成如图1,系统主要由测控主机、BC(工控机)、RT(弹载飞控机)和MT(弹载记录仪)组成。
测控主机起到用户输入指令命令和实时监控变量功能,具有完整的人机交互界面,是测试任务的发布端。
1553B总线控制器BC是一台插有1553B板卡的工控机,工控机作为地面测发控的前端控制主机,运行QNX实时操作系统,通过以太网口通信接收测控主机发送的数据指令,完成数据的解析,并按照测控主机的命令类型和预先制定的报文格式通过1553B总线向飞控机发送测试指令。同时,BC周期性的接收总线上飞控机的返回信息,完成数据解析并通过以太网口反馈给测控主机设备。
弹载飞控机(RT)为弹上搭载飞控软件和导航软件的设备,具有统一的1553B接口,是导弹正常工作的核心设备。在导弹发射前,需要按照接收的1553B总线BC端传来的指令有序进行弹上设备自检、诸元装订和信号采集等工作,完成工作后按照报文格式进行编码通过1553B总线返回信息给工控机[7]。记录仪(BM)能够实时监听1553B总线上的数据流,记录飞控机的工作进程并存储在数据存储器中。飞控机测试过程中,1553B数据通信过程,可以有效地增强系统的可靠性。
图1 1553B仿真平台系统组成
测控主机以文本格式读取诸元装订、初始对准数据等参数,设计上位机软件的开关按键通过以太网口发送给工控机,工控机对输入的数据识别并按照报文格式进行打包,通过工控机的1553B板卡实现与飞控机的信号通信,并解析返回的报文判断飞控机及弹上设备是否工作正常,发送解码后接收数据及开关量给测控主机进行显示,实现飞控软件的测试功能。
2 测试软件的具体实现
2.1 上位机软件
上位机(测控主机)软件运行在Windows操作系统中,通过以太网口与工控机通信,控制工控机工作。上位机是用户交互界面,本文使用Higale View软件将模型下载到工控机中,并实现数据的显示以及接收工控机数据。上位机软件的主要功能包括:工控机模型加载、数据指令输入、接收返回数据和用户界面管理[8]。
首先,Higale View软件将Simulink模型通过以太网口加载到工控机,然后读取工作目录下的文本文件数据作为输入,通过Higale View软件可以控制模型机开始运行与停止。
用户界面管理是上位机软件的核心功能,Higale View软件提供了变量监控和数据记录功能,允许用户自由定制仿真监控界面实现界面监控和在线调参并对仿真模型中某些变量在仿真过程中产生的数据进行记录。设置开关量控制模型的运行,并在界面中将开关量设置为开关按钮,可以便捷地控制仿真平台的运行;监控模型机1553B总线BC端发送与接收的变量,可以实现仿真平台1553B总线通信的实时监控,从而清晰地判断出系统运行是否正常,通过Higale View监控界面按键、指示灯、表格等进行图形化显示。
2.2 工控机软件
工控机软件运行在QNX实时操作系统中,工控机软件是整个仿真平台的核心部分,通过以太网口与上位机通信加载模型,通过1553B总线接口经过耦合器连接与飞控机通信,实现收发操作。工控机软件采用C语言和M语言编写,通过VS2010调用NI公司1553B函数库编写驱动程序,在Simulink中调用S-fun函数封装驱动模块。
2.2.1 工控机软件的功能
1)身份认证功能:显示测试设备硬件状态、板卡序列号、通道号等,并通过配置设备地址、子地址完成设备连接;
2)测试设备配置:根据实验要求,对测试设备进行配置,包括总线模块的初始化及工作模式(BC、RT、MT)的配置;
3)命令获取:工控机软件从上位机获取命令指令,以完成后续通信操作;
4)数据打包:按照规定的报文格式打包命令或者数据指令,1553B总线传输每条消息最多32个字节,通过1553B总线周期发送;
5)数据发送(BC模式):查询当前测试设备是否正在处理总线消息,在上位机软件发送总线命令数据包前,查询当前测试设备是否正在处理总线消息,如果当前测试设备空闲,则发送总线消息,否则将等待到测试设备空闲为止;
6)测试结果分析:对弹载计算机返回的消息数据包进行解包分析,并产生监控变量以判断飞控机是否工作正常,变量为1则工作正常,变量为0则工作异常。
根据用户需求可以把软件划分为以下几个功能模块:身份认证模块、测试设备配置模块、总线命令获取模块、总线数据打包模块、总线消息发送模块、测试结果分析模块[9]。如图2所示。
图2 工控机软件功能模块图
2.2.2 软件实现流程
工控机软件的流程设计如图3所示。
图3 工控机软件设计流程图
第一步,读取1553B板卡信息并打开板卡,通过调用函数库中的M1553_Open()函数打开板卡,并通过M1553_GetSerialNum()和hr_getBaseAddr()函数获取板卡序列号和通道号。
第二步,板卡设备的初始化包括板卡的初始化和仿真模式的初始化, 首先通过调用M1553_Reset()函数复位板卡初始状态,通过M1553_AddTimeTag()函数启动/停止时间标签,并使用M1553_SetResponseTimeout()函数设置应答超时。然后,通过调用BC_Init()和 RT_Init ()和MT_Init()函数初始化全功能板卡的BC、RT和MT工作模式,并使用MT_Start()和MT_SetCmdFilterTable()函数使能MT并设置所有方式被监控。
第三步,读取数据输入。工控机的测试信号通过上位机软件输入[10],包括弹地通讯检查、进入发射流程、初始对准准备、初始对准参数装订、箭动点火准备、诸元装订等指令。
预装数据以文本形式输入,使用textread()函数读取文本文件,并将16位消息输入信息转换数据格式为两个字节,以1553B总线消息格式发送。将导弹地面装订参数,如诸元装订、初始对准参数等以文本格式输入,使装订参数可随时更改,灵活使用,并使仿真系统的通用性大大增强。
第四步,对数据输入与Higale View控制台输入的仿真参数进行打包封装,通过结构体BCMsgArray输入到S-fun驱动模块中。在结构体BCMsgArray中定义数组Msg以存储1553B总线的发送消息,按照通信协议进行收发操作。
因此,在数据封装前必须制定工控机(BC)与飞控机(RT)之间(应用层)的通讯协议。通讯协议是通过通信消息的相互传送来实现。通讯消息由消息头和消息体组成,其中消息头为所有通讯消息必须具备的公共报头,对不同需求的地面仿真平台系统,需要制定不同的通讯协议。
第五步,配置消息参数并发送消息。通过Higale View控制台输入的地址、字地址、周期和工作模式等配置消息参数作为消息的命令字,读取结构体BCMsgArray数组Msg构成作为数据字,通过BC_WriteMsg()函数将消息写入1553B总线中,并使用BC_Start()函数启动BC发送消息,示例代码如下所示:
memset(&Msg,0,sizeof(SMSG_STRUCT));
iRT=MsgArray[0].RTAddr; //RT地址
iTR=MsgArray[0].RTEnable; //RT使能
iSA=MsgArray[0].RTSubAddr; //RT字地址
iLEN=MsgArray[0].MsgLengh; //消息长度
Msg. CmdWord1 = SETCMD(iRT, iTR, iSA, iLEN); //命令字转换
Msg. CmdWord2 = 0;
for(i = 0; i {Msg.Datablk[i] = MsgArray[0].Msg[i]; } //写入数据字 BC_WriteMsg (hcard, TESTCHX, MsgId++, &Msg) //BC写消息 BC_AddEndOfListFlag(hcard,TESTCHX, MsgId++) BC_Start(hcard, TESTCHX) //启动BC 第六步,解析接收到的RT消息,并进行结果分析。为了保证消息准确到达弹载计算机或者准确返回到地面测试设备,在应用层协议制定的时候采用消息应答的方式,即在弹载计算机接收到上位机发送的通信消息后,返回一个通信消息给地面测试设备。返回的通信消息主要目的是向发送表明消息是否准确到达接收方。 通过BC_GetMsgNum_Newly()函数在发送BC后周期性的接收RT消息,若没有收到RT返回消息,则在500 ms内周期性发送BC消息的同时接收RT消息,若超时未响应则返回超时错误;若接收到RT返回消息,则通过BC_ReadNextMsg()函数读取消息并进行解码分析,然后按照规定报文格式定义的返回信息进行判断,如果格式正确则把监控变量置1,并按正常操作流程进行导弹的发射任务,如果错误则置0,Higle View监控界面通过此开关量以LED灯展示测试结果,便于对飞控软件测试结果进行直观判断。 在仿真平台的测试过程中,往往不止需要1553B总线发送/接收信息,还需要对其他变量以及局部的输入输出进行监控,如果在各个节点的实际数据都能得到理想结果,则可证明软件设计正确,否则对局部参数进行实时监控可以定位仿真过程中出现问题的原因。因此变量的实时监控问题是仿真平台切实可用的关键技术。 本文首先是在工控机模型中设置多个变量输出,如程序运行控制、测试分析结果等变量,多个局部输入输出,如读取文件的输出和封装结果输出。然后通过上位机Higale View软件加载模型到模型机,并对模型中的变量进行监控。Higale View软件提供了多种仿真图形显示,本文中工控机的1553B发送和接收以表格形式显示,检测结果输出以LED灯形式显示,并可在仿真过程中在线更改仿真参数,使仿真测试过程更加灵活、便捷。 飞控软件测试仿真平台考虑在不同需求和应用下,比如某些测试项的增加,测试流程的更改,这些因素使仿真平台的通用性难以保证。 本文将数据输入和打包封装分为两个模块,便捷的读取数据文本并进行数据类型转换作为数据输入,并将输入信息封装为1553B总线通信需要的数据格式,通用性大大加强,能够适应不同测试任务及不同数据输入。 数据封装是基于应用层协议(地面测试设备(BC)与弹载计算机(RT)之间的通讯协议)与1553B总线协议进行数据发送前的封装[11]。 1553B总线信息的一个报文可以由命令字、状态字和0至32个数据字组成。1553B总共定义了10种报文格式:BC→RT、RT→BC、RT→RT、广播(BC→RTs)、广播(RT→RTs)、方式命令、广播方式命令、带数据字方式命令(发送)、带数据字方式命令(接收)及带数据字方式命令(广播)。其中BC→RT、RT→BC报文格式如图4和图5所示。 图4 BC→RT报文格式 图5 RT→BC报文格式 本次实验所设计的仿真系统中,将本仿真平台作为地面测发控系统,与飞控计算机RT端进行通信。通过HiGale View软件将模型下载到模型机(工控机)中,并提供图形化人机交互界面,通过HiGale实时监控界面查看返回数据与对比结果。本文设计的仿真平台已经应用在多款导弹武器的测试中,完成了对导弹武器的性能测试及地面测发控流程的控制,实验测试证明,本文涉及的仿真平台可以较好实现基于1553B的仿真平台系统通信功能,且通信功能稳定可靠,能够按照工作流程对导弹进行功能测试,增加了导弹发射系统的可靠性。 HiGale View观测软件界面如图6所示: 图6 HiGale View界面图 图中,表格显示为1553B总线BC端和RT端的输入输出实时显示,BC_TxCheck方形按键为开始检测流程开关,圆形指示灯为弹地通讯检查、进入发射流程、初始对准准备等指令的检测结果,如果完成指定工作则指示灯亮,否则指示灯不亮。 本文设计的导弹飞控软件测试系统仿真平台,采用目前较为先进的1553B总线通讯技术,结合导弹地面测试设备,使用Higale仿真系统,设计和实现了一个供飞行控制软件可闭环运行的测试仿真平台。通过仿真和实验测试,验证了基于1553B总线测试仿真平台的功能和性能满足高通用性、高可靠性通信要求,证明了该方案的合理可行性。3 关键技术思路和难点
3.1 变量的实时监控功能
3.2 1553B总线传输通信协议
4 软件实现结果与分析
5 结束语