专栏
标签
利用EnDuEx状态语句实现状态机中变量赋值的过程
技术分享
发布于 2025-07-22 10:47:46
查看 2过去315天

以搭建如下图所示的状态机为例:

其中 ramp 模块表示一条初始值为 3 斜率为 -1 的直线。
image.png
En 语句代表刚进入某状态时第一个仿真步中执行的语句。

Du 语句代表维持于当前状态时执行的语句。

Ex 语句代表跳出当前状态的最后一个仿真步执行的语句。
操作步骤:
1.打开 Sysplorer,单击快速新建下拉框,选择 Sysblock 模型,在弹出的新建控制器模型弹窗中,输入控制器模型名等信息,单击确定,打开 Sysblock 建模界面。image.pngimage.png
2. 单击Sysblock模块库,进入StateMachine,将Chart拖入建模区域,同样方法将Sources下的ramp和Port下的outport也拖入建模区域,如下图所示:image.png
3. 双击ramp模块,在弹出的模块参数弹框中将斜率设置为-1,初始输出设为3。其中 ramp 模块表示一条初始值为 3 斜率为 -1 的直线。image.png
4. 双击chart,进入状态机内部,拖入2次State到建模区域。image.png
5. 在state中写入以下语句:
state中写入:

en:
x := 1;
du:
x := 2;
ex:
x := 3;

state1中写入:

en:
du:
x := 5;
ex:
x := 6;

image.png
6.在建模空白区域右击,选择编辑状态及变量。
image.png
7.在状态机变量中,设置输出端口x。
image.png
8.设置输入端口a 。
image.png
9.单击state 边框,出现转移线,连接到state1中,并设置条件为a<0,如图所示:image.png
10.单击 ,返回状态机首页,如图所示进行连接。
image.png
11.单击仿真设置,将仿真终止时间设置为5,步长设置为0.1,切到输出页签,勾选存储事件时刻的变量值。
image.png
image.png
12.单击仿真,进行仿真操作,仿真结束后,侧边栏出现仿真浏览器。
image.png
13.在仿真浏览器中,勾选outport和y,出现如图曲线窗口。image.png
14.结果分析:
当 ramp 值大于零时,进入 state 状态,执行 en 语句,值为 1 ,一个步长后,执行 du 语句,状态机的输出值变为 2 。

当 ramp 值小于零时,符合 a < 0 ,在进入 state1 状态前会执行上个状态的 ex 语句,此时状态机的输出值从 2 变为 3 再变为 5 。

可以通过曲线双游标,查看结果。
image.png

所属专栏:Sysplorer基础平台
产品信息:Sysplorer系统建模仿真环境
其他

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天