主要内容

通过使用状态转换表模型继电器式控制控制器

代表一个有限状态机状态转换表的顺序表格格式的模态逻辑。而不是在Stateflow绘图状态和转换®图表,您可以使用一个状态机的状态转换表模型简洁,紧凑的格式,需要最少的维护图形对象。有关更多信息,请参见使用状态转换表以表格的形式表达时序逻辑

设计要求

这个例子展示了如何建模一个继电器式控制控制器的温度调节锅炉、使用状态转换表。控制器必须打开和关闭锅炉设计符合下列要求:

  • 高温度不能超过25摄氏度。

  • 低温度不能低于23摄氏度。

  • 稳态操作需要的加热时间10秒。

  • 声音报警信号时,锅炉必须立即关闭。

  • 声音警报信号时,锅炉可以再次打开。

识别系统属性

您可以确定继电器式控制控制器的操作模式和数据要求根据其设计要求。

操作模式

锅炉的高级操作模式是:

  • 正常运行,当没有声音报警信号。

  • 报警状态,在一个报警信号。

在正常操作期间,锅炉可以在三种状态之一:

  • ,当温度高于25摄氏度。

  • 热身,在第一次10秒。

  • 稳态热身10秒后,当温度低于23摄氏度。

数据需求

砰砰的枪声控制器需要以下数据。

范围 描述 变量名
输入 高温度设定值 reference_high
输入 低温设定值 reference_low
输入 报警指示器 报警
输入 警报指示器 清晰的
输入 目前锅炉的温度 临时
当地的 锅炉热身完成指标 doneWarmup
输出 命令设置锅炉模式:,热身,或 boiler_cmd

添加一个新的状态转换表

在这个练习中,你添加一个状态转换表来一个包含所需的仿真软件Simulink仿真模型块,除了继电器式控制控制器。金宝app

实现自己的模型,遵循这些步骤。否则,你可以打开完成模型

1。打开示例。

2。删除这五个输出端口和单一输入端口。

3所示。对模型添加一个状态转换表块。

添加状态和层次结构

代表锅炉的操作模式,增加国家和层次结构的状态转换表。

  1. 打开状态转换表。

  2. 代表高级操作模式:正常,报警。

    1. 双击state1重命名它正常的

    2. 双击state2重命名它报警

  3. 代表正常运行的三个州的亚态正常的:

    1. 右键单击正常的状态,选择插入行>儿童心理状态行这个新国家,名字

    2. 重复步骤一个两次创造孩子的状态热身,在这个秩序。

    默认情况下,当有歧义,独家(或)状态变得活跃在每一个层级。出于这个原因,正常的国家出现违约转换。这个配置这个模型满足设计要求。设置一个默认状态,右键单击并选择状态设置为默认

你的状态转换表如下表。

状态转换表有两个顶级状态称为正常和报警。正常的有三个亚态取消、预热和。

现在,您可以为每个州指定动作。

指定国家的行为

描述的行为发生在每个州,指定表中的状态的行为。在这个练习中,您初始化的操作模式,由于锅炉进入正常和报警状态,使用变量boiler_cmddoneWarmup(描述的数据需求)。

  1. 在以下状态,点击后状态名称,出版社输入和类型指定的输入操作。

    在状态: 类型: 产生的行为
    条目:boiler_cmd = 0;doneWarmup = false;
    关闭锅炉和表明,锅炉没有热身。
    热身
    条目:boiler_cmd = 2;
    开始变暖锅炉。
    条目:boiler_cmd = 1;
    打开锅炉。
    报警
    条目:boiler_cmd = 0;
    关闭锅炉。
  2. 保存状态转换表。

你的状态转换表如下表。

用指定的输入操作状态转换表。

现在,您可以指定条件和操作从一个状态过渡到另一个状态。

指定转换条件和行动

表明当改变从一个操作模式到另一个,表中的指定转换条件和动作。在这个练习中,你构造语句中使用变量描述数据需求

  1. 正常的状态行,输入:

    如果
    (报警)
    报警

    在模拟:

    1. 第一次进入时,图表激活正常的状态。

    2. 在每个时间步,通过正常运行周期,热身,州,直到报警条件为真。

    3. 当报警条件为真时,锅炉过渡到报警状态,并立即关闭。

  2. 状态行,输入:

    如果
    (临时< = reference_low)
    热身

    在模拟,当锅炉的当前温度低于23摄氏度,锅炉开始热身。

  3. 热身状态行,输入:

    如果 else if
    (doneWarmup) ((10秒)后)
    {doneWarmup = true;}

    在仿真过程中,锅炉升温10秒钟,然后过渡到状态。

  4. 状态行,输入:

    如果
    (临时> = reference_high)

    在模拟,当当前锅炉的温度高于25摄氏度,锅炉关闭了。

  5. 报警状态行,输入:

    如果
    (清晰)
    正常的

    在仿真中,警报条件为真时,锅炉回到正常模式。

  6. 保存状态转换表。

你的状态转换表如下表。

用指定的转换条件和操作状态转换表。

现在,您可以使用符号向导添加数据定义。

定义数据

当你创建一个状态转换表,使用MATLAB语法,有语言要求C / c++代码生成。其中一个要求就是你定义的大小,类型和所有MATLAB的复杂性®变量,这样它们的属性可以在编译时确定。即使你还没有显式定义的状态转换表中的数据,您可以使用向导象征。在仿真过程中,向导提醒您未解决符号象征,推断它们的属性,并将丢失的数据添加到表中。

  1. 在仿真软件金宝app®模型中,选择运行

    两个对话框出现:

    • 诊断观众表明你有未解决的状态转换表中的符号。

    • 象征向导试图解决缺失的数据。向导正确推断的范围除了输入所有数据报警和清晰

      向导显示状态转换表中未解决的符号象征。

  2. 在象征向导中,正确的范围报警清晰的通过选择输入从下拉列表范围。

  3. Model Explorer打开时,验证标志正确向导添加所有必需的数据定义。

    一些输入的被分配到错误的端口。

  4. 在模型浏览器的内容窗格,重新分配输入端口,如下所示:

    分配: 端口:
    reference_low 2
    reference_high 1
    临时 5
    报警 3
    清晰的 4
  5. 保存状态转换表。

  6. 关闭诊断观众和Model Explorer。

在仿真软件模型金宝app中,定义的输入和输出,你出现在状态转换表。现在,您可以将这些输入和输出连接到信号模型和运行模式。金宝app

连接转换表和运行模式

  1. 在仿真软件模型金宝app中,连接状态转换表模型的输入和输出:

    完成了仿真软件模型。金宝app

  2. 保存模型。

  3. 重启你的状态转换表。

  4. 仿真通过选择开始运行

    作为模拟运行时,您可以观看动画状态转换表中的激活不同的州。

以下输出出现在了块范围。

仿真结果显示范围。

执行交互式调试时,可以设置断点不同状态和视图数据值在不同的模拟。关于调试的更多信息,请参阅设置断点调试图表

相关的话题