主要内容

用真值表模型组合逻辑

真值表实现组合逻辑设计简洁,表格格式。真值表的典型应用包括:决策

  • 故障检测和管理

  • 模式切换

在独立Stateflow真值表不支持金宝app®在MATLAB图表®

你可以添加一个真值表块直接向你的仿真软件金宝app®模型,或者你可以定义一个真值表函数Stateflow图,状态,或子图表。真值表块在仿真软件模型执行模型金宝app块,真值表函数在Stateflow图只有当你调用的真值表函数执行。函数的位置确定的状态和转换集可以调用该函数。

  • 如果您想要调用的函数在一个州或子图表及其亚态,将你的真值表函数状态或子图表。这个函数将覆盖其他函数同名的父母和祖先的状态或子图表。

  • 如果你想在任何地方调用这个函数在一个图表,将你的真值表函数在表级别。

  • 如果你想调用该函数从任何图在你的模型中,把你的真值表在表级别,使绘图水位函数的输出。有关更多信息,请参见出口Stateflow功能以便重用

请注意

真值表函数可以访问图和状态数据上面Stateflow层次结构。

真值表的布局

这个事实表函数的名称ttable。这需要三个参数(x,y,z),并返回一个输出值(r)。

函数由这种安排条件,决定和行动。

条件

决定1

决定2

决定3

决定4

x = = 1

T

F

F

- - - - - -

y = = 1

F

T

F

- - - - - -

z = = 1

F

F

T

- - - - - -

行动

r = 1 r = 2 r = 3 r = 4

每一个进入的条件条件列必须求值为真(非零值)或false(零值)。结果为每个条件指定为T(真实),F (false),或者——(真或假)。每个决定列结合的结果为每个逻辑条件,复合条件,这被称为一个决定。

你评估一个真值表决定,开始决定1。的决定4涵盖了所有可能的剩余的决定。如果一个人的决定是正确的,表执行相关操作,然后真值表执行完成。

例如,如果条件x = = 1y = = 1是错误的和条件z = = 1是真的,那么决定3是真的和变量r等于3。剩下的决定都不是真值表的测试和评估完成。如果前三的决定是错误的,那么默认自动决定真正及其操作(r = 4)执行。此表列出了伪代码对应的评价这真值表的例子。

伪代码

描述

如果((x = = 1) & ! (y = = 1) & ! (z = = 1) r = 1;

如果决定1是真的,那么准备好了吗r = 1

elseif (!(x = = 1) & (y = = 1) & ! (z = = 1) r = 2;

如果决定2是真的,那么准备好了吗r = 2

elseif (!(x = = 1) & ! (y = = 1) & (z = = 1) r = 3;

如果决定3是真的,那么准备好了吗r = 3

其他r = 4;endif

如果所有其他的决定是错误的,那么默认的决定是正确的。集r = 4

定义一个真值表函数

定义一个真值表函数:

  1. 在对象面板,点击图标的真值表函数

  2. 图表画布上,单击位置的真值表的功能。

  3. 输入函数的签名标签。

    函数的签名标签为函数指定一个名字和正式名称的参数和返回值。一个签名标签有语法:

    [return_val1, return_val2,…]= function_name (__arg1,最长,…)
    您可以指定多个返回值和多个输入参数。每一个返回值和输入参数可以是一个标量,矢量,或矩阵的值。函数只有一个返回值,省略括号的签名标签。

    您可以使用相同的参数和返回值的变量名。例如,一个函数与这个签名标签使用的变量日元y2作为输入和输出:

    (y1、y2、y3) = f (y1, u, y2)
    如果这个函数导出到C代码,日元y2通过引用传递(指针),u通过价值。通过引用传递输入的次数,降低了中间数据生成的代码副本,从而导致更优化的代码。

    请注意

    不要使用图表符号的名称作为参数或返回值函数。例如,如果xy图表数据,定义一个函数的签名y = f (x)结果在一个运行时错误。

  4. 程序的功能,通过双击打开真值表编辑器框的函数。

  5. 在真值表编辑器中,添加条件下,决策和行动。有关更多信息,请参见计划一个真值表

  6. 在Model Explorer中,扩大图表对象并选择事实表函数。函数的参数和返回值的签名显示为数据项属于你的函数。参数的范围输入。返回值的范围输出

  7. 数据属性对话框中为每个参数和返回值,指定数据的属性,如中描述设置数据属性

  8. 创建需要的任何其他数据项的功能。有关更多信息,请参见通过模型浏览器中添加数据

    你的函数可以访问自己的数据或数据属于父状态或图表。数据项的函数可以有一个的范围:

    • 常数常量数据保留其初始值通过函数调用。

    • 参数——参数数据保留其初始值通过函数调用。

    • 当地的——从一个函数调用本地数据持续到下一个函数调用。有效的只有事实表,使用C作为行动的语言。

    • 临时——临时数据初始化的函数调用。有效的只有事实表,使用C作为行动的语言。

    在事实表函数,使用C作为动作语言,定义本地数据,当你想让你的数据值持续在整个模拟函数调用。定义临时数据当你想要初始化数据值的每一个函数调用。例如,您可以定义一个计数器当地的如果你想跟踪范围的次数,你调用这个函数。相反,您可以指定一个循环计数器临时如果你不需要计数器值范围持续函数完成后。

    在事实表函数,使用MATLAB作为动作语言,您不需要定义本地或临时数据的函数。如果你使用一个未定义的变量,Stateflow创建一个临时变量,其余的功能可用。存储值保存在函数调用你的函数可以访问本地数据在表级别。

    提示

    你可以初始化局部和暂时从MATLAB函数空间中的数据。有关更多信息,请参见从MATLAB基础工作空间初始化数据

调用真值表函数的状态和转换

你可以叫真值表函数操作的任何州或过渡或从其他函数。如果你出口一个真值表函数,你可以叫它从任何图表模型中。导出函数的更多信息,请参阅出口Stateflow功能以便重用

叫一个真值表函数,使用函数签名,包括实际的参数值为每一个正式的参数在函数签名。

[return_val1, return_val2,…]= function_name (__arg1,最长,…)

如果实际的和正式的参数的数据类型不同,函数将实际参数形式的类型参数。

指定属性的真值表的功能

您可以指定一个真理的属性表函数在Model Explorer或真值表的属性对话框。

  • 使用模型资源管理器:

    1. 模型浏览器打开,建模选项卡上,选择模型浏览器

    2. 模型层次结构窗格中,选择事实表函数。

    3. 真值表窗格中,编辑事实表函数属性。

  • 用真值表属性对话框:

    1. 在Stateflow编辑器中,右键单击真值表函数。

    2. 选择属性

    3. 编辑事实表函数属性。

您还可以指定真值表函数编程方式通过使用属性Stateflow.TruthTable对象。关于Stateflow编程接口的更多信息,请参阅Stateflow API的概述

的名字

函数名。单击函数名称链接到把你的前景在本土图表。

内联函数的选择

控制你的内联函数生成的代码:

  • 汽车——决定内联函数基于一个内部计算。

  • 内联——内联函数如果你不出口到其他图表和它不是一个递归的一部分。(如果你存在递归函数调用本身直接或间接通过另一个函数调用)。

  • 函数——不内联函数。

标签

函数签名标签。函数的函数签名标签指定一个名字和正式名称的参数和返回值。

不指定

控制水平的诊断不指定你的真值表的功能。有关更多信息,请参见正确的Overspecified和真值表

Overspecification

控制水平的诊断overspecification表函数在你的真理。有关更多信息,请参见正确的Overspecified和真值表

动作语言

控制的动作语言Stateflow真值表函数。MATLAB和c之间做出选择的更多信息,请参阅MATLAB和C之间的差异作为动作语言的语法

描述

功能描述。您可以输入简短的描述功能的层次结构。

文档链接

链接到在线文档的功能。您可以输入一个web URL地址或MATLAB命令显示在合适的在线文档格式,比如HTML文件或文本在MATLAB命令窗口。当你点击文档链接超链接,Stateflow显示文档。

为真值表块指定属性

打开真值表属性对话框中,在建模选项卡上,单击表属性

的属性真值表块的组合性质的事实表函数和图表,使用MATLAB作为行动的语言。每个属性的描述,请参阅指定属性的真值表的功能指定属性Stateflow图表

您还可以指定真值表块属性以编程方式使用Stateflow.TruthTableChart对象。关于Stateflow编程接口的更多信息,请参阅Stateflow API的概述

另请参阅

相关的话题