文章目录
- 1.外部转移与内部转移
- 1.1 stateflow
- 1.2 分析
- 2.外部转移内部转移超转移
- 2.1 stateflow
- 2.2 video
1.外部转移与内部转移
1.1 stateflow
1.2 分析
- 首先是 x=y=z=0,然后进入 A 状态,此时 A 的 en 激活,x=x+1,即 x=1
- 其次进入默认状态 A1,en 激活,x=x+2,即 x=3
- 此时各项的值:
x=3, y=0, z=0
- 先判断外部转移 A–> B 的条件 x > 4 ,不满足则执行状态 A 的 du:y=y+1,即 y=1,再判断 A.A1 的内部条件 y>3,不满足执行 A.A1 的 du:x = x+1; 即 x=4
- 此时各项的值:
x=4, y=1, z=0
-
判断 A—>B 的外部转移条件 x>4,不满足则执行状态 A 的 du: y=y+1,即 y=2;判断 A.A1 的内部条件 y>3,不满足;再执行 A.A1 的 du: x = x+1; 即 x=5
-
此时各项的值:
x=5, y=2, z=0
-
判断 A—>B 的外部转移条件 x>4,满足,则先执行退出子状态的 A.A1 的 ex: x = x+1,即 x = 6;再执行 A 的 ex: z = z + 1,即 z = 1,则进入状态 B,执行 B 的 en: x = x-1,即 x = 5,状态 B.B1 的 en: x = x -1,即 x =4
-
此时各项的值:
x=4, y=2, z=1
-
判断 B–>A 的外部转移 x<-4,不满足则执行状态 B 的 du: y = y-1,即 y = 1;判断 B.B1 的 y<0,不满足,再执行 B.B1 的 du: x=x-1,即 x = 3
-
此时各项的值:
x=3, y=1, z=1
-
判断 B–>A 的外部转移 x<-4,不满足则执行状态 B 的 du: y = y-1,即 y =0;判断 B.B1 的 y<0,不满足,再执行 B.B1 的 du: x=x-1,即 x = 2
-
此时各项的值:
x=2, y=0, z=1
-
判断 B–>A 的外部转移 x<-4,不满足则执行状态 B 的 du: y = y-1,即 y = -1,判断 B.B1 的 y<0,满足,判断 B.B1 中无退出条件,执行转移状态 B.B1–>B.B2,执行 y = y-1,即 y = -2
-
此时各项的值:
x=2, y=-2, z=1
-
判断 B–>A 的外部转移 x<-4,不满足则执行状态 B 的 du: y = y-1,即 y = -3;判断 B.B2 的 y<-2,满足,判断 B.B2 是否有退出条件,无退出条件则进行状态转移 B.B2 --> B.B1,且执行 en: x = x - 1,即 x = 1
-
此时各项的值:
x=1, y=-3, z=1
-
如此反复…
2.外部转移内部转移超转移
2.1 stateflow
2.2 video
外部转移内部转移超转移
- 外部转移的优先级最高,相当于最外层的循环与判断
- 内部转移与超转移根据顺序进行判断
- 先判断外部转移条件,然后执行父状态的 during,再根据顺序进行子状态的转移或超转移,然后执行子状态的 during
- 由 A.A2 --> B.B1 时候,要先执行 A.A2 的 exit,执行 A 的 exit,然后执行 B 的 en,B.B1 的 en