我在Simulink中有一个动态系统的模型(我不能改变编程框架)。它可以被描述为受周期性振荡影响的振荡器。我试图控制它的运动,特别是为了最大限度地发挥它的作用(用于发电)。当锁定控制(一种常用的控制策略)时,其想法是在设备速度为0的情况下,在预定义时间内“锁定”,即锁定设备,然后释放它直到其速度再次达到0。保持恒定信号
所以,我需要在Simulink做的是输出信号1
一旦速度信号达到(或接近)0
,拿着它固定的时间段(在1
),然后松开(信号变成0
),并且一旦速度再次达到0
就重复该过程。
我找到了一个好博客上Simulink中保持信号不变: http://blogs.mathworks.com/simulink/2014/08/06/how-do-you-hold-the-value-of-a-signal/
然而,在我的情况,我有确定信号两个条件:速度的幅度和时间周期内的时间。现在,问题是,只要周期结束并释放设备(信号= 0
),速度仍然很小,如果使用if循环,可能会导致信号错误1
。
我认为使用S函数可能是最好的解决方案,但是接下来我将不得不使用固定的时间步长。有没有针对这个问题的任何Simulink原生解决方案?
保持时间总是一样吗?如果保持速度仍然很小,您如何确定保持期不应该再次开始? (顺便说一句,你为什么认为S函数会迫使你使用固定的步骤?这是非常不可能的。) –
保持时间总是相同的。这是因为激振力是振荡的。结果,锁定或保持将在正向位移时发生一次,而在每个波周期中位移为负向时会发生一次。 –
我感觉使用S函数需要一个固定的步骤,因为我打算使用呼叫数来确定持久存储器的持续时间。 –