У меня есть модель динамической системы в 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
), скорость все еще очень мала, что может привести к некорректному сигналу 1
, если используется цикл if.
Я думаю, что использование S-функции может быть лучшим решением, но тогда мне придется использовать фиксированный шаг времени. Есть ли какие-то решения Simulink для решения этой проблемы?
Является ли время удержания всегда одинаковым? Как вы определяете, что период удержания не должен начинаться снова, если после сохранения скорости все еще мало? (Кстати, почему вы считаете, что S-функция заставит вас использовать фиксированный шаг? Это маловероятно.) –
Время удержания всегда одно и то же. Это связано с тем, что сила возбуждения является колебательной. В результате фиксация или удержание произойдет один раз для положительного смещения и один раз, когда смещение отрицательно в течение каждого волнового цикла. –
У меня было ощущение, что использование S-функции потребует фиксированного шага, потому что я планировал использовать количество вызовов для определения продолжительности трюма с постоянной памятью. –