Trigger
向子系统或模型添加触发器或函数端口
库:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
描述
Trigger 模块可以添加外部信号或消息端口来控制子系统或模型的执行。要启用此功能,可在 Subsystem 模块中添加此模块,或在 Model 模块所引用模型的根级别添加此模块。
然后,对 Trigger 模块进行配置,以按下列方式之一执行子系统或模型:
当控制信号的值以您指定的方式更改时,在每个时间步执行一次。
当控制信号是来自 Stateflow® 图、Function-Call Generator 模块或 S-Function 模块的函数调用事件时,在一个时间步执行多次。
基于在控制端口接收的消息。
示例
Using Message Polling and Message Triggered Subsystems
Demonstrate and compare Message Triggered Subsystems and Message Polling Subsystems.
Model Reference Function-Call
Use a Model block that is explicitly triggered by means of its function-call trigger port.
按照模块的执行顺序设置优先级
此模型显示当模块被分配不同执行顺序优先级时会发生什么。模块优先级会影响模块的执行顺序。您可以通过“模块属性”对话框设置模块优先级。从 R2023b 开始,优先级属性仅在执行顺序属性设置为 Based on priority
时可用。对于 R2023b 之前的版本,默认情况下,优先级属性可用。数字越小表示优先级越高。
Model Engine Timing Using Triggered Subsystems
Model a four-cylinder spark ignition internal combustion engine from the throttle to the crankshaft output using triggered subsystems. In this example, the sldemo_engine
model is based on [1].
Engine Timing Model with Closed Loop Control
Develop and implement a closed loop control algorithm for the open loop engine model described in Model Engine Timing Using Triggered Subsystems. In this example, the model sldemo_enginewc
contains a controller that regulates engine speed using a fast throttle actuator such that changes in load torque have minimal effect. The controller is implemented using a discrete PI controller.
端口
输出
Port_1 — 描述控制信号或消息有效负载的值
标量 | 向量 | 矩阵
如果触发器类型是上升沿、下降沿、任一沿或函数调用,则端口输出一个标识控制信号的值,以标量或向量形式返回。对于输入信号的每个元素,在给定时间步的值为:
对于启动上升触发器的信号,为
1
对于启动下降触发器的信号,为
-1
对于函数调用事件,为
2
对于所有其他情况,为
0
如果触发器类型是消息,则端口输出从控制端口接收的消息中提取的数据。
依存关系
要启用此端口,请选择显示输出端口或从触发器类型列表中选择消息。
数据类型: double
| int8
参数
常设
触发器类型 — 选择控制信号的类型
上升沿 (默认) | 下降沿 | 任一沿 | 函数调用 | 消息
选择执行子系统或模型的控制信号的类型。
- 上升沿
当控制信号从负值或零值上升到正值时,触发子系统或模型的执行。如果初始值为负值,信号上升到零则触发执行。
- 下降沿
当控制信号从正值或零值下降到负值时,触发子系统或模型的执行。如果初始值为正值,则信号下降到零会触发执行。
- 任一沿
当控制信号上升或下降时,触发子系统或模型的执行。
- 函数调用
当控制端口接收到来自 Stateflow 图、Function-Call Generator 模块、S-Function 模块或 Hit Crossing 模块的函数调用事件时,执行子系统或模型。
- 消息
当消息在控制端口上可用时,触发子系统的执行。
注意
如果触发器类型设置为消息,则该模块必须放在子系统内部。
编程用法
模块参数:TriggerType |
类型:字符向量 |
值: 'rising' | 'falling' | 'either' | 'function-call' | 'message' |
默认值:'rising' |
视为 Simulink 函数 — 创建 Simulink Function 模块
off
(默认) | on
选择此参数可通过配置 Subsystem 模块,使其成为可使用参量从函数调用方调用的模块,以此来创建 Simulink Function 模块。Trigger 模块必须位于子系统内。您可以编辑显示在模块上的函数原型,以指定模块的输入和输出参量。
清除此参数以删除配置。
依存关系
要启用此参数,请从触发器类型列表中选择函数调用。
编程用法
模块参数:IsSimulinkFunction |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
异步执行函数调用 — 调用函数的调用方请求是否可以等待服务执行
off
(默认) | on
指定是否为包含此 Trigger 端口模块的子系统异步执行 Simulink Function 模块。
选中此复选框可模拟异步执行,其中调用方(客户端)请求调用函数(服务器)。该函数根据在调度编辑器中定义的顺序执行,然后将输出参量返回到调用方。
清除此复选框可模拟同步执行,其中调用方调用函数,函数立即运行,然后将输出参量返回到调用方。
依存关系
要显示并启用此参数,请从触发器类型列表中选择函数调用,然后选择视为 Simulink 函数参数。然后,从函数可见性列表中,选择端口。
编程用法
模块参数:AsynchronousFunction |
类型:字符向量 |
值:'on' | 'off' |
默认值:'off' |
函数名称 — 指定 Simulink Function 模块的函数名称
f
(默认) | 函数名称
指定 Simulink Function 模块的函数名称。您也可以通过在模块上编辑函数原型来指定名称。
f
Simulink Function 模块的默认名称。
- 函数名称
显示在 Simulink Function 模块上的函数名称。
依存关系
要显示并启用此参数,请从触发器类型列表中选择函数调用,然后选中视为 Simulink 函数复选框。
编程用法
模块参数:FunctionName |
类型:字符向量 |
值:'f' | '<function name>' |
默认值:'f' |
函数可见性 — 选择函数的作用域可见性
限定作用域 (默认) | 全局 | 端口
选择 Simulink Function 模块在子系统或模型内的作用域。
- 限定作用域
将函数的可访问性限制为以下范围:
包含 Simulink Function 模块的层次级别以及更低的级别。
当前层级的上一级,但有一定限制。
- 全局
可从模型层次结构的任何部分访问函数。
- 端口
只能通过由 Function Element 模块创建的导出函数端口访问的函数。
依存关系
要显示并启用此参数,请从触发器类型列表中选择函数调用,然后选中视为 Simulink 函数复选框。
编程用法
模块参数:FunctionVisibility |
类型:字符向量 |
值:'scoped' | 'global' | 'port' |
默认值:'scoped' |
示波器到端口 — 指定导出函数端口的名称
''
(默认) | 字符向量
对于具有端口可见性的 Simulink Function 模块,指定由 Function Element 模块创建的导出函数端口的名称,通过该端口可以调用函数。
示例: 'ServerPort'
依存关系
要显示并启用此参数,请从触发器类型列表中选择函数调用,然后选中视为 Simulink 函数复选框。然后,从函数可见性列表中,选择端口。
编程用法
模块参数:ScopeName |
类型:字符向量 |
值:'PortName' |
默认值:'' |
启用变体条件 — 控制是否激活变体控制项(条件)
off
(默认) | on
控制是否激活通过变体控制项参数定义的变体控制项(条件)。
选择此参数可激活子系统的变体控制项。选择此参数将:
启用变体控制项参数。
在模块上显示一个变体标志 ,指示变体条件已启用。
清除此参数可反激活子系统的变体控制项。
依存关系
要显示并启用此参数,请从触发器类型列表中选择函数调用,然后选中视为 Simulink 函数复选框。
编程用法
模块参数:Variant |
类型:字符向量 |
值: 'off' | 'on' |
默认值:'on' |
变体控制项 — 指定变体控制项(条件)表达式
(inherit)
(默认) | 逻辑表达式
指定变量控制项(条件)表达式,当该表达式的计算结果为 true
时执行变体 Simulink Function 模块。
(inherit)
变体控制项的默认值。从模型中相应的 Function Caller 模块继承变体条件。当变体控制项设置为
(inherit)
时,生成预处理器条件句的值将自动从该模型中的 Function Caller 模块继承。- 逻辑表达式
逻辑(布尔)表达式或表示逻辑表达式的
Simulink.VariantExpression
对象。当表达式的计算结果为
true
时将激活函数。如果要为模型生成代码,请将表达式中的变量定义为
Simulink.Parameter
对象。
依存关系
要显示并启用此参数,请从触发器类型列表中选择函数调用,选中视为 Simulink 函数复选框,然后选中启用变体条件复选框。
编程用法
模块参数:VariantControl |
类型:字符向量 |
值: '(inherit)' |<logical expression> | Simulink.VariantExpression object |
默认值:'(inherit)' |
生成预处理器条件句 — 控制条件语句中包含的变体选择项
off
(默认) | on
控制 C 预处理器条件语句中包含的变体选择项。
选择此参数可在为 ERT 目标生成代码时,在 C 预处理器条件语句 (#if) 中包含变体选择项。
依存关系
要显示并启用此参数,请选中启用变体条件复选框。
编程用法
模块参数:GeneratePreprocessorConditionals |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
启用时的状态 — 选择如何设置模块状态值
保持 (默认) | 重置 | inherit
选择当子系统或模型禁用时如何设置模块状态值。
- 保持
将模块状态保留为其当前值。
- 重置
重置模块状态值。
- inherit
使用发起函数调用的父级子系统的
held
或reset
设置。如果发起方的父级为模型根,则继承的设置为held
。如果触发器有多个发起方,则将所有发起方的父级设置为held
或reset
。
依存关系
要启用此参数,请从触发器类型列表中选择函数调用。
只有模型明确启用和禁用函数调用子系统时,此参数设置才适用。例如:
函数调用子系统位于使能子系统中。在这种情况下,模型会随父级子系统一起启用和禁用函数调用子系统。
控制函数调用子系统的函数调用发起方位于使能子系统中。在这种情况下,模型会随包含函数调用发起方的使能子系统一起启用和禁用函数调用子系统以。
函数调用发起方是与特定状态绑定的 Stateflow 事件。请参阅Control Function-Call Subsystems by Using bind Actions (Stateflow)。
函数调用发起方是明确启用和禁用函数调用子系统的 S-Function。有关示例,请参阅
ssEnableSystemWithTid
。
编程用法
模块参数:StatesWhenEnabling |
类型:字符向量 |
值:'held' | 'reset' | 'inherit' |
默认值:'held' |
传播可变大小信号的大小 — 选择何时传播可变大小的信号
执行期间 (默认) | 仅在启用时
选择何时传播可变大小的信号。
- 执行期间
在每个时间步传播可变大小的信号。
- 仅在启用时
仅在执行 Action Port 模块时,或在执行包含 Enable 端口、Trigger 端口且触发器类型设置为函数调用的 Subsystem 模块或 Model 模块时,传播可变大小的信号。如果您选择此选项,采样时间必须为周期性采样时间。
依存关系
要为 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择函数调用。
编程用法
模块参数:PropagateVarSize |
类型:字符向量 |
值:'During execution' | 'Only when enabling' |
默认值:'During execution' |
显示输出端口 — 控制输出端口的显示
off
(默认) | on
控制是否为标识触发信号或函数调用事件信号的信号显示输出端口。
选择此参数可显示输出端口并确定哪个信号启动了触发器信号或函数调用事件。输出端口信号的宽度即为控制信号的宽度。信号值:
对于启动上升触发器的信号,为
1
对于启动下降触发器的信号,为
-1
对于函数调用事件,为
2
对于所有其他情况,为
0
清除此参数可删除输出端口。
依存关系
要显示和启用此参数,请从触发器类型列表中选择消息以外的选项。
编程用法
模块参数:ShowOutputPort |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
输出数据类型 — 选择输出端口的数据类型
auto
(默认) | double
| int8
为标识触发信号或函数调用事件信号的信号选择输出端口的数据类型。
auto
数据类型与输出所连接的端口相同。
double
双精度值。
int8
整数值
依存关系
要启用此参数,请选中显示输出端口复选框。
Trigger 模块将忽略定点工具的数据类型覆盖设置。
编程用法
模块参数:OutputDataType |
类型:字符向量 |
值:'auto' | 'double' | 'int8' |
默认值:'auto' |
采样时间类型 — 选择调用速率
已触发 (默认) | 周期性
选择子系统或模型的调用速率。
- 已触发
适用于包含非周期函数调用的应用程序。函数调用发起方可以在每个时间步执行一次或多次触发的(非周期)函数调用子系统,并且可以提供一系列非周期函数调用事件。
- 周期性
函数调用发起方在每个时间步只能执行一次周期函数调用系统,并且必须提供一系列周期函数调用事件。Stateflow 图就是一个函数调用发起方示例。
依存关系
要启用此参数,请从触发器类型列表中选择函数调用。
编程用法
模块参数:SampleTimeType |
类型:字符向量 |
值:'triggered' | 'periodic' |
默认值:'triggered' |
采样时间 — 指定时间间隔
-1
(默认) | Ts
| [Ts, To]
指定对包含此 Trigger 端口模块的子系统或模型的函数调用之间的时间间隔。如果子系统或模型的实际调用速率与此参数指定的时间间隔不同,Simulink® 将显示错误。
-1
从控制信号中继承时间间隔。
Ts
标量,其中 Ts 是时间间隔。
[Ts, To]
向量,其中 Ts 是时间间隔,To 是初始时间偏移量。
依存关系
要启用此参数,请从触发器类型列表中选择函数调用,并从采样时间类型列表中选择 periodic
。
编程用法
模块参数:SampleTime |
类型:字符向量 |
值:'-1' | 'Ts' | '[Ts, To]' |
默认值:'-1' |
启用过零检测 — 控制过零检测
on
(默认) | off
选择此参数可检测过零。
依存关系
要启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:ZeroCross |
类型:字符向量 |
值: 'on' | 'off' |
默认值:'on' |
初始触发信号状态 — 选择触发信号的初始状态
兼容性(首次计算时不触发) (默认) | 零 | 正值 | 负值
选择触发器控制信号的初始状态。
- 兼容性(首次计算时不触发)
在第一次计算触发信号时不触发。如果选择此选项并且 Trigger 模块位于状态已重置的子系统中,则该模块不会重置。
- 零
零。适合计算在第一个时间步上升或下降的触发信号。
- 正值
正值。适合计算在第一个时间步下降的触发信号。
- 负值
负值。适合计算在第一个时间步上升的触发信号。
依存关系
要显示并激活此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:InitialTriggerSignalState |
类型:字符向量 |
值:'compatibility (no trigger on first evaluation)' | 'zero' | 'positive' | 'negative' |
默认值:'compatibility (no trigger on first evaluation)' |
触发时间 — 指定消息输入触发子系统执行的时间
在消息可用时 (默认) | 在采样时间命中点上
对于由消息输入触发的子系统,请指定执行时间。
- 在消息可用时
每当控制端口上有一个或多个消息可用时便触发子系统的执行并拉取消息。
- 在采样时间命中点上
在每个时间步,检查控制端口上是否有可用的消息。如果有,则拉取一条消息并触发子系统的执行。如果没有可用消息,则不在该时间步执行子系统。
依存关系
要显示和激活此参数,请从触发器类型列表中选择消息。
编程用法
模块参数:TriggerTime |
类型:字符向量 |
值:'on message available' | 'on sample time hit' |
默认值:'on message available' |
作为非周期性分区调度 — 指定执行模式为即时模式还是调度模式
on
(默认) | off
对于由消息可用性触发的子系统,请指定执行模式。
对于即时模式,请清除此复选框。在即时模式下,一旦控制端口上有消息可用,子系统就会执行,这会将消息推送到子系统而没有队列缓冲消息。
对于调度模式,请选中此复选框。调度模式允许子系统在同一时间步上的特定 Simulink 任务后执行。
依存关系
要显示和激活此参数,请从触发器类型列表中选择消息,然后从触发时间列表中选择在消息可用时。
编程用法
模块参数:ScheduleAsAperiodic |
类型:字符向量 |
值:'on' | 'off' |
默认值:'on' |
信号属性
端口维度 — 指定触发信号的维度
1
(默认) | [n]
| [m n]
指定从外部连接到 Model 模块并传递到模块内部的触发信号的维度。
1
标量信号。
[n]
宽度为
n
的向量信号。[m n]
具有
m
行和n
列的矩阵信号。
依存关系
要为模型根级别的 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:PortDimensions |
类型:字符向量 |
值:'1' | '[n]' | '[m n]' |
默认值:'1' |
触发信号采样时间 — 指定时间间隔
-1
(默认) | Ts
| [Ts, To]
指定驱动触发信号的模块的各次模块方法执行之间的时间间隔。
-1
继承时间间隔。
Ts
标量,其中 Ts 是时间间隔。
[Ts, To]
向量,其中 Ts 是时间间隔,To 是初始时间偏移量。
依存关系
要为模型根级别的 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:TriggerSignalSampleTime |
类型:字符向量 |
值:'-1' | 'Ts' | '[Ts, To]' |
默认值:'-1' |
最小值 — 指定触发信号的最小输出值
[]
(默认) | 实数标量
指定从外部连接到 Model 模块并传递到模块内部的触发信号的最小值。
Simulink 使用此值来执行:
仿真范围检查。请参阅指定信号范围。
定点数据类型的自动定标。
所生成代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
[]
不指定最小值。
- 实数标量
实数标量值。
依存关系
要为模型根级别的 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:OutMin |
类型:字符向量 |
值:'[]' | '<real scalar>' |
默认值:'[]' |
最大值 — 指定触发信号的最大输出值
[]
(默认) | 实数标量
指定从外部连接到 Model 模块并传递到模块内部的触发信号的最大值。
Simulink 使用此值来执行:
仿真范围检查。请参阅指定信号范围。
定点数据类型的自动定标。
所生成代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
[]
不指定最大值。
- 实数标量
实数标量值。
依存关系
要为模型根级别的 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:OutMax |
类型:字符向量 |
值:'[]' | '<real scalar>' |
默认值:'[]' |
数据类型 — 选择触发信号的输出数据类型
double (默认) | single | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | boolean | fixdt(1,16) | fixdt(1,16,0) | fixdt(1,16,2^,0) | <数据类型表达式>
选择从外部连接到 Model 模块并传递到模块内部的触发信号的数据类型。
- double
双精度浮点。
- single
单精度浮点。
- int8
有符号 8 位整数。
- uint8
无符号 8 位整数。
- int16
有符号 16 位整数。
- uint16
无符号 16 位整数。
- int32
有符号 32 位整数。
- uint32
无符号 32 位整数。
- int64
有符号 64 位整数。
- uint64
无符号 64 位整数。
- boolean
值为
true
或false
的布尔值。- fixdt(1,16)
未定义二进制小数点位置的有符号 16 位定点数。
- fixdt(1,16,0)
二进制小数点位置设置为零的有符号 16 位定点数。
- fixdt(1,16,2^,0)
斜率设置为
2^0
且偏置设置为0
的有符号 16 位定点数。- <数据类型表达式>
数据类型对象,例如
Simulink.NumericType
。您不能以数据类型表达式的形式输入Simulink.Bus
对象的名称。
依存关系
要为模型根级别的 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:OutDataTypeStr |
类型:字符向量 |
值:'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'boolean' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>' |
默认值:'double' |
模式 — 选择数据类型类别
内置 (默认) | 定点 | 表达式
选择数据类型类别并显示下拉列表以帮助您定义数据类型。
- 内置
显示数据类型和数据类型覆盖的下拉列表。
- 定点
显示符号性、定标和数据类型覆盖的下拉列表。
- 表达式
显示用于输入表达式的文本框。
依存关系
要启用此参数,请选择“显示数据类型助手”按钮 。
编程用法
没有等效的命令行参数。
数据插值 — 控制如何估算缺失的工作区数据
on (默认) | off
控制从 MATLAB® 工作区加载数据时如何估算缺失的工作区数据。
选择此参数可在不存在对应工作区数据的时间步上对输出进行线性插值。
清除此参数可将在此类时间步上的输出设置为等于存在数据的最近时间步上的输出。
依存关系
要为模型根级别的 Trigger 端口模块显示并启用此参数,请从触发器类型列表中选择上升沿、下降沿或任一沿。
编程用法
模块参数:Interpolate |
类型:字符向量 |
值:'on' | 'off' |
默认值:'on' |
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。另请参阅HDL 代码生成。
此模块具有一个默认 HDL 架构。
对于触发器类型设置为函数调用或消息的 Trigger 模块,无法生成 HDL 代码。
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)