Chart
用有限状态机实现控制逻辑

库:
Stateflow
描述
Chart 模块是基于状态转移图的有限状态机的图形表示形式。在 Stateflow® 图中,状态和转移构成了时序逻辑系统的基本构建块。状态对应于工作模式,转移表示状态之间的路径。有关详细信息,请参阅使用 Stateflow 图对有限状态机进行建模。
为了实现控制逻辑,Stateflow 图可以使用 MATLAB® 或 C 语言作为动作语言。有关详细信息,请参阅使用 MATLAB 和 C 作为动作语言语法时的差异。
图属性指定 Stateflow 图如何与 Simulink® 模型对接。您可以在属性检查器、模型资源管理器或图属性对话框中修改图属性。有关详细信息,请参阅指定 Stateflow 图的属性。您也可以使用 Stateflow.Chart
对象以编程方式修改图属性。有关 Stateflow 编程接口的详细信息,请参阅 Overview of the Stateflow API。
示例
端口
输入
Port_1 — 输入端口
标量 | 向量 | 矩阵
当您在符号窗格中创建输入数据时,Stateflow 会创建输入端口。您创建的输入数据有对应的输入端口,该端口在您创建数据后出现。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
输出
Port_1 — 输出端口
标量 | 向量 | 矩阵
当您在符号窗格中创建输出数据时,Stateflow 会创建输出端口。您创建的输出数据有对应的输出端口,该端口在您创建数据后出现。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| string
参数
设置“代码生成”选项卡上的参数需要具有 Simulink Coder™ 或 Embedded Coder®。
主要
显示端口标签 — 选择如何显示端口标签
“FromPortIcon
” (默认) | “none
” | “FromPortBlockName
” | “SignalName
”
选择如何在 Chart 模块图标上显示端口标签。
- “
none
” 不显示端口标签。
- “
FromPortIcon
” 如果对应的端口图标显示了信号名称,则在 Chart 模块上显示信号名称。否则,显示端口模块名称。
- “
FromPortBlockName
” 在 Chart 模块上显示对应端口模块的名称。
- “
SignalName
” 如果信号名称存在,则显示连接到 Chart 模块上端口的信号的名称。否则,显示相应端口模块的名称。
编程用法
参数:ShowPortLabels |
类型:字符串标量或字符向量 |
值:"none" "FromPortIcon" | "FromPortBlockName" | "SignalName" |
默认值:"FromPortIcon" |
读/写权限 — 选择访问图内容的方式
“ReadWrite
” (默认) | “ReadOnly
” | “NoReadOrWrite
”
控制用户对图内容的访问。
- “
ReadWrite
” 允许打开和修改图内容。
- “
ReadOnly
” 允许打开但不允许修改图。如果图在模块库中,您可以创建和打开该图的链接,创建和修改图的本地副本,但不能更改权限或修改原始模块库实例的内容。
- “
NoReadOrWrite
” 禁止打开或修改图。如果图在模块库中,您可以在模型中创建该图的链接,但不能打开、修改、更改权限或创建图的本地副本。
编程用法
参数:Permissions |
类型:字符串标量或字符向量 |
值:"ReadWrite" | "ReadOnly" | "NoReadOrWrite" |
默认值:"ReadWrite" |
尽量减少出现代数环 — 控制代数环的消除
off (默认) | on
off
不尝试消除任何包含原子子图的人为代数环。
on
尝试消除任何包含原子子图的人为代数环。
编程用法
参数:MinAlgLoopOccurrences |
类型:字符串标量或字符向量 |
值:"off" | "on" |
默认值:"off" |
采样时间 — 指定时间间隔
-1
(默认) | [Ts 0]
指定此图中的所有模块是必须以相同的速率运行,还是可以不同的速率运行。
如果图中的模块可以不同的速率运行,则为图指定继承采样时间 (
-1
)。如果所有模块必须以相同的速率运行,则将与此速率对应的采样时间指定为采样时间参数的值。
如果图中的任何模块指定了不同的采样时间(而不是
-1
或inf
),则当您更新或仿真模型时,Simulink 会显示错误消息。例如,假设图中的所有模块必须以5
次/秒的速率运行。要确保该速率,请将图的采样时间指定为0.2
。在此示例中,如果图中的任何模块指定了除0.2
、-1
或inf
之外的其他采样时间,则当您更新或仿真模型时,Simulink 将显示错误。
-1
指定继承采样时间。如果图中的模块能够以不同速率运行,则使用此采样时间。
[Ts 0]
指定周期性采样时间。
编程用法
参数:SystemSampleTime |
类型:字符串标量或字符向量 |
值:"-1" | "[Ts 0]"
|
默认值:"-1" |
代码生成
函数打包 — 选择代码格式
“自动
” (默认) | “内联
” | “不可重用函数
” | “可重用函数
”
为原子(非虚拟)子图选择生成的代码格式。
- “
自动
” Simulink Coder 根据模型中存在的图实例的类型和数量,为您的系统选择最佳格式。
- “
内联
” Simulink Coder 无条件地内联图。
- “
不可重用函数
” Simulink Coder 在单独的文件中显式生成单独的函数。采用此设置的图生成的函数可能有参量,具体取决于 函数接口, Function interface函数接口Function interface (Simulink) 参数设置。您可以使用参数 函数名称, Function name函数名称Function name (Simulink) 和 文件名(无扩展名), File name (no extension)文件名(无扩展名)File name (no extension) (Simulink) 为生成的函数和文件命名。这些函数不可重入。
- “
可重用函数
” Simulink Coder 可以生成带参量的函数,当模型中包含图的多个实例时,将允许重用图的代码。
此选项可生成带参量的函数,这样就可以在为模型引用层次结构(其中引用的模型包含图的多个实例)生成的代码中重用图代码。在这种情况下,图必须位于库中。
提示
如果您希望将图的多个实例表示为一个可重用函数,可以为每个子系统指定“
自动
”或“可重用函数
”。最好是使用其中一个,因为使用两个会生成两个可重用函数,每个选项生成一个函数。仅当无法重用代码时,这些选项的结果才会有区别。如果选择“自动
”,将无法控制图代码的函数或文件名。“
可重用函数
”和“自动
”选项都会确定是否存在图的多个实例,以及是否可以重用代码。当无法重用代码时,这些选项的行为会有所不同。在这种情况下,“自动
”选项会生成内联代码,或者在禁止内联的情况下为每个图实例生成一个单独的函数。如果您在生成的代码处于源代码管理状态下时选择了“
可重用函数
”,请将文件名选项设置为“使用子系统名称
”、“使用函数名称
”或“用户指定
”。否则,只要您修改模型,代码文件的名称就会改变,从而无法对文件进行源代码管理。
依存关系
此参数要求具有 Simulink Coder。
将此参数设置为“
不可重用函数
”或“可重用函数
”将启用下列参数:函数名称选项
文件名选项
用于初始化/终止函数的内存段(需要 Embedded Coder 和基于 ERT 的系统目标文件)
用于执行函数的内存段(需要 Embedded Coder 和基于 ERT 的系统目标文件)
将此参数设置为“
不可重用函数
”将启用具有独立数据的函数(需要 Embedded Coder 许可证和基于 ERT 的系统目标文件)。
编程用法
参数:RTWSystemCode |
类型:字符串标量或字符向量 |
值:"Auto" | "Inline" | "Nonreusable function" | "Reusable function" |
默认值:"Auto" |
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 Verilog 代码和 VHDL 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
此模块具有一个默认 HDL 架构。
要在 HDL 代码中生成显示激活状态的输出端口,请在图的属性窗口中选择创建监控输出。输出是枚举数据类型。请参阅Simplify Stateflow Charts by Incorporating Active State Output。
要插入将图输出延迟一个仿真周期的输出寄存器,请使用 OutputPipeline (HDL Coder) 模块属性。
ClockDrivenOutput | 启用时钟驱动的输出,以防止组合逻辑驱动输出,并允许在时钟信号和状态更改时立即更新输出。默认设置为 “ |
ConstMultiplierOptimization | 正则有符号数 (CSD) 或因子化 CSD 优化。默认值为 “ |
ConstrainedOutputPipeline | 要通过移动设计中的现有延迟来放置的输出端寄存器的数量。分布式流水线处理不会重新分布这些寄存器。默认值为 |
DistributedPipelining | 流水线寄存器分布或寄存器重定时。默认值为“ |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
InstantiateFunctions | 为每个函数生成 VHDL® |
LoopOptimization | 展开循环、流化循环或不优化循环。默认值为 “ |
MapPersistentVarsToRAM | 将持久数组映射到 RAM。默认设置为 “ |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
ResetType | 隐藏重置逻辑生成。默认值为“ |
SharingFactor | 要映射到单个共享资源的功能等效的资源数量。默认值为 0。另请参阅 Resource Sharing (HDL Coder)。 |
VariablesToPipeline | 警告 不推荐使用 在一个或多个指定的 MATLAB 变量的输出端插入流水线寄存器。将变量列表指定为字符向量,变量之间用空格分隔。 |
此模块支持复信号的代码生成。
要了解使用图的限制,请参阅 Introduction to Stateflow HDL Code Generation (HDL Coder)。
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)