以搭建如下图所示的状态机为例:
其中 ramp 模块表示一条初始值为 3 斜率为 -1 的直线。

En 语句代表刚进入某状态时第一个仿真步中执行的语句。
Du 语句代表维持于当前状态时执行的语句。
Ex 语句代表跳出当前状态的最后一个仿真步执行的语句。
操作步骤:
1.打开 Sysplorer,单击快速新建下拉框,选择 Sysblock 模型,在弹出的新建控制器模型弹窗中,输入控制器模型名等信息,单击确定,打开 Sysblock 建模界面。

2. 单击Sysblock模块库,进入StateMachine,将Chart拖入建模区域,同样方法将Sources下的ramp和Port下的outport也拖入建模区域,如下图所示:
3. 双击ramp模块,在弹出的模块参数弹框中将斜率设置为-1,初始输出设为3。其中 ramp 模块表示一条初始值为 3 斜率为 -1 的直线。
4. 双击chart,进入状态机内部,拖入2次State到建模区域。
5. 在state中写入以下语句:
state中写入:
en:
x := 1;
du:
x := 2;
ex:
x := 3;
state1中写入:
en:
du:
x := 5;
ex:
x := 6;

6.在建模空白区域右击,选择编辑状态及变量。

7.在状态机变量中,设置输出端口x。

8.设置输入端口a 。

9.单击state 边框,出现转移线,连接到state1中,并设置条件为a<0,如图所示:
10.单击 ,返回状态机首页,如图所示进行连接。

11.单击仿真设置,将仿真终止时间设置为5,步长设置为0.1,切到输出页签,勾选存储事件时刻的变量值。


12.单击仿真,进行仿真操作,仿真结束后,侧边栏出现仿真浏览器。

13.在仿真浏览器中,勾选outport和y,出现如图曲线窗口。
14.结果分析:
当 ramp 值大于零时,进入 state 状态,执行 en 语句,值为 1 ,一个步长后,执行 du 语句,状态机的输出值变为 2 。
当 ramp 值小于零时,符合 a < 0 ,在进入 state1 状态前会执行上个状态的 ex 语句,此时状态机的输出值从 2 变为 3 再变为 5 。
可以通过曲线双游标,查看结果。
