matlab求真值表,使用真值表对组合逻辑建模

使用真值表对组合逻辑建模

真值表通过简洁的表格形式来实现组合逻辑设计。真值表的典型应用包括以下决策:

故障检测与管理

模式切换

真值表仅在 Simulink® 中受支持。

您可以将 Truth Table 模块直接添加到您的 Simulink 模型中,也可以在 Stateflow® 图、状态或子图中定义真值表函数。Simulink 模型中的 Truth Table 模块作为 Simulink 模块执行,而 Stateflow 图中的真值表函数仅在您调用真值表函数时执行。函数的位置确定可以调用函数的状态和转移的集合。

如果想从一个状态(或子图)及其子状态内调用函数,只需将真值表置于该状态或子图中。该函数将覆盖该状态或子图的父级中同名的任何其他函数。

如果想要在图的任意位置调用函数,需将真值表置于与图同一层次的位置。

如果要从模型中的任何图调用该函数,请将真值表放在图级别,并启用图级别函数的导出。有关详细信息,请参阅Export Stateflow Functions for Reuse。

注意

真值表函数可以访问在 Stateflow 层次结构中位于其上方的图和状态数据。真值表的布局

以下真值表函数的名称为 ttable。它接受三个参数(x、y 和 z)并返回一个输出值 (r)。

11fcb28311b7ca03c000f058ac80e13d.png

该函数对条件、决策和动作的安排如下。

条件决策 1决策 2决策 3决策 4x == 1τFF-

y == 1FτF-

z == 1FFτ-

动作r = 1r = 2r = 3r = 4

在条件列输入的每个条件的计算结果必须为 true(非零值)或 false(零值)。每个条件的结果指定为 T (true)、F (false) 或 -(true 或 false)。每个决策列通过逻辑 AND 运算符将每个条件的结果结合形成一个复合条件,即所谓的决策。

计算真值表时,一次计算一个决策,从决策 1 开始。决策 4 涵盖了所有可能的剩余决策。如果计算出某个决策的值为 true,该表会执行关联动作,然后结束真值表的执行。

例如,如果条件 x == 1 和 y == 1 为 false 且条件 z == 1 为 true,则决策 3 为 true 且变量 r 设为等于 3。在这种情况下,不会再继续测试剩余决策,真值表的计算到此结束。如果前三个决策为 false,则默认决策将自动为 true,并执行其动作 (r=4)。下表列出了与该真值表示例的计算相对应的伪代码。

伪代码说明if ((x == 1) & !(y == 1) & !(z == 1))

r = 1;如果决策 1 为 true,则设置 r=1。

elseif (!(x == 1) & (y == 1) & !(z == 1))

r = 2;如果决策 2 为 true,则设置 r=2。

elseif (!(x == 1) & !(y == 1) & (z == 1))

r = 3;如果决策 3 为 true,则设置 r=3。

else

r = 4;

endif如果所有其他决策都为 false,则默认决策为 true。设置 r=4。定义真值表函数

要定义真值表函数,请执行下列步骤:

在对象选项板中,点击真值表函数图标 dfec4558a23e17a0603b402c34a73364.png。将指针移到图中要放置新真值表函数的位置。

输入函数的签名标签。

函数签名标签指定函数的名称及其参数和返回值的形式名称。签名标签采用以下语法:

[return_val1,return_val2,...] = function_name(arg1,arg2,...)您可以指定多个返回值和多个输入参数。每个返回值和输入参数可以是一个标量、向量或值的矩阵。对于只有一个返回值的函数,忽略签名标签中的方括号。

您可以对参数和返回值使用相同的变量名称。例如,使用以下签名标签的函数将变量 y1 和 y2 同时用作输入和输出:

[y1,y2,y3] = f(y1,u,y2)如果将此函数导出为 C 代码,y1 和 y2 将通过引用(作为指针)传递,u 通过值传递。通过引用传递输入可减少生成的代码复制中间数据的次数,从而产生更优的代码。

注意

不要将图符号的名称用作函数参数或返回值。例如,如果 x 或 y 是图数据,用签名 y = f(x) 定义函数会导致运行时错误。

要对该函数进行编程,请双击函数框打开真值表编辑器。

在真值表编辑器中,添加条件、决策和动作。有关详细信息,请参阅 编写真值表。

在 Model Explorer 中,展开图对象并选择真值表函数。函数签名中的参数和返回值显示为属于您的函数的数据项。参数的作用域是 Input。返回值的作用域是 Output。

在每个参数和返回值的 Data 属性对话框中,指定数据属性,如设置数据属性中所述。

创建您的函数所需的其他数据项。有关详细信息,请参阅通过 Model Explorer 添加数据。

您的函数可以访问它自己的数据或属于父状态或图的数据。函数中的数据项可以有以下作用域之一:

Constant - 常量数据在所有函数调用中都保持其初始值。

Parameter - 参数数据在所有函数调用中都保持其初始值。

Local - 本地数据从一个函数调用保留到下一个函数调用。仅对使用 C 语言作为动作语言的真值表有效。

Temporary - 临时数据在每个函数调用开始时初始化。仅对使用 C 语言作为动作语言的真值表有效。

在使用 C 语言作为动作语言的真值表函数中,如果希望数据值在整个仿真期间的各次函数调用之间保持不变,请定义本地数据。如果您要在每次函数调用开始时初始化数据值,请定义临时数据。例如,如果要跟踪调用函数的次数,可以定义一个具有 “Local” 作用域的计数器。相反,如果不需要在函数完成后计数器值保持不变,则可以将循环计数器指定为具有 “Temporary” 作用域。

在使用 MATLAB® 作为动作语言的真值表函数中,您不需要定义本地或临时函数数据。如果您使用未定义的变量,Stateflow 会创建一个临时变量,该变量可用于函数的其余部分。要存储在各次函数调用之间保持不变的值,您的函数可以在图级别访问本地数据。

提示

您可以从 MATLAB 工作区初始化函数中的本地和临时数据。有关详细信息,请参阅 从 MATLAB 基础工作区初始化数据。在状态和转移中调用真值表函数

您可以基于任何状态或任何转移的动作来调用真值表函数。您还可以从其他函数调用真值表函数。如果导出真值表函数,将可以从模型的任何 Stateflow 图中调用它。有关导出函数的详细信息,请参阅Export Stateflow Functions for Reuse。

调用真值表函数的语法与函数签名相同,即用实参替换签名中指定的形参。如果实参和形参的数据类型不同,则函数将实参强制转换为形参的类型。

要调用真值表函数,请使用函数签名,并在函数签名中为每个形参包含一个对应的实参值。如果实参和形参的数据类型不同,函数会将实参转换为形参的类型。指定真值表函数的属性

您可以通过真值表函数的属性对话框为其设置常规属性。要打开函数属性对话框,请右键点击真值表函数框,然后从上下文菜单中选择 Properties。Name

函数名称。点击函数名称链接可使函数显示在其所属图的前端。Function Inline Option

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

“Auto” - 确定是否根据内部计算内联函数。

“Inline” - 如果不将函数导出到其他图并且它不是递归的一部分,则内联函数。(如果函数直接调用自身或通过另一个函数调用间接调用自身,则存在递归。)

“Function” - 不内联函数。Label

函数的签名标签。函数签名标签指定函数的名称及其参数和返回值的形式名称。Action Language

控制 Stateflow 真值表函数的动作语言。在 MATLAB 或 C 之间进行选择。有关详细信息,请参阅 使用 MATLAB 和 C 作为动作语言语法时的差异。Description

函数说明。您可以为层次结构中的函数输入简要说明。Document Link

函数的在线文档链接。您可以输入 Web URL 地址或者能以合适的在线格式(例如 HTML 文件或 MATLAB 命令行窗口中的文本)显示文档的 MATLAB 命令。点击 Document link 超链接时,Stateflow 会显示该文档。

相关主题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StateflowStateflowStateflow StateflowStateflowStateflowStateflow 是有限状态机 有限状态机 有限状态机 (finite state machinefinite state machinefinite state machine finite state machinefinite state machine finite state machine finite state machine finite state machine finite state machinefinite state machine finite state machinefinite state machinefinite state machine)的图形工具, )的图形工具, )的图形工具, )的图形工具, 它通过开发有限 通过开发有限 通过开发有限 状态机和流程图扩展 状态机和流程图扩展 状态机和流程图扩展 状态机和流程图扩展 了 SimulinkSimulinkSimulinkSimulinkSimulinkSimulinkSimulinkSimulink的功能。 的功能。 StateflowStateflowStateflow StateflowStateflowStateflowStateflow 使用自然、可读和易理解的形式 使用自然、可读和易理解的形式 使用自然、可读和易理解的形式 使用自然、可读和易理解的形式 使用自然、可读和易理解的形式 使用自然、可读和易理解的形式 , 可使复杂的逻辑问题 复杂的逻辑问题 复杂的逻辑问题 复杂的逻辑问题 变得清晰与简单,并且还 变得清晰与简单,并且还 变得清晰与简单,并且还 变得清晰与简单,并且还 变得清晰与简单,并且还 变得清晰与简单,并且还 与 MATLABMATLABMATLAB MATLABMATLAB\SimulinkSimulinkSimulinkSimulinkSimulinkSimulinkSimulinkSimulink紧密集成,为包 紧密集成,为包 紧密集成,为包 紧密集成,为包 含控制、优先级管理工作模式逻辑的嵌 含控制、优先级管理工作模式逻辑的嵌 入式系统 设计提供了有效的 开发手段,是 开发手段,是 本书的核心内容之一。读者在 本书的核心内容之一。读者在 本书的核心内容之一。读者在 本书的核心内容之一。读者在 本书的核心内容之一。读者在 本书的核心内容之一。读者在 5~8 5~8章将看到 章将看到 StateflowStateflowStateflow Stateflow StateflowStateflowStateflow应用 于 MCUMCUMCU器件的嵌入式开 器件的嵌入式开 器件的嵌入式开 器件的嵌入式开 发, 尤其 显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利显得心应手,一些采用 传统方法难于实现的算如果利StateflowStateflowStateflow Stateflow StateflowStateflow 建 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 模却非常容易。大到导弹、航空天器的控制,小点亮一个发光二极管 ,StateflowStateflowStateflow Stateflow StateflowStateflow 都非常称职。 都非常称职。 都非常称职。 StateflowStateflowStateflow StateflowStateflowStateflowStateflow 状态图模型 状态图模型 状态图模型 ,还可利用 ,还可利用 ,还可利用 ,还可利用 StateStateState Stateflow Coderlow Coder low Coderlow Coderlow Coder low Coder代码生成工具, 代码生成工具, 代码生成工具, 代码生成工具, 直 接生成 C代码。 代

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值