3. 示例教程

3.1. 运行示例

在了解仿真模型实现的细节之前,可以使用工具包自带的测试用例验证环境部署的正确性,我们先在GUI中快速完成这些操作。

  • 运行MasterSimulatorUI.exe,启动MasterSim主界面,如 图 3.1

../_images/01.png

图 3.1 MasterSim主界面

  • 点击“Build model”,打开Milestone工具主界面,如 图 3.2

../_images/16.png

图 3.2 Milestone主界面

  • 此处我们直接运行示例模型,切换至“代码生成”标签页,点击“创建工程”,如 图 3.3

../_images/22.png

图 3.3 创建工程

  • 弹出模型选择对话框,在模型列表中选择controller和plant模型,如 图 3.4

../_images/32.png

图 3.4 选择模型

  • 点击“创建工程”,完成编译工程的创建,如 图 3.5

../_images/42.png

图 3.5 完成编译工程创建

  • 点击“构建模型”,调用系统的编译环境,如 图 3.6

../_images/52.png

图 3.6 构建模型

  • 在工具包的export目录中,查看生成的FMU文件,如 图 3.7

../_images/62.png

图 3.7 查看导出的FMU

  • 在MasterSim主界面中打开自带的测试工程,如 图 3.8

../_images/72.png

图 3.8 打开MasterSim测试工程

  • 测试工程在export/mastersim路径下,如 图 3.9

../_images/82.png

图 3.9 测试工程默认路径

  • 我们这里重新生成了其中的FMU模型,但他们的连接保持测试工程中的关系不变,如 图 3.10

../_images/92.png

图 3.10 MasterSim中的模型连接

  • MasterSim左侧的功能选择按钮可以启动Milestone,测试FMU中的信息,启动后处理程序,以图或表格的方式配置模型间的连接,以及配置仿真求解器参数等,请参考其 官方文档 获得更详细的信息。此处可直接使用示例中配置好的参数,点击“开始仿真”按钮,如 图 3.11

../_images/102.png

图 3.11 MasterSim中的仿真配置

  • 观察仿真器的监控信息,以及打印模型中输出的信息,如 图 3.12

../_images/112.png

图 3.12 MasterSim仿真过程监控

  • 生成的结果数据文件存放在results路径下,如 图 3.13

../_images/122.png

图 3.13 MasterSim仿真结果路径

  • 识别该csv文件的分隔符,用Excel等工具格式化查看,如 图 3.14

../_images/132.png

图 3.14 Excel中查看结果csv数据文件

  • 绘制仿真结果,验证模型的正确性,如 图 3.15

../_images/141.png

图 3.15 系统时域响应曲线

3.2. 示例模型说明

控制器模型为PD测速反馈控制器,如 Eq.3.1

(3.1)\[F=k_p\left( r_x-x \right) -k_dv\]

被控对象为简单的一维质量块模型,如 Eq.3.2

(3.2)\[\begin{split}\left[ \begin{array}{c} \dot{x}\\ \dot{v}\\ \end{array} \right] = \left[ \begin{array}{c} v\\ \frac{F}{m}\\ \end{array} \right]\end{split}\]

所组成控制系统的原理框图如 图 3.16 所示。

../_images/sys_all.png

图 3.16 控制系统框图

系统的传递函数为 Eq.3.3

(3.3)\[\frac{X\left(s\right)}{R\left(s\right)}= \frac{ k_p \frac{1}{s} \frac{\frac{1}{ms}}{1+k_d*\frac{1}{ms}} }{ 1 + k_p \frac{1}{s} \frac{\frac{1}{ms}}{1+k_d*\frac{1}{ms}} } = \frac{ \frac{k_p}{ms^2+k_ds} }{ 1 + \frac{k_p}{ms^2+k_ds} } = \frac{k_p}{ms^2 + k_ds + k_p} = \frac{1}{\frac{ms}{k_p}s^2 + \frac{k_d}{k_p}s + 1}\]
(3.4)\[D\left(s\right) = \frac{ms}{k_p}s^2 + \frac{k_d}{k_p}s + 1=\frac{1}{\omega_n^2}s^2 + 2\frac{\zeta}{\omega_n}s + 1\]

可见该反馈控制系统为典型的二阶系统,其特征方程为 Eq.3.4 , 为使得系统的响应具有较明显的动态过程,选择系统参数使得阻尼比较小且振荡频率为 \(0.5 \mathrm{Hz}\) 即取 \(\zeta=0.2, \omega_n=2\pi \times 0.5\) ,则系统的反馈增益为 \(k_p = \omega_n^2 m, k_d = 2 \zeta \omega_n m\) 。 对于这个简单的模型,当然没有必要分别使用不同的仿真工具对其不同部分进行建模, 但我们为了快速验证系统运行的正确性,可以以此作为测试用例,容易给出在Simulink中的仿真结果与设计的预期相一致,如 图 3.17

../_images/sys_res.png

图 3.17 预期的系统响应

接下来,将控制器和被控对象分别实现为两个模型,通过接口的连接实现该系统的仿真,则系统的接口关系为 图 3.18

../_images/sys_sep.png

图 3.18 系统的接口关系