用Stood进行架构设计_第1页
用Stood进行架构设计_第2页
用Stood进行架构设计_第3页
用Stood进行架构设计_第4页
用Stood进行架构设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用Stood对安全关键系统进行架构设计和分析北京旋极信息技术股份有限公司《旋极视界》编辑部摘要:近年来,随着硬件设备计算能力的提高,性能关键实时系统的规模和复杂性急剧增加,导致其对开发成本和非功能属性的要求也越来越高,这对其开发中的设计合理性,验证完备性以及开发效率等方面都带来了挑战。由 SAE等组织提出的系统架构设计分析语言(ArchitectureAnalysisandDesignLanguage,AADL)是一种基于MDA方法的建模语言,可以用来设计和分析性能关键实时系统的软硬件体系结构。在本文中,我们通过使用Stood工具,对自动飞行系统进行架构设计,并对模型进行可调度分析,最后对全文做了总结,指出全文的优点和不足,以及下一步研究的目标和方向。关键字:性能关键实时系统MDAAADLSTOOD模型验证可靠性分析1.引言在传统的性能关键实时系统开发过程中,开发人员需要等到实际产品或产品原型,嵌入式目标机生产出来之后,才能够对性能关键实时系统的软件进行测试和验证,在集成阶段才能暴露和修复软件和系统的缺陷,造成时间上的浪费和费用的增加。另外,由于缺乏对整个系统的体系结构的精确预算,虽然单个功能模块的非功能属性相对容易实现,但是在系统集成后如何满足整个系统的非功能属性对开发人员也是一个巨大的挑战。要解决这些问题,可以采用MDA方法在系统实现前建立模型,在模型级对整个系统进行非功能属性的规约和验证,消除可能的问题,降低开发成本,提高开发效率。系统结构分析与设计语言(AADL)正是一种基于MDA方法的体系结构建模语言,可应用在监控、航天、飞行管理、引擎和传动系统控制、医疗设备、工业工艺控制设备和航空领域等。AADL模型并不关心具体的功能实现,描述的仅仅是系统架构,从而在体系结构级对系统的非功能属性进行规约,这样系统设计者可以使用分析工具对系统模型的可调度性,可靠性,安全性进行分析,通过分析,可以评估体系结构的平衡和变化,最后将AADL模型转换为针对特定操作系统的可执行语言框架代码,再与实现具体功能的功能函数相集成就可以形成符合性能关键属性的可执行代码。通过这样一种开发方式,整个系统的体系结构由模型规约,而由于大部分代码都是自动生成的,因此,代码的错误较少,节省了大量的人力物力成本。本文给出了基于Stood的飞行控制系统架构建模过程,重点介绍了自动飞行控制系统的模型,最后使用Stood的AADLInspector工具对模型的可调度性进行分析。2.AADL和飞行控制系统概述体系结构分析与建模语言AADL(ArchitectureAnalysisandDesignLanguage)是一种用来对性能关键实时嵌入式系统软硬件体系结构进行设计与分析的文本和图形语言,不仅能够描述系统功能特征,也能描述非功能特征,甚至系统的动态特征。AADL能够提供处理器、存储器、总线以及设备等的硬件平台建模,进程、线程、子程序、参数、数据以及调用序列、模式转换等的软件平台建模,以及软硬件综合建模与分析,如系统可调度性分析、端到端延迟分析、功耗分析、总线负载分析、资源分配分析以及优先级反转分析等。此外,AADL还支持对ARINC653分区、错误模型、多余度体系等的建模,这些面向领域的功能扩展非常适合航空电子系统的建模。AADL的以上优越特征使得我们选用其对飞行控制系统进行了建模,并基于模型对系统进行了分析。飞行控制系统是飞机重要的子系统,能够协助飞行员完成从起飞到着陆的各项任务,管理,监视和自动操纵飞机实现全航程的自动飞行。飞行控制集导航、制导、控制及座舱显示于一体,其主要功能可分为飞行规划,导航,性能优化,制导及信息显示。飞行控制系统流程如图2所示:图1飞行控制系统流程图3.Stood对飞行控制系统进行架构设计STOOD是一种基于构件的软件建模工具。它涵盖了软件开发的各个阶段,且符合DO-178B要求,支持已有C、Ada、C++等代码的自动产生和重用,并支持系统的早期性能分析,为获得更高的软件质量和软件生产效率提供工具支持。STOOD提供了一个AADL图形编辑器,可以导入和导出AADL文本模型,并且支持AADL2.0、UML2.0、HOOD三种模型的等价转换。它不仅具有AADL解析和产生功能,还具有AADL模型转换的功能,对于重用已有的STOOD技术,更好地发挥AADL在开发过程中的作用具有重大意义。使用Stood对飞行控制系统建模过程如下:1)对公共基础数据建模对基础数据类型和系统架构需要如飞控系统的数据类型,空速,位置,GPS数据,INS数据等数据类型建模。Stood提供Data_Model,Base_Type,Behavior_ProPerties等通用公共数据模型文件,使用时可以直接导入到工程中即可,不需要再重新设计,当然可以在已有的模型基础上添加更为详细的设计。通用数据建模示意图如图2所示:孔商二廿色|LD*tKjfedjd&臧卜卜 图2通用数据建模示意图对于飞控系统,需要对所使用的数据类型建模,如图3所示:白-(design)Data_Model1- Datajlodel白-(design)Data_Model1- DatajlodelEh(desigri)Hav_Typ突—Float— Integer—Lat_Long— Fosition.CommonPosition.GPS-Position.INS」CourseNavTyp^)FloaTEnteqer_at_LonqDosiTion.coFnmonCoursePosition.GPSDosition.INSIrrTeqer Pos计ion.TNSLQ~l~LonqPosiTion.CommonCourse图3飞控系统数据类型示意图图3对应的AADL代码部分如下:DATALat_LongENDLat_Long;DATAIMPLEMENTATIONLat_Long.othersSUBCOMPONENTSHours:DATANav_Types::Float.others;Mins:DATANav_Types::Float.others;Secs:DATANav_Types::Float.others;ENDLat_Long.others;2)对执行平台建模根据业务需求对系统建模。把飞控系统划分为界面数据输入和显示系统以及导航和自动驾驶系统。飞行员拉下手刹,飞机由手控模式转为自动飞行模式。通过AADL系统构建建立两个子系统,再通过构建的特征描述设备的输入,输出数据,事件或数据事件端口,要求的总线访问等。Stood使用分层设计方式,第一层设计如下所示:第一层设计主要是建立系统的整体,使用system构件表示,同时因为使用了基础数据包,所以需要添加数据包构件。flightfliqht_system:Fliqht_System.6enericfliqht_system:Fliqht_System.6eneric图4系统顶层设计示意图把FlightSystem分为两个子系统S_HCI和S_NAP,对应stood的system构件,子系统之间通过数据端口和事件端口通信,通过总线传输数据。其中使用事件Auto_Pilot_Toggle实现子系统的切换。图形显示如下:图5子系统设计示意图显示子系统S_HCI主要负责设置自动导航需要的数据,如空速,高度,目的地,飞机当前位置,接收自动导航子系统发送的飞机当前数据,并进行处理,在显示器上显示出来。请注意,因为在实际工作中接收数据,把接收到的数据按照一定的处理程序处理后在显示器上显示都是任务,根据AADL语言的约定,我们使用线程来代表任务。根据操作系统的操作原理,线程是由调度器安排,执行代码存储在存储器之中,所以我们在该子系统中添加了处理器和存储器构件,并设定处理器的调度属性,如RM,即速率优先调度。图6S_HCI设计示意图导航和自动航行子系统S_NAP主要模拟飞机在自动飞行模式下动作。S_NAP根据S_HCI发送的数据,根据飞机接收的传感器数据以及GPS和INS数据,来纠正飞行的航向,并根据计算的数据向制动器发送数据,制动器根据接收的数据操纵飞机,实现飞行速度,高度,航姿的改变。子系统设计图如下:.NovAndAuroPilol^eneric,Sus607:/Proc_W4:PoINSLoc:INSProc;NovK,,业,ItimeterAltimeter.女呼,FC_Proc:Fusion_And_Co<iTrol_'i冲的。\3回t>-EngineIRPMI―>MbutSensor(AitoUtlA./fiyroJTitch■_ ♦1.NovAndAuroPilol^eneric,Sus607:/Proc_W4:PoINSLoc:INSProc;NovK,,业,ItimeterAltimeter.女呼,FC_Proc:Fusion_And_Co<iTrol_'i冲的。\3回t>-EngineIRPMI―>MbutSensor(AitoUtlA./fiyroJTitch■_ ♦16vroYawAileronCoMroll€f;Acfuaior.—*j«iput«P?UcTuarorAuTo_PiloTTogglePositionOuipufAirspeeaOutixjtAlntude_OufpuiRollZOutputPitch-OutputYawOutpututo_Pilot_PositionuroPilotAltirudeiTo_PiloT_Air«peed[Airspeed_Ind[Sersor.Airspeed.>tnsor_uuTpQf►-曰evaiorConiroHer!udderController.—>InpulPirch_<ly<jw_ir>dSeixsor^3<nsorOutputActuator.6S_Proc.6yro_§enor_Process£AlTiTudeTnktuator.-tiRoll_Ind■5ensor.6y,'Jdtpitr►—iAutoPilor_ToggleNOV_FQ$itfQilNav~AlTiTude—>iNavAirspeedf/Nay-RolI•iv-pitchL>eJtobelraVAutoPilotAltffucAuto_Pilot_Pi>sitioriAuTo_Pilor_AirspeeideOulf►—图7S_NAV设计示意图3)对子任务建模以上主要设计了飞控系统的基本框架,划分了子系统,建立了各个构件之间的关联和通信关系,但是对于飞控系统最重要的子任务还没有进行分析和设计。根据飞控系统的基本原理,对飞控任务进行划分。显示处理控制分为自动驾驶输入任务和显示器控制显示任务。自动驾驶输入任务主要功能是输入飞机航迹和操纵杆状态。GPS和INS数据合并取舍控制分为读取GPS传感器数据任务T1,读取INS传感器数据任务T2和处理数据来自T1和T2数据任务T3。其中读取GPS传感器数据任务T1主要功能是从GPS传感器中获取数据,读取INS传感器数据任务T2主要功能为从INS传感器中获取数据,处理数据来自T1和T2数据任务T3主要功能为根据从INS传感器和GPS传感器中获取的数据,进行取舍分析,并把数据输出。空速管,高度表,陀螺传感器数据处理控制分为空速管,高度表,陀螺传感器数据读取和处理任务其中空速管,高度表,陀螺传感器数据读取和处理任务主要功能是读取传感器数据。航姿传感器数据处理控制划分为自动驾驶数据读取任务、数据合并任务和航向修正任务。自动驾驶数据读取任务主要功能是读取自动驾驶数据,数据合并任务主要功能是根据导航传感器的数据和陀螺,空速管,高度仪传感器的数据,合并处理,得到飞机的高度,位置,和速度数据,航向修正任务的主要功能为根据得到的高度,位置,和速度数据,向引擎和舵机传感器传输数据,影响飞机的航向。根据AADL的特性,我们用线程对应任务。设计如下:AuToPilotTo<AutoPilotPosr ,Auto_FiAuToPilotTo<AutoPilotPosr ,Auto_Fi1ot_Air5peedf4

Auto_Pilot_Altitudd/

Auto_PilotPosition;'J<

十osi=

Alth,

Airspeed'/►

Roll.'/►PositionOuf/4AltitudeOutf◄Airspeed。同1RollOuljJ4PitchOuu4YawOur/4PI^Thread;Pilot^Input^Thread.GenericfAuTo_PiloT_Toggle ::AutoPilot_PosiTion rY:Auto"PiIot_Airspeed :■AutopilotAlTiTude ;W:AutoZPilotZPosition :SD_Thread:Scraen_Displfly_Thracid.Generic—>:AutoPilot_Toqqle—►:Position—>Mltitude—►-Airspeed►.-Rollr—►;Pitch-►:YawT:Po5ition_out=4MltitudaoutMirspeecToutout- ;-PitclCoLrlr :4-yaw_out j; AutoPilotPosition;I AuTo_PiIoT_Airspeed:: Auto_PiIot_AItitud图8自动驾驶输入任务和显示器控制显示任务设计示意图GPSError:/>INS-Error,/>Position_Output|4 Roll_Output/GPSError:/>INS-Error,/>Position_Output|4 Roll_Output/4 Pitch_OutDufjV YawOutput/4 IMSDaroJ► Airspeed_Output/4 AltitudeOutputf4GPS_D(itq/►Fusion_Thread_304:Nav_Sensor_Fus|dr 4/PositionOutput:_►;INS_Po5itiorCln /: 6PS_Position_In-<—INS^Thread:INS^SensoiPosition_Output?►—■*/RollOutputi,-PiTchOutput -“宓豪r /'_Sampling_Thread.6eneric(^PS^Thread:GPS^.Sensor^SampIing^Thread.GenericY:AirspeedOutput~4fAlritudeJOutput>fGPS_bataPosition_Output;►图9GPS和INS数据合并取舍控制所含任务设计示意图;66二Proc AlTifudeIr)7;66二Proc AlTifudeIr)7►Airspeed"InJARollZIn.'/kYawririJ►Altitude: :Airspeed_T)ut/◄Yaw_OuT/4PiTch_Ouf/◄Roll_Ou1-/4Sensor_Thread:6yro_Sensor_Sampling_Thread.6eneric—►?AltitudeIn /—►:AirspeecTIn •—►fPitch_In -f:RollIn if:Vawlln -;AltitudeOut ::AirspeecTOut :fYawOut f-PitcFCOut :4:Roll_Out ;图10空速管,高度表,陀螺传感器数据读取和处理任务设计示意图n«ric尽5凶.妃1**次7-倒:Fu$i»n_Auto.Nav_Altitud<Nav_^irsp«<JTiraden«ric尽5凶.妃1**次7-倒:Fu$i»n_Auto.Nav_Altitud<Nav_^irsp«<JTiradeAufo_AlTrtudjg部PitchOeltQ_PiRN,MutoPilotAltitude?AutoFlot二Posmon:AutoRIo匚Airspeed.Data;Auto_Pilot_C)ata_Input_Threod£enericAuto-Pilot-PositAufo_Pilot_^irspeed/Gxrse^CorrecTion:Cours«_(7orrecT»on_CofnpuToTion_71ireod^eiPo$if»onf4 ,图11自动驾驶数据读取任务、数据合并任务和航向修正任务设计示意图4.对飞行控制系统模型的验证分析对于安全关键的嵌入式系统,为了支持系统的实时性和确定性,需要在系统设计阶段对实时系统进行可调度分析,并结合实际运行平台进行验证。由于本飞行管理系统中任务主要为周期性任务,该部分主要使用AADLInspector工具进行可调度分析。什么是可调度呢?在实时系统设计中,系统的正确性不仅依赖于它的结果,还依赖于产生结果的时间。一个系统能够在规定的截止时间之前完成所有的调度工作,则被称为可调度。AADLInspector是基于AADL代码进行分析,那么首先把stood的模型转换为AADL代码,再导入工具中进行分析。Stood提供把架构模型转换为AADL代码的功能。

GiesigrjEase_Typestdesign)Behavior_Properties(design)flightsystemHequiiementsjGraphicDesign|DetailedDesignjCheckersCode|DocumentationjDeployment|^■§111^1®SavetextIFrevi1!?>=-•:GiesigrjEase_Typestdesign)Behavior_Properties(design)flightsystemHequiiementsjGraphicDesign|DetailedDesignjCheckersCode|DocumentationjDeployment|^■§111^1®SavetextIFrevi1!?>=-•:tl.aadlSYSTEMElight_SysteniENDFlightSystem;SYSTEMIMFLEKENTATIONSUBCOMPONENTSFlijht_System.GenericS_HCI:SYSTEMHCI.Genetie;S_NAF:SYSTEMNav_And_AutoPilot.Generic;LAN:BUSLAN_Bus.others;CONNECTIONS一od$]ada]c|eppaadltest|checks]FPCOMFONEHT*TYPELIMPLEIilENTATION—tripragmas—cocodefileheaderEAADLCOBE—B3extract!onmessagesmreversemessages^■makefileMprologdescription.PROPERTIESEVENTPORTS_HCI.Auto_Pilor_Tojgle->S_NAP.Auto_Pilor_TojgleEVENTDATAPORTS_HCI.Auto_Pllot_Po31tlon->S_NfiP.Auro_PilotEVENTDATAFORIS_HCI.Auto_Pilot_airirude->S_NaP.Auto_PilotEVENTDATAPORTS_HCI.Auto_Pilot_Airspeed->S_NAP.Auto_PilotDATAPORTS_NAP.Position_OutpuC->S_HCI.Posit;ion_Input;DMAPORTS_NAP.Sirspeed_Output->S_HCI.Airspeed_Input;D&TAPORTSNAP.titude_Output->SHCI.Altitude_Input;DMAPORTS_NAP.Roll_Output->S_HCI.Roll_Input;DATAPORTS_NAP.Pitch_Output->S_HCI.Pitch_Input;DATAPORTS_NAP.Yaw_Output->SJiCI.Yaw_Input;Actual_Connection_Binding=>REFERENCEunnaiued_C12.LAM;StoDd:7Bcx_Position=>"366261938699"; -ENDFlightSyarem.Generic;SYSTEMHCIFEATURESAuto_Pi1ot_Toggle:OUTEVENTPORT{£1lowed_Connection_Binding=>;ftctual_Connection_Binding'=>;};Poairion_Input:INDATAPORTCcanmon(actual_Connection_Binding=>referenceLSN;};Airspeed_Input:INDATAPORTNav_Tvpes::Integer{Actual_Connection_Bindinj=>referenceLSN;]:Altitude_Input:INDATAPORTNav_Types::Integer;Roll_Input:INDATAPORTNav_Types::Integer;Pitch_Input:INDATAPORTNav_Types::Integer;Yaw_Input:INDATAPORTNav_Type3::Integer;AutoPilotPosition:OUTEVENTDATAPORTComnon;Poaltion;_Altitude;Airspeed;图12STOOD把模型生成AADL代码示意图本文中仅使用AADLInspector对代码进行可调度分析。首先对代码进行理论性可调度测试,分析结果如下:baseperiodall100.00000processorutilizationfactorwithdeaillirall1.80000processorutilizationfactorwithperiodall1.80000worstcasetaskresponsetimeroot.Froc_7'Ebaseperiodall100.00000processorutilizationfactorwithdeaillirall1.80000processorutilizationfactorwithperiodall1.80000worstcasetaskresponsetimeroot.Froc_7'EProcessorutilizationesceeded:c:annotcomputebcniXLilonresponsetimewiththistaskset.ScheduleTableStaticAnalysisSchediiLability1Mesmtest日 procesEorutilizationfactorentity reziiltroot.Fkoc_7'eWec:arinotprovethatthetaskseti三schedillablebecausetheprocessorutilisationfactor1.80000i:图13理论性可调性测试结果示意图由图13可以看出,当线程Pilot_Input_Thread的计算执行时间为30ms时,处理器的利用率为1.80000,远远大于处理器利用率可调度的极限值0.8284,该组线程不能调度,建议改进线程算法,降低执行事件。当把计算执行时间改为10ms时,处理器利用率为0.80000,线程组可调度。如图14所示。testentityresult3(§)processorutilizatioilfactori■■:-ot.Proc_792ThetasksetisschedixLablebecausethepi'ocessoi-utilizationfactoi-0.80000iseqbaseperiodall100.i:ii:ii:ii:ii:iprocessorutilizatioilfactorwithdeaidlirall0.80000processorutilizatioilfactorwithpei_iodall0.800003 warstcasetaskresponEetimeroot.Proc_792AlltaskdeaiilineEwillbemet:thetasksetieschedialable.i"esponsetimeroot.Proc_792.MCI_Proc.SIi_Ttires35.00000I'esponsetimeroot.Froc_792.HCI_Proc.PI_Ttire::10.00000图14理论性可调性测试结果示意图再进行仿真可调性测试,结果如下:

£1ight_sjrstemflightsystemFEATUREgAuto_Pilot_Toggle:OUTEVENTPosition_Input:INDATAPOF1TAirspeed_Input:INDATAPORTAltitude_Input£1ight_sjrstemflightsystemFEATUREgAuto_Pilot_Toggle:OUTEVENTPosition_Input:INDATAPOF1TAirspeed_Input:INDATAPORTAltitude_Input:INDATAFORTPORT:Nav_Tjqjes::Position.Coirunon:Nav_T],T3es::Integer:NaV-Tj^es::Integer:Ro11_Input:INDATAPORTNav_T^ies::Integer:Pitch_Input:INDATAPORTNav_Types::Integer;Yaw_Input:INDATAPORTNav_Types::Integer:Auto_Pilot_Position:OUTAuto_Pi1ot_Altitude:OUTAuto_Pi1ot_Airspeed:OUTLAN7RE如亍RE£BUSACCESSENDHCI:EVENTDATAFORTNav_TjT3es::Position.EVENTDATAPORTNav_Types::Integer;EVENTDATAPORTNav_Typss::Integer:LAN_Bus:SYSTEMIMPLEMEMTMTIONHCI.GenericSUEiCOlff'OI'IENTSProc_792:PROCESSORPowerPC.G4{Scheduling_Protoco1=>MI;Stood:iBcOosition=>,V11UU29813UU398,v;]•;MejTL_793:JffiMORYFAILGeneric{V^ord-Sise=>8bits;Stood::Boi<_Position=>"636279836379":]■:Dbv_Bus_794:BUSDevice_Bus{Stood::Boz_Position=>,v12115531411653,v;Mem_Bus_795:BUSMemory_Bus{Stood::Boz_Position=>'''626552826652'v;HCI_Proc:PROCESSHCI_Process.Generic:Screen:DEVICEScreen;CONNECTIONPORTHCI_Proc.Auto_Pilot_Toggle->Auto_Pilot_Toggle:PORTPosition_Input->HCI_Proc.Position:PORTAltitude_Input->HCI_Proc.Altitude:PORTAirspeed_Input->HCI_Proc.Airspeed;PORTRo11_Inp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论