|
|
  |
ПИД регулятор на ARM |
|
|
|
Jul 21 2008, 19:45
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(маша @ Jul 21 2008, 15:00)  Ограничение интеграла - это алгоритмическое действие. И может применяться и в плавучке и в целых. В данном случае происходит не ограничение-замораживание интеграла, а его ограничение-коррекция. Нет, давайте, все-таки, поспорим. Я исхожу из 1. Нельзя объять необъятное, и ситуации, когда выход долго находится в насыщении, отслеживаются не ПИД, а тупо тайм-аутами, например, либо иным доступным способом. А ограничение интеграла в плавучке вызовет лишь видимость, что "все под контролем". И теряется "кумулятивный эффект" интегрального терма. 2. Другое дело целые числа. Здесь наскочить на арифметическое переполнение - легко. Поэтому для адекватности вычислений надо вводить ограничение, иначе - конопляные поля Галуа  Ждем-с контраргументов...
|
|
|
|
|
Jul 21 2008, 19:52
|

Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830

|
Цитата(_Pasha @ Jul 21 2008, 09:18)  Ну нельзя же так отжигать, право слово... Там нету накапливающего суммирования pid->fSumError не участвует как приемник данных ни в одном выражении Чето я вас не понимаю. Ну нет у моего процесса ограничения и насыщения как сверху так и снизу. Регулирование осуществляется в диапазоне значений. Поэтому и искусственно ограничивать интегральный терм смысла нет. Я же согласился с вами, что в "ваших" случаях при наличии ограничений это обязательно  Чего же вы пытаетесь найти несуществующую ошибку у меня. Просто вынимательнее рассмотрите программу и найдете то, чего так настойчиво не хотите видеть  Ну не работала бы она с ошибкой так долго
|
|
|
|
|
Jul 22 2008, 05:29
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(_Pasha @ Jul 21 2008, 23:45)  Нет, давайте, все-таки, поспорим. Давайте. Цитата(_Pasha @ Jul 21 2008, 23:45)  1. Нельзя объять необъятное Точно. Цитата(_Pasha @ Jul 21 2008, 23:45)  когда выход долго находится в насыщении, Интеграл интегрирует и интегрирует, интегрирует и интегрирует, интегрирует и интегрирует ... Представьте себе теперь, что будет когда рассогласование изменит знак (т.е. уже надо бы при пропорциональном воздействии менять знак на ШИМ на минус). Реакция будет через очень продолжительное время, т.к. долго будет списываться интеграл, а ШИМ будет стоять на максимуме, но со знаком плюс. Я это объясняю на пальцах для ясности. Прочувствовать влияние несогласоапнных ограничений можно моделированием. Результат. Сделали из устойчивой в малом замкнутой системы неустойчивую при больших воздействиях. Цитата(_Pasha @ Jul 21 2008, 23:45)  2. Другое дело целые числа. Здесь наскочить на арифметическое переполнение - легко. Поэтому для адекватности вычислений надо вводить ограничение, иначе - конопляные поля Галуа  Ждем-с контраргументов... Правильно. Но это только один аспект. Как же без функционально необходимых ограничений по ШИМ. Это, если хотите нормализация для правильной работы. ШИМ бесконечной разрядности в природе не существует.
|
|
|
|
|
Jul 22 2008, 05:38
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 7-11-05
Пользователь №: 10 537

|
Цитата(_Pasha @ Jul 21 2008, 23:45)  Нет, давайте, все-таки, поспорим. Я исхожу из 1. Нельзя объять необъятное, и ситуации, когда выход долго находится в насыщении, отслеживаются не ПИД, а тупо тайм-аутами, например, либо иным доступным способом. А ограничение интеграла в плавучке вызовет лишь видимость, что "все под контролем". И теряется "кумулятивный эффект" интегрального терма. 2. Другое дело целые числа. Здесь наскочить на арифметическое переполнение - легко. Поэтому для адекватности вычислений надо вводить ограничение, иначе - конопляные поля Галуа  Ждем-с контраргументов... 1. Про переполнение целых чисел здесь речь не идет (я не виду), дабы это просто необходимость нормальной работы самого математического аппарата целочисленного ПИД регулятора. 2. Я согласна, что вариант тайм-аутама, отслеживающего знак ошибки и последующим запрещением интегрирования должен быть. Но после смены знака изменения ошибки возможны переходные выбросы, которые скорее всего необходимо гасить алгоритмами безударного перехода, что приведет к затягиванию процесса. 3. А можно не просто запрещать интегрирование, а корректировать значение интеграла (или ввести дополнительную обратную связь по исполнительному устройству), если изменение ошибки сохраняет знак. Пример: дизель-генератор. Регулятор частоты тупо держит частоту, и нагрузка начинает ее давить. Тайм-аут отследил и заморозил интеграл, а частота продолжает падать...После уменьшения нагрузки (сменился знак изменения ошибки) регулятор продолжает "газовать" на том же уровне (разомкнут) , пока не сменится знак ошибки, а при этом дизель ускорится и улетит... А если интеграл корректировать, то после смены знака изменения ошибки, регулятор сразу вступит в работу. Сильно не бейте...
|
|
|
|
|
Jul 22 2008, 05:45
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Dir @ Jul 21 2008, 23:52)  Я уже не знаю с кем спорю. Цитата(маша @ Jul 22 2008, 09:38)  3. А можно не просто запрещать интегрирование, а корректировать значение интеграла В обоих случаях стрктура ПИ регулятора изменяется на П. Насчет корректирования, наверное, имеется ввиду ограничение, иначе ничего не понятно.
|
|
|
|
|
Jul 22 2008, 06:19
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 7-11-05
Пользователь №: 10 537

|
Цитата(alexander55 @ Jul 22 2008, 09:45)  Насчет корректирования, наверное, имеется ввиду ограничение, иначе ничего не понятно. Кажется пора кондишн включать  Сама себя запутала... Корректирование - это ограничение интеграла при достижении выхода регулятора мин или макс значения, I = Umax(min) - P (- D). Вобщем мысль была такая: при ограничении интеграла по знаку ошибки, необходимо учитывать и величину ошибки... всё.
|
|
|
|
|
Jul 22 2008, 07:39
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(alexander55 @ Jul 22 2008, 08:29)  долго будет списываться интеграл, а ШИМ будет стоять на максимуме, но со знаком плюс. Результат. Сделали из устойчивой в малом замкнутой системы неустойчивую при больших воздействиях. В смысле - а ШИМ будет стоять на максимуме, но с противоположным знаком, стремиться вернуть домой отвязавшийся параметр. Обратите внимание, что необходимые запасы по динамическому диапазону воздействий закладываются изначально. Цитата(маша @ Jul 22 2008, 08:38)  Пример: дизель-генератор. В принципе, совершенно нормальный аргумент, но если сказать другими словами: Вышли из зоны регулирования - ПИД выключается - вошли обратно - ПИД включился. Мораль: спорим о разных вещах. Любая нелинейщина кроме ограничения по выходу и подключения интегратора - выделяется в отдельный функциональный блок.
|
|
|
|
|
Jul 22 2008, 08:44
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(_Pasha @ Jul 22 2008, 11:39)  В смысле - а ШИМ будет стоять на максимуме, но с противоположным знаком, стремиться вернуть домой отвязавшийся параметр. Нет. Для простоты и понимания процесса пока забудем про П состовляющую. ШИМ будет стоять на максимуме, т.к. интерграл глубоко в +. Рассогласование уже стало со знаком -, но интерграл долго еще будет выходить из +, т.к. он глубоко ушел в +. Соответственно и ШИМ гонит в +, хотя надо уже в -.
|
|
|
|
|
Jul 22 2008, 09:01
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(alexander55 @ Jul 22 2008, 12:44)  ШИМ будет стоять на максимуме, т.к. интерграл глубоко в +. Рассогласование уже стало со знаком -, но интерграл долго еще будет выходить из +, т.к. он глубоко ушел в +. Соответственно и ШИМ гонит в +, хотя надо уже в -. А про Д-составляющую чё-то забыли? Которая учитывает скорость изменения и "гасит" волновые процессы. Вообще при правильно настроенных коэффициентах обычно никаких велосипедов придумывать не надо. Чем проще, тем лучше. Слишком "интеллектуальная" система иногда ведёт себя неадекватно. Я недавно делал терморегулятор, наворотил там такого... режим начального прогрева, режим вывода на стационарный уровень, грубая подстройка, тонкая подстройка... ужос! Помучился месяц-другой, в результате всё переписал заново, осталось только 2 режима: прогрев с выходом в дельта-окрестность заданной температуры и собственно регулирование. И всё отлично работает!
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 22 2008, 10:16
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(MrYuran @ Jul 22 2008, 13:01)  Я недавно делал терморегулятор, наворотил там такого... режим начального прогрева, режим вывода на стационарный уровень, грубая подстройка, тонкая подстройка... ужос! Помучился месяц-другой, в результате всё переписал заново, осталось только 2 режима: прогрев с выходом в дельта-окрестность заданной температуры и собственно регулирование. И всё отлично работает! Пример разумного подхода. К сожалению, имеется огромное количество "высоконаучных" статей по выбору коэффициентов, их автоматической настройке, сравнению переходных процессов в "стационаре". Там эти коэффициенты с большой точностью подбирают/рассчитывают (вот откуда желание перейти на плавующую точку...), добиваясь никому не нужных рекордов по минимизации отклонений для малых переходных процессов. В результате (на практике) можно получить очень плохую устойчивость при немалых отклонениях (помехах), если не менять алгоритм. А разумный подход состоит в том, что нужно ответить на главный вопрос - что должна обеспечить система управления. Еще замечу, что если есть некоторый (несколько неоптимальный в вышеупомянутом смысле) набор коэффициентов ПИДа, то примерно такую же переходную характеристику может дать другой набор параметров, которые отличаются процентов на 30, что косвенно свидетельствует о запасе грубости...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|