一、状态
1、状态动作组成
图1-1 典型状态动作组成
2、常用状态动作列表
图1-2 状态动作类型
3、特殊案例说明
①,广播事件动作
以单次广播事件动作为例, 关键词为 on event_name, 其中 event_name 表示某一广播事件名, 事件名应是唯一的。 如图 1-3所示, 系统处于状态 A, 当检测到事件 stop, 立即执行 c()
图1-3 广播时间动作
②,bind 动作
关键词为 bind。 如图1-4所示, 变量 y、 事件 start 被绑定在状态 A, 这表示仅有 A 状态及其子状态有权限修改变量 y 并广播事件 start, 其他状态 B 能够读取变量 y、 监听到事件 start, 但无权修改变量 y、 广播事件 start。
图1-4 Bind 动作案例
若运行该状态图, 系统提示变量 y 仅能由状态 A 及其内部的状态迁移修改, 事件 start 仅能在状态 A,会出现如图1-5所示错误提示。
图 1-5 错误提示
与其他动作不同, bind 动作不需要判断当前状态是否已激活, 也就是说它在整个 Stateflow 状态图范围内都是有效的, 因此不同状态不允许约束同一个变量与事件。如图 1-6所示, 状态 A、 B 同时约束了变量 y, 系统提示这是不允许的。
图1-6 无效Bind动作
图1-7 错误提示
二、迁移
1、迁移一般格式:event[condition]