基于模型的自动驾驶仪软件开发

2017-03-23 08:29倪笑宇
导航定位与授时 2017年1期
关键词:嵌入式代码自动

章 枧,徐 军,杜 宇,倪笑宇

(1.北京理工大学,北京 100081;2.河北建筑工程学院,河北 张家口 075000)

基于模型的自动驾驶仪软件开发

章 枧1,徐 军1,杜 宇1,倪笑宇2

(1.北京理工大学,北京 100081;2.河北建筑工程学院,河北 张家口 075000)

针对传统自动驾驶仪软件开发效率低、周期长、成本高及难度高的缺点,提出基于模型的自动驾驶仪软件开发方法。详细介绍了利用MatLab/Simulink自动代码生成技术进行自动驾驶仪软件开发的完整过程,对自动生成的代码进行了分析及整合,最后利用嵌入式平台MSP430进行功能性验证具有一定的工程应用价值。

自动驾驶仪;基于模型;自动代码生成;DO178B验证;嵌入式

0 引言

随着国内不断开放低空空域,越来越多的小型通用飞机将投放到中国市场,作为飞机不可缺少的自动化设备之一,自动驾驶仪扮演着十分重要的角色。然而,传统的自动驾驶仪软件开发有着周期长、难度大、成本高等缺点。因此,急需一种高效的设计方法来解决当前的矛盾。基于模型的设计方法是一种基于数学模型的快捷、简便的设计方法,最早被应用在汽车生产领域,因其开发效率高、周期短、成本低的优点,得到越来越多汽车生产商的青睐。同时,由于数学模型对需求描述的唯一性,自动生成代码的功能也是唯一的,软件稳定性也得到了极大的提高。本文将基于模型的设计方法应用于自动驾驶仪软件开发过程中,与传统开发方法相比,基于模型的开发方法有着不可比拟的优点[1]。结合先进的开发模式,软硬件系统开发可以同时进行,使得整个系统开发效率大大提高。

1 基于模型的设计方法

传统自动驾驶仪软件开发模式中,系统软件设计和硬件设计不具有同步性,系统软件设计受限于硬件条件,并且在系统集成时可能出现各种问题。基于模型的设计方法摒弃了传统的设计模式,结合V型开发模式(见图1)的优点,使得系统软件设计和硬件设计可以同步进行,极大地提高了系统的开发效率[2]。开发环境同一性也使得开发过程中发生错误的概率降低,这也正是基于模型设计方法中代码自动生成的优势所在;既保障了系统的安全性,同时减少了在编写代码、调试代码中花费的时间。

图1 V型开发模式示意图Fig.1 The scheme of V model

2 自动代码生成及DO-178B验证

Matlab为多领域系统设计提供了统一的软件环境,能够进行高性能动态系统的仿真、分析及测试,能自动生成符合DO-178B标准和MISRA-C标准的高效的嵌入式代码,为开发人员提供一体化工作平台。

DO-178B标准是对航空机载软件进行适航认证时适用的标准,是整个民航标准体系的重要标准之一[3]。由于其认证过程繁琐复杂,需要耗费大量的人力与时间;因此,MathWorks公司于2012年发布的Matlab2012b中提供了支持DO-178B认证的工具箱DO Qualification Kit,为需要符合航空标准的项目提供了相关文档、测试用例以及程序来帮助鉴定支持的Simulink软件验证工具。除此之外,DO Qualification Kit还提供如表1所示的补充标准的支持。

表1 产品支持

DO Qualification Kit工具箱的应用,极大地简化了机载航空软件认证的过程,为航空机载软件的开发提供一种新的途径。

3 自动驾驶仪硬件系统结构

FCC(Flight Control Computer,飞行控制计算机)作为自动驾驶仪重要的控制单元,是整个自动驾驶仪系统最核心的部件。现以MSP430作为驾驶仪FCC的嵌入式硬件平台,介绍自动驾驾驶仪系统的外围结构。

如图2所示,所有外围模块通过航空总线连接到FCC。驾驶仪人机交互包含按键模块和显示模块。1)按键模块:完成驾驶仪功能选择、数据输入及状态切换的任务,作为FCC的输入模块。2)显示模块:接收FCC的指令,显示当前飞机的姿态、控制数据、警告等信息。3)AHRS模块:反馈模块;采集飞机的三轴姿态信息、三轴加速度信息,为FCC提供控制所需反馈数据。4)ADC/GPS模块:反馈模块;为FCC提供大气数据参数(高度、垂直速度、地速、温度等参数),以及GPS导航参数。5)舵机:执行机构;四路舵机分别为升降舵机、方向舵机、副翼舵机和纵向配平舵机,通过其拉动多面使飞机达到不同的飞行模式[4]。驾驶仪飞行模式如图3所示。

图2 驾驶仪硬件系统框图Fig.2 Constitute of autopilot hardware system

图3 驾驶仪飞行模式示意图Fig.3 The scheme of autopilot flight mode

4 基于模型的自动代码生成

自动驾驶仪软件系统设计包含模型搭建、模型转化、环境配置及生成代码等,下文将详细介绍如何在硬件系统的基础上,从模型设计到生成认证代码的过程。

4.1 驾驶仪软件模型框架

驾驶仪模型搭建使用Matlab/Simulink,功能模型以系统结构为依托,按照模块化编程思想,将驾驶仪功能模型划分为:按键输入模块,显示模块,反馈输入模块,纵向飞行模式模块,横侧向飞行模式模块。Simulink中将不同的功能单元打包成单个独立的subsystem,使软件模型简洁,为生成高效代码做准备。软件模型框架如图4所示。

图4 驾驶仪模型框图Fig.4 Constitute of autopilot model

图5 按键输入模块模型Fig.5 The model of key input module

模型中按键输入模块(如图5)使用Simulink/Stateflow搭建,Stateflow是有限状态机(finite state machine)的图形工具;它可以用于解决复杂的逻辑问题,用户可以通过图形化工具实现在不同状态之间的转换。Stateflow可以直接嵌入到Simulink仿真模型中,并且在仿真初始化阶段,Simulink会把Stateflow绘制的逻辑图形通过编译程序转换成C语言,使二者有机地结合在一起。因此,对于按键输入模块中包含复杂逻辑判断、众多的飞行模式间的切换,Stateflow能比Simulink生成更加高效的代码。

4.2 模型转换及验证

模型搭建完成,且原理性和功能性仿真无误后,需要模型进行转化。如嵌入式平台,连续系统生成的代码无法运行,需要转化为离散系统。如果模型中含有浮点运算,需要根据嵌入式平台浮点运算的能力,来决定是否对模型进行定点化处理。下面介绍模型在生成代码前需要完成的验证工作。

1)模型层次化管理:手动将模型进行封装和划分,例如,将驾驶仪模型按subsystem进行封装。Autosubsystem、Modellibrary和Modelreference同样可以对模型进行封装及划分,这三种方式通过配置参数能够直接影响生成的代码。Modellibrary是模型库,生成代码是可以被调用的函数形式。Autosubsystem形式上与subsytem相同,生成代码为一个单独的函数。

2)模型规范化工具(Model Advisor):对模型进行完整性、规范性、执行效率、数据存储管理、MISRA-C:2004、IEC 61508等一系列验证,为生成规范高效代码扫清障碍。工具箱能够根据模型的错误,给出正确的配置,用户只需要选择应用配置即可。

3)模型定点化工具(Fixed-Piont):定点化工具主要针对浮点运算能力弱或不具有浮点运算的嵌入式平台,需将模型中所有浮点运算转化为定点,以提高运算效率。在转化过程中要注意数值溢出,Fixed-point提供了一套完整的定点化工具箱,能够自动设置定点位数,简化了定点化过程。

4)DO验证工具(DOQualification Kit):DO Qualification Kit为模型进行航空机载软件标准的验证工作,并生成目标验证的合格证明。需要进行验证的标准有DO-178B和DO-331,他们分别验证机载航空软件标准和基于模型的开发与验证标准。在模型规范化工具中已经包含了DO验证工具了,但是为了生成目标验证的合规证明,需要单独进行验证。

4.3 代码生成配置

模型完成转化和相应验证工作之后,还需完成代码生成配置便可进行最后的代码生成环节。代码生成配置主要完成的工作有:选择生成代码的目标系统文件、硬件平台、硬件平台开发环境。目标系统文件为.tlc格式,决定生成代码的架构。

ert.tlc/Embedded Coder:生成通用的嵌入式C代码,模型功能封装为一个独立的函数,能够被外部函数直接调用;此目标系统文件不包含具体硬件平台的底层驱动,需根据项目要求手动编写驱动文件。

grt.tlc/Generic Real-Time Target:生成标准的C代码,是Simulink实时仿真的默认目标系统文件,不能被用于嵌入式系统中。

idelink_ert.tlc/IDE Link ERT:生成针对具体硬件型号的嵌入式C代码;与ert.tlc的区别为:生成的代码中包含对应嵌入式硬件平台的底层驱动,下载到硬件平台能直接运行。

4.4 自动生成代码及代码整合

生成代码前的所有工作完成之后,Build自动生成代码。在模型所在目录下生成一个以模型名命名的文件夹,包含有数十个文件,其中5个文件为有用文件。表2所示为具体的代码分析,xxx为模型名,使用ert.tlc为目标系统文件。

表2 代码分析

如果项目中已有主函数,将以上4个文件拷贝到项目文件夹下(ert_main.c除外),并添加到IDE中,在其主函数中添加xxx.h与rtwtypes.h头文件,即可完成代码的整合过程[5]。

5 代码验证

为了对生成代码完成功能测试,将程序下载到MSP430,配合仿真机进行半实物仿真。ADC/GPS数据由仿真机模拟,使用Labview编写上位机程序,采集航向数据与垂直速度数据,得到控制曲线。

图6所示为航向控制曲线图,控制指令为60°,从曲线可以得出航向控制无超调,响应时间较长,50s能稳定在控制指令处。图7所示为垂直速度控制曲线图,控制指令为5m/s,在40s时指令改为0m/s,从曲线可以看出垂直速度控制响应较快,且切换指令并无震荡,控制系统稳定。自动驾驶仪功能测试正常,达到系统设计指标要求。

图6 航向保持控制模式Fig.6 Control mode of azimuth holding mode

图7 垂直速度保持控制模式Fig.7 Control mode of vertical speed holding mode

6 总结

本文提出了基于模型的自动驾驶仪软件开发方法。分析了驾驶仪的硬件系统结构,软件模型框架;详细介绍了生成代码前的模型转化,及自动生成代码的作用和整合方法。最后对代码进行了功能性验证,达到了控制性能要求。采用本文论述的自动驾驶仪软件开发方法,极大地降低了自动驾驶仪系统的开发难度,压缩了设计成本。本方法能让工程师更加注重算法的优化,而不用担心代码实现的过程,具有很高的工程应用价值。

[1] Kuper R I. Automatic code generation: U.S. Patent 6357039[P].2002.

[2] 王巧明, 李中健, 姜达郁.Matlab平台DSP自动代码生成技术研究[J].现代电子技术, 2012, 35(14):11-13.

[3] Schumann J, Mbaya T, Mengshoel O, et al.Software health managementwith Bayesian networks[J].Innovations in Systems and Software Engineering, 2013, 9(4):271-292.

[4] 徐军, 欧阳绍修.运输类飞机自动飞行控制系统[M].北京:国防工业出版社, 2013:172-181.

[5] 杨向忠, 安锦文, 崔文革.嵌入式自动代码生成技术应用研究[J].弹箭与制导学报, 2008, 28(3):250-253.

Software Development of Autopilot Based on Model

ZHANG Jian1, XU Jun1, DU Yu1, NI Xiao-yu2

(1.Beijing Institute of Technology,Beijing 100081, China; 2.Hebei Institute of Architecture Civil Engineering,Zhangjiakou,Hebei 075000, China)

As the software development of traditional autopilot has the disadvantages of low efficiency, long period, high cost and high difficulty,the software development of autopilot based on model is put forward. The full process of autopilot software development using Matlab/Simulink automatic generation technology is introduced, and the analysis and integration of the automatically generated code are presented. Finally, fuctional verificationis carried outby the embedded platform MSP430. The result showsthe method of software development disscussed here can be applied inengineeringapplication.

Autopilot; Modelbase; Automatic code generation; DO178B verification; Embedded

10.19306/j.cnki.2095-8110.2017.01.009

2016-09-12;

2016-10-26。

章枧(1990-),男,硕士,主要从事嵌入式系统开发。E-mail:948875710@163.com

V9

A

2095-8110(2017)01-0049-04

猜你喜欢
嵌入式代码自动
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
自动捕盗机
TS系列红外传感器在嵌入式控制系统中的应用
创世代码
创世代码
创世代码
创世代码
嵌入式PLC的设计与研究
嵌入式单片机在电机控制系统中的应用探讨
让小鸭子自动转身