Итак, есть регулятор, который регулирует амплитуду.
Сигнал подаётся на вход устройства в форме: y=A*sin(wt+phi)
На выходе тоже синусоида, и стоит специальный вычислитель, который получает амплитуду выходного сигнала Aout. Эта амплитуда должна быть равна Aset. Стоит обычный ПИ-регулятор, который прибавляет или вычитает исходную A так, чтобы получилось Aout=Aset. Обращаю сразу внимание на то, что Aout (выходная) и A (входная) измеряются в разных единицах по физическим причинам, поэтому численно совершенно друг другу не равны, даже по порядку величины.
Проблема: Амплитуда A иногда регулируется нормально, а иногда начинает неконтролируемо расти до бесконечности. 50 на 50.
Причина: Прервав выполнение программы во время неконтролируемого роста, я обнаружил, что амплитуда A сильно отрицательная!
С точки зрения выдачи сигнала в принципе фиолетово, будет выдаваться сигнал y=100*sin(wt) или y=-100*sin(wt). Но вот для регулятора это не фиолетово.
Амплитуда отрицательная только входная, а вот выходная считается правильно -- она всё время положительная. Ну и получается:
...
Вычислена выходная амплитуда: 10000.
Надо, чтобы было: 500.
Вывод: входную амплитуду надо уменьшить. На сколько уменьшить -- это определяется настроечными коэффициентами, но, допустим, на 100.
Текущая амплитуда: -100.
Новая амплитуда: -200.
Ну и продолжается этот процесс до бесконечности: чем меньше текущая (отрицательная) входная амплитуда, тем больше вычисленная выходная амплитуда. Это приводит к неостановимому росту модуля входной амплитуды.
С этим разобрались: я поставил условие, не позволяющее уменьшать амплитуду, если результат меньше нуля. Осталось понять, как она вообще попадает в отрицательную область. А ответ прост:
Сверху: "нормальное" перерегулирование: амплитуда "проскакивает" целевое значение, но потом возвращается обратно.
Снизу: из-за начального значения амплитуды, либо из-за особенностей подборки коэффициентов регулирования происходит вот что. Перерегулирование приводит к попаданию амплитуды в отрицательную область! А после этого расзнос регулятора неизбежен.