作者 | 郑寒月 上海控安可信软件创新研究院工程师
版块 | 鉴源论坛 · 观模
01 什么是建模
对系统进行建模是一个采用表格化、图形化、公式化的方式,将系统的构成及其构成间的关系呈现给人们的一种技术方法,也就是将系统进行抽象化处理的过程。对系统的抽象可以从多个层面进行,即可以从多维度进行建模。在建模过程中,系统逐渐实现无歧义化的过程。
数据层面的建模通常在数据流的基础上进行。数据流是一组有序、有起点和终点的数据序列。数据流图(Data Flow Diagram)描述数据如何在软件功能模块之间“流动”,主要从功能之间的数据信息传递关系层面来刻画系统,可对系统功能进行层次化的组合描述。其主要描述对象为:处理数据的功能(Process),数据资源的集合(Data Store)和数据的流动(Data Flow)。
另一种常用的建模方式是使用有限状态机(Finite-state Machine)进行建模。状态机模型中包含四个基本要素,分别为现态、条件、动作和次态。现态指当前周期所处的状态。条件指当某个状态满足一定条件时,会触发一次动作,或执行一次迁移。动作执行完毕后,可以迁移到新的状态,或者保持原状态。次态指基于当前所处状态,条件满足后需要迁往的新状态。若基于状态机模型进行模拟仿真,需首先通过输入端口确定现态,执行一次动作后判断现态的所有迁移条件是否满足,若满足迁移条件则发生跳转,若不满足则仍保持现态,同时传出输出变量;若满足迁移条件则发生跳转,并执行一次动作。
下面给出一个状态机建模的实例。
在轨道交通领域,由于惯性,每次停车可能发生车轮与轨道的“打滑”,使得软件记录的车轮运行圈数和实际运行圈数不一致,累计以后容易导致错误计算。为确保安全,需要监控打滑的距离等数值,计算一个补偿数值,使得车轮实际运行圈数与计算值一致。对于如表1所示的描述进行状态机建模,可知空转补偿状态有COASTING、BRAKING、SLIDING、SKIDDING等四个状态,关注列车车轮打滑监控模块,抽取出状态和迁移条件进行状态机建模。状态机建模结果如图1所示,其中COASTING、BRAKING、SLIDING、SKIDDING为状态,箭头表示迁移,迁移条件表示在迁移箭头上,数字代表迁移条件数量。
表1 打滑补偿
图1 状态机建模结果
02 什么是形式化建模
形式化方法(Formal Method)是一种基于数学基础,经过严格的数学证明的分析技术的应用方法,常用于软件和硬件系统的描述、开发和验证过程中。形式化建模则将形式化方法应用于建模过程中,它以无歧义的形式化规格说明语言为基础,使用精确定义的形式语言进行系统功能的描述,利用一些已知特性的数学抽象来为目标软件系统的状态特征和行为特征构造模型,从而完成形式化建模过程。形式化模型应介于程序设计语言和高层需求之间,具有精确、无歧义的特点,但并不呈现过多细节。
一些经典的形式化语言,如Z语言、B语言、Event-B语言、VDM等均具有各自的形式语义,使用形式化语言遵循建模规范得到的形式化模型可以对系统进行精确描述,便于进行后续的形式化分析和验证。
03 航空发动机控制软件建模实例
因为安全攸关领域嵌入式控制软件研制具有领域专家参与度高、功能安全性要求高、规范与标准约束严格等特点,所以为符合研制要求,保证系统安全,形式化建模广泛运用于航空航天、轨道交通等安全攸关领域。
接下来将以航空发动机控制系统为例,介绍形式化建模在工程上的运用。
航空发动机控制软件是实时嵌入式软件,运行于电子控制器平台(EEC)中实现发动机的运行控制,主要功能是按照飞机的指令实现发动机的启动、停车、推力控制、限制保护、作动部件控制、故障诊断及处理等。
通过系统调研,可以提取出航空发动机控制系统的如下特征:
(1)控制软件输入为各传感器变量。
(2)控制软件的输出为经过复杂算法计算之后的数值结果,通过计算的方式实现控制行为。
(3)控制软件的基本时间单元为周期。因为实时性的要求,控制算法需要在给定周期内完成相应的算法计算。整个系统中有两个周期概念,按照执行功能的实时性分为了大闭环周期和小闭环周期,大闭环的周期值是小闭环周期的固定倍数。
(4)控制软件的核心是控制规律,控制软件在特定的状态下有其固有的控制规律。
(5)控制软件的主导因素是其当前所处的状态。系统在整个生命周期内在不同的状态下执行不同的控制算法,具体调用的控制算法种类及其执行顺序由当前时刻其所处的状态决定。特别地,在每个周期的计算任务完成后,系统会检测是否满足状态迁移条件。当且仅当满足迁移条件时,系统的状态会发生迁移。
因此,在建模过程中可以将航空发动机控制软件视为一个以周期为基本时间单元驱动的具有多个不同发动机状态的控制系统。在发动机处于每个特定状态时,它可以根据设定的时间周期,完成模式内具体的采样、计算任务和控制行为,并判断给定的条件,完成可能的状态切换或继续处于当前状态的判定。
由于传统的形式化语言学习成本高、难以用于描述上述航空发动机控制系统特征等原因,本例采用了航空领域适用的具有以计算任务为核心、以模式为基础、以周期为基本时间单元、按重要程度划分层级等特征的形式化建模语言AEDL进行模型构建。
遵循AEDL语义,使用AEDL语法构建的航空发动机控制系统模型具有模式流、计算任务、数据字典等三个部分,分别对系统状态转换、系统计算执行和系统变量进行了精确描述。
通过状态转换部分模型,可以对航空发动机的行为模式进行抽象,如图2所示。
图2 航空发动机控制系统状态转换
顶层的状态代表航空发动机控制系统可能处于的状态,箭头的方向从现态指向可进行迁移的次态,迁移条件对迁移是否合法进行了限制。状态转换图可以描述航空发动机控制系统的整体行为,通过相应的状态转换图进行研究,可以理解系统行为,分析出系统的部分特征。如:
(1)当前航空发动机系统具有10个合法模式;
(2)模式转换需满足相应的条件;
(3)所有的模式均有可以到达的途径;
(4)模式间的迁移条件可能由多个表达式组合而成;
......
具有经验的工程师可以根据状态模型快速判断出系统状态是否存在问题。比如,如图3所示的初始模式转换,飞行控制人员可能根据其专业知识,认定“初始模式”不应该以当前条件直接转换到“慢车以上模式”。任何一个模式,都不应该同时满足向两个及以上模式转换的条件,否则意味着系统可能会出现不确定性,发生模式的随意转换。
图3 初始模式转换
该形式化建模案例体现了航空发动机控制系统周期控制、具有模式状态迁移、以计算任务为主等行为特征。基于形式化模型的分析验证,我们将在后续文章中作更为深入和系统化的讨论。
参考文献:
[1] EN50128、DO-333等工业标准.
[2] 王政, 嵌入式周期控制系统的建模与分析, 2012, 华东师范大学.
[3] Spivey, J.M., The Z notation: a reference manual. International, 1990. 15(2-3): p. 253-255.
[4] 蔡喁, 形式化方法在民机机载软件中的应用及适航考虑.
[5] Abrial, J.R., Abrial, J.-R.: Modeling in Event-B: System and Software Engineering. 2010: DBLP. 428-430.
[6] Miao, W. and S. Liu, A Formal Engineering Framework for Service-Based Software Modeling. IEEE Transactions on Services Computing, 2013. 6(4): p. 536-550.