前页 | 后页 |
质量弹簧阻尼振荡器仿真示例
在本节中,我们将为由质量、弹簧和阻尼器组成的简单振荡器创建 SysML 参数模型,然后使用参数模拟来预测和绘制该机械系统的行为。最后,我们通过比较通过数据集提供不同参数值的两个振荡器来执行假设分析。
正在建模的系统
质量悬挂A弹簧和阻尼器上。此处显示的第一个状态表示时间=0 时的初始点,就在质量释放时。第二个状态代表当身体静止并且弹簧力与重力平衡时的最终点。
创建 SysML模型
SysML 中的块模型有一个主要模块,即振荡器。振荡器有四个部分:固定顶板、弹簧、阻尼器和质量体。为这些部分中的每一个创建一个块。 Oscillator块的四个部分通过端口连接,代表机械法兰。
成分 |
描述 |
---|---|
端口类型 |
用于 1D 过渡机械域中法兰的块 'Flange_a' 和 'Flange_b' 相同,但作用略有不同,有点类似于电气域中 PositivePin 和 NegativePin 的作用。力通过法兰传递。所以 flow 属性Flange.f的属性isConserved应该设置为True 。
|
块和端口 |
|
内部结构 |
为“振荡器”创建内部块图 (IBD)。为固定天花板、弹簧、阻尼器和质量体添加属性,由相应的 Blocks 键入。用连接器连接端口。
|
约束 |
为简单起见,我们直接在块元素中定义约束;您可以选择定义约束块,在块中使用属性,并将它们的参数绑定到块的属性。 |
两个振荡器比较计划
在我们对模型进行建模后,我们想做一些假设分析。例如:
- 具有不同阻尼器的两个振荡器有什么区别?
- 如果没有阻尼器怎么办?
- 两个不同弹簧的振荡器有什么区别?
- 两个不同质量的振荡器有什么区别?
- 创建一个名为“OscillatorCompareModel”的块
- 为“OscillatorCompareModel”创建两个属性,称为振荡器1 和振荡器2,并使用块振荡器键入它们
设置数据集并运行仿真
创建一个配置工件其分配给这个包。然后创建这些数据集:
- 阻尼器:小与大
为 'oscillator1.damper1.d' 提供值 10,为 'oscillator2.damper1.d' 提供较大的值 20
- 阻尼器:否 vs 是
为 'oscillator1.damper1.d 提供值 0; ('oscillator2.damper1.d' 将使用默认值 25)
- 弹簧:小与大
提供 'oscillator1.spring1.c' 的值 6000 和 'oscillator2.spring1.c' 的较大值 12000
- 质量:轻与重
为“oscillator1.mass1.m”提供值 0.5,为“oscillator2.mass1.m”提供较大的值 2
配置的页面如下所示:
在“仿真”页面上,选择“OscillatorCompareModel”,绘制“oscillator1.mass1.s”和“oscillator2.mass1.s”,然后选择一个创建的数据集并运行仿真。
提示:如果绘图列表中的属性过多,您可以使用列表标题上的时间菜单切换过滤器栏,然后在本例中键入“上下文”。
这些是模拟结果:
- 阻尼器,小与大:阻尼器越小,车身振动越大
- 阻尼器,否 vs 是:振荡器在没有阻尼器的情况下永远不会停止
- 弹簧,小与大:“c”较小的弹簧会摆动得更慢
- 质量,轻与重:质量较小的object会更快地振动并更快地调节