Simulink建模与仿真学习笔记之真值表(Truth Table)

1,用法

既可以在simulink中使用,也可以在stateflow中使用。

1.1 Simulink中使用真值表

Simulink中,选择库浏览器=》Stateflow => Truth Table

默认只有一个输入端口u和一个输出端口y。如果要添加端口,先打开Model Explorer,再在其中添加数据。

添加后:

1.2 Stateflow的chart图中使用真值表

点击左边的工具栏:

1.3 编辑真值表

双击打开真值表,可在其中编辑。

真值表主要分为3个部分:条件表(Condition Table)、动作表(Action Table)、决策到动作表的映射。

2,条件表

1,描述(Description)部分是可选的。生成代码时会作为注释。

2,条件(Condition)中也可以添加标签。比如:

3,动作表

(1),可以使用标签。如果没有标签,则用行号来引用。

(2),特殊的动作标签:INIT和FINAL。

INIT的动作会在初始化时自动调用;FINAL的动作会在结束前自动调用。

4,真值表决策

(1)只能输出T、F和-。分别表示TRUE、FALSE、NO_CARE(TRUE或者FALSE)。

(2)可以使用空格键来切换T/F/-。

(3)决策后的动作:填写动作标签,或者行号。(简单的情况可以直接使用行号,但不便于扩展,因为插入一行后,后面的动作所对应的行号会变化,此时应该使用动作标签。)

(4)决策动作,可以指定多个动作,以逗号、分号或者空格分开。

5,真值表执行流程

真值表执行期间,会按从左至右的顺序进行决策测试。决策内各个条件结果的测试顺序未定义。

当实际结果与某一决策匹配时,即会执行在 Action Table Actions 行中为该决策列指定的动作。然后,结束并退出真值表的执行。

6,查看生成的代码。(View Auto-generated Content)

(1) 语言类型

真值表的语言类型也分为C语言和MATLAB语言。

(2)查看生成的内容

点击工具栏中的View Generated Context按钮,可以查看生成的内容。

如果动作语言类型是MATLAB,则生成M脚本:

function c_code

INIT();

C1 = false;
C2 = false;
C3 = false;


% Condition C1

C1 = logical(x==0);

% Condition C2

C2 = logical(y==0);

% Condition C3

C3 = logical(z==0);

if (C1)
    A1();
elseif (~C1 && C2)
    A2();
elseif (~C1 && ~C2 && C3)
    A3();
else % Default
    DA();
end

FINAL();

如果动作语言类型是C,则生成图形函数。

7,语法检查:

Diagnose the Truth Table

Run Diagnostics checks the truth table for syntax errors. See Debug a Truth Table.

附:隐含动作:INIT和FINAL

添加初始动作和最终动作

除了为决策指定动作外,您还可以为真值表函数添加初始动作和最终动作。初始动作指定任何决策测试发生之前执行的动作。最终动作指定在退出真值表之前作为最后一个动作执行的动作。要为真值表指定初始动作和最终动作,在 Action Table 中使用动作标签 INIT 和 FINAL

INIT和FINAL动作也可用于Condition Table的 Actions 行中的动作设定符。

编写真值表

https://ww2.mathworks.cn/help/stateflow/ug/programming-a-truth-table.html#mw_576a0b81-c4ce-4ed1-867a-170c9782336c

使用 Stateflow 真值表构建模型

https://ww2.mathworks.cn/help/stateflow/ug/build-model-with-stateflow-truth-table.html

猜你喜欢

转载自blog.csdn.net/booksyhay/article/details/87621766