详解Simscape物理建模

描述

 

为什么有物理建模

对于复杂系统来说,搭建闭环系统模型是控制开发过程中不可缺少的一环,它不仅能帮助我们验证控制算法还能进行系统级性能分析与优化。模型贯穿桌面仿真到实时仿真,帮助我们通过各种手段的仿真测试尽早的发现集成问题。

仿真

Simulink 作为嵌入式控制算法开发工具已经广泛的应用于汽车、航空航天、工业自动化、农业机械等等各个行业,也成为各大高校理工科专业同学所熟知的科研工具之一。

Simulink 作为通用的数学建模工具,早期也广泛的被用于搭建被控对象数学方程。它提供了一个交互式图形环境和一套丰富的模块库(很多公司也有积累多年的模型库),允许用户建立复杂的系统级模型。

仿真

但是随着行业的发展,嵌入式控制器所面对的系统复杂度增加且灵活多变,手动推导复杂系统的耦合数学方程变得越来越复杂。

仿真

有时候,甚至无从下手。

仿真

Simulink 主要面向的是 基于信号流的处理和系统级的仿真 ,非常适合于控制系统、数字信号处理、通讯系统等领域的建模。

然而,当我们从事机械、电气、流体或热系统的建模时,系统的物理行为及其互相之间的复杂相互作用往往是我们关注的焦点。这些系统的建模不仅仅是基于信号的处理,更多的是需要考虑能量的交换、物质的流动以及物理组件的动态行为。这就是 Physical Modeling 出现的原因。

仿真

对于不熟悉物理建模方法的朋友,可能有些困惑于它与我们所熟悉的 Simulink 建模工作有什么区别。

我用下面这个小动画来简要说明建模过程的区别。

如动画所示,物理建模本质上是把基本元件模块通过物理连线来复现系统拓扑结构。这里的物理连接 没有信号的方向问题 ,和真实系统一样表示能量的交换。

相比之下,Simulink 建模通常需要推导系统的耦合数学方程组,用 Simulink 模块连接来表达方程组的计算过程。这种传统的数学建模手段,它的信号线表征数据流的方向,建模过程中需要 严格配置信号的方向/正负 ,否则会出现计算错误。

当系统结构发生变化时,我们需要谨慎考虑系统数学方程之间的变量关系,保证数学上的完整性,并用 Simulink 计算模块表达出来。

而对于 Simscape 这类物理建模工具来说,我们只需要将原有的单质量弹簧阻尼系统复用,并如同真实系统一样连接起来,得到双质量弹簧阻尼系统,而并不用考虑信号的方向问题。如下方动画所示。

总之Physical Modeling之所以出现,主要是因为以下几个原因:

面向物理系统的建模需求: 对于涉及机械、电气、流体和热等物理过程的系统,Physical Modeling 提供了一种更直观、符合工程师思维习惯的建模方式。

复杂系统的多物理场交互:在许多应用场景中,系统的行为受到多个物理领域相互作用的影响。Physical Modeling 可以更自然地描述这些相互作用。

提高建模效率:通过使用预定义的物理组件和库,工程师可以快速搭建复杂的物理系统模型,而不需要从零开始定义所有的数学方程。

便于理解和交流:基于组件的模型更容易被非专业人士理解,有助于跨学科团队之间的沟通和合作。

因此,尽管基于信号流 Simulink 建模方式已经非常强大和灵活,但针对特定类型的物理系统建模和分析,Physical Modeling 提供了一种更加直观和高效的解决方案。

Simscape 前世今生

随着工业领域系统建模仿真需求的增加,物理建模方法论也衍生出各种开源以及商业化软件。

MathWorks 最早于 1998 年就提供了专用于电路/电网系统建模的 SimPowerSystem(后并入 Simscape Electrical)。

预测到未来多物理域复杂系统集成的大趋势,MathWorks 又于 2007a 推出了以物理建模方法(physical modeling)为基础的 Simscape,接着于 2008b 发布 Simscape language,至此将 Simscape 定位为一个开放的多物理域仿真平台。

仿真

随着时间的推移,MathWorks 逐步扩展了 Simscape 的功能,增加了多个领域的专业库,除了前两篇介绍过的 Battery 以及 Driveline,还有比如 Simscape Electrical(电气系统)、Simscape Mechanics(实属瞎说,没有这个...)、Simscape Fluids(流体系统)和 Simscape Multibody(多体动力学系统)等。这些专业库大大丰富了 Simscape 的应用范围,使其能够应对更加复杂的多物理场系统建模需求。

仿真

作为基础平台,Simscape本身除了提供 求解器技术、代码生成技术 、模型的数据查看功能等等;同时Simscape也有一个基础模块库,其中内置了常见的10种不同物理域(机械平动和转动分属不同的运动域),可以应用于各行各业,如下图所示。

仿真

Simscape 特点

事实上除了本文介绍的 Simscape 之外,其它各种建模手段都有它们各自的特点。比如习惯于纯代码开发的工程师也可能依旧选择编码的方式来搭建模型,对于学生来说使用 Simulink 复现教科书各个方程能帮助学习和理解专业领域的基础知识。

我们可以根据实际情况选择合适的工具来解决自己的问题。

仿真

对于 Simscape 这类物理建模工具来说,它并不代表我们可以完全不懂相关的专业知识,它只是让我们可以花更少的时间在元件以及系统方程组的推导上,更方便的将理论实现为可以运行的仿真模型,从而将更多的精力专注于系统分析与优化。

原理图组装式建模,自动构建方程组

集成于 MATLAB/Simulink

可以方便的模拟元件故障以便分析对系统的影响

Simscape 内置 DAEs 系统专用求解技术

开发人员需要购买所需的专有工具箱,而只是运行该模型不需要额外购买专用工具箱(只需要持有 Simscape)从而降低团队工具软件成本

Simscape 模型均支持 C 代码生成,在缺乏物理原型的场景下亦能测试嵌入式软件

Simscape 功能简介

下面从建模, 仿真, 分析, 部署, 共享几个方面进行简要说明,并添加了一些有意思的新功能介绍。

a. 建模

库模块零部件特性方程内置于各个元件内部,由类似于 m 语言的 Simscape Language 定义,且 Foundation 库元件的源码都是可见的。我们也可以用同样的方式来构 建自己的元件以及元件库 。补充一句,原来用过 Simscape Language 的都知道,里面的查表函数支持到 2D,从 2024a 开始支持 N-D 查表,比如 3D,4D。

仿真

建模时将同种物理域端口相连构建系统拓扑网络得到模型。

仿真

模块之间的连接为物理连接,在模块连接过程中不用考虑信号的进出方向。

仿真

最后系统方程组的推导以及求解则由求解器自动完成。

另外,库模块还内置故障模型,可以很方便设置、触发和管理故障。

仿真

仿真

2024a 更新了一个小的显示功能,所有 Simscape 模块图标都变成“透明”的了,能更好的和自定义背景板颜色融合。

仿真

仿真

b. 导入

模型还可以导入,比如导入 CAD 装配体及其零件模型、SPICE 描述文件、流体属性数据、有限元矩阵信息以及电机有限元磁链数据。这些内容在专门的工具箱章节再详细介绍。

仿真

除了零部件之外,2024a 提供了一个图片数据导入 app:Graph Importer tool,它可以从 PDF 格式的数据手册中导入数据点。

仿真

c. 仿真求解

Simscape 求解器根据框图模型自动推导系统方程组,并进行符号方程组的简化,如模型降阶/变量消除。我们可以通过 Statistic Viewer 来查看当前模型复杂度,对模型计算量有一个深入的了解。

仿真

我们搭建的任何模型都会从一个初始状态开始。

而物理系统的初始状态有其特殊性,即必须满足物理约束。比如在同一个传动链两端的质量快的初始速度必须符合等效传动比关系。

对于复杂系统,我们很难手动计算和设置每一个元件的初始速度、初始位移、初始压力、初始压力、初始电流等等。而 Simscape 求解器可以根据我们所设置的部分初始值以及优先级,来推算整个系统的初始状态。我们可以通过 Variable Viewer 来查看初始化的结果。

仿真

除了微分方程之外,物理系统还时常包含代数方程部分,使得求解更为复杂。Simscape 提供针对 DAE(Differential-Algebraic Equation) 方程组的隐式求解器技术,可以更高效率的求解大部分模型,并可用于实时仿真比如 HIL 测试。

我们根据可以实际应用来配置合适的求解器。

仿真

2024a 新增了多线程编译功能以减少 Simscape 模型编译时间。它默认会打开,当然如果你为了比较不同模型之间的编译时间,那么也可以把它关闭。

仿真

此外,近几年的新版 Simscape 在大规模模型(Scalable Compilation)上了做了很多的工作,另外新的比如增量编译(Incremental Compilation)、增量代码生成(Incremental Code Generation)等等技术降低了 Simscape 模型的编译时间以及代码生成的时间。

结合增量代码生成(Incremental Code Generation),增量编译技术(Incremental Compilation) 核心原理是在初次编译过程中,对每个可重用组件进行一次编译,并保存编译产物。当模型中存在重复的组件实例时,编译器将重用这些已编译的结果,而不是重新编译。在随后的编译过程中,如果检测到可重用组件未发生变化,编译器将跳过这些组件的编译,直接使用之前的编译结果。

仿真

d. 分析

Simscape 模型也支持 Fast Restart 仿真模式,可以快速的运行多次仿真而只需要编译初始化一次。

和普通的Simulink模型一样,Simscape 的任意信号(包括传感器测不到的元件内部信号)都可以记录和图示。

仿真

另外,三维机械系统 (Simscape Multibody) 的仿真结果还可以用动画的形式更直观的表现出来。

仿真

并且,所有分析任务都可以使用

MATLAB 来自动化及加速

e. 部署

Simscape 模型支持 C 代码生成,且更新物理系统参数不需要重新生成代码,以便我们将系统闭环仿真验证扩展到 HIL 环节并测试不同的场景。
Simscape 让我们的能:

更安全

更低成本的方式

分析系统

并测试更多样的场景

仿真

不过其实 Simscape 模块也支持 HDL Coder(SimscapeFPGAHIL_lib.slx),通常用在有高速开关的电子电气模型里。

f. 共享

使模型发挥更大价值

作为模型开发者,我们也可以把 Simscape 子系统封装构造自定义参数界面,放入零部件库,以提高工作成果的复用性。

仿真

同时,也可以分享只读模式并设置密码,在需要的场合保护知识产权。

仿真

作为 Simscape 独有的特点,它支持分享模式。

当我们开发的模型需要被大规模应用的时候,从节约软件成本的角度,我们可以把模型导出为 分享模式 ,模型的使用者只需要购买 Simscape 基础工具箱,就可以仿真和运行我们所分享的包含 Simscape 其它系列工具箱如 Electrical、Multibody 等等的模型。

仿真

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分