Каскадный контур управления Arduino
Я пытаюсь реализовать каскадную систему управления с внутренним контуром скорости и внешним контуром положения.
Отдельно и без каскадного управления я легко реализовал управление положением и управление скоростью благодаря «библиотеке pid».
Я понятия не имею, как преобразовать выходные данные положения из pid положения в опорную скорость.
Буду признателен за любую помощь, поскольку у меня нет информации по этой теме. Спасибо и с уважением
@Syed Tirmizi, 👍2
1 ответ
Это не конкретная тема Arduino, но вот просто прагматичный ответ:
Используйте выходной сигнал ПИД-регулятора непосредственно в качестве опорной скорости, вычтите фактическую скорость и используйте ее в качестве входных данных для скорости ПИД-регулятора. Единицы в этом случае не волнуют.
Вы должны убедиться, что параметры вашего положения ПИД хорошо отрегулированы, это создаст проблемы с единицами измерения.
Вот пример для понимания (учитывается только усиление P):
Если вы хотите проехать из А в Б на машине, а расстояние от А до Б составляет 10 км, то желаемое положение — 10 км, и я бы выбрал скорость около 100 км/ч. Итак, в этом примере вы начинаете с отклонения регулирования 10 км – 0 км = 10 км. Если вы выберете P-усиление, равное 10, выходной сигнал ПИД-регулятора будет равен 100, что является идеальной эталонной скоростью, если скорость задана в км/ч.
Но если вы измеряете расстояние не в км, а в м, контрольное отклонение будет (10.000м - 0м = 10.000м), при коэффициенте усиления P, равном 10, вы в конечном итоге получите опорную скорость 100.000км/ h, что в данном случае не является подходящей опорной скоростью.
Теперь кто-то может возразить, что в моем примере, если вы хотите проехать из A в C, а C находится на расстоянии 1000 км, вы получите исходную скорость 10 000 км/ч, что тоже не подходит, но это там, где ограничения ПИД-регулятора полезны, просто установите их для этого примера на 130 км/ч, и вы все равно получите соответствующую опорную скорость, а ваша часть интегратора не будет работать бесконечно.
Вы можете посмотреть на усиление I и D аналогичным образом.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
Да, я понял, спасибо, @Syed Tirmizi
@SyedTirmizi, пожалуйста, надеюсь, твоя система работает. :-), @RJPlog