我正在使用 Matlab 7 并且在创建单翻牌时遇到问题,该单翻牌应在特定时间内加注到“1”,然后再下降到“0”。如何使用 Matlab/Simulink 7 做到这一点?我没有任何其他版本,所以我不能使用较新版本的“Monostable”块。
有任何想法吗?
问候,波斯克伦
有几种方法可以做到这一点,具体取决于您是否希望脉冲(即“单稳态触发器”)在预定时间发生或响应另一个信号(如上升沿)......
如果您想创建一个从 0 步进到 1 的单个脉冲tOnset
,然后在经过一段时间后回到 0 tDur
,您可以使用Step 模块、Transport Delay 模块和Sum 模块来执行此操作。这是布局的样子:
您可以将Step 模块的Step time设置为 ,将 Transport Delay 模块tOnset
的Time delaytDur
设置为,然后从原始信号中减去延迟信号。
这会有点复杂。它将需要两个检测增加块、一个中继块、一个传输延迟块、一个增益块和一个求和块。这是布局的样子:
假设您的输入信号是 1 或 0,当输入从 0 变为 1 时,第一个检测增加模块将输出 1。通过将继电器模块的开关点设置为 0.5 并将开关点设置为 -0.5 ,这将在继电器中产生滞后,使得在检测到上升沿时出现的短暂脉冲之后,输出将持续处于“开启”状态(即输出 1)。
要让 Relay 模块在指定时间后切换回“关闭”状态(即输出 0)tDur
,您可以将Transport Delay 模块的Time delaytDur
设置为。当延迟信号从 0 变为 1 时,反馈回路中的 Detect increase 模块将输出 1,然后通过将 Gain 模块的 Gain 设置为 2 来缩放该输出。
当从输入信号中减去时,该增益将确保无论正输入是什么(0 或 1),Sum 模块的输出都可以拉到 -0.5 以下,从而确保达到 Relay 模块的关闭点当延迟信号有上升沿时(即经过之后tDur
),其输出关闭。这样做的一个结果是,模型输入中在第一个上升沿之后和这段时间内出现的任何其他上升沿tDur
都将被忽略。一旦模型的输出返回 0,模型输入的下一个上升沿将触发另一个脉冲。