【MWorks】初步探索

MWORKS官网 https://www.tongyuan.cc/

MWORKS_学习

兼容性

首先点击新建,我们发现 MWORKS.Syslab 支持三种程序语言, Julia,Python,Matlab。
在这里插入图片描述

在MWORKS 的Julia 环境对话框中,仍然可以安装 Julia 的第三方包。以数学规划建模包 JuMP.jl 为例

在这里插入图片描述

封装性

但是 MWORKS 软件官网明确底层语言是 Julia语言。 打开 MWORKS.Syslab 软件,我们会看到右侧已经加载的包要比正常 Julia 默认加载的包多出了 Ty____ 系列(应该是同元的缩写),即被封装好的包, 当然在Julia语言环境中也可以自行安装这些包。 对封装好的MWORKS的优点就是不需要加载一堆的 using 或这 import 但是启动速度确实变慢了。
在这里插入图片描述

可视化

从三个图片来看效果大差不差。Matlab 与 Julia 绘图左上角都是正弦图像,而 Python绘图左上角为饼图。

|Julia|在这里插入图片描述
|
|—|—|
|Matlab|在这里插入图片描述
|
|Python|在这里插入图片描述
|

### 题目重述 已知系统的传递函数为: $$ G(s) = \frac{0.02s(50s + 4)}{s^2 + 100} = \frac{s^2 + 0.08s}{s^2 + 100} $$ 要求使用 **MWorks** 软件绘制该系统的单位阶跃响应和单位脉冲响应曲线。 --- ### 详解 **MWorks** 是一款支持 Modelica 语言的多领域系统建模与仿真平台,类似于 MATLAB/Simulink,可用于控制系统仿真。 要实现本题目标,可通过 MWorksJulia 接口或 Modelica 建模方式构建传递函数并仿真其阶跃与脉冲响应。 以下是基于 **MWorksJulia 环境(类似 Julia Control Systems Toolbox)** 编写的代码示例: ```julia # 导入必要的包(假设 MWorks 支持类似 Julia 的建模环境) using ControlSystems # 定义拉普拉斯变量 s s = tf("s") # 构建传递函数 G(s) = (s^2 + 0.08s) / (s^2 + 100) G = (s^2 + 0.08*s) / (s^2 + 100) # 创建时间向量 t = 0:0.01:5 # 从 0 到 5 秒,步长 0.01 # 绘制单位阶跃响应 figure(1) stepplot(G, t) title("Unit Step Response using MWorks") xlabel("Time (s)") ylabel("Amplitude") grid(true) # 绘制单位脉冲响应 figure(2) impulseplot(G, t) title("Unit Impulse Response using MWorks") xlabel("Time (s)") ylabel("Amplitude") grid(true) # 显示图形 display(gcf()) ``` > ⚠️ 注意:MWorks 目前主要以 Modelica 为核心语言。如果其 Julia 接口不完整,也可通过 **建立 Modelica 控制模块模型** 来实现。 #### 替代方案:使用 Modelica 语言建模(适用于 MWorks) ```modelica model SystemResponse import Modelica.Blocks.Sources; import Modelica.Blocks.Continuous.TransferFunction; import Modelica.Blocks.Sinks; // 定义传递函数 G(s) = (s^2 + 0.08s)/(s^2 + 100) TransferFunction system( u(start=0), y(start=0), initType=Modelica.Blocks.Types.Init.NoInit, numerator={1, 0.08, 0}, // s^2 + 0.08s denominator={1, 0, 100} // s^2 + 100 ) annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); // 输入信号选择:阶跃或脉冲 Sources.Step step(height=1, duration=1e-5, offset=0) annotation (Placement(transformation(extent={{-100,10},{-80,30}}))); Sources.Impulse impulse(amplitude=1, duration=1e-5) annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); // 切换开关控制使用哪个输入(分别运行两次) Sources.BooleanConstant useStep(y=true) annotation (Placement(transformation(extent={{-120,20},{-100,40}}))); Sinks.Mux2 mux2 annotation (Placement(transformation(extent={{-70,0},{-50,20}}))); Sinks.RealOutput y_out annotation (Placement(transformation(extent={{20,10},{40,30}}))); equation connect(useStep.y, mux2.u1); connect(step.y, mux2.u2); connect(mux2.y, system.u); connect(system.y, y_out.y); annotation ( uses(Modelica(version="4.0.0")), experiment(StopTime=5, Tolerance=1e-6), Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem(preserveAspectRatio=false)) ); end SystemResponse; ``` #### 操作步骤(在 MWorks 中): 1. 打开 MWorks。 2. 新建 Modelica 模型,粘贴上述代码。 3. 编译并运行仿真: - 先设置 `useStep = true` 得到阶跃响应; - 再设置 `useStep = false`,启用脉冲输入,观察脉冲响应。 4. 使用内置绘图工具查看输出 `y_out`。 --- ### 知识点 1. **传递函数建模方法** 使用分子分母系数描述系统动态特性,适用于线性时不变系统。 2. **控制系统时域响应分析** 阶跃与脉冲响应反映系统稳定性、快速性与动态性能。 3. **MWorks/Modelica 仿真环境应用** 通过图形化或文本建模实现复杂系统仿真,支持多域联合仿真。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackPercy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值