Modelica建模,Modelica语言的学习,技术调研工作
Modelica建模,Modelica语言的学习,技术调研工作
参考资料:
苏州同元软控信息技术有限公司 - 同元
Modelica
再探冷却
modelica学习-CSDN博客
1、 Modelica简介
Modelica是由Modelica协会维护、免费开放的物理系统面向对象的统一建模语言规范,为机、电、液、控等多领域复杂工程系统提供了统一的物理建模语言规范。
Modelica作为多学科统一建模仿真的国际标准,被仿真界广泛采用,系统多领域统一建模仿真,已成为世界公认的MBSE和CPS的核心关键支持技术。
Modelica 语法、函数、包、连接器、组件、子系统
https://modelica.org/libraries.html 第三方的库
MSL
1.1、 Modelica 下载安装:
支持Modelica语言的开源软件有
1) OpenModelica,
2) JModelica(新版本不再开源,但是最后的开源版本仍可下载)
3) Scilab项目中的SCICOS 。
可以使用 openmodelica 软件来进行modelica建模,测试 ,openmodelica 的下载安装 Download Windows。 下载对应的版本 :Index of /omc/builds/windows/releases/1.21/0/64bit
典型商业软件主要有 [2] :
1) 苏州同元的MWorks(中国),
2) 伊萨的SimulationX,
3) 达索的Dymola,
4) 西门子的AMESim(支持Modelica),
5) MapleSoft(Maple厂家)的MapleSim,
6) Wolfram (Mathemetica厂家)的MathModelica。
1.2、 Modelica 基础语法:
1) 模型定义
model SomeModelName "An optional description"
// By convention, variables are listed at the start
equation
/* And equations are listed at the end */
end SomeModelName;
2) 继承
model SpecializedModelName "An optional description" extends Model1; // No modifications
extends Model2(n=5); // Including modification // By convention, variables are listed at the start
equation /* And equations are listed at the end */
... ...
end SpecializedModelName;
3) 变量
Real x;
Real x, y;
Real alpha “angular acceleration”;
· 内建类型:
4大类型: Real , Integer, Boolean, String (4大内置参数类型)
· 参数: parameter 修饰
能够在变量声明前加入parameter(参数)限定词,以表明该变量是先验已知的。我们可以认为这个参数作为模型的“输入数据”,是不随时间变化的常数。
· 常数: constant 修饰
与parameter(参数)限定符关系密切的是constant(常数)限定词。
· 离散变量: discrete
· 派生类型:
type NewTypeName = BaseTypeName(/* attributes to be modified */);
type Temperature = Real(unit="K"); // Could be a temperature difference
type AbsoluteTemperature = Temperature(min=0); // Must be positive
model BaseTypeName
type BaseTypeName1 = Real(unit="m2");
type NewTypeName = BaseTypeName1;// /* attributes to be modified */;
type Temperature = Real(unit="K"); // Could be a temperature difference type AbsoluteTemperature = Temperature(min=0); // Must be positiveequation
end BaseTypeName;
· 枚举类型:
type AssertionLevel = enumeration(warning, error);
type StateSelect = enumeration(never, avoid, default, prefer, always);
修改语句:
Real x(start=10);
parameter Real x0=10 "Start value of prey population";
Real x(start=x0) "Prey population";
extends QuiescentModelWithInheritance(gamma=0.3, delta=0.01);
extends QuiescentModelWithInheritance(x(start=5));
Record类型定义
record类型可以有自己的变量,但是不允许包含方程
record Vector
"A vector in 3D space" Real x; Real y; Real z;
end Vector;
record Complex "Representation of a complex number"
Real re "Real component";
Real im "Imaginary component";
end Complex;
parameter Vector v(x=1.0, y=2.0, z=0.0);
parameter Vector v = Vector(x=1.0, y=2.0, z=0.0);
Demo展示:
demo1: 模拟一个乒乓球从1米的高度,掉落到地上,并来回弹起来的效果:
1) 对弹跳球的建模¶
model BouncingBall "The 'classic' bouncing ball model"
type Height = Real(unit = "m");
type Velocity = Real(unit = "m/s");
parameter Real e = 0.8 "Coefficient of restitution";
parameter Height h0 = 1.0 "Initial height";
Height h;
Velocity v;
initial equation
h = h0;
equation
v = der(h);
der(v) = -9.81;
when h <= 0 then
reinit(v, -e*pre(v));
end when;
end BouncingBall;
modelica模拟的效果图:、
从上面的模拟图中能发现,当最后球静止的时候,球落在地面以下的位置了。这显然不符合现实世界。我们可以对其改进一番看看。
2) 改进版本:
model StableBouncingBall
"The 'classic' bouncing ball model with numerical tolerances"
type Height=Real(unit="m");
type Velocity=Real(unit="m/s");
parameter Real e=0.8 "Coefficient of restitution";
parameter Height h0=1.0 "Initial height";
constant Height eps=1e-3 "Small height";
Boolean done;
Height h;
Velocity v;
initial equation
h = h0;
done = false;
equation
v = der(h);
der(v) = if done then 0 else -9.81;
when {h<0,h<-eps} then
done = h<-eps;
reinit(v, -e*(if h<-eps then 0 else pre(v)));
end when;
end StableBouncingBall;
modelica模拟的效果图:

demo2: 带滞回的温度控制
model HysteresisControl "A control strategy that doesn't chatter"
type HeatCapacitance=Real(unit="J/K");
type Temperature=Real(unit="K");
type Heat=Real(unit="W");
type Mass=Real(unit="kg");
type HeatTransferCoefficient=Real(unit="W/K");
Boolean heat(start=false) "Indicates whether heater is on";
parameter HeatCapacitance C=1.0;
parameter HeatTransferCoefficient h=2.0;
parameter Heat Qcapacity=25.0;
parameter Temperature Tamb=285;
parameter Temperature Tbar=295;
Temperature T;
Heat Q;
initial equation
T = Tbar+5;
heat = false;
equation
Q = if heat then Qcapacity else 0;
C*der(T) = Q-h*(T-Tamb);
when {T>Tbar+1,T<Tbar-1} then
heat = T<Tbar;
end when;
end HysteresisControl;
modelica模拟的效果图:

demo3: 带抖动的温度控制
model ChatteringControl "A control strategy that will 'chatter'"
type HeatCapacitance=Real(unit="J/K");
type Temperature=Real(unit="K");
type Heat=Real(unit="W");
type Mass=Real(unit="kg");
type HeatTransferCoefficient=Real(unit="W/K");
Boolean heat "Indicates whether heater is on";
parameter HeatCapacitance C=1.0;
parameter HeatTransferCoefficient h=2.0;
parameter Heat Qcapacity=25.0;
parameter Temperature Tamb=285;
parameter Temperature Tbar=295;
Temperature T;
Heat Q;
initial equation
T = Tbar+5;
equation
heat = T<Tbar;
Q = if heat then Qcapacity else 0;
C*der(T) = Q-h*(T-Tamb);
end ChatteringControl;
modelica模拟的效果图:

电子电气相关的模型仿真

仿真效果:

相关文章:
Modelica建模,Modelica语言的学习,技术调研工作
Modelica建模,Modelica语言的学习,技术调研工作 参考资料: 苏州同元软控信息技术有限公司 - 同元 Modelica 再探冷却 modelica学习-CSDN博客 1、 Modelica简介 Modelica是由Modelica协会维护、免费开放的物理系统面向对象的统一建模语言规…...
Oracle数据字典之——v$lock 和v$locked_object
v$lock视图 v$lock视图列出当前系统持有的或正在申请的所有锁的情况,其主要字段说明如下: 11g如下: 字段名称类型说明ADDRRAW(8)锁定状态对象的地址KADDRRAW(8)锁的地址SIDNUMBER会话(SESSION)标识;TYPE…...
solidity 以太坊(Ether) 单位(很基础)
一个字面常数可以带一个后缀 wei, gwei 或 ether 来指定一个以太坊的数量, 其中没有后缀的以太数字被认为单位是wei。 在以太坊和许多其他基于以太坊的区块链系统中,以太币(Ether)是网络中的主要加密货币。 以太可以被…...
关于elementUI 分页 table 使用 toggleRowSelection
我出现问题的前提 在table表格第一页全选 ,第二页全选 回到第一页 点击按钮 取消 第一页,第二页我不要的勾选 初始实现 this.selectedPeraonal是表格 selection-change方法返回的值 handleSelectionChange(val) {this.selectedPeraonal val || []…...
K8s部署RocketMQ
准备工作 我是win电脑,本地安装了Podman,并使用Kind创建了一个K8s本地环境,并在 win 电脑上安装了 Helm。 部署RocketMQ 1. add rocketmq helm repo 2. deploy rocketmq cluster 3. verify the rocketmq cluster 4. Create Topic by api a…...
Linux服务管理-Nginx配置
静态解析主要解析html、css动态解析需要解析php 动态资源通过轮询分配到后端的Apache服务器处理 apache是同步阻塞,nginx是异步非阻塞...
C语言典型例题31
《C程序设计教程(第四版)——谭浩强》 习题2.8 请编写程序将China译为密码,密码的规律是:用原来字母后面的第4个字母代替原来的字母。 例如:C后面的4个字母是G,h后面第4个字母为l 代码: //《C程序设计教程…...
FFMPEG 工具方法
av_strerror int av_strerror ( int errnum, char * errbuf, size_t errbuf_size )ffmpeg获取与设置mp4文件旋转方向方法 设置与获取都是对AVStream的dict操作. 设置 for (i 0; i < ifmt_ctx_v->nb_streams; i) { //Create output AVStream according to input A…...
Qt QML 使用QPainterPath绘制弧形曲线和弧形文本
Qt并没有相关api直接绘制弧形文字,但提供了曲线绘制相关类,所以只能另辟蹊径,使用QPainterPath先生成曲线,然后通过曲线上的点来定位每个文字并draw出来。 QML具体做法为从QQuickPaintedItem继承,在派生类中实现paint…...
VMware虚拟机和Docker的备份与恢复
目录 1. VMware虚拟机的快照备份 1.1 VMware本机的快照备份 1.2 VMware快照备份到另一电脑 2. Docker知识点 2.1 Docker镜像和容器的关系 2.2 Docker的存储卷 2.3 Docker命令简介 2.4 删除Anylink镜像 3. Docker备份和恢复 3.1 确定要回滚的容器和版本 3.2 备份当前…...
新加坡服务器延迟大吗?如何进行优化
新加坡服务器延迟大吗?新加坡服务器的延迟通常在全国平均延迟111ms左右,其中移动网络约为90ms,联通网络106ms,电信网络最低约为85ms。为了进行优化,一般可以采取使用CDN、优化路由线路、增加带宽和服务器升级等方法。 …...
uniapp——列表图片加载太多且空间占用太大的处理方法(降低清晰度)
解决方法 列表默认显示的降低清晰度,预览图片的时候加载原图。 如果图片是上传到阿里云的OSS上,可以快速获取图片缩略图的方法 直接在后端返回的URL后面拼接字符串: XXX.png?x-oss-process 缩略图方法介绍: ?x-oss-proces…...
spring+SSM+Mybatis面试题(上)(30道)
目录 1. 何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?2. Spring IOC 如何理解?3. Spring DI 如何理解?4. Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制?1.配置作用域需要注解Scope(“Singleton”)2.开启延迟加载:La…...
odoo17 翻译一个小bug
odoo17 翻译一个小bug 用户界面的没译过来 标红处,但在zh_CN.po中明显已经翻译过来了,采取暴力点的,直接把base下的base.pot删除,再更新一下,可以正常显示了...
sqli-labs-php7-master第5-10关
第五关: 根据提示输入ID,随便来个一 输入100,因为数据库没有,所以这里没输出内容 还是先找注入点:输入单引号试试 注入点找到了‘ 查询数据库列数;?id1 order by 4 -- 测试发现order by 3时页面正常&…...
全方位教程:接入视频美颜SDK与直播美颜插件的完整步骤
今天,小编将为您详细介绍如何接入视频美颜SDK与直播美颜插件的完整步骤。 一、准备工作 开发环境的搭建 在开始集成之前,确保您的开发环境已配置完毕。无论是使用iOS、Android,还是Web开发,您都需要准备好对应的开发工具链&…...
Apache Curator 分布式锁的介绍,以及案例
可重入锁(InterProcessMutex):这种锁允许同一个客户端多次获取同一把锁而不会被阻塞,类似于Java中的ReentrantLock。它通过在Zookeeper的指定路径下创建临时序列节点来实现锁的功能。如果获取锁失败,当前线程会监听前一…...
自动化测试 — selenium + Java
什么是自动化测试 将人为驱动的测试行为转化为机器执行的过程。 自动化测试包括UI 自动化,接口自动化,单元测试自动化。按照这个金字塔模型来进行自动化测试规划,可以产生最佳的自贡话测试产出投入比(ROI ),…...
【SpringBoot系列】接口参数的默认值与必要性
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
茶余饭后(五)
真正出类拔萃的人 往往都是狠角色, 他们具备着一种独特的特质 那就是: 目标清晰 意志如铁 底线分明 同时手段又极为高明 且勤奋不屑 在处于劣势时 他们表现的极为谦逊和低调 像一只温顺无害的小羊羔 然而一旦时机成熟 他们便会毫不犹豫的展现出强…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
