互斥 (OR) 状态分解
带有实线边框的子状态表示互斥 (OR) 状态分解。此分解可用于描述互斥工作模式。当状态拥有互斥 (OR) 分解时,一次只能有一个子状态激活。
并行 (AND) 状态分解
带有虚线边框的子状态表示并行 (AND) 状态分解。使用此分解可以描述并行工作模式。当状态拥有并行 (AND) 分解时,所有子状态同时激活。
首先我使用互斥状态来搭建一个模型,默认先执行FAN1的程序,当温度大于120度时,开启风扇1,当温度小于等120度时,关闭风扇1。当温度大于150度时开启风扇2,小于150度时,关闭风扇2.
然后生成一下代码看下是否如我们预期
可以看到代码是if else将每个条件一层层嵌套,最终只能执行到一个条件。这样的模型是错误的,不符合需求。即FAN1和FAN2互斥,不能同时执行到。
我们应该使用并行状态来搭建模型,将FAN1和FAN2改为并行模式,图表方框就变为虚线了,然后生成下代码看看
可以看到FAN1和FAN2已经是并行的状态了,都可以执行到,执行顺序是按照图表右上角的数字标号来执行的,即FAN1先执行,然后FAN2执行。