当前位置: 首页 > 范文大全 > 公文范文 >

SCADE平台下的图形化设计和代码自动生成

时间:2022-03-24 09:15:34  浏览次数:

摘要:随着航空机载软件功能和复杂性的提高,采用传统的人工编码方法来已不能满足其效率和安全性要求,因此寻求一种更有效的航空机载软件设计方法势在必行。本文研究了一种航空机载软件开发方法—高安全性开发环境SCADE,并以飞机自主导航软件为例,按照SCADE软件的程序设计流程,即通过直观的图形化建模和模拟仿真自动生成可直接面向工程的安全嵌入式C代码。实验结果表明,SCADE在很大程度上实现了软件开发的自动化,节约了开发成本和开发时间。

关键词:软件开发;SCADE;高安全性;自动代码生成

中图分类号TP311.52 文献标识码 A

Modeling and Auto-generation of C code on SCADE bench

(zhangxiaochun,jinping,sunquanyan)

(.Flight Control Department of SADRI, Shanghai, 200436)

Abstract: With the increasing functional complexity of the flight control software, the traditional design of airborne software is realized by writing code manually, which is lower in efficiency and cannot ensure the security of development. A solution to design and realize airborne software is studied in this paper based on SCADE (Safety Critical Application Development Environment) and taking the navigation software for example, according to the design flow of SCADE, namely through the intuitionistic modeling builds the model of navigation and simulation, it generates safe embeddable code which faces the engineering directly. The result of the test indicates that SCADE realizes the automatization and saves the costs and time of program design greatly.

Keywords: Software design; SCADE; Critical safety; code auto-generation

1.引言

长期以来航空机载软件设计一直采用手工编码来实现,软件生命周期中所有的工作都是围绕着编码工作进行,是一个典型的V型开发流程。手工编码工作量大,开发效率不高,并且手工编写过程中某一局部的错误或失误,常常要花费大量的人力物力来修复。如何保证在最短的时间内开发高质量的软件是航空机载软件开发所面临的挑战,SCADE高安全性应用开发环境就是在这样的背景下应运而生【1】。

2.基于SCADE的图形化建模技术

SCADE作为一种高安全性的嵌入式软件开发环境,覆盖了嵌入式软件开发的整个流程,DO-178B标准规定了40个对软件开发过程的验证进程目标,使用SCADE可以完全省略其中21个,13个目标的工作量可因SCADE的使用而减少,其代码生成器(KCG)是目前世界上唯一的满足DO-178B民航A级标准的代码生成器,相比于手工编码,极大地减少了编码和测试工作。据国外文献报道,用以SCADE为主体的开发方法和代码生成流程,能自动生成70%~90%的嵌入式代码,并且将开发成本降低至50%,大大提高软件开发效率【2】。

使用SCADE进行开发时,软件生命周期中所有工作都是围绕着详细设计,即SCADE模型展开的,其开发流程是一个基于模型的Y型开发流程。软件模型在整个系统开发工程中占据着重要地位。使用模型可以提高开发者对整个系统的观察深度和控制复杂度的能力,给不同的开发阶段提供全局统一的视图和指导,提高软件质量、生产率和可靠性。建模也是进行形式化分析和验证的基础【3】。

对于嵌入式系统既有离散的状态变化又有连续的时间行为。从传感器采样数据,经过控制逻辑和数学运算,产生输出,到执行机构,如图1所示。SCADE提供了两套机制来进行图形化建模:数据流图和安全状态机。这两套机制都建立在严格的数学模型基础之上,具有严格的数学语义,它们保证了设计模型的精确性、完整性、一致性和无二义性。SCADE把这两套开发机制很好地融合在一起,能够适合于不同类型的系统尤其是混合系统的开发。

1)数据流图

数据流图适用于连续控制系统的建模,主要用于传感器等时间间隔采样、信号处理、计算并输出等,以用户定义的输入输出变量为接口,使用一些运算符,如算术算符、逻辑算符、时序算符、case操作符、if-then-else操作符等,用节点为功能单元,组成复杂的层次结构,以图形化的方法搭建软件模型。

2)安全状态机

SCADE提供安全状态机来描述离散化状态控制逻辑,主要用于响应外部中断或处理内部事件,安全状态机(SSM)是有限状态机的图形化实现,其图形化方法是用一系列的状态、转移和信号来表示反应系统的控制逻辑。系统的进展用状态和状态之间的转移来表示,转移用信号来触发,SSM开发环境如图2所示。

安全状态机以可视的状态(State)和转移(Transition)来进行建模,用信号(Signal)结合转移条件(Condition)控制系统流程。状态代表系统的模式,只有“激活”和“不激活”两种状态,SSM的状态用方框表示,可以体现层次关系,并行关系。层次化的状态框可以设置互斥状态exclusive(OR)和并行状态parallel(AND),互斥状态就意味着同一时刻仅有一个状态处于活动状态;若设置成并行状态,则所有的状态都可能在同一时刻处于活动状态,并行的状态应该在其父状态被激活的时候同时被激活,而激活顺序一般按照“从外至里,从上至下”的规则排列。

3.基于SCADE的代码自动生成技术

3.1代码生成机制

代码自动生成的原理是根据建模平台的当前目标系统模型,由代码生成器自动生成某种语言的源代码。具体来说,生成代码的信息来源有两个:模型属性(控制代码生成方式即如何生成)和元素规范(控制代码生成内容即生成什么)。【4】

由SCADE图形描述转换为高质量的C代码,需要经过以下两个步骤:

1)SCADE2Lustre:SCADE是以图形建模为基础的软件开发环境,这一步是将方程式、参数块等图形转变成Luster语言描述,然后删除图像信息,并将多个文件模型整合到一个文件中;

2)Luster2C:将Luster语言描述转换成面向工程的C语言。

具体流程如图3所示。

3.2代码自动生成

软件模型设计完成后,需要对其进行模拟仿真。SCADE仿真器是一个强大的可视化的图形调试工具,可以在设计过程中验证软件是否满足功能要求,其输入/输出可以用文本或表格的形式给出,还可以由TCL语言来驱动【5】。SCADE仿真和代码生成工具栏如图4所示。

利用SCADE仿真器对软件模型进行仿真,经检验正确无误后,点击代码自动生成按钮,对其进行代码自动生成。

SCADE代码生成器有两个显著的特点,第一,SCADE所生成的代码完全面向工程,可以直接嵌入到所开发的系统中去而不需要做任何的修改;第二,SCADE基于严格的数据理论,它保证所生成代码的正确性,保证所生成代码的行为和仿真的行为的一致性。

4.开发实例

本文以某型飞机的自主导航软件设计为例,来说明基于SCADE的软件设计过程。

4.1需求分析

自主导航飞行主要是指在没有人直接参与的条件下由控制系统自动的控制飞机按规定航线的飞行。航线通常由通过直线或圆弧线连接多个航点构成。航点信息包括该航点的航点号、经度、纬度、高度、任务字、控制字等信息。自主导航飞行控制系统根据飞机经、纬度、高度等信息,计算出实际飞行轨迹和预置航线的位置偏差,经过控制律解算,对飞机三个舵面进行控制,改变飞机飞行姿态,从而使飞机按规划航线自主飞行【6】。

自主导航过程如图5所示。

4.2 SCADE环境下建模

针对飞机导航过程的需求分析,使用SCADE开发环境进行软件模型设计,导航软件主要包含两部分内容,即参数计算和飞行状态切换。导航过程中所需参数的解算通过数据流图来实现,该部分的输入参数是GPS提供的飞机的经纬度信息、AHRS提供的航向信息、航线信息等,输出参数包括:纵向模态切换指令,横侧向模态切换指令,当前航段指定高度,当前航段指定航向角,当前侧偏距,当前待飞距。飞行模态切换通过安全状态机实现,根据数据流图解算出的模态切换指令进行相应的模态切换。每一个模态输出控制律解算所需的参数和发动机油门。

横侧向导航控制是通过副翼舵和方向舵两个舵面来控制飞机在水平面的航迹运动,横侧向飞行模态为航迹跟踪。纵向导航控制是在垂直面内对应飞行航迹偏差的控制,用于控制飞机按照预定的轨迹爬升或下降进入某一高度的某一地理坐标位置,纵向飞行模态包括爬升、平飞、下滑,纵向各个模态之间的触发信号(climb, glide, level),通过比较飞机当前高度与预定的航线高度得出。

利用SCADE中的安全状态机实现的自主导航模态切换如图6所示。

数据流图与安全状态机共同实现自主导航功能模块,其连接图如图7所示。

4.3 代码自动生成与集成

导航软件模型设计完成之后,对其进行仿真验证,正确无误后点击代码生成按钮进行代码的自动生成。SCADE生成的代码相当于一个函数块,在编译环境中嵌入生成的代码,必须另外添加主函数。主函数一般是个循环调用生成代码的过程,SCADE代码的输入与输出通过接口与底层支持软件衔接。代码集成主要分以下三个步骤:

1)定义一个结构体调度SCADE生成函数的接口,结构体成员为SCADE根节点的输入与输出;

2)添加主函数,编写SCADE生成代码与底层支持软件的接口函数;

3)主程序中调用主函数。

将生成的代码与支持代码在VC++6.0编译器下编译链接,进行软件集成,生成可执行文件。

4.4 代码测试与分析

任务代码的大致执行时间通常采用测量同一代码执行多次的累计时间来实现。本文使用clock函数测量时间,clock函数精度为毫秒级,对于短时间内的定时或延时可以达到毫秒级。以下函数段为测量执行时间的具体实现。

startT=clock( );

for(a=0; a

{

/*put user task code here */

}

endT=clock();

printf("The time is %f\n",(double)(endT-startT));

在相同的环境下,对SCADE生成代码与相应的手写代码进行执行时间测试,测试结果如表1所示。从表1可以看出,执行同样步数,SCADE生成代码的执行效率略高于手写代码执行效率。

SCADE满足一系列的安全性特征,例如没有死代码、没有死循环等,基于SCADE平台进行软件开发在很大程度上实现了软件开发的自动化,节约了开发时间,提高了开发效率。SCADE模型的设计方法和设计流程直接影响生成代码的质量,因此,在设计过程中通过改进设计方法和设计流程可以进一步优化代码。

4.5仿真验证

本文的仿真实验是在一套飞行控制计算机半物理仿真平台上进行的,仿真系统包括飞行控制计算机、传感器仿真计算机、遥控遥测与地面检测计算机;将集成后的可执行文件下载到飞控计算机中,飞行控制计算机进行实时运算,产生输出量,控制飞机仿真模型,在仿真控制台上观察数据和曲线变化,并根据解算出来的经纬度绘制飞行轨迹,绘制的飞行轨迹如图8所示。其中蓝色的为目标航迹,黄色的为实际飞行航迹,可见飞行轨迹与规划的航线基本一致,设计的软件达到设计要求。

5结束语

采用SCADE对飞机导航软件实例研究,可以得到以下结论:

1.SCADE建模机制基于严格的数学理论,排除了传统软件开发中难以发现的安全性隐患,减少测试工作量和测试时间。

2.SCADE生成代码的执行效率与手工代码的执行效率相当。

3.采用SCADE开发航空机载软件是可行的,且可在很大程度上节省开发时间,提高开发效率。

参考文献:

[1]Jean-Louis Camus,Bernard Dion,Efficient Development of Airborne Software with SCADE Suit,Esterel Technologies,2003

[2]Anjali Joshi,Mats P.E. Heimdahl,Model-Based Safety Analusis of Simulink Models Using SCADE Design Verifier,SAFECOMP,2005:122-135

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

[4]Labbani,Ouassila,Mode-automata based methodology for scade,Lecture Notes in Computer Science,v3414,Hybrid Systems: Computation and Control - 8th International Workshop,HSCC 2005,2005:386~401

[5]徐爱春,章坚民,基于XML/XSLT代码自动生成技术研究,杭州,杭州电子工业学报,2004,24(4):64-68

[6]吴了泥,黄一敏,基于Stateflow技术多模态飞行控制律仿真,杭州电子科技大学学报,2005,25(4):34-37

作者简介:章晓春(1985-),男,硕士,助理工程师,主要研究领域为飞控计算机及机载软件

推荐访问: 自动生成 图形化 代码 设计 平台