欢迎来到专业的尚善文档网平台! 工作总结 工作计划 读后感 发言稿 心得体会 申请书大全 思想汇报 述职报告
当前位置:尚善文档网>作文大全 > 某型飞机惯导模拟器数据通信软件设计

某型飞机惯导模拟器数据通信软件设计

时间:2022-03-15 08:41:22 浏览量:

引言

机载惯导模拟器是某型飞机任务训练模拟器的一个重要的分系统,它为训练者提供自动导航的仿真环境,使其尽快掌握惯性导航系统的操作过程。为了保证惯导模拟器的正常工作,完成模拟操作、特情模拟、通信、灯检和计算导航参数等功能,正确设计数据通信软件尤为重要。

数据通信总体设计方案

数据通信软件完成惯导模拟器与导航计算机之间的串口通信(RS422串口),包括串口初始化、串口中断、打包数据、解包数据等子程序单元。

导航计算机与惯导模拟器之间的串行通信硬件连接如图1所示。由于两者之间进行的是小批量的数据通信,在硬件设计时采用RXD,TXD,GND三线制,将导航计算机和惯导模拟器的发送数据线TXD与接收数据线RXD交叉连接,二者的地线一GND直接相连,而其它信号线均不用,而采用软件握手的零MODEM(调制解调器)方式,这样既实现了预定任务又简化了电路设计,节约了成本。

数据通信软件设计必须解决以下三个方面的问题:(1)通信可靠,即保证惯导模拟器与导航计算机之间的通信数据不丢失、不混乱;(2)保证惯导模拟器与导航计算机开机顺序不同时,它们之间传递的数据不丢失且逻辑正确;(3)在上面两点的基础上,尽量提高传输速度,保证模拟的实时性和真实性。

通信程序设计

通信协议制订

本通信协议设计基于帧传输方式。为了使数据快速可靠地传输,将每一帧数据唯一对应一命令帧。传输数据所执行的流程如下:

(1)导航计算机读数据时,遵循“读命令一等数据一报告”过程,即下达一读命令并等待接收数据,再根据所接收数据的正误向应用程序报告此命令的执行情况:

(2)导航计算机写数据时,遵循“写命令一等回应一报告”过程,即下达一写命令,此时所要写的数据含于此命令中,等待惯导模拟器发来的“已正确接收”的回应信号,并向应用程序报告此命令执行完毕。

传输过程中,如果导航计算机或惯导模拟器所接收任何一帧信号出现错误,均会向对方发送重发此帧信号的请求,如果连续三次传输失败则退出通信并向应用程序报告。

信号帧分类及格式

数据通信时所使用的信号帧有:读命令帧、写命令帧、数据帧、正响应帧、重发命令帧、放弃命令帧。

以读命令帧格式为例:其格式如表1所示。

其他信号帧与读命令帧类似,规定了具体格式和字节定义。

通信协议的处理流程

1.数据分帧与数据重组

应用程序发送的数据作为一个“流”放在发送缓冲区中,由通信协议进行分帧,切割进行发送,在接收端分帧的数据去掉帧头重新组合到接收缓冲区中,交给应用程序处理。发送过程如图2、接收过程如图3所示。

2.惯导模拟器通信协议流程

其流程如图4所示。首先,惯导模拟器应用程序打开串口并通知通信开始,然后根据读写类型发送不同的命令帧,最后接收导航计算机所发送的数据并检验该数据是否正确。若正确,则判断所接收命令帧的类型并进行不同的响应,若错误则要求重发。

3.导航计算机通信协议流程

其流程如图5所示。当导航计算机接收到惯导模拟器的数据时,串口事件驱动应用程序执行该通信流程。开始应用程序判断所接收的数据是否正确,若正确则根据所接收数据的帧类型进行不同的响应,若错误则向惯导模拟器发送重发命令帧,要求重发该帧数据。

导航计算机串口通信程序设计

惯导模拟系统是基于HDOSE(基于HLA分布式面向对象仿真引擎)的系统,导航计算机平台为Windows操作系统,且仿真应用程序采用Vc++开发,因此通信程序采用Windows环境下的高级编程语言进行开发。

本设计采用Windows API(应用程序接口)函数,在导航计算机程序中,采用异步通信方式。

打开串口

在Windows中,串口和其他通信设备作为文件处理,串口的打开、关闭、读取以及写入所用的函数与操作文件的函数相同。通信会话由调用CreateFile函数打开串口开始,CreateFile以读访问权限、写访问权限或读写访问权限打开串口,并设定了异步操作方式还是同步操作方式。

初始化串口

串口初始化包括对波特率、数据位、停止位、奇偶校验位、i/o缓冲大小以及超时等参数进行设置。在调用API函数进行串口初始化时,波特率、数据位、奇偶校验、停止位的信息包含于一个自定义的文件结构中,而超时方面的信息则包含于COMMTIMEOUTS结构中。在用CreateFile打开串行口后,可以调用GetCommState函数来获取串行口的初始配置。要修改串行口的配置应该先修改自定义的文件结构,然后再调用SetCommState函数用指定的自定义的文件结构来设置串行口。

读写串口

初始化完成以后,根据通信协议合理安排读/写函数ReadFile和WriteFile以读写各种握手信息和数据信息。其中何时读取惯导模拟器发送的数据信息及应答信息是最重要的。此时采取事件驱动法,即设置通信资源上的事件掩码为EV RXCHAR,当接收到一个字符并放入缓冲区后即通知应用程序。

关闭串口

通信完毕,调用CloseHandle函数关闭串口。

惯导模拟器串口通信程序设计

惯导模拟器处理器为PCI04,软件平台为MS DOS,主体应用程序采用c语言编写。通信程序采用汇编语言。

惯导模拟器串口程序模块的功能包括:串口打开及初始化,将端口输入数据存入接收队列以及将发送队列的数据输出,如图6。当“接收器数据寄存器就绪”中断产生时,相应的中断子程序直接从UART数据寄存器读取字符,送到当前接收队列尾指针指向的单元,并使尾指针增1,退出返回主程序:当“发送器保持寄存器为空”中断产生时,相应的中断子程序从当前发送队列头指针读出队列字符,直接送UART的保持寄存器,并使头指针增l,返回主程序。对接收队列和发送队列数据的处理由主程序完成。

串口初始化

初始化程序完成:确定数据的传输帧格式、波特率以及UART操作方式(程序查询I/O还是通信中断I/O)。本程序选择中断方法进行通信。

中断函数

当惯导模拟器串口接收一个数据时,自动调用该中断函数。中断函数的功能是将外部输入的一个字节的数据存入接收队列。

结语

根据导航计算机和惯导模拟器硬件与软件平台的特点,分别采用Windows环境下的高级编程语言和汇编语言完成了导航计算机和惯导模拟器的串口通信程序的设计。多年应用表明,通信程序设计合理,功能强大,工作稳定可靠,完全可以满足模拟器的通信需求。

推荐访问: 数据通信 模拟器 型飞机 设计 软件