【Simulink系列】NO1:sf_aircontrol模型学习笔记
趁着“武汉肺炎”居家隔离的关键时期,十四天练就simulink武林高手。
NO1:sf_aircontrol模型
MATLAB自带模型,MATLAB官网有关模型的说明链接
模型如下图所示:
1、stateflow事件定义问题
定义两个事件,SWITCH和CLOCK,同时要注意,其触发形式为Either,这样仿真时,才不会报“Port width mismatch”的错误。
2、如何定义初始值问题
需求中提到,初始温度为70℃,因此需要设置仿真模型的初始值,方法一是在积分器中设置初始值,具体如下:
3、Multi-Port Switch用法
Data port order中,选择过零,表示下面数字从0开始,选择one,表示下面数字从1开始,选择specify indices,表示可以自由设置。
图形中第一行的输入值是多少,表示其输出是序号为多少的输入值,如下图,
若A=0,则输出的K1为0.01
若A=2,则输出的K1为0.1
4、stateflow如何设置互斥 (OR) 状态和并行 (AND) 状态
• 互斥 (OR) 状态表示互斥的工作模式。在同一层级上不能有两个互斥状态同时被**或执行。Stateflow 以实心矩形表示每个互斥状态。
• 并行 (AND) 状态表示独立的工作模式。虽然并行状态会依次执行,但可以有两个或多个并行状态同时处于**状态。Stateflow 用虚线矩形表示每个并行状态,其中的数字表示其执行顺序。
默认的状态分解类型是 OR(互斥)。要更改分解类型,请右键点击父状态并选择 Decomposition > AND (Parallel)。
5、in()函数含义
控制器使用两个风扇来工作。当气温升至 120 度以上时,启动第一个风扇。当气温升至 150 度以上时,启动第二个风扇以提供额外的冷却。图将这两个风扇建模为并行状态 FAN1 和 FAN2,在控制器打开时这两个状态都会被**。除工作阈值不同以外,这两个风扇都具有表示两种风扇工作模式(On 和 Off)的相同状态和转移配置。
第三个并行状态 SpeedValue 根据每个时间步内循环启动的风扇数来计算输出数据 airflow 的值。当 FAN1 的 On 状态被**时,布尔表达式 in(FAN1.On) 的值为 1。否则,in(FAN1.On) 等于 0。in(FAN2.On) 的值指示 FAN2 是处于循环打开还是关闭状态。这些表达式的总和表示在每个时间步中打开的风扇的数量。
6、设置并行状态的显式排序
Stateflow 软件默认情况下会根据图中的创建顺序来为并行状态分配执行顺序。该行为称为显式排序。在此练习中,您将会为图中的每种并行状态显式设置执行顺序。
在 Stateflow Editor 中,选择 File > Model Properties > Chart Properties。
在 Chart 属性对话框中,确认选中了复选框 User specified state/transition execution order 并点击 OK。
针对并行模式中各状态执行顺序,应该严格按照相关系统原理进行设置。设置步骤如下:
a. 键点击每种并行状态的内部以显示其状态属性子菜单。
b. 在该子菜单中,选择 Execution Order 并进行以下分配.
7、遗留问题待解决
stateflow中使用了SWITCH事件作为电源开关,但是simulink模型中为什么使用了两个曲线合并的数据作为事件触发的输入,即SWITCH和CLOCK,具体曲线如下图,这个是为什么?为什么要用这样的事件数据?