APP下载

基于混合编程技术的应用软件快速仿真平台

2010-11-07索旭华郭明姝

空间控制技术与应用 2010年1期
关键词:汇编语言串口闭环

张 银,索旭华,郭明姝

(北京控制工程研究所,北京 100190)

卫星姿态与轨道控制计算机应用软件是卫星姿态与轨道控制系统中的重要环节,它定时采集各测量敏感器的信息,经计算处理后,得到卫星运动状态量,按预定的控制规律向执行机构发出控制信息,完成预定的姿态和轨道控制任务.AOCC应用软件是一个典型的实时嵌入式软件,由于受实时性和内存约束,某些型号的AOCC应用软件仍采用8086汇编语言进行开发.汇编语言是一种面向机器的语言,其特点是运行速度快、占用存储空间小,可直接对硬件进行控制[1].其缺点在于编程工作量大,开发周期长,容易出错且不宜调试[2].而C语言是一种高级语言,其具有语言简介、紧凑,数据结构丰富、数据处理能力强、以及可移植性好等诸多优点[3].但在一些对速度要求高,内存空间非常有限的情况下,它仍然不能代替汇编语言.因此,在基于8086汇编语言开发的AOCC应用软件研制过程中,如果能够充分利用上述两种语言的各自优点进行混合编程,则会给软件开发、测试工作带来事半功倍的效果.

在目前基于8086汇编语言开发的AOCC应用软件研制过程中,由于卫星动力学模型通常采用基于Windows平台的Visual C++进行开发,混合编程技术的应用只局限于对某些AOCC应用软件的计算功能算法(如轨道、GPS和磁场计算)进行开环的数据比对,无法进行闭环调试和测试.针对上述困难介绍如何基于混合编程技术实现AOCC应用软件的闭环快速仿真平台.

1 快速仿真平台的设计与实现

作为嵌入式软件,AOCC应用软件嵌入在卫星姿态与轨道控制系统中运行,软件的实现细节和计算机系统的结构、I/O配置、与计算机系统相连的外围设备乃至整星所处的空间环境都有关系.其中I/O接口包括数据总线、串口和并口等部件,卫星外围设备包括卫星测量部件、执行机构、数管系统等,而整星所处的工作环境包括卫星姿态与轨道动力学、运动学和空间环境力矩.依据AOCC应用软件的功能以及其与硬件环境耦合程度,AOCC应用软件闭环运行环境可分为星载计算机软硬件部分和卫星动力学模型仿真两个部分,具体如图1所示.

图1 AOCC应用软件闭环运行环境框架

AOCC应用软件闭环运行环境的仿真为AOCC应用软件的动态运行提供了必要条件,但作为一个测试环境,该平台还必须能够提供必要的测试用例和故障注入接口(包括遥控命令的注入)以及数据的显示、存储和处理功能,这里不作详细介绍.

作为软件闭环运行环境重要组成部分,星载计算机软硬件部分包括AOCC应用软件、星载计算机和I/O接口3个部分.这是整个仿真平台实现的难点和重点部分.由于普通PC机的CPU与8086CPU都是基于X86体系结构设计,通用PC机在虚拟DOS下能够运行8086汇编语言程序的机器码.因此,不仿真8086CPU,用普通PC机的CPU替代,这样可降低开发的难度和节省开发时间.但由于星载计算机与卫星外围部件通信端口不同于普通PC机上的标准端口,为了能使AOCC应用软件能与卫星动力学模型仿真软件进行正确的数据通信,需要对AOCC应用软件的I/O接口部分进行改写.对于数据通信功能的实现,用汇编语言编写比较困难,而采用C语言来实现则相对容易,因此采用汇编和C语言的混合编程技术来实现.

卫星动力学模型仿真部分主要由卫星的执行机构、测量机构、空间环境、空间动力学和运动学仿真程序构成,它们之间有着紧密的耦合关系,作为一个整体与星载计算机软硬件部分构成一个闭环控制仿真系统.其中测量机构包括地球红外敏感器、数字太阳敏感器、模拟太阳敏感器、0-1太阳敏感器、星敏感器和陀螺等部件.执行机构包括喷管、动量轮和磁力矩器等部件.在卫星动力学模型中还需要考虑空间环境力矩对卫星姿态的影响.

由于采用混合编程技术实现的星载计算机软硬件部分只能运行于通用PC机的虚拟DOS下,而卫星动力学模型仿真程序一般采用Visual C++开发,运行于Windows下.因此这两个应用程序跨平台的数据通信是一个必须考虑的问题.解决的方法可以通过串口通信或网络通信,但从实现角度来看,串口通信无疑较为简单可靠.另外在快速平台构建的过程中,还需要考虑显示以及故障和测试用例注入接口的实现,为了开发方便,可以把某些功能单独封装成一个独立的应用程序,如遥测遥控接口和曲线动态显示部分.某型号开发的快速仿真平台结构如图2所示.

图2 某型号快速仿真平台结构图

1.1 星载计算机软硬件部分的实现

由于不仿真8086CPU,星载计算机软硬件部分主要包括AOCC应用软件以及I/O接口部分的仿真.为了能实现动态闭环运行,星载计算机软硬件部分应用程序与动力学模型仿真程序通过串口通信实现数据的通信.采用C语言和汇编语言混合编程实现的星载计算机软硬件部分应用程序可分为3个文件,tl3.cpp,tl1.asm,tl2.asm.其相互关系见图3所示。

图3 星载计算机软硬件部分程序的实现关系图

tl3.cpp主要实现串口通信的功能,包括串口初始化、串口数据接收和发送,并把串口接收的数据转换为相应的格式.在tl3.cpp文件中要根据混合编程的要求对tl1.asm中的接口程序进行申明并调用.tl1.asm为汇编语言程序,它是tl3.cpp和tl2.asm文件的接口,实现C语言和汇编语言程序之间的数据传递,调用tl2.asm文件中的子程序来实现卫星姿态与轨道控制计算机应用软件的运行.tl2.asm为卫星姿态与轨道控制计算机应用软件.利用C语言和汇编语言的混合编程需要解决的两个主要问题是:汇编与C程序模块的连接和函数调用过程中的参数传递.为了保证汇编语言和C语言模块文件正确连接,汇编程序必须采用和C模块一致的存储模式,汇编程序必须遵守和C兼容的命名约定,包括函数和变量的命名约定.混合编程中的参数传递主要是通过堆栈进行传递的.C语言调用汇编子程序时,按从右到左的次序依次将参数压入堆栈.在执行汇编子程序时还要将返回地址压入堆栈[4-5].利用混合编程技术实现的星载计算机软硬件部分应用程序解决了AOCC应用软件同动力学模型仿真程序的数据通信问题,实现了软件闭环测试.同时该应用程序可以方便的采用Turbo Debugger或CodeView等调试工具进行断点调试,从而克服了汇编语言程序闭环调试困难.

1.2 动力学模型仿真程序的实现

在实际型号研制中,动力学模型仿真程序一般封装成动态链接库,通过接口函数的调用实现数据的传递及功能的仿真,其具体功能的实现不详细介绍,主要介绍其与其他应用程序的通信关系.动力学模型仿真程序的串口通信采用Visual C++进行开发,工作过程是基于多线程的,流程如下:首先设置号串口参数,再开启串口侦测工作线程,串口监测工作线程监测到串口接收到的数据后,以消息方式通知主程序,激发消息处理函数来进行数据处理,待数据处理结束后,向串口直接发送数据[6].

动力学模型仿真程序与姿态曲线显示程序通过局域网进行相连,基于TCP/IP控制协议.数据的通信程序采用Win Socket套接字来开发.其中动力学模型仿真程序作为套接字的服务器端,而姿态曲线应用程序作为客户端.每个控制周期计算结束后,动力学模型仿真程序就把相应的姿态数据通过网络传送给姿态曲线应用程序,姿态曲线应用程序实现姿态数据的动态画图,方便软件人员的监控.

1.3 遥测遥控应用程序的实现

根据AOCC应用软件的遥测遥控实现方案,遥测遥控应用程序实现了遥控遥测数据的解包与发送.它与动力学应用程序的通信主要利用Windows消息机制与共享内存的方法来实现.

2 快速仿真平台的验证与应用

对应用这种方法开发的快速仿真平台进行测试,在相同的试验条件下,把快速仿真平台的运行结果与星地联试的结果进行比对.比对的结果验证了快速仿真平台功能的正确性.而其在通用PC机(Intel Pentium(R)4,3.4GHz,1G 内存)条件下运行速度可以达到星地联试设备运行速度的1.5倍左右,表1为两个测试平台在完成某相同控制模式任务的运行时间.

表1 星地联试设备与快速仿真平台运行时间

在测试过程中,发现有以下主要因素制约快速仿真平台的运行速度:

(1)通用PC机的CPU和主频和内存大小;

(2)串口通信的数据量的大小;

(3)存储数据量的大小;

(4)需要显示数据量的大小.

通过改善这些因素可以提高仿真速度.图4为该快速仿真平台运行的某控制模式下姿态曲线.

3 结 论

本文针对8086汇编语言开发的AOCC应用软件开、闭环调试和测试难点,提出一种基于混合编程技术开发的快速仿真平台的实现方法.该平台解决了基于汇编语言AOCC应用软件闭环调试和测试的困难,尤其在软件研制初期对于AOCC应用软件算法的调试起到了积极作用,提高了软件的开发效率和质量.

图4 某快速仿真平台运行的闭环姿态曲线

猜你喜欢

汇编语言串口闭环
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
基于安全闭环的“两客一危”动态监管平台
健管师基于多模态闭环式健康管理模式对2型糖尿病患者健管构建及应用
高等学校计算机专业课程教学改革实践——以汇编语言与接口技术课程为例
基于EM9000工控板高性能双串口通信模型设计与实现
基于四元数卷积神经网络的移动机器人闭环检测
汇编语言与C语言的混合程序设计技术研究
提高《汇编语言程序设计》教学效率的思考与实践
船舶电子设备串口数据的软件共享方法
重型直升机-吊挂耦合系统闭环飞行品质分析