![]() |
Simulink和Monoflops
我使用的是Matlab 7,在创建单稳态触发器时遇到了问题,该触发器将在特定时间上升为“ 1”,然后下降到“ 0”。如何使用Matlab / Simulink 7做到这一点?我没有其他版本,因此不能使用较新版本的“ Monostable”块。
有任何想法吗? 迎接诗丹 [B]回答:[/B] 有两种方法可以执行此操作,具体取决于您是希望脉冲(即“单稳态触发器”)在预定时间发生还是要响应另一个信号(例如上升沿)... [B]在预定时间创建脉冲: [/B] 如果要创建一个在时间tOnset从0 tOnset 1的单个脉冲,然后在经过时间tDur之后又tDur 0,则可以使用[URL="http://www.mathworks.com/help/toolbox/simulink/slref/step.html"]Step块[/URL] , [URL="http://www.mathworks.com/help/toolbox/simulink/slref/transportdelay.html"]Transport Delay块[/URL]和[URL="http://www.mathworks.com/help/toolbox/simulink/slref/add.html"]Sum块进行操作[/URL] 。这是布局的样子: [IMG]https://i.stack.imgur.com/Ugx9L.png[/IMG] 您可以将“ [B]Step[/B] ”块的“ [B]Step time[/B] ”设置为“ tOnset ,将[B]“[/B] Transport Delay”块的“ [B]Time delay[/B] ”设置为“ tDur ,然后从原始信号中减去延迟的信号。 [B]创建一个响应上升沿的脉冲: [/B] 这会有点复杂。它将需要两个[URL="http://www.mathworks.com/help/toolbox/simulink/slref/detectincrease.html"]检测增加块[/URL] ,一个[URL="http://www.mathworks.com/help/toolbox/simulink/slref/relay.html"]中继块[/URL] ,一个[URL="http://www.mathworks.com/help/toolbox/simulink/slref/transportdelay.html"]传输延迟块[/URL] ,一个[URL="http://www.mathworks.com/help/toolbox/simulink/slref/gain.html"]增益块[/URL]和一个[URL="http://www.mathworks.com/help/toolbox/simulink/slref/add.html"]求和块[/URL] 。这是布局的样子: [IMG]https://i.stack.imgur.com/tHfwb.png[/IMG] 假设您的输入信号是1或0,则当输入从0步进到1时,第一个“检测增加”模块将输出1。通过将“继电器”模块的“ [B]打开”点[/B]设置为0.5,将“ [B]关闭”点设置[/B]为-0.5, ,这将在继电器中产生[URL="http://en.wikipedia.org/wiki/Hysteresis"]迟滞[/URL] ,从而在检测到上升沿时出现短暂脉冲后,输出将[I]保持[/I] “ on”状态(即输出为1)。 要在指定时间tDur之后使中继块切换回“关闭”状态(即输出为0),可以将传输延迟块的[B]时间延迟[/B]设置为tDur 。在反馈回路将输出1的检测增加块时从0到1的信号延迟的步骤,和该输出然后由增益块的[B]增益[/B]设定为2进行缩放。 从输入信号中减去该增益后,无论正输入是什么(0或1),该增益将确保Sum块的输出可拉至-0.5以下,从而确保达到Relay块的[B]关断点[/B]当延迟信号具有上升沿时(即经过tDur之后),其输出关闭。这样做的一个结果是,在第一个上升沿[I]后[/I]的模型的输入和[I]在[/I]所述时间中发生的任何附加的上升沿tDur将被忽略。一旦模型的输出返回到0,模型输入的下一个上升沿将触发另一个脉冲。 [url=https://stackoverflow.com/questions/4677914]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:30。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.