专栏
标签
Sysplorer中如何搭建多选择器模块?
技术分享
发布于 2025-07-21 16:22:19
查看 1过去316天

1.打开 Sysplorer 软件并加载 Modelica 标准库;
image.png

2.快速新建一个空模型;
image.png

3.在模型浏览器中搜索 “swicth”,并开启结果过滤,可以搜索到标准库中自带的几个选择器模块,其中:
• “Modelica.Blocks.Logical.LogicalSwitch” 是 bool 型选择器模块,通过一个 bool 输入来控制得到二选一的 bool 输出;
• “Modelica.Blocks.Logical.Switch” 是实数型选择器
• “Modelica.Blocks.Logical.IntegerSwitch” 是整型选择器
image.png

4.关闭结果过滤功能,找到之前快速新建的模型后,在其中拖入一个实数型选择器模块;
image.png

5.按如下图进行建模,对标准库中的整型选择器进行测试。
建模原理是添加两个实数型常量模块、一个布尔型常量模块和一个实数型输出模块;
image.png

6.选中组件 “const” 打开组件参数面板,设置其常量值为 1;设置 “const1” 的常量值为 2;布尔型常量模块的默认值是 true;
image.png

此时模型代码如下:

model Model38
  Modelica.Blocks.Logical.Switch switch1 
    annotation (Placement(transformation(origin = {-5.02564, -9.33333}, extent = {{-10, -10}, {10, 10}})));
  Modelica.Blocks.Sources.Constant const(k=1) 
    annotation (Placement(transformation(origin = {-98.9399, 24.1413}, extent = {{-10, -10}, {10, 10}})));
  Modelica.Blocks.Sources.Constant const1(k=2) 
    annotation (Placement(transformation(origin={-99.3357,-53.4276}, 
extent={{-10,-10},{10,10}})));
  Modelica.Blocks.Sources.BooleanConstant booleanConstant 
    annotation (Placement(transformation(origin={-99.3357,-9.49824}, 
extent={{-10,-10},{10,10}})));
  Modelica.Blocks.Interfaces.RealOutput y 
    annotation (Placement(transformation(origin={113.187,-10.2898}, 
extent={{-10,-10},{10,10}})));
  annotation(Diagram(coordinateSystem(extent={{-100,-100},{100,100}}, 
  grid={2,2})));
equation
  connect(y, switch1.y) 
  annotation(Line(origin={60,-10}, 
  points={{53.187,-0.2898},{-54.02564,-0.2898},{-54.02564,0.66667}}, 
  color={0,0,127}));
  connect(const.y, switch1.u1) 
  annotation(Line(origin={-52,11}, 
  points={{-35.9399,13.1413},{34.9744,13.1413},{34.9744,-12.33333}}, 
  color={0,0,127}));
  connect(booleanConstant.y, switch1.u2) 
  annotation(Line(origin={-52,-12}, 
points={{-36.3357,2.50176},{34.9744,2.50176},{34.9744,2.66667}}, 
color={255,0,255}));
  connect(const1.y, switch1.u3) 
  annotation(Line(origin={-53,-35}, 
  points={{-35.3357,-18.4276},{35.9744,-18.4276},{35.9744,17.66667}}, 
  color={0,0,127}));

end Model38;

7.点击启动仿真;
image.png

8.仿真完毕后,软件会自动跳转到仿真页面。勾选变量 “y” 显示其曲线,可以观察到此时 “y” 的输出为 1;
image.png

9.返回建模页面,设置布尔型常量模块的值为 false 后再次进行仿真;
image.png

10.再次观察仿真结果,此时 “y” 的输出为 2;
image.png

11.标准库自带的模块都是一个布尔型常量值控制两个输出,以下介绍如何控制多个输出。
快速新建一个模型,并在其中拖入一个整型输入模块、四个实数型输入模块还有一个实数型输出模块;
image.png

12.切换到模型文本,在其中添加等式;
image.png

model Model39
  Modelica.Blocks.Interfaces.RealOutput y 
    annotation(Placement(transformation(origin={110,0}, 
extent={{-10,-10},{10,10}}), 
iconTransformation(origin={0,0})));
  Modelica.Blocks.Interfaces.RealInput u 
    annotation (Placement(transformation(origin={-120,80}, 
extent={{-20,-20},{20,20}}), 
iconTransformation(origin={0,0})));
  Modelica.Blocks.Interfaces.RealInput u1 
    annotation (Placement(transformation(origin={-120,40}, 
extent={{-20,-20},{20,20}}), 
iconTransformation(origin={0,0})));
  Modelica.Blocks.Interfaces.RealInput u2 
    annotation (Placement(transformation(origin={-120,-40}, 
extent={{-20,-20},{20,20}}), 
iconTransformation(origin={0,0})));
  Modelica.Blocks.Interfaces.RealInput u3 
    annotation (Placement(transformation(origin={-120,-80}, 
extent={{-20,-20},{20,20}}), 
iconTransformation(origin={0,0})));
  Modelica.Blocks.Interfaces.IntegerInput u4 
    annotation (Placement(transformation(origin={-120,0}, 
extent={{-20,-20},{20,20}}), 
iconTransformation(origin={0,0})));
  annotation(Diagram(coordinateSystem(extent={{-100,-100},{100,100}}, 
grid={2,2})));
equation
  if u4 == 1 then
    y = u;
  elseif u4 == 2 then
    y = u1;
  elseif u4 == 3 then
    y = u2;
  elseif u4 == 4 then
    y = u3;
  else
    y = u;
  end if;
end Model39;

13.再次新建一个空模型后将之前建立好的 Model39 四选择器模型拖入其中,并拖入四个实数型常量模块、一个整型常量模块和一个实数型输出模块。同时设置四个实数型常量模块值为1、2、3、4;
image.png

14.分别设置整型常量模块的参数 k 值为 1、2、3、4 后启动仿真观察输出结果 y的值;
image.png
可以看到结果随输入控制的更改而发生更改;

所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
系统建模

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天