真值表函数以简洁的表格格式实现组合逻辑设计。真值表的典型应用包括以下决策:
故障检测和管理
模式切换
例如,此真值表函数的名称为ttable。它接受三个参数(x、y和z),并返回一个输出值(r)。
该功能由条件、决策和动作组成。
在"Condition "列中输入的每个条件都必须计算为true(非零值)或false(零值)。每个条件的结果指定为T(真)、F(假)或-(真或假)。每个决策列将每个条件的结果与逻辑AND组合成复合条件,称为决策。
从决策1开始,一次评估一个决策的真值表。默认决策涵盖了所有可能的剩余决策。如果其中一个决策为真,则执行其操作,然后完成真值表执行。
例如,如果条件x1和y1为假,条件z==1为真,则决策3为真,变量r设置为3。其余的决定没有经过测试,真值表的评估已经完成。如果前三个决策为假,则默认决策自动为真,并执行其操作(r=4)。此表列出了与此真值表示例的评估相对应的伪代码。
定义真值表函数
1、在对象选项板中,单击真值表函数图标。将指针移动到图表中新真值表函数的位置。
2 输入函数的签名标签,如声明函数参数和返回值中所述。
3 对真值表函数进行编程。
4 在模型资源管理器中,展开图表对象并选择真值表函数。函数签名的参数和返回值显示为属于函数的数据项。参数的作用域为Input。返回值的作用域为Output。
5 在每个参数和返回值的"data properties"对话框中,指定数据属性。
6 创建你的函数所需的任何其他数据项。
你的函数可以访问自己的数据或属于父状态或图表的数据。函数中的数据项可以具有以下范围之一:
Local------本地数据从一个函数调用持续到下一个函数调用。仅适用于C图表。
Constant ------常量数据在所有函数调用中都保持其初始值。
Parameter ------参数数据在所有函数调用中都保持其初始值。
Temporary ------临时数据在每次函数调用开始时初始化。仅适用于C图表。
在使用MATLAB®作为动作语言的图表中,您不需要定义临时函数数据。如果使用未定义的变量,Stateflow®会创建一个临时变量。该变量可用于函数的其余部分。
你可以从MATLAB工作区初始化函数数据(参数和返回值除外)。
声明函数参数和返回值
函数签名标签指定了函数的名称及其参数和返回值的正式名称。签名标签具有以下语法:
matlab
[return_val1, return_val2,...] = function_name(arg1, arg2,...)
您可以指定多个返回值和多个输入参数。每个返回值和输入参数都可以是标量、向量或值矩阵。对于只有一个返回值的函数,省略签名标签中的括号。
您可以为参数和返回值使用相同的变量名。例如,具有此签名标签的函数使用变量y1和y2作为输入和输出:
matlab
[y1, y2, y3] = f(y1, u, y2)
如果将此函数导出为C代码,y1和y2将通过引用(作为指针)传递,u将通过值传递。通过引用传递输入可以减少生成的代码复制中间数据的次数,从而得到更优化的代码。
状态与转换中调用真值表函数
您可以从任何状态或转换的操作中调用真值表函数。您还可以从其他函数调用真值表函数。如果导出真值表函数,则可以从模型中的任何图表调用它。
调用真值表函数的语法与函数签名相同,实际参数替换签名中指定的形式参数。如果实际参数和形式参数的数据类型不同,函数会将实际参数转换为形式参数的类型。
如果函数签名的形式参数是标量,请验证函数调用的输入和输出是否遵循标量展开的规则。
指定真值表函数的属性
您可以通过真值表函数的属性对话框为其设置常规属性。要打开函数属性对话框,请右键单击真值表函数框,然后从上下文菜单中选择Properties 。
Name
函数名称。单击函数名称链接,将你的函数带到其本图表前面。
Function Inline Option
控制生成代码中函数的内联:
Auto --确定是否根据内部计算内联函数。
Inline ------如果你不将函数导出到其他图表,并且它不是递归的一部分,则内联你的函数。(如果你的函数直接或间接地通过另一个函数调用来调用自己,则存在递归。)
Function ------不内联你的函数。
Label
功能的签名标签。
Underspecification
控制真值表函数中未指定的诊断级别。
Overspecification
控制真值表功能中超速诊断的级别。有关详细信息,请参阅更正过指定和未指定的真值表。
Action Language
控制Stateflow真值表函数的操作语言。在MATLAB或C之间进行选择。
Description
功能说明。您可以在层次结构中输入功能的简要描述。
Document Link
链接到该功能的在线文档。您可以输入web URL地址或MATLAB命令,以适当的在线格式显示文档,例如HTML文件或MATLAB命令窗口中的文本。单击"Document link"超链接时,Stateflow将显示文档。