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

news2024/11/17 14:24:18

*余度(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.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GroupMixFormer:基于Group-Mix注意力的视觉Transformer

文章目录 摘要1、简介2、相关工作2.1、视觉转换器2.2、全面的自注意力建模 3、组混合注意力和GroupMixFormer3.1. 动机:从个体到群体3.2. GMA: 混合组以获得更好的注意力3.3. 架构配置 4、实验4.1、实现细节4.2. 与最先进模型的比较4.3. 消融实验 5、结论 摘要 htt…

[论文笔记] chatgpt系列 SparseMOE—GPT4的MOE结构

SparseMOE: 稀疏激活的MOE Swtich MOE,所有token要在K个专家网络中,选择一个专家网络。 显存增加。 Experts Choice:路由MOE:​​​​​​​ 由专家选择token。这样不同的专家都选择到某个token,也可以不选择该token。 由于FFN层的时间复杂度和attention层不同,FFN层的时…

[Vulnhub靶机] DC-1

[Vulnhub靶机] DC-1靶机渗透思路及方法(个人分享) 靶机下载地址: https://download.vulnhub.com/dc/DC-1.zip 靶机地址:192.168.67.25 攻击机地址:192.168.67.3 一、信息收集 1.使用 arp-scan 命令扫描网段内存活的…

代码随想录刷题题Day14

刷题的第十四天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day14 任务 ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和 1 平衡二叉树 二叉树节点的深度:指从根节…

数据库系列之简要对比下GaussDB和OpenGauss数据库

GaussDB作为一款企业级的数据库产品,和开源数据库OpenGauss之间又是什么样的关系,刚开始接触的时候是一头雾水,因此本文简要对比下二者的区别,以加深了解。 1、GaussDB和OpenGauss数据库简要对比 GaussDB是华为基于PostgreSQL数据…

用Python快速从深层嵌套 JSON 中找到特定的 Value

有时候,我们拿到一个JSON数据的时候,会难以看出其逻辑层次结构。 这时候就需要我们进行代码解析了。 代码: import jsondef find_json_value(data_json, value, path""):if isinstance(data_json, dict):for k, v in data_json.…

学生用的台灯选什么比较好?热门考研护眼台灯推荐

是不是在台灯下用眼时间长了就觉得眼睛干涩难受,这说明是时候该换掉你的普通台灯换一盏护眼台灯了,用了才知道有多香。小台灯也有大学问,如果还不知道该怎么挑台灯的话也没关系,我已经总结了一份护眼台灯的科普和攻略,…

vmware安装Linux虚拟机设置固定IP地址

Linux虚拟机设置固定IP 近期工作需要,本地用VMware安装了三台Linux-centos虚拟机,来搭建rocketmq集群。但是IP地址每天关机重启之后就会比变化,很是恼火。找到了一个修改的教程,亲测有效!!!&am…

MySQL数据存储、索引记录

行格式(每行记录) 行格式(每行记录): 以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式。 InnoDB 存储引擎4种不同类型的 行格式 ,分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行格式。组…

电机的开环控制和闭环控制

目录 开环电机控制 闭环电机控制 开环到闭环转换 开环电机控制 开环控制(也称为标量控制或伏特/赫兹控制)是一种常见的电机控制方法,可用于运行任何交流电机。这是一种简单的方法,不需要来自电机的任何反馈。为了保持定子磁通恒…

软考、PMP 区别

软考 考试时间:一年两次,报名3月,8月;对应考试:5月最后一个周末,11月第一个周末 报名费:50-200元,每个城市不同北京57每科 报名网站:中国计算机技术职业资格网 考试等…

LangChain学习三:链-实战

文章目录 上一节内容:LangChain学习二:提示-实战(下半部分)学习目标:明白链是什么?有哪些?怎么用?学习内容一:介绍学习内容二:有那些学习内容三:实…

【Flink-cdc-Mysql-To-Kafka】使用 Flinksql 利用集成的 connector 实现 Mysql 数据写入 Kafka

【Flink-cdc-Mysql-To-Kafka】使用 Flinksql 利用集成的 connector 实现 Mysql 数据写入 Kafka 1)环境准备2)准备相关 jar 包3)实现场景4)准备工作4.1.Mysql4.2.Kafka 5)Flink-Sql6)验证 1)环境…

EAM系统在地铁设备管理中的应用

在现代城市的交通系统中,地铁作为一种高效、快速、可靠的公共交通工具,扮演着至关重要的角色。为了确保地铁系统的正常运行和可靠性,地铁管理部门需要有效地管理大量的设备和设施。在这个过程中,企业资产管理(EAM&…

虚幻学习笔记13—C++静态和动态加载

一、前言 我们在蓝图中可以很方便的添加各种需要的组件,那么在C代码中要如何实现呢。在代码中分静态和动态加载,而无论静态和动态,加载的内容有资源和资源类,资源类通常为带资源的蓝图类。 二、实现 在实现静态或动态加载时&…

mybatis-plus雪花算法自动生成ID到前端后精度丢失问题

问题发生 前端接收到后端的数据出现异常,异常如下: 如图这是后端正常返回的数据, 但是点击预览时发现这个id的数据被改变了 这就导致了我通过id去修改相关数据时无法成功 问题原因 id的长度过长(19位),前…

针对网页html中插入动图gif不能循环播放只播放一次的解决方案

针对网页html中插入动图gif不能循环播放只播放一次的解决方案 原因分析解决方案 原因分析 使用图片编辑软件制作的过程中未启用“循环播放”功能,这里以Photoshop为例,演示设置GIF图片循环播放的操作流程:所需材料:PS。第一步&am…

云仓酒庄为您挑选意大利葡萄酒

作为世界产酒大国之一,意大利葡萄酒种类也是纷繁多样,赢得了众多葡萄酒爱好者的喜爱。说意大利葡萄酒地位仅次法国也不为过。那么,云仓酒庄的品牌雷盛红酒分享有没有一些挑选意大利葡萄酒的方法和技巧呢? 意大利的酒也有几千万种…

基于springboot乐器视频学习网站设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题,今天给大家介绍…

ES-脚本

脚本 简单使用 POST product/_update/2 {"script": {"source": "ctx._source.salary1" #将薪水字段的值 1} }预定义变量 POST product/_update/2 {"script": {"lang": "painless","source": "…