技术干货 | 基于Modelica的1553B总线模型设计

一、引言

1553B总线是一种常用于航空航天领域的数据总线标准,广泛应用于各类航天器和航空器中。对1553B总线系统进行建模仿真,有助于验证设计、测试功能和排除潜在故障,帮助开发人员提高工作效率、降低开发成本,具有重要的工程意义。

MWORKS.Sysplorer作为面向多领域工业产品的系统建模仿真环境,完全支持多领域统一建模规范Modelica,遵循现实中拓扑结构的层次化建模方式,支撑基于模型的系统工程应用。本文以基于Modelica的1553B总线模型为例,对MWORKS.Sysplorer在信息域中的总线模型仿真方法进行介绍。

二、1553B协议简介

01  1553B总线结构 ✦

1553B总线上的设备主要分为两类,如图1所示,其中一个设备作为主机,负责控制整个总线的操作,称为总线控制器(Bus Controller,以下简称BC);其余设备则作为从机,进行数据的接收和发送,称为远程终端(Remote Terminal,以下简称RT);此外,在部分系统中还有监控总线上传输信息的总线监控器(Bus Monitor Terminal,一般称为BM或MT),本文模型不涉及。

图1 1553B总线拓扑模型

BC是1553B总线的主控设备,通常是计算机或其他主控设备,负责管理整个通信过程。BC控制总线访问权限,发起通信以及管理RT之间的数据交换,负责发送指令和请求,接收响应,并协调整个系统的操作。

RT是1553B系统中的被动设备,用于响应BC的指令和请求。RT可以是传感器、数据采集设备、显示器或其他外部设备。RT接收来自BC的指令或数据,并根据要求执行操作或提供所需的数据。由于1553B协议有5位地址位,因此,整个总线(包括BC在内)最多连接31个子设备(00000~11110,地址位为11111一般表示广播)。

02  1553B字格式 ✦

1553B总线上的消息由若干个字构成,分为指令字、数据字和状态字三种格式的字。每个字的字长为20位(比特),包括3位同步头、16位有效数据位和1位奇偶校验位,如图2所示。

图2 1553B的字格式

同步头用于标识一个字的开始,占用一个字的前三位,但仅由两个逻辑值组成,指令字和状态字的同步头相同,都是前1.5位为逻辑“1”,后1.5位为逻辑“0”,而数据字的同步头的逻辑值则与之相反。

4-19位为有效数据位,共16位,是各设备实际处理的指令和数据。最后一位对应图中的P位,是校验位,1553B协议的校验位是根据16位的有效数据位进行奇校验得出的。

03  1553B消息格式  ✦

1553B的每条消息由1或2个指令字、0~32个数据字和不多于2个状态字组成。其消息模式主要有三种:(1)BC-to-RT;(2)RT-to-BC;(3)RT-to-RT。如图3所示。此外,还有指令(仅指令字)、广播(一般是BC向所有RT发送消息,指令字中的地址为11111)等消息模式。

图3 1553B协议的消息格式

04  模型分层与建模思路  ✦

整个1553B协议可以分为三层建模:

(1)应用层:这是最高层,定义了与用户的接口和通信协议,主要是各个组件的概念模型。

(2)数据链路层:介于应用层和物理层之间,也是两者的接口,能将想要发送的指令和数据编成字,反过来也能将字恢复为原始数据。

(3)物理层:表示现实的高低电平或波形随时钟的变化。

为了便于理解,本文将详细介绍应用层的建模,并初步了解数据链路层建模。

三、 建模与仿真

结合Modelica建模经验,在创建1553B总线模型时,首先需要创建一套适配变量格式的接口模型,再从接口扩展出总线本身的模型以及BC、RT等设备的模型,最后将不同模型通过总线进行连接。总线系统建模过程如图4所示。

图4 总线系统建模过程

本文以某飞行器的1553B总线通讯场景为例,该总线上有主控计算机作为BC,以及三个系统设备(导航系统、通信系统和天气系统)作为RT,以BC-to-RT的形式,发送一条消息。

在这条消息中,有一个指令字和LengthData个数据字,总线上的导航、通信和天气三个系统都会收到这条消息,但仅有地址与指令字中目标地址一致的RT(导航系统)会读取数据字,其他RT不进行操作。

图5 模型连接

主控计算机作为BC,实例化名称为bC0_1,通过继承RT模型构造飞行器的导航、通信和天气三个系统设备,实例化后分别为rT0_1(地址00010)、rT0_2(地址00011)和rT0_3(地址00100)。

通常,信息在模型中的存储方式是数组,但如果将消息以数组的形式发送,在仿真中各变量的改变会瞬间完成,无法看到各变量随时间的变化。为了更直观地展示仿真结果,需要进一步设计数据链路层的模型。将有效数据编成字的步骤是其中的关键步骤,需要设计另一种接口类型,让消息能随时间“流”起来。

设计的接口需要输入原有模型中的数组,输出为消息流变量,且消息流的变化要根据1553B协议与时钟信号对齐。如图6所示,通过转换接口对数据进行读取。

图6 连接转换接口的1553B总线系统模型

仿真结果如图7所示,从上到下依次为时钟信号、主控计算机bC0_1发出的消息信号,导航系统rT0_1、通信系统rT0_2和天气系统rT0_3的指令读取和写入操作。

可以看到,通过此种建模方式可以直观地展示消息流每个字与时钟周期的对应关系和不同设备收到指令后的操作:导航系统在收到指令之后将数据字写入,而通信和天气系统收到指令后不进行写入操作,数据字中有效数据全为初始值0。

图7 各组件的信息流

图8 信息流的动态图

通过仿真结果,可以得知:MWORKS.Sysplorer能够准确地模拟1553B协议在总线中传输消息的过程,并且能够使组件模型根据消息中的指令执行相应的操作。这一结果证实了MWORKS.Sysplorer实现信息域仿真的可行性。

四、总结与展望

本文基于Modelica语言构建了1553B总线模型和信息流接口,并以某飞行器为背景对1553B总线模型数据通讯过程进行验证,为构建基于Modelica的装备信息物理融合模型奠定基础。后续的工作中,我们将继续完善这一系列总线模型,逐步对更大规模数据和更多通信方式下的总线模型构建方法进行分享。

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

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

相关文章

实现dialog在页面随意拖拽

实现dialog在页面随意拖拽 1.先建一个文件如图所示: 文件名:dialog-directive.js 文件内容: import Vue from vue // v-dialogDrag: 弹窗拖拽Vue.directive(dialogDrag, {bind(el, binding, vnode, oldVnode) {// 获取拖拽内容的头部const dialogHeade…

OpenGL ES入门教程(一)编写第一个OpenGL程序

OpenGL ES入门教程(一)编写第一个OpenGL程序 前言 从本文开始我将参考学习OpenGL ES应用开发实践指南 Android卷 [(美)KevinBrothaler著](提取码: 394m),并基于自己的理解以更加通俗易懂的方式…

Unity之NetCode多人网络游戏联机对战教程(5)--ConnectionData与MemoryPack

文章目录 前言使用场景ConnectionData数据序列化处理MemoryPack安装MemoryPack日志输出后话学习链接 前言 ConnectionData 与 ConnectionApproval 是搭配使用的,在ConnectionApproval系列讲解中涉及的几个使用场景将会在这里讲解 使用场景 使用密码加入房间 玩家选…

Leetcode—485.最大连续1的个数【简单】

2023每日刷题&#xff08;十五&#xff09; Leetcode—485.最大连续1的个数 实现代码 int findMaxConsecutiveOnes(int* nums, int numsSize){int max 0;int i;int flag 0;int cnt 0;for(i 0; i < numsSize; i) {if(nums[i] 1) {if(flag 0) {flag 1;cnt 1;} else {…

【框架篇】统一用户登录权限验证

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 统一用户登录权限验证 1&#xff0c;自定义拦截器 对于统一用户登录权限验证的问题&#xff0c…

413 (Payload Too Large) 2023最新版解决方法

文章目录 出现问题解决方法 出现问题 博主在用vue脚手架开发的时候&#xff0c;在上传文件的接口中碰到 这样一个错误&#xff0c;查遍所有csdn&#xff0c;都没有找到解决方法&#xff0c;通过一些方式&#xff0c;终于解决了。 解决方法 1.打开Vue项目的根目录。 2.在根目…

顺序表(2)

目录 Test.c主函数 test5 test6 test7 菜单 Test.c总代码 SeqList.h头文件&函数声明 头文件 函数声明 SeqList.h总代码 SeqList.c函数实现 查找SeqListFind 某位置插入SeqListInsert 某位置删除SeqListErase SeqList.c总代码 顺序表的问题及其思考 多文件…

Vue项目创建与启动(2023超详细的图文教程)

目录 一、下载node.js 二、下载vue-cli与webpack插件 三、项目初始化(项目配置详细信息) 四、项目启动 五、Vue项目工程结构&#xff08;扩展知识&#xff09; 一、下载node.js 1.检测是否已经安装过node.js 打开控制台,输入 npm -v如果有会显示对应版本 如果没有会显示…

如何看待腾讯云双11活动3年轻量服务器突然涨价?

腾讯云双十一优惠活动提供的3轻量应用服务器涨价了&#xff0c;最初双11优惠活动3年轻量2核4G5M服务器从566.6元涨价到756元三年&#xff0c;3年轻量2核2G4M服务器从366.6元恢复到540元三年&#xff0c;大家抓紧吧&#xff0c;三年轻量已经库存已经不多了&#xff0c;看看隔壁阿…

基于Electron27+React18+ArcoDesign客户端后台管理EXE

基于electron27.xreact18搭建电脑端exe后台管理系统模板 electron-react-admin 基于electron27整合vite.jsreact18搭建桌面端后台管理程序解决方案。 前几天有分享electron27react18创建跨平台应用实践&#xff0c;大家感兴趣可以去看看。 https://blog.csdn.net/yanxinyun1990…

云安全-云原生基于容器漏洞的逃逸自动化手法(CDK check)

0x00 docker逃逸的方法种类 1、不安全的配置&#xff1a; 容器危险挂载&#xff08;挂载procfs&#xff0c;Scoket&#xff09; 特权模式启动的提权&#xff08;privileged&#xff09; 2、docker容器自身的漏洞 3、linux系统内核漏洞 这里参考Twiki的云安全博客&#xff0c;下…

快讯|2024 财年第一季度 Tubi 收益增长了 30%

2024 财年第一季度 Tubi 收益增长了 30%&#xff0c;月活跃用户达到了 7000 万 近日&#xff0c;在 2024 财年第一季度财务收益电话会议上&#xff0c;Fox 执行主席兼 CEO Lachlan Murdoch 对 Tubi 的增长表示赞赏&#xff1a;“Tubi 又多了一个令人羡慕的季度&#xff0c;收入…

3D模型格式转换工具HOOPS Exchange:如何将3D PDF转换为STEP格式?

3D CAD数据在制造、工程和设计等各个领域都扮演着重要的角色。为了促进不同软件应用程序之间的协作和互操作性&#xff0c;它通常以不同的格式进行交换。 HOOPS Exchange是一个强大的软件开发工具包&#xff0c;提供了处理和将3D CAD数据从一种格式转换为另一种格式的解决方案…

谭巍主任重点科普HPV病毒最怕的消毒液

HPV病毒&#xff0c;也称为人类乳头瘤病毒&#xff0c;是一种常见的性传播病毒。它感染人体皮肤和黏膜&#xff0c;导致各种疾病&#xff0c;包括尖锐湿疣、宫颈癌等。为了有效控制HPV病毒的传播&#xff0c;劲松中西医医院皮肤性病科主任谭巍认为了解消杀HPV病毒的消毒液是非常…

win10 + vs2017 + cmake3.17编译OSG-3.4.1

参考教程&#xff1a;https://blog.csdn.net/bailang_zhizun/article/details/120992244 1. 下载与解压 2. 修改configure 1&#xff09;Ungrouped Entries -- 》ACTUAL_3RDPARTY_DIR: 设置为&#xff1a; D:/Depend_3rd_party/OSG341/3rdParty 2&#xff09; Ungrouped E…

django如何连接sqlite数据库?

目录 一、SQLite数据库简介 二、Django连接SQLite数据库 1、配置数据库 2、创建数据库表 三、使用Django ORM操作SQLite数据库 1、定义模型 2、创建对象 3、查询对象 总结 本文将深入探讨如何在Django框架中连接和使用SQLite数据库。我们将介绍SQLite数据库的特点&…

设计模式第一课-单例模式(懒汉模式和饿汉模式)

单例模式 个人理解&#xff1a;单例模式实际就是通过类加载的方式获取到一个对象&#xff0c;并且保证这个对象在使用中只有一个&#xff0c;不允许再次被创建 一、懒汉模式 1、懒汉模式的基础写法 代码解释&#xff1a; &#xff08;1&#xff09;、编写LazySingleton类的…

HT5010 音频转换器工作原理

HT5010是一款低成B的立体声DA转换器&#xff0c;内部集成了内插滤波器、DA转换器和输出模拟滤波等电路。其可支持多种音频数字输入格式&#xff0c;支持24-bit字节。 该HT5010 基于一个多比特位的Δ-Σ调制器&#xff0c;将数字信号转化成两个声道的模拟信号并经过模拟滤波器滤…

Python 框架学习 Django篇 (八) 代码优化、数据库冗余处理

我们开发软件系统的时候&#xff0c;需要不断的反思我们代码里面是否有可以优化的地方。而优化的重点之一&#xff0c;就是把冗余的代码优化为可以复用的库。我们在前面编写了一些功能&#xff0c;但是其中存在很多冗余的方法 mgr/medicine.py mgr/k8s.py mgr/medicine.py 打开…

从科幻走向现实,LLM Agent 做到哪一步了?

LLM 洪流滚滚&#xff0c;AI 浪潮席卷全球&#xff0c;在这不断冲击行业认知的一年中&#xff0c;Agent 以冉冉新星之态引起开发者侧目。OpenAI 科学家 Andrej Karpathy 曾言“OpenAI 在大模型领域快人一步&#xff0c;但在 Agent 领域&#xff0c;却是和大家处在同一起跑线上。…