by Andrew Lunev on 20 Apr 2017, 20:05
Готовых примеров на Labview вы скорее всего не найдете. Скорее надо искать примеры в Matlab. Да и при чем здесь вообще конкретный язык программирования? Вам надо сначала разработать алгоритм, а он никак не привязан к конкретной реализации. Потом этот алгоритм можно реализовать на любом языке программирования. Тем более, раз это учебная задача, то вам потребуется обоснование выбора, необходимые расчеты и доказательства эффективности данного алгоритма перед другими.
Можете попробовать разобраться с самонастраивающимся регулятором из стандартного набора Labview, но это будет не разработка, а применение и насколько он вообще работает я не знаю. Но, думаю, грамотное исследование его работы, сравнение с другими и нормальные выводы вполне сойдет даже для дипломной работы.
Кривая разгона (переходная характеристика) - это не просто любой переходной процесс, а именно реакция системы на единичное ступенчатое входное воздействие. Притом, для большей части алгоритмов требуется переходная характеристика разомкнутой системы, чтобы оценить именно динамику только объекта управления. О какой пассивной идентификации вы в этом случае говорите, если вы обязаны подать именно определенный сигнал на вход да еще и возможно разомкнуть систему. Это уже активная идентификация и она обязательно нарушит нормальный процесс регулирования. Поэтому про анализ кривой разгона можете забыть и искать другие методы.
Одна из основных особенностей САУ тепловыми процессами является то, что процесс нагрева и остывания описывается совершенно разными моделями, к тому же чаще всего процесс остывания неуправляем. Процесс нагрева определяется в основном эффективностью нагревателя, а процесс охлаждения окружающей средой. У вас же есть только нагреватель, но нет холодильника. Все адаптивные алгоритмы, с которыми я знаком рассматривают только адаптацию по одной модели, поэтому при смене нагрева на охлаждение будет резкая перенастройка алгоритма и в эти моменты алгоритм будет работать ужасно, ему же нужно время на адаптацию. А в момент поддержания постоянной температуры нагрев и охлаждение меняются постоянно. Если это не учитывать в алгоритме адаптации, то будет все очень плохо. Скорее всего работать будет намного хуже, чем обычный ПИД-регулятор.
Еще одна проблема - нелинейности. Практически все алгоритмы и явной и неявной адаптации рассматривают процесс, как строго линейный и модель системы используют линейную. При значительном отклонении процесса от точки линеаризации ошибки идентификации, а следовательно и адаптации становятся настолько высоки, что опять же стандартный ПИД-регулятор начинает работать лучше.
В моменты, когда нагреватель выходит на границы своего режима работы (выключается полностью или выходит на 100% мощности) алгоритм адаптации вообще уходит в разнос в большинстве алгоритмов, потому что регулятор может попросить выдать и например 1000% мощности в определенный момент, но реально больше 100% не получим. Но алгоритм адаптации ожидает реакцию выхода именно на 1000% вход, а получает реакцию на 100%, вот уже ошибка в 10 раз в идентификации и качестве управления. Существуют разные методы устранения влияния насыщения у исполнительного механизма, но чаще всего они просто выключают процесс адаптации в эти моменты, но тогда при выходе снова в линейную зону надо начинать процесс адаптации снова, а в оптимальной по энергоэффективности системе исполнительный механизм чаще всего находится или в максимуме или в минимуме. Поэтому никто не даст гарантию, что адаптивный алгоритм будет ВСЕГДА работать лучше, чем ПИД. А для реальных объектов лучше чтобы они хоть не оптимально, но работали всегда, чем когда есть высокая вероятность, что алгоритм адаптации не сойдется и система уйдет в разнос.
В итоге, универсального и реально работающего адаптивного регулятора я пока не встречал. Можно разработать такой регулятор под определенный объект управления, но с другим объектом он работать скорее всего не будет. Требуется учет и всех видов потенциальных возмущающих воздействий и всех видов нелинейностей, а потом еще надо будет обосновать его эффективность и надежность во всех режимах. Сделать это аналитически невозможно для нелинейных систем. Поэтому весь процесс анализа, синтеза, доказательств надежности и эффективности по затратам и времени и денег становится менее выгодным, чем обычный ПИД-регулятор.
Не забывайте, что в САУ существуют не только ПИД-регуляторы, но и более сложные. Я бы вашу задачу решал просто введением зависимости коэффициентов регулятора от вектора параметров. То есть коэффициенты ПИД-регулятора не будут константами, а будут функциями какого-то вектора состояния. Чем размерность вектора будет больше, тем точней можно настроить процесс. Например, я бы в этот вектор включил: текущую температуру воды, объем воды (если есть датчик уровня и по нему можно посчитать объем), температуру окружающей среды (для вас температура в помещении). От разности температуры воды и температуры окружающей среды будет зависеть скорость охлаждения. Еще бы конечно добавил скорость вращения вентилятора, но это будет уже читерство. Тогда по вектору этих параметров можно найти аппроксимацию коэффициентов, чтобы в каждой точке состояния добиться качественного процесса регулирования. Но это уже совсем не адаптивное управление и для учебного задания будет не так интересно.