首页 > 其他分享 >Michael M. Tiller《Modelica多领域物理系统建模入门与提高》Chapter 4学习笔记

Michael M. Tiller《Modelica多领域物理系统建模入门与提高》Chapter 4学习笔记

时间:2024-06-22 17:56:26浏览次数:21  
标签:Chapter 4.4 模型 Michael 4.8 Modelica 组件 model 替换

文章目录

第四章 组件重用

目标:提升模型的可重用性——非因果建模的本质利于重用1

4.1 概述

Modelica中实现模型重用的途径

  1. 创建连接器:连接联合工作的组件,共享信息
  2. 扩展现有模型:模型之间共享方程集、参数集、算法集等

4.2 公共代码开发

4.2.1 识别和定义公共代码

避免重复——关键词partial限定的partial2 model

example: Modelica.Electrical.Analog包中的OnePort模型

定义一个端口电气组件的通用基础模型

4.2.2 使用公共代码定义模型

使用OnePort定义电阻模型

  • 继承OnePort模型,增加电阻类型参数R
  • 欧姆定律i*R=v描述i与v的本构关系

4.3 构建可重用的块

4.3.1 建立控制器模型

  • 对于每一个需要PI控制器的系统,建立一个通用的PI控制器模型,能够将其置于任一需要它的模型中
  • 基于其他模型建立的新模型可视化的两种途径
    * 原理图:展现内部连接细节
    * 图标视图(icon):从外部看模型,“黑盒”
  • 将子组件模型作为构成块,使建立和增强系统复杂性更容易

4.3.2 传递信息

当利用一系列子组件创建一个新模型时,必须将连接参数向下传递到子组件层

4.3.3 小结

利用其他“构建块”创建组件的步骤:

  1. 确定外部连接和参数
  2. 对内部组件进行声明和连接
  3. 将外部参数及连接器–>传递到子组件

4.4 允许替换的组件

模型相互替换的前提是两者必须兼容,即两种模型拥有相同的连接器以及参数,也即新模型必须是旧模型的子类型

4.4.1 通用控制器接口

确保控制器兼容性:运用通用partial块扩展定义

  1. 确定一个通用接口:确定控制器通用属性、创建partial块、基于partial块扩展得到控制器
  2. 通用模型:输入、输出、参数
    通用控制器接口

4.4.2 特定控制器模型

4.4.2.1 比例控制器
比例增益控制器
4.4.2.2 比例微分控制器
比例微分增益控制器
扩展建模:每一个扩展而来的模型自动成为被扩展模型的一个子集/子类型/特例,它包含了被扩展模型的全部组件

4.4.3 使用可替换组件

model ControllerAndMotor
...
replaceable PIController con(Kp = 0.4) extends Controller;
...
end ControllerAndMotor;
  • 声明一个PIController叫做con,它可以被任一Controller子类型的组件替换
  • 限定词extend:限制模型可以被那些模型替换

三个不同控制器类型组成的实例–>redeclare定义

model CompareControllers
	ControllerAndMotor pic;
	ControllerAndMotor pc(
	redeclare PController con(Kp=1.1));
	ControllerAndMotor pdc(
	redeclare PDController con(Kp=1.1,Kd=0.2));
	end CompareControllers;

4.4.4 小结

使用一个模型替换另一个模型的方法来设计组件或系统

4.5 其他可替换的实体

关键词replaceable除了使得组件可替换,还可以使得组件类型可替换,并允许重新声明多个组件

  • Modelica中的简短定义——模型扩展的简化方法
...
Analog.Basic.Resistor R1(R=15);
Analog.Basic.Resistor R2(R=5000);
...

//等效声明:定义一个本地模型,利用其对R1,R2进行声明

...
model ResModel
		extends Analog.Basic.Resistor;
end ResModel;
ResModel R1(R=15);
ResModel R2(R=5000);
...

//等效声明-简短定义

...
model ResModel =Analog.Basic.Resistor;
ResModel R1(R=15);
ResModel R2(R=5000);
...
  • 实现一个可替换对象类型
model RLC5
import Modelica.Electrical.Analog;
replaceable model ResModel =Analog.Basic.Resistor;
ResModel R1(R=15);
ResModel R2(R=5000);
...
end RLC5;

// 使用本地模型的优势在于所有此模型的实例均可以同时进行重新声明

model MyRLC = RLC5(redeclare model Resmodel = MyResistor);

4.6 对灵活性的限制

当利用已有模型实例创建一个新模型时,可能需要新模型作为一个黑盒,即不允许模型使用者或其他开发人员深入模型内部,并更改一些默认条件。

关键字final可以用来禁止这样的更改

model Gear
...
parameter Real gear_ratio=1;
...
end Gear;

// 重用Gear模型创建皮带模型TimingBelt

model TimingBelt = Gear(final gear ratio=2);

//关键字final通过实例化或特例化阻止了对传动比的任何并发的更改

model Engine
	TimingBelt belt (gear ratio=3); //error
	model OddTimingBelt = TimingBelt ( gear ratio=2.25); //error
end Engine;

4.7 其他注意事项

4.7.1 参数

一般,不希望数字直接出现在方程中,设置参数可以使模型更易理解和重用。

4.7.2 通用性

通过重用一个已存在的、更通用的模型并添加约束的方式去构建 VS 直接创建

  • 重用性最高的模型时那些假设条件很少的模型
  • 一个模型越通用,模型本身越趋向于抽象和复杂
  • 当开发一个可重用模型时,需要弄清其如何被重用
  • 模型应具备足够通用性,使其可以作为开发其他模型的基础;同时该模型也足够简单,使得后续开发的模型简单易懂

4.7.3 注释

模型开发者对模型的解释

  • “… …” 描述性文本
  • // 注释
  • 嵌入HTML代码

4.8语言基础

4.8.1 模型的扩展

extends关键字:允许将一个模型的内容“复制粘贴”到另一个模型中

  • 应用场合:当许多模型拥有相同变量、连接器、方程时
  • 限制条件:不能替换扩展模型中的任一方程
model A
	Real x;
equation
	x=5;
end A;

model B1
	extends A;
equation
	x=3;
end A;	

//将B1展开得

model B2
	Real x;
equation
	x=5;
	x=3;
end B2;

//一个未知数,两个方程,方程超定
  • 当开发partial模型时,为了保证衍生模型创建方程时有足够的灵活性,partial模型应包含最少数量的方程

4.8.2 简短定义

  • 应用场景:新模型与已有模型非常相似,即新模型没有引入任何新的子组件
model MyRLC
	extends RLC5(R1(R=12));
end MyRLC;

//等价于

model MyRLC = RLC5(R1(R=12));

//本质上是用等号并在语句末尾用分号来替换关键词extends

4.8.3 子类型

定义:若B包含与A相同的所有组件(相同名称),则B为A的子类型

4.8.4 partial定义

关键字partial表明,此模型可以扩展,但不能实例化,其本身并不是一个严格意义上的模型(通常因为其缺少本构方程)。

4.8.5 创建可替换的模型元素

4.8.5.1 可替换的子组件
标准声明与可替换声明的不同

  1. 可替换声明前有关键字replaceable
  2. 可替换声明可跟extends语句,作为约束类型,限制可以被什么组件替换

4.8.5.2 使用可替换类型定义

  • 可替换类型定义在同一时刻可以同时更改很多组件的类型
  • 可替换类型定义通常包含一个本地类型定义(即此类型尽在指定模型的上下文中应用)

4.8.6 final 类型组件

final关键字通过禁止进一步更改以限制灵活性,增强模型的鲁棒性


  1. 即使对系统其他部分的应用方程或因果关系不太了解,也可以独立建立系统的每一个组件模型 ↩︎

  2. 暗指此模型不完整,仅以它为基础创建其他模型 ↩︎

标签:Chapter,4.4,模型,Michael,4.8,Modelica,组件,model,替换
From: https://blog.csdn.net/weixin_52580587/article/details/139813218

相关文章

  • 【重写SpringFramework】第一章beans模块:填充对象(chapter 1-6)
    1.前言在对象实例化之后,我们需要对一些字段进行赋值,这一过程称之为对象的填充(populate)。填充对象由两部分组成,一是属性访问,二是自动装配(autowire)。属性访问的功能已经介绍过了,本节主要讨论的是自动装配的问题。自动装配也称依赖注入,包括两个部分,即环境变量解析和对象解析,......
  • 【重写SpringFramework】第一章beans模块:Bean的销毁(chapter 1-9)
    1.前言Bean的生命周期包括初始化和销毁操作,上节介绍了Bean初始化流程,本节来看Bean的销毁流程是如何实现的。在实际应用中,绝大多数对象并不需要执行销毁操作,但某些对象本身管理着一定的资源。当Spring容器关闭时,所有的对象都会被虚拟机回收。在此之前,这些特殊的对象......
  • 【重写SpringFramework】第一章beans模块:Bean的初始化(chapter 1-8)
    1.前言前边我们介绍了创建实例和填充对象的流程,这是整个创建流程最重要的工作。有时候用户需要对Bean进行自定义的操作,这一过程称为初始化。此外,还有一些比较特殊的对象,本身管理着一定的资源,当对象销毁时需要释放这些资源,因此我们还需要相应的销毁操作。初始化和销毁操作......
  • [TinyRenderer] Chapter1 p3 Line
    (注:本小节不是对划线算法事无巨细的证明,如果你需要更加系统的学习,请跳转至文末的参考部分)如果你是一名曾经学习过图形学基础的学生,那么你一定对画线算法稔熟于心,中点划线算法,Bresenham算法。其中,现代光栅化器中使用最多的就是Bresenham算法,它以去除了除法和浮点运算而著称。但如......
  • Chapter1 p2 vec
    在上一小节中,我们完成了对BMPImage类的构建,成功实现了我们这个小小引擎的图像输出功能。你已经完成了图像输出了,接着就开始路径追踪吧。。。开个玩笑XD对于曾经学习过一些图形学经典教材的人来说,下一步应当开始着手于画线算法了,但对于本文来说,肯定是要走一些不走寻常路的。所......
  • [TinyRenderer] Chapter1 p1 Output Image
    由于本文章是对TinyRenderer的模仿,所以并不打算引入外部库。那么我们第一步需要解决的就是图形输出的问题,毕竟,如果连渲染的结果都看不到,那还叫什么Renderer嘛。由于不引入外部库,所以选择输出的图片格式应该越简单越好,各种位图就成为了我们的首选。这里我们选择了生态较好的bmp......
  • 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chap
    禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chapter7插图......
  • AoPS - Chapter 14 Inequalities
    TODO:全文的\(\sum\)与\(\prod\)在无特殊说明时默认为\(i=1,2,\cdots,n\)。平凡的不等式\(\forallx\in\mathbbR\),\[x^2\ge0\]例1Example证明:\(\forallx\in\mathbbR\),\(\cos2x+\sin^2x\ge0\)。Solution由\(\cos\)二倍角公式可得:\[\begi......
  • Notes: Understanding the linux kernel Chapter 9 Process Address Space
    ProcessAddressSpaceWhenaUserModeprocessasksfordynamicmemory,itdoesn’tgetadditionalpageframes;instead,itgetstherighttouseanewrangeoflinearaddresses,whichbecomepartofitsaddressspace.Thisintervaliscalleda“memoryre......
  • Chapter 4 证明技巧
    证明技巧:思路图使用公理系统时,证明的「构思过程」与证明的「书写过程」大相径庭。思考过程往往从最后一步开始,逐步规约。来看两个例子传递律的证明\[A\rightarrowB,B\rightarrowC\vdashA\rightarrowC\]Thinking&Writing...换位律的证明\[\vdash(A\rightarrow(B\ri......