知识|基于混合模式的多余度飞控全数字仿真系统研究

*余度(Redundancy):一种确保安全的设计手段,使得出现两个及以上故障时,才会引起既定不希望发生的工作状态。

飞行控制软件主要完成飞行传感器数据处理、飞行姿态控制和余度管理任务,对保证飞机安全性和可靠性起着关键作用,但是现实中与飞行控制软件相关的研发测试过程依旧举步维艰。其主要原因是硬件设备研发成本高且周期长,并且软件程序研发和测试过程严重依赖于实体硬件,同时也缺乏有效的调试手段,无法快速、高效、准确地定位问题,导致软件研发陷入冗长的周期循环中。

当前,国内对飞控系统的测试方法大部分还是采用实物测试、半实物仿真或者虚实结合的方式,这些开发手段虽然能在一定程度上缓和硬件资源受限的窘境,但依旧受限于实体设备,无法进一步提升软件研发和测试效率。因此,本文尝试通过搭建全数字仿真平台来摆脱实体硬件带来的困境。

在全数字仿真平台中,处理器的仿真是重中之重。除了相关寄存器和逻辑操作的仿真外,处理器仿真性能也是一大指标,尤其是在飞控领域,对仿真硬件的实时性控制和性能都有一定的要求。如果处理器仿真性能无法接近真实处理器的效率,那么全数字仿真平台也无法在实际应用中体现价值。而影响处理器仿真性能的最主要的因素则是指令集仿真方式。以往对于指令集仿真一般有2种方式,一种是采用解释执行,将处理器对应的指令集中的每条指令用函数解释对应的功能,执行一条指令就解释一条,该方式能保证指令翻译的正确性,但通常运行速率较慢,面对高性能处理器无法满足仿真性能要求;另一种则是动态二进制翻译,即将机器代码通过转换成中间码后再转换成本地X86的代码,该方式的优点是代码在翻译后执行速度较快,缺点是指令在初次翻译时会有额外的时间开销,效率较低,这往往会影响整体仿真性能。

本文基于SkyEye平台搭建了多余度飞控仿真系统,重点对处理器指令集翻译进行了改良,采用混合模式的方式,即结合解释执行动态翻译2种方式,结合两者的优点,从整体上提升仿真系统的仿真性能。经过测试,该方案能在全数字仿真平台下运行真实硬件二进制程序,实时性和处理器性能与真实硬件相差无几,满足了实际软件开发、调试和测试的性能需求。

01.多余度飞控仿真系统架构

多余度飞控仿真系统架构如图1所示,主要分为四余度飞控计算机(分别以A、B、C、D表示)和数据上位机

每个控制系统以DSP F28335为核心,通过交叉通道数据链路(Cross Channel Data Link,CCDL)和RS422总线来实现余度计算机之间数据通信的功能。为了保证计算节拍一致,用GPIO接口来控制余度计算机时序同步。同时,为了能直观地检查余度计算机状态信息,通过1394总线将各自余度计算机数据发送给数据上位机显示。

▲图1 多余度飞控全数字仿真系统架构图

02.虚拟目标机建模

2.1 处理器建模

处理器模型在工作时主要是完成取指、解码和执行的过程,然后通过内存访问相关地址或者操作各类寄存器以完成程序命令。对于处理器的建模,需要根据真实硬件的结构来分别模拟取指单元、指令分配单元、指令译码单元、通用寄存器、控制寄存器和中断控制逻辑部分。

2.1.1 指令集翻译

对于指令集翻译,采用混合模式的方式,即结合解释执行和动态二进制翻译的方式,可以在2种执行方法之间进行选择,同时最小化每种方法的缺点。

图2给出了混合模式的基本流程。在混合解释执行和动态二进制翻译的组合中,如果单条指令未被动态翻译过,则先采用解释执行来翻译,这可以使程序快速启动和执行,从而最大限度地减少不必要的延迟。在程序运行时,当单个指令解释执行的次数达到动态翻译命令中所设置的阈值时,往往这时候便意味着处理器要大量重复执行某条指令,而处理器便会由解释执行模式切换到动态翻译模式。通过动态二进制翻译介入,将原本需要解释执行的指令动态转换为目标平台的机器语言指令并予以执行。

▲图2 混合模式执行流程

2.1.2 处理器实时性

在虚拟仿真平台中,保证处理器的实时性是关键因素之一。为了保证处理器与外设模型时序统一,仿真平台采用指令周期作为整个系统统一的时钟周期。通过统计处理器模型执行的指令数,结合处理器的主频即可得到仿真时间。

该时间区别于真实的物理时间,在处理器仿真性能与真实性能一致的状态下,真实时间的1s对应仿真时间的1s。如果处理器仿真性能比真实硬件慢1倍,可理解为真实的2s对应仿真时间的1s。而整个系统运行中有关的定时中断、时间片轮转等涉及时钟的概念都是基于仿真时间而言的,在仿真时间中,处理器和其他仿真设备均处于同一时序中,因此能够满足系统仿真的实时性要求。

2.2 外设建模

在真实DSP芯片中存在各种各样的外设,例如GPIO、Timer、DMA等。一般情况下,只有驱动程序负责与片内外设进行交互,上层应用只能看到一个抽象的接口,驱动程序负责完成与真实硬件的交互。而在仿真领域,只需针对外设的逻辑功能进行建模,无须对电气电路进行模拟。

另外,关于1394总线与上位机的通信,则使用Socket通信方式来模拟。除了实现基本设备寄存器功能和数据收发处理外,还要借助UDP/TCP协议与上位机软件进行数据通信。

2.3 时间同步

在真实硬件环境下,多板同步依赖于时序信号,但是在数字环境下无法模拟电气信号。为此设计了一套CPU同步机制,基本原理如图3所示。

▲图3 CPU时序同步原理图

设仿真同步时间步长为5ms,CPU0经过虚拟时间的5ms,此时CPU1只运行了虚拟时间的3ms,仿真系统调度器就让CPU0陷入空闲任务等待中直到CPU1运行完剩余的2ms,从而保证2个CPU都经历了虚拟时间的5ms。在第1个仿真步长同步后,让CPU0、CPU1继续运行。同理,假如CPU1运行了虚拟的5ms时间后CPU0只运行了虚拟时间的3ms,则CPU1继续等待直到CPU0运行完剩余的2ms。

03.故障注入

SkyEye模拟的故障注入是针对仿真设备实现的注入故障功能,可以通过改变设备或寄存器中某一位或几位的值来实现注入故障,模拟硬件设备因为某种因素(如收到高电平或者低电平触发)导致的意外故障,以此来检测软件的健壮性。

在多余度飞控仿真平台中,也可以测试模拟余度管理功能。余度管理是指保证余度系统正确协调地工作、监控系统运行并完成故障检测和处理工作的功能的总称。在SkyEye界面中可通过控制单个飞控计算机的暂停、停止和运行来模拟设备的故障损坏、设备下线等异常情况,同时测试验证其余飞控计算机的实际运行表现是否符合预期,其原理图如图4所示。

▲图4 飞控系统故障注入原理图

04.测试验证

4.1 功能性验证

在完成飞控仿真平台后,便可以在该平台上测试和调试飞控程序。测试的主要内容包括飞控系统的驱动控制功能验证、多余度管理功能验证、上位机通信功能验证。

其中,驱动控制功能验证是通过串口输出信息和设备寄存器状态来判断是否符合预期。而多余度管理功能则是搭建逆向测试用例,在保证多板时序同步的情况下,通过故障注入接口来测试验证在飞控计算机异常的情况下能否实现余度管理功能。上位机通信功能用于判断能否接收到1394数据包,并成功解析显示。

搭建集成测试用例,经过大量测试,上述功能均得到验证,仿真效果与真实硬件平台一致。

4.2 处理器性能验证

此仿真系统中使用的F28335处理器的主频设置为150MHz,官方性能参数为150MIPS(Million Instructions Per Second)。经过测试,仿真处理器实际在运行过程中平均性能能够达到150MIPS甚至更高,接近真实硬件情况。

另外,统计解释执行、动态翻译和混合模式3种模式的处理器性能,结果如图5所示。可以发现,解释执行的运行效率稳定但速率最低;动态翻译在前期翻译耗费了较长的时间,但在翻译完成后运行速度较快;而混合模式则能在动态翻译的基础上快速启动,并且程序稳定后运行性能与动态翻译速率相似,符合预期效果,满足了实际使用需求。

▲图5 F28335处理器指令集翻译模式性能对比

4.3 实时性验证

为了校验仿真系统的实时性,程序内部设置定时中断任务,通过SkyEye平台提供的Python脚本接口,统计定时任务开始到任务结束中间仿真时间的消耗,多次采样避免个别异常。定时任务触发时间对比如表1所示,通过对比可知,混合模式下程序定时任务仿真时间与真实时间基本相差无几,验证了周期任务的实时性。

▲表1 定时任务触发时间对比

05.结束语

本案例所设计的多余度飞控全数字仿真系统结合了解释执行和动态翻译的优点,能在保证仿真实时性的同时,提高处理器运行效率,满足日常软件研发的基本要求。该仿真系统在实际应用中可大幅缩短多余度飞控嵌入式软件研发所需时间,同时可保证软件研发的质量。

天目全数字实时仿真软件SkyEye是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。

基于SkyEye搭建的嵌入式系统虚拟化运行环境,工程师可不受物理硬件限制,随时访问目标系统,快速搭建虚拟硬件模型并提前进行开发、测试和验证工作,实现高效率、高质量的软件交付。SkyEye支持主流的嵌入式硬件平台,可运行国内外主流的操作系统,对国产生态的支持尤为出色。通过利用基于LLVM的动态二进制翻译技术,SkyEye可使虚拟处理器在典型的桌面计算机上运行速度达到2000MIPS以上。

SkyEye有效解决了嵌入式软件研发时过分依赖硬件资源的问题,填补了国内嵌入式虚拟仿真领域的空白,为嵌入式软件研发模式带来了革新式的变化。

▲SkyEye界面图:基于可视化图形的硬件建模

参考文献

[1]张琦,康烁,刘永毅,赵立蒙,曾子强.(2023).基于混合模式的多余度飞控全数字仿真系统研究.(eds.)2023年中国航空工业技术装备工程协会年会论文集(pp.110-113).航空工业沈阳飞机设计研究所;浙江迪捷软件科技有限公司;doi:10.26914/c.cnkihy.2023.047223.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/247411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetCode算法—2.两数相加

1.给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0…

干货:企业如何讲好品牌故事

品牌故事讲得好,不仅能够体现品牌特色还能向消费者传递品牌精神的重要工具,优秀的品牌故事能够促进产品销量,为品牌带来曝光率,今天媒介盒子就来和大家聊聊:如何讲好品牌故事。 一、 品类历史和故事 品牌虽然是新品牌…

基于单片机智能家具无线遥控控制系统设计

**单片机设计介绍,基于单片机智能家具无线遥控控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的智能家具无线遥控控制系统设计可以实现对家具(如灯具、窗帘、空调等)的…

【Python】解读a+=b 和 a=a+b是否一样?看完恍然大悟!

文章目录 前言一、可变对象和不可变对象总结 前言 在Python中,对于可变和不可变对象的行为差异是一个重要概念,特别是在涉及到和操作时。理解这一点对于编写高效且无误的代码至关重要。 一、可变对象和不可变对象 首先,让我们谈谈可变和不可…

JVM的内存分区以及垃圾收集

1.JVM的内存分区 1.1方法区 方法区(永久代)主要用来存储已在虚拟机加载的类的信息、常量、静态变量以及即时编译器编译后的代码信息。该区域是被线程共享的。 1.2虚拟机栈 虚拟机栈也就是我们平时说的栈内存,它是为java方法服务的。每个方法在执行的…

分析若依的文件上传处理逻辑

分析若依的文件上传处理逻辑 注:已经从若依框架完成拆分,此处单独分析一下人家精彩的封装,也来理解一下怎么做一个通用的上传接口!如有分析的,理解的不透彻的地方,大家多多包含,欢迎批评指正&am…

【C语言必学知识点五】指针

指针 导言一、指针与指针变量二、指针变量的创建和指针类型三、指针类型的意义3.1 指针 /- 整数3.2 指针解引用 四、野指针4.1 定义4.2 野指针的成因4.3 指针未初始化4.4 指针越界访问4.5 指针指向的空间被释放4.6 如何规避野指针 五、指针运算5.1指针-整数5.2 指针-指针5.2.1 …

B037-Mybatis基础

目录 为什么需要Mybatis?mybatis简介入门案例其余见代码查询流程增删改流程 - 变动数据要加事务去持久化抽取公共类 mapper接口开发规则概述代码 mapper.xml引入本地约束文件别名日志管理作用log4j的使用规范 井大括号与dollar大括号的区别 框架:半成品&…

Linux篇:信号

一、信号的概念: ①进程必须识别能够处理信号,信号没有产生,也要具备处理信号的能力---信号的处理能力属于进程内置功能的一部分 ②进程即便是没有收到信号,也能知道哪些信号该怎么处理。 ③当进程真的受到了一个具体的信号的时候…

Word公式居中+序号右对齐

Word公式居中序号右对齐 # 号制表位法表格法Mathtype法 # 号 制表位法 表格法 Mathtype法 参考1 参考2

力扣每日一题:2132. 用邮票贴满网格图(2023-12-14)

力扣每日一题 题目:2132. 用邮票贴满网格图 日期:2023-12-14 用时:38 m 32 s 思路:使用前缀和+差分,只是往常是一维,现在变二维了,原理差不多 时间:22ms 内存&#xff1…

certum ev ssl证书1180元一年,360浏览器显示公司名

Certum旗下的EV SSL证书是审核最严的数字证书,不仅对网站传输数据进行加密,还可以对网站身份进行验证,除此之外,它独有的绿色地址栏提升了网站的真实性,增强了客户对网站的信任感。今天就随SSL盾小编了解Certum旗下的E…

【Spring Boot】视图渲染技术之Freemarker

一、引言 1、什么是Freemarker FreeMarker是一款模板引擎,基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款…

LAMP平台部署及应用

1、安装PHP软件包 1.1、准备工作 检查软件是否安装,避免冲突 [rootyang ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps 错误:未安装软件包 php 错误:未安装软件包 php-cli 错误:未安装软件包 php-ldap 错误…

使用 Python 使用贝叶斯神经网络从理论到实践

一、说明 在本文中,我们了解了如何构建一个机器学习模型,该模型结合了神经网络的强大功能,并且仍然保持概率方法进行预测。为了做到这一点,我们可以构建所谓的贝叶斯神经网络。 这个想法不是优化神经网络的损失&#xff0…

2. PyTorch——Tensor和Numpy

2.1Tensor和Numpy Tensor和Numpy数组之间具有很高的相似性,彼此之间的互操作也非常简单高效。需要注意的是,Numpy和Tensor共享内存。由于Numpy历史悠久,支持丰富的操作,所以当遇到Tensor不支持的操作时,可先转成Numpy…

获取和移除cookie的方法

下载npm的cookie插件, 在utils.js文件中引入插件: 封装原始的Cookies.get()方法: 在xxxx.vue文件中引入方法: 使用getCookie方法获取cookie: 封装 移除cookie: export const removeCookie name>{ const options { path: /, domain: xxx.com }; Cookies.remove(name, opti…

18 5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6:不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…

玩期货,千万要注意不同软件的设置啊

参加某公司的期货交易模拟选拔,用的是博易大师,结果这个软件的止损线巨坑,当天下午设置的止损线,在收盘之后软件关闭的情况下就自动作废了,到了晚上夜盘如果价格超相反方向走了,那可能导致巨亏。 幸亏是模拟…

nginx的location与rewrite

目录 一.location 二.rewrite rewrite跳转实现: 语法格式:rewrite [flag]; flag标记说明: 三.基于域名跳转 四.基于ip跳转 五.基于旧域名跳转到新域名后面加目录 六.基于参数匹配的跳转 可以同过全局变量来匹配: 基于目…