付修锋 贾张涛 张霄霄 杨铁湃 安恒 李雅斯 孔祥炳 金玉川
关键词 数字孪生 复杂系统 多机协同仿真 全数字仿真
1引言
随着硬件处理能力的提高,复杂嵌入式系统中软件的规模大幅增长,航空航天系统已逐渐演变为软件密集型系统,各类嵌入式软件直接影响嵌入式系统的效能发挥。而当前嵌入式软件的质量不容乐观,尤其是在系统级、分系统级测试验证方面缺乏行之有效的测试手段,需要采用多层级、多粒度的测试验证方法保证软件测试的充分性。
近年来,基于数字孪生的测试验证方法得到快速发展和应用,国内多家单位已通过构建数字孪生环境搭建复杂系统的系统级测试环境,实现复杂系统的充分测试验证,但基于硬件的数字孪生环境构建存在成本高、难度大、测试充分性难以度量等问题。国内多个厂商通过指令集虚拟化与外设虚拟化技术构建了配置项级虚拟化验证环境,保障了多个型号测试任务的完成,并支持开展《载人航天工程软件工程化技术标准CMS?RW?04》要求的目标码测试,但存在配置项级虚拟化测试验证环境难以闭环、外围激励模拟复杂、测试环境充分性难以保证等问题。基于此,为了满足型号任务高安全、高可靠系统测试验证的需求,本文立足于处理器虚拟化仿真、分布式总线、基于FMI 的联合仿真等技术方案,提出基于全数字仿真的复杂系统数字孪生环境构建方案,以进一步提高复杂系统的测试验证水平,保障复杂系统的可靠性和安全性[1~4] 。
2相关技术
2.1全数字仿真技术
处理器虚拟化技术是全数字仿真最重要的支撑技术,全数字仿真允许特定指令集上的软件运行在另一类异构的指令集上。在指令集层次上实现虚拟化,实际上是将某个硬件平台上的二进制代码转换为另一个硬件平台上的二进制代码,从而实现不同指令集间的兼容,该技术也被称为二进制翻译。虚拟化技术实现主要有两种方式,即解释执行、动态二进制翻译。
(1)解释执行技术方案
解释器对源二进制代码逐条进行分析,根据译码结果即指令类型,分解相应的解释例程执行。解释例程在一个由软件维护的源体系结构(包括各种结构寄存器、内存状态等)上用等价的一条或多条目标指令来模拟源指令的执行,获得和源指令同样的执行效果。解释器工作过程主要包括“取指令→分析指令→完成指令所需的操作→修改处理器状态”等步骤,如此循环,如图1 所示。
(2)动态二进制翻译技术方案
动态二进制翻译(DBT,Dynamic Binary Translate)解决了代码发现与代码定位问题,动态翻译对程序运行时得到的片段(目标代码块)进行翻译,丰富的运行信息克服了静态翻译的缺点,该技术称为即时编译(JIT,Just in time)技术。
2.2分布式仿真总线
2.2.1DDS规范
DDS是对象管理组织(OMG)制定的实现订阅/发布通信模式、满足实时性要求的软件设计标准和规范,该规范对分布式实时系统中的数据发布、传递和接收的接口与行为进行了标准化。
2.2.2DDS结构模型
DDS 规范描述了2 个层次的接口,即以数据为中心的发布/ 订阅层(DCPS) 和数据本地重构层(DL?RL),其结构如图2 所示。DCPS 层是DDS 的基础层,为应用软件提供了数据发布和订阅的功能,使发布者能够识别数据对象并发布数据; DL?RL 层是建立在DCPS 层之上的一个可选层,能够将服务简单地集成到应用层,在数据更新后自动重组数据,并通知订阅者及时更新[5~8] 。
DDS 将分布式网络中传输的数据定义为主题,将数据的产生和接收对象分别定义为发布者和订阅者,从而构成数据的发布/ 订阅传输模型。各个节点在逻辑上无主从关系,点与点之间都是对等关系,通信方式可以是点对點、点对多及多对多等。
2.2.3QoS保障
实时信息交换平台设计通过提供QoS 策略,为各种业务提供更深程度的控制及更完善的支持。实时信息交换平台将各种传输控制集中体现在QoS 参数上,即不同的传输需求无须调用不同的接口,仅须修改接口中的QoS 参数,使得面向应用软件的接口简单化、标准化。
3基于全数字仿真的复杂系统数字孪生环境
3.1整体技术方案
基于全数字仿真系统,构建高精度虚拟化可配置的仿真环境,实现对复杂系统硬件环境的替代;由于复杂系统包通常包含多个处理任务,本文重点解决复杂系统的仿真环境与硬件环境的时钟同步问题,保证虚拟化仿真环境与硬件时序的一致性。针对复杂系统虚拟化仿真环境资源开销大、分布式协同仿真消息通信可靠性差的问题,本文提出基于DDS 的分布式协同仿真技术方案,保障复杂系统分布式仿真及时钟同步及消息通信的可靠性。针对现有测试环境无法闭环的问题,本文提出基于FMI 集成框架的多源异构模型接入集成方案,实现Matlab 和C/ C++等模型的转换和接入,构建闭环仿真环境。实现基于全数字仿真环境的复杂系统数字孪生环境的构建。其系统结构图如图3 所示。
为进一步阐述基于全数字仿真的复杂系统数字孪生环境构建方案,本文主要从全数字仿真时钟同步、高精度分布式协同仿真、多源模型仿真接入与控制等三个方面对该方案进行详细阐述。
3.2基于DDS的协同仿真
针对复杂系统虚拟化仿真环境资源开销大、分布式协同仿真消息通信可靠性差的问题,本文提出基于DDS 的分布式协同仿真技术方案,保障复杂系统分布式仿真的时钟同步和消息通信的可靠性。通过同时运行多个单处理器嵌入式软件测试平台,形成复杂系统仿真测试环境的构建,主要解决多平台之间的实时数据交换和多个处理器之间时间同步的问题。
3.2.1多平台之间的实时数据交换
多个嵌入式软件测试平台是指多个单处理嵌入式软件测试平台同时运行,且在运行中,一个测试平台的输出数据可能是另一个测试平台的输入数据。因此,解决多个测试平台之间的实时数据交换问题,是复杂系统能否成功运行的关键问题之一。
复杂系统间的数据交换技术是基于DDS 发布/ 订阅传输模型实现的。在复杂系统数字孪生环境中,每个节点都有输出数据和输入数据信息。按照DDS 规范,把节点的输出数据称为发布,把节点的输入数据称为订阅。在构建复杂系统数字孪生环境时,将一个节点的发布数据和另一个节点中属于相同主题的订阅数据捆绑起来,即可在节点需要该数据的时候快速获取,如图4 所示。
3.2.2多个处理器之间时间同步
复杂系统软件有着自己的运行时序,因此每个单处理器嵌入式软件测试平台有着自己的运行时序。而复杂系统数字孪生环境的多个处理器同时运行时,每个处理器之间的时序同步问题也是多个嵌入式测试平台能否正确运行的关键问题之一。
为了解决上述问题,采用分布式计算方式,将全数字平台部署在用网络连接的多台计算机。为保证网络通信的高可靠性,采用DDS 网络中间件作为网络传输的底层构件。在此基础上设计了基于通道的系统模型,如图5 所示。
该模型由通道和节点构成,代表了由多个配置项软件组成的复杂系统。每一个单处理器软件测试平台代表通道上的一个节点,所有需要进行信息交换的节点都挂接在同一个通道上。节点与节点之间通过元数据(MetaData)和心跳信号(BeatData) 进行通信。节点可以全部部署在网络中的一个物理节点上,也可以部署在网络中的任意物理节点上。对每个节点的描述信息分为基本信息、输出数据、输入数据、输出心跳名称和输入心跳名称。其中,基本信息包含节点ID、通道号及节点类型等信息,这些基本信息描述了节点在平台中的基本特征; 发布信息描述了节点输出数据的相关信息; 订阅数据描述了节点输入数据的相关信息; 输入心跳和输出心跳都描述了节点的运行时钟周期。
复杂系统数字孪生环境运行需要解决的另一个问题是多个处理器间时间同步的问题。嵌入式软件是按照一定的时序去运行,因此复杂系统数字孪生环境中的每一个节点也需要统一步调去进行正常运行。采用引入一个同步节点,专门去同步不同节点的运行周期。解决方案如图6 所示,具体实现方法如下:(1)当同一通道的所有节点已经处于就绪状态后,同步节点发送同步信号,当同步节点收到所有其他节点的同步好信号后,当前平台初始化工作结束;(2)同步节点中设置同步周期,假设为1ms,平台中任意一个节点先启动运行,运行1ms 后,把自己的输出心跳输出给同步节点,然后该节点停止运行,等待同步节点下一次心跳数据。其他节点类似,当同步节点收到通道中所有节点的心跳数据后,平台该周期运行完成; (3)平台中所有节点运行完一个周期(1ms)后,同步节点输出心跳数据,通知平台中所有节点继续下一周期的运行。如此循环,直至整个嵌入式软件运行结束。
3.3多源模型仿真接入与控制
本文提出基于FMI 集成框架的多源异构模型接入集成方案,可实现Matlab 和C/ C++等模型的转换和接入,构建闭环仿真环境。复杂系统的系统设计与验证环节往往涉及多专业协同。典型的飞行仿真试验涵盖空气动力学/ 运动学、执行机构、动力组件、惯性导航组件、控制算法等多专业要素。复杂系统的建模平台可归纳为C/ C++,Matlab/ Simulink,SimulationX,AMESim等。
3.3.1基于FMI 标准的模型解析
当FMU 模型导入集成仿真软件时,首先解析模型的XML 描述文件,解析流程如图7 所示,读取模型的属性信息和模型的输入输出信息,并将每个FMU的输入和输出关联起来。配置好模型参数后,仿真软件会调用执行文件来仿真。仿真进行时,仿真软件对模型文件执行调度,采用分组方式进行单线程顺序或多线程仿真。
3.3.2异构模型系统集成方案
模型转换工具使用FMI 标准将不同来源的模型封装为FMU, 实现接口规范化。系统集成基于FMI1.0/2.0 协议实现了相應的接口功能,能够将多源异构模型封装成的FMU,将外部软件系统、硬件系统、脚本封装为伪FMU 并提供FMI 标准接口,可按照标准加载FMI 格式模型,与FMU 模型一同组成模型库并调度模块进行仿真,方案如图8 所示。
执行仿真试验任务时,复杂系统数字孪生环境的仿真引擎可通过TCP 网络协议接收控制执行,执行命令处理线程,将不同的FMU 或伪FMU 分配到不同的线程执行操作,从而实现集成模型的被外部平台调度的基本模式,系统仿真调度流程如图9 所示。
3.4全数字仿真时钟同步
复杂嵌入式系统的复杂程度日益增加,一个系统内往往包含多个分系统协同工作,不同分系统通过定时器实现不同配置项之间的同步。虚拟化仿真运行条件下,单配置项的运行速率受指令集架构、指令集复杂程度、指令集实现方案、外设复杂程度、外设接入方式的影响。复杂系统涉及不同的架构处理,不同配置项之间,简单的通过虚拟化仿真很难实现系统级协同仿真,需要提供一种可配置的协同仿真接口实现系统级协同仿真,实现对复杂系统的测试验证。
3.4.1定时补偿技术方案
嵌入式系统的非周期中断需要特定的触发条件,在满足条件下触发中断即可,不是本文的重点,本文通过运行时补偿技术实现对周期中断时序的逐步求精,实现系统级协同仿真[9] 。运行时补偿技术主要通过控制虚拟化处理器运行的执行过程,系统启动后,通过系统内各个处理器的特性和参数,计算出定时补偿的初始值;定时校准模块负责记录中断触发时刻并反馈给多机协同控制模块,多级协同控制模块根据中断触发时刻的误差计算定时补偿的修正因子,并对定时补偿参数进行动态修正,逐步求精,实现不同配置项之间的协同。为了降低多机协同仿真开销对整个系统的影响,要尽可能提高一个补偿周期内运行指令条数。基于定时补偿技术的多级协同仿真技术方案及调整因子计算过程如图10 所示。
多机协同控制是多级协同仿真的控制核心,其运行过程如下:(1)系统启动,多机协同控制模块获取系统内所有处理器(CPU)的初始状态;(2)多机协同控制模块置处理器定时补偿初始值;(3)不同处理器运行速率不同,根据运行状态判定是否需要定时补偿;(4)向多机协同控制模块发送定时校准信息,多机协同控制模块根据校准信息调整处理器定时补偿。
3.4.2定时补偿的修正因子求解算法
不同架构处理器虚拟化仿真速率不同,多级协同仿真算法主要通过修正定时补偿参数[10] ,将整个系统运行等比放慢(加快),实现系统级协同仿真。
4数字孪生环境时钟同步结果验证
4.1多机协同仿真试验验证
本文以某系统的控制分系统作为试验验证的应用场景,该分系统包含三个配置项,控制系统处理器为DSP C6713,气体控制模块处理器为DSP 2812,电源管理模块处理器为C51,不同配置项通过两路CAN总线进行通信,外部仿真数据通过Matlab 仿真模型进行接入。其系统结构图如图11 所示。
基于全数字仿真的复杂系统虚拟化仿真环境构建方法,构建该分系统的虚拟化协同仿真环境E1;基于传统全数字仿真技术方案,没有采用DDS 和时钟同步方案,外设数据输入采用文本方式,搭建虚拟化仿真环境,记为E2。
本方案通过FMI 构建闭环仿真环境,降低系统构建的成本,提高仿真系统构建效率,并提高外设仿真的精度;通过DDS 和全数字仿真时钟同步两个方面保证复杂系统时序仿真的精度和不同分系统仿真的一致性。由于引入DDS 和全数字仿真时钟技术,对全数字仿真系统的仿真效率有一定影响。分别从分系统仿真精度、仿真效率两个方面进行对比分析,验证方案的合理性,并记录分系统修正因子运行变化,进一步验证本方案的可行性。
4.1.1仿真精度、仿真效率对比分析
表1 中,E1 TKs 为环境E1 对应采样时刻仿真时钟周期数除以硬件环境时钟周期数;E2 TKs 为环境E2 对应时刻仿真时钟周期数除以硬件环境时钟周期数。E1_Vmips 为环境E1 对应采样时刻仿真效率,单位为MIPS;E2_Vmips 为环境E3 对应采样时刻仿真效率,单位为MIPS。
试验表明,本方案可提升复杂系统仿真的精度,平均精度提升3.99%,仿真精度进一步接近硬件执行;仿真效率略有下降,下降0.96%。
4.1.2修正因子运行变化记录
验证系统三个配置项周期中断的最大公约数为INT_GCD = 0.5ms,作为定时补偿的初始值,控制每个虚拟内核的指令运行情况,根据系统运行情况,统计出修正因子的数值变化,如图12 所示。
图12 中,横轴表示调整因子的调整次数,调整周期为0.5ms,纵轴表示调整因子的数值;多次运行该虚拟化协同仿真系统(35 次),记录调整因子的变化情况,对每个调整周期的修正因子累加求平均值,修正因子具体数值如表1 所列。调整十次之后,中断的精度误差小于千分之二,随着系统运行,系统会对修正因子进一步求精,实现复杂系统的协同仿真。
5结论
本文针对当前航空航天等高安全、高可靠领域嵌入式软件的测试验证严重依赖专用硬件环境、测试充分性难以保证等问题,立足于处理器虚拟化仿真、分布式总线、基于FMI 的联合仿真等技术方案,提出基于全数字仿真的复杂系统数字孪生环境构建方案,解决复杂系统时钟同步、复杂系统分布式仿真、分布式仿真通信保障、基于FMI 的多源异构模型接入等问题,实现复杂系统数字孪生环境的构建。同时,本文对数字孪生环境的时序一致性进行了验证,结果表明本方法可以提升复杂系统仿真的精度,系统能够正确运行,中断、时序无错误;整个系统运行过程中与硬件数据同步、一致、无差错。该数字孪生环境在空间站某艙段分系统的测试中得到实际应用。