飞行模拟器可扩展数字量输出系统的设计与实现
2013-08-10王志海
王志海
(93707部队 河北 张家口 075000)
现代飞行模拟座舱由计算机系统和飞行模拟器其他系统组成,计算机内部都是数字量信号,通过外部接口设备将数字信号转换为电压信号控制系统的外部硬件设备,这种外部接口设备也称为过程通道。计算机输出的数字量信号,经过过程通道变成电压信号,控制仪表显示、座舱灯光等,从而实现反应座舱内飞行状态,仿真时机飞行的功能[1]。在某型飞机飞行模拟器的设计实现上,采用了一种在电路级可扩展的方案,较好的平衡了数字量输出系统电路的成本控制与冗余设计。
1 需求概述
某型飞机模拟仿真座舱在设计初期,鉴于此座舱的主要功能范围和应用面比较有针对性,主要集中在对部分座舱设备的功能实现上,因此对于数字量输出系统的规模预估为62路数字信号,5VTTL电平,10毫安电流,直接驱动发光二极管、数码管、三极管等小电流器件。但是为了在以后的使用过程中不断的扩充模拟座舱内的设备及开发更多的功能,要求数字量输出系统具备可扩展的能力,在必要时,只通过插接电路、升级软件等简单的操作即可实现座舱升级。
2 分析设计
某型模拟座舱的数字量输出系统主要实现利用发光二极管实现舱内灯光信号、利用数码管显示数字仪表指示、利用三级管控制大电流元件通断及舱内照明等功能。数字量输出系统组成如图1所示。
图1 数字量输出系统示意Fig.1 Digital output system schematic
模拟座舱控制计算机和单片机板之间通过RS232总线通讯,考虑到目前市面上的通用计算机很少带有RS232接口,本方案使用USB转TTL的元件PL2303,使用应用更普遍的USB接口来连接单片机和计算机。单片机采用高性能、低功耗的AVR微处理器Atmega48,主频20 MHz,充分利用其功能完备、资料充分、大多数指令为单个时钟周期的特点,满足座舱数字信号的实时性要求[2]。
Atmega48微处理器有23路可编程I/O线,其中PD0、PD1用于RXD、TXD串口通信,PC6用于RESET,还剩余20条I/O线,如果直接用于控制数字量输出,数量太少不够使用,需要扩展I/O口数量[3]。除使用专门的可编程接口芯片8255A,比较易于实现的方案就是使用串入并出移位寄存器。
74LS164是8位移位寄存器,频率36 MH,功耗80 mW,芯片引脚定义如图2所示[4]。
其中 Q0~Q7(QA~QH)为输出端,A/B 为串行数据输入端,CP为时钟信号输入,MR为数据清除控制,当MR引脚为低电平时,输出全为低电平,CP时钟信号为上升沿时,A/B引脚数据串行输入Q0,Q0~Q7引脚数据顺序移位,真值表如表1所示。
图2 74LS164引脚Fig.2 74LS164 Pin
表1 74LS164真值表Tab.1 1 74LS164 truth table
其中H为高电平,L为低电平,X为任意电平,为低电平到高电平跳变。芯片引脚电平跳变的传输延迟时间在20~30 ns,满足飞行模拟座舱数字量输出的时间要求。利用74LS164的串行移位的特性,可以使用多个74LS164串接起来,单片机端只占用两个I/O口,一个用于连接CP端作时钟线控制,一个用于连接A/B端作数据输入线,就可以扩展出8*N(串行连接N个74LS164)个I/O口,由于串行连接的74LS164共用CP时钟线,而将上一级芯片的Q7接入下一级的A/B作为数据输入,在电路上的实现就较为简单了。
数字量输出板使用40P排线与单片机板连接,另将单片机控制线串接到40P输出接口,作为插接扩展板的预留接口,板上使用6片74LS164,数字输出能力为6*8=48路数字量信号。接口板电路如图3所示。
图3 数字输出电路板Fig.3 Digital output circuit board
图中接口板只占用单片机6*2=12条I/O线,每一个74LS164芯片输出引脚直接连接了限流电阻,用于控制发光二极管,每个芯片单元的8个引脚也可以单独连接一个共阳数码管。当飞行模拟座舱的数字量输出系统需要扩容时,只要将下一级的接口板40针输入口串接到上一级接口板的40针扩展口即可实现电路升级。
3 上位机实现
由于每一路单片机的Clock线和Data线上的单元都具备顺序的地址,对于上位机软件来地址空间是透明的,控制数字量输出时只需要提供74LS164单元编号及I/O引脚位即可实现对任意单元上的8位I/O口的电压进行控制。比如上图中的数字量输出接口板,第一级板子的单元编号为0~5,位编号为0~39,第二级接口板的单元编号为6~11,位编号是40~87。上位机软件中使用二维数组unsigned char BitStatus[6][接口板数量]来保存每一位数字量的电平状态。在飞行仿真座舱的安装过程中,只需要对接口板进行编号标记,既可以在软件中将接线柱的对应的单元地址和控制位编号保存成配置文件,实现对外部数字信号的精确控制[5]。
上位机程序流程如图4所示。
图4 上位机程序流程Fig.4 PC program flow
4 下位机代码
下位机接收上位机的查询命令,返回所连接的数字接口板的I/O数量;接收上位机的控制命令,改变指定的单元号、位编号上的电平状态,从而控制座舱内的灯光信号及数字仪表。下位机程序使用WinAvr20100110编译,通过在代码中修改预定义的单元数即可实现接口板扩充[6]:
5 结束语
文中使用的数字量输出接口方案已经应用于某型飞机模拟座舱,经实际应用证明,该方案设计简单、兼容性好、电路及数字量输出规模扩充方便,完全满足模拟座舱的数字信号控制要求。
[1]王行仁.飞行实时仿真系统及技术[M].北京:航空航天大学出版社,1998.
[2]吴正毅.测试技术与测试信号处理[M].北京:清华大学出版社,1991.
[3]ATMEL.ATmega48/88/168[EB/OL].[2011-05-01].http://www.atmel.com/images/doc2545.pdf.
[4]ON Semiconductor.SN74LS164[EB/OL].[2006-07-01].http://www.onsemi.cn/pub_link/Collateral/SN74LS164-D.PDF.
[5]张明,李训涛.计算机测控技术[M].北京:国防工业出版社,2010.
[6]刘海成.AVR单片机原理及测控工程应用:基于ATmega48/ATmega16[M].北京:航空航天大学出版社,2008.