Просмотр полной версии : Параметры PID
Всем привет. Такой вопрос. В PID особо не силён, не доводилось настраивать. В общем проблема такая, сильная "пила" на одном из PID. причём на обоих PID стоят одинаковые параметры, но вот верхний ведёт себе как на скрине (нижний тоже хотелось бы получше конечно). По схеме: Имеется котельная и два контура- верхний и нижний, на каждом контуре по две задвижки, работают синхронно. И вот что происходит - например - температура ниже заданной - клапана открываются, котельная видит увеличение расхода и начинает разгоняться, но когда она разогналась, клапана уже сильно открылись - пошло резкое увеличение температуры. Клапана начали закрываться - расход уменьшается и котельная тормозит, но пока она затормозила, клапана сильно закрыты - температура просаживается- и тд. Причём, нижние графики более гладкие, потому что линия ка бы дальше от котельной. Сейчас у обоих ПИД стоят параметры Kp-5, Ki-500, Kd-0. Каким коэффициентом можно улучшить ситуацию? Или, надо с нуля всё настраивать, начиная всё по нулям, и потом по одному параметру менять?
Проблема может тянется изначально, но просто раньше не было графиков и особо не отслеживалась температура,а вот вывел графики, и увидели такую штуку.
Задвижки аналоговым сигналом управляются ?
Задвижки аналоговым сигналом управляются ?
Да. 0..10В
МихаилГл
27.08.2024, 02:17
А есть более "гладкие" Графики, не с такой пилой. Что за система отображения на верхнем уровне? Судя по поведению похоже на неправильную настройку, но с такой дискретизации измеренных значений очень трудно разглядеть подробности. Если клапана на разных расстояниях от котла, то при одинаковых настройках это и получите. Ищите в сети косвенные методы настройки регуляторов, но с таким шагом отрисовки тяжело будет настроить.
А есть более "гладкие" Графики, не с такой пилой.
Гладкие в каком смысле? Масштаб или что? Если масштаб, то вот, в меньшем временном срезе скрин
Что за система отображения на верхнем уровне?
В плане?...
с таким шагом отрисовки тяжело будет настроить.
Да это понятно, что не получиться идеально настроить, просто хочется добиться минимизации такой пилы...
из написанного вообще не понятно ни чего...
что за задвижки? как и где стоят в котельной?
что за разноцветные полосочки, за что отвечают?
как управляются котлы? на какую температуру и чем регулируются?
где прикручены датчики температурные?
любой регулятор работает не сам по себе. он работает в комплексе, с кучей других параметров...
Всем привет. Такой вопрос. В PID особо не силён, не доводилось настраивать. В общем проблема такая, сильная "пила" на одном из PID. причём на обоих PID стоят одинаковые параметры, но вот верхний ведёт себе как на скрине (нижний тоже хотелось бы получше конечно). По схеме: Имеется котельная и два контура- верхний и нижний, на каждом контуре по две задвижки, работают синхронно. И вот что происходит - например - температура ниже заданной - клапана открываются, котельная видит увеличение расхода и начинает разгоняться, но когда она разогналась, клапана уже сильно открылись - пошло резкое увеличение температуры. Клапана начали закрываться - расход уменьшается и котельная тормозит, но пока она затормозила, клапана сильно закрыты - температура просаживается- и тд. Причём, нижние графики более гладкие, потому что линия ка бы дальше от котельной. Сейчас у обоих ПИД стоят параметры Kp-5, Ki-500, Kd-0. Каким коэффициентом можно улучшить ситуацию? Или, надо с нуля всё настраивать, начиная всё по нулям, и потом по одному параметру менять?
Проблема может тянется изначально, но просто раньше не было графиков и особо не отслеживалась температура,а вот вывел графики, и увидели такую штуку.
Пробуйте Kp увеличивать на 1 за раз, а Ki уменьшать на 10 за раз и наблюдайте. Пила должна сгладиться, но если она будет увеличиваться или растягиваться сохраняя амплитуду, то у Вас подклинивают задвижки или большой люфт в них.
ПИД регулятор как называется ?
Пробуйте Kp увеличивать на 1 за раз, а Ki уменьшать на 10 за раз и наблюдайте. Пила должна сгладиться, но если она будет увеличиваться или растягиваться сохраняя амплитуду, то у Вас подклинивают задвижки или большой люфт в них.
Попробуют завтра...
ПИД регулятор как называется ?
PID_FIXCYCLE
Сказали, что такая пила началась после замены обоих калориферов на этой линии...
что за задвижки? как и где стоят в котельной?
Belivo NV24A-SR-TPC
Клапан 650S
Стоят не в котельной, а непосредственно возле сушилок. Котельная в отдельном здании
что за разноцветные полосочки, за что отвечают?
Tуст и Ттекущая
где прикручены датчики температурные?
В самих сушилках, соответственно верхнем и нижних ярусах
МихаилГл
27.08.2024, 18:23
У вас ответы такие, как будто тут все знают как выглядит ваш объект... Вы можете структуру хоть схематично набросать. Там даже разница в длине/сечении трубопровода и типа калорифера будет влиять на требуемые характеристики регуляторов. Или у вас оба контура ну один в один и никаких отличий? И датчики, и исполнительные, и длины, и сечения... Ну всё одинаковое?
У вас ответы такие, как будто тут все знают как выглядит ваш объект... Вы можете структуру хоть схематично набросать. Там даже разница в длине/сечении трубопровода и типа калорифера будет влиять на требуемые характеристики регуляторов. Или у вас оба контура ну один в один и никаких отличий? И датчики, и исполнительные, и длины, и сечения... Ну всё одинаковое?
Да я пониманию )). Конечно не идентичные контуры, длинна линии контура верхнего яруса короче ~ на 2-3 метра чем нижнего, и калориферов (КПСК 3-11) на одном контуре два, на другом четыре. Да вопрос то изначально не в этом, а какими коэффициентами "поиграть", чтобы уменьшить пилу. Естественно, влияющих параметров много. Если б я был на месте, то сам бы пробовал, но нужно объяснить людям, которые там на месте (благо вывел изменения параметров ПИД в меню программы СПК), на что менять, а я отслеживал бы по графикам.
МихаилГл
27.08.2024, 19:25
Не, про "пилу" Это я имел ввиду шаг между измерениями, а вы этот неправильный термин на вооружение взяли. На новых графиках всё нормально, плавно, без скачков. Но верхний график как раз характерен для неправильных параметров.
Как правильнее настроить не подскажу, надо читать...
https://rusautomation.ru/articles/nastroyka-pid-regulyatora-temperatury/
Вот тут можно глянуть... На что параметры влияют и как более менее кривая должна выглядеть. Не люблю регуляторы...
Не люблю регуляторы...
А без них никуда ))).
Но верхний график как раз характерен для неправильных параметров.
Ну собственно да ))
PID_FIXCYCLE
А ПЛК какой ?
Всем привет. Такой вопрос. В PID особо не силён, не доводилось настраивать. В общем проблема такая, сильная "пила" на одном из PID. причём на обоих PID стоят одинаковые параметры, но вот верхний ведёт себе как на скрине (нижний тоже хотелось бы получше конечно). По схеме: Имеется котельная и два контура- верхний и нижний, на каждом контуре по две задвижки, работают синхронно. И вот что происходит - например - температура ниже заданной - клапана открываются, котельная видит увеличение расхода и начинает разгоняться, но когда она разогналась, клапана уже сильно открылись - пошло резкое увеличение температуры. Клапана начали закрываться - расход уменьшается и котельная тормозит, но пока она затормозила, клапана сильно закрыты - температура просаживается- и тд. Причём, нижние графики более гладкие, потому что линия ка бы дальше от котельной. Сейчас у обоих ПИД стоят параметры Kp-5, Ki-500, Kd-0. Каким коэффициентом можно улучшить ситуацию? Или, надо с нуля всё настраивать, начиная всё по нулям, и потом по одному параметру менять?
Проблема может тянется изначально, но просто раньше не было графиков и особо не отслеживалась температура,а вот вывел графики, и увидели такую штуку.
Ki-500. Зачем Ki такой громадный ? 10 поставь.
А ПЛК какой ?
СПК107 древний
Ki-500. Зачем Ki такой громадный ? 10 поставь.
Ок. Я так понимаю, что Kd лучше не использовать в данном случае.
Ок. Я так понимаю, что Kd лучше не использовать в данном случае.
У тебя без Kd проблем хватает. Можно пока только Kp оставить небольшой.
Скрин FB ПИД выложи. Интересно глянуть что задано на входах FB.
Сигнал 0...10 В какой модуль формирует ?
Судя по графикам, процесс очень инерционный - при скачке уставки температура догоняет её только через 10-15 минут.
Мне кажется, что при такой инерции чистое ПИД регулирование не лучший выбор.
Нужно добавлять какой-то дополнительный быстродействующий параметр.
Например, в больших паровых котлах для поддержания уровня воды в барабане на самом деле поддерживают не уровень, а нулевой баланс между массовыми расходами воды в котёл и паром из котла - они быстрее отражают возмущение. А измеренный уровень служит только для небольшой коррекции.
Может быть придумать, как увязать в ПИД ещё и температуру обратной воды от сушилок?..
Например, поддерживать разность между подачей и обратом, причём эта разность по таблице зависит от подачи, а разность температур уставки и измерения с каким-то коэффициентом будет корректировать ошибку в составлении таблицы.
Не знаю, может это неправильно, а есть другой способ...
Скрин FB ПИД выложи. Интересно глянуть что задано на входах FB.
Нет пока под руками проекта, на другом ноуте...Позже скину
Судя по графикам, процесс очень инерционный - при скачке уставки температура догоняет её только через 10-15 минут.
Мне кажется, что при такой инерции чистое ПИД регулирование не лучший выбор.
Нужно добавлять какой-то дополнительный быстродействующий параметр.
Например, в больших паровых котлах для поддержания уровня воды в барабане на самом деле поддерживают не уровень, а нулевой баланс между массовыми расходами воды в котёл и паром из котла - они быстрее отражают возмущение. А измеренный уровень служит только для небольшой коррекции.
Может быть придумать, как увязать в ПИД ещё и температуру обратной воды от сушилок?..
Например, поддерживать разность между подачей и обратом, причём эта разность по таблице зависит от подачи, а разность температур уставки и измерения с каким-то коэффициентом будет корректировать ошибку в составлении таблицы.
Не знаю, может это неправильно, а есть другой способ...
Сегодня коэффициентами удалось такого результата достичь...
Сегодня коэффициентами удалось такого результата достичь...
И какие коэффициенты ?
И какие коэффициенты ?
2 и195 у верхнего графика и 2 и 190 у нижнего.
Но не получается уйти пока от этих всплесков, которыйэе в самом начале цикла сушки, когда температура с больших низов на первую уставку "идёт", дальше, при переходе на следубщий температурный шаг уже всё нормально, но там и разница между уставквми от 3-х до 6-ти градусов, там гладко ±...
Да, бывают небольшие скачки в ровной кривой, но это когда видимо котельная начинает разгоняться, буквально 2-3 градуса, но она в течении 3-х 4-х минут стабилизируется. Вот, как я понял из логики, тут как раз наверно можно попробовать Д подклбчить, хотя это и не критично, но уде чисто спортивный интерес. Но, пока не пробовал это, хочу пока минимизировать этот скачок вначале.
Почему уставка изначально равна 0 ?
Почему уставка изначально равна 0 ?
Хмм. Вопрос интересный, причём уставка стоит 45 и 60 изначально. Ладно, разберусь позже.
Ymax у ПИД какой стоит ?
Статья по настройке ПИД: http://lazysmart.ru/osnovy-avtomatiki/nastrojka-pid-regulyatora/
Ещё один вопрос возник. Соответственно выведены параметры уставки и текущей температуры в OwenCloud для формирования графиков, т.е. просто считываем. Tуст имеет тип Word, Tтек - Real. Т.к. передача с СПК в облако работает только с Word (ModbusTCP_Slave_Device), то через функцию объединения Ттек через 2 ворда передаётся с СПК в Облако, проблем нет, всё работает (см.Скрин 1). Но вот, возникла идея передавать в облако данные по каждому PID и, так же, возможность ЗАПИСЫВАТЬ из Облака в СПК параметры PID, т.е. менять его параметры и из СПК и из Облака. Как считывать, тут всё понятно по аналогии с Ттек (см.Скрин 2), но как писать из облака в СПК? Не разу не делал такого просто... При работе ПЛК210 и облака таких вопросов нет, т.к. там всё через символьную конфигурацию происходит.
Ymax у ПИД какой стоит ?
// расчет PID регулятора
GlobalVar.Regul1(
SET_POINT := PLC_PRG.Ust_T1,
KP := GlobalVar.kP1,
TN := GlobalVar.kI1,
TV := GlobalVar.kD1,
Y_MANUAL := GlobalVar.y1_man,
Y_OFFSET := 0,
Y_MIN := 0,
Y_MAX := 100,
MANUAL := GlobalVar.PID1man,
RESET := GlobalVar.res1,
Y=>GlobalVar.outR1,
LIMITS_ACTIVE=>,
OVERFLOW=>);
// приводим диапазон ПИД 0...100 к диапазону 2...10В выхода МУ110-6У 200...1000
// c проверкой ручного режима управления
tempOutR1 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID1, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
tempOutR2 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID2, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
tempOutR3 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID3, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
tempOutR4 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID4, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
Никак не получается уйти от этого "бугра". Не знаю, может проблема именно с поднятия Уставки с нуля до того значения уставки в момент запуска алгоритма (54 градуса), типа, успевает ошибку накопить, не понятно
// расчет PID регулятора
GlobalVar.Regul1(
SET_POINT := PLC_PRG.Ust_T1,
KP := GlobalVar.kP1,
TN := GlobalVar.kI1,
TV := GlobalVar.kD1,
Y_MANUAL := GlobalVar.y1_man,
Y_OFFSET := 0,
Y_MIN := 0,
Y_MAX := 100,
MANUAL := GlobalVar.PID1man,
RESET := GlobalVar.res1,
Y=>GlobalVar.outR1,
LIMITS_ACTIVE=>,
OVERFLOW=>);
// приводим диапазон ПИД 0...100 к диапазону 2...10В выхода МУ110-6У 200...1000
// c проверкой ручного режима управления
tempOutR1 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID1, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
tempOutR2 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID2, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
tempOutR3 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID3, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
tempOutR4 := REAL_TO_UINT(OSCAT_BASIC.SCALE_R(X:=valPID4, I_LO:=0, I_HI:=100, O_LO:=closeState, O_HI:=openState));
Что ты там намудрил ?
Тебе надо задать Ymin = 200, Ymax = 1000. Никаких других приведений делать не надо. То что формируется на выходе ПИД (выход Y) надо по RS-485 отправлять в МУ110-6У.
Коэффициенты KP и TN ПИД после этого надо будет по новой подобрать. Ссылку на методику тебе дали.
Что ты там намудрил ?
Тебе надо задать Ymin = 200, Ymax = 1000 и все. Никаких других приведений делать не надо. То что формируется на выходе ПИД (выход Y) надо по RS-485 отправлять в МУ110-6У.
Коэффициенты ПИД после этого надо будет по новой подобрать. Ссылку на методику тебе дали.
Не я мудрил :)) Это наследие )) Я тут только ввёл рецепт изменения уставки (задаваемой) автоматически через, так же, задаваемые промежутки времени. Ну и OwenCloud. А так реально, очень замороченная программа какая-то, мне кажется, можно проще было сделать...
Не я мудрил :)) Это наследие )) Я тут только ввёл рецепт изменения уставки (задаваемой) автоматически через, так же, задаваемые промежутки времени. Ну и OwenCloud. А так реально, очень замороченная программа какая-то, мне кажется, можно проще было сделать...
К наследию надо относится критически, а не принимать все за чистую монету.
Могу ошибиться, в конкретно этом ФБ ПИД вычисление интегральной не останавливается после достижения выходом Ymin (Ymax), а продолжает накапливаться, но из-за присутствия внутри этого ФБ ограничителя, на выходе Y значение в диапазоне Ymin...Ymax.
Для диагностики и реакции на переполнение есть выход OVERFLOW (или LIMITS_ACTIVE). С его помощью останавливают рост интегральной.
Могу ошибиться, в конкретно этом ФБ ПИД вычисление интегральной не останавливается после достижения выходом Ymin (Ymax), а продолжает накапливаться, но из-за присутствия внутри этого ФБ ограничителя, на выходе Y значение в диапазоне Ymin...Ymax.
Конечно не останавливается. Но если не задавать заоблачные коэффициенты, то выхода за пределы и не будет.
Процесс инерционный, особенно при пуске большое рассогласование.
При наличии времени, на мой взгляд, стоило бы попробовать ограничить этот рост.
Процесс инерционный, особенно при пуске большое рассогласование.
При наличии времени, на мой взгляд, стоило бы попробовать ограничить этот рост.
TN большой задавать не надо и все будет нормально.
TN большой задавать не надо и все будет нормально.
Попробую на следующем цикле поставить 10, посмотрю.
Ещё один вопрос возник. Соответственно выведены параметры уставки и текущей температуры в OwenCloud для формирования графиков, т.е. просто считываем. Tуст имеет тип Word, Tтек - Real. Т.к. СПК работает только с Word, то через функцию объединения Ттек через 2 ворда передаётся с СПК в Облако, проблем нет, всё работает (см.Скрин 1). Но вот, возникла идея передавать в облако данные по каждому PID и, так же, возможность ЗАПИСЫВАТЬ из Облака в СПК параметры PID, т.е. менять его параметры и из СПК и из Облака. Как считывать, тут всё понятно по аналогии с Ттек (см.Скрин 2), но как писать из облака в СПК? Не разу не делал такого просто... При работе ПЛК210 и облака таких вопросов нет, т.к. там всё через символьную конфигурацию происходит.
А по этому вопросу можете подсказать? Тут получается то, что данные с СПК в облака передаются с выходов ModbusTCP_Slave_Device. Что бы писать с облака в СПК надо использовать Входы ModbusTCP_Slave_Device, но как организовать? Ведь у меня коэффициенты ПИД'ов - Real, которые передаются как два ворда через функцию объединения, но что тогда использовать на входах ModbusTCP_Slave_Device? Те же самые 2 ворда?
Попробую на следующем цикле поставить 10, посмотрю.
Поставили TN=10...Котельная 5 раз в аварию уходила :)
Поставили TN=10...Котельная 5 раз в аварию уходила :)
Из-за чего котельная в аварию уходила ? При увеличении уставки задвижка быстро полностью открывается ? Сделай график выхода ПИД (Y).
Из-за чего котельная в аварию уходила ? Сделай график выхода ПИД (Y).
Фиг знает. Предполагают, что задвижки закрылись и давление превышало (хотя странно, по идее клапан должен быть для этих целей). Я не на месте, поэтому не владею ситуацией по котельной, и графики соответственно тоже не могу сделать. Надо будет наверно тоже вывести в облака выходы ПИДа, завтра скину проект им, зальют с флэшки тогда. Там котельная рабоает только в процессе сушки, а не всё время.
Сделай график выхода ПИД (Y).
+100500.
На той же временной оси с уставкой и актуалом
// расчет PID регулятора
GlobalVar.Regul1(
....
KP := GlobalVar.kP1,
TN := GlobalVar.kI1,
TV := GlobalVar.kD1,
...
Смешалисьвкучулюдикони.
Вам не мешало бы почитать теорию и понять разницу между T и K применительно к ПИД.
Время интегрирования - делитель. Меньше время - быстрее И-часть..
Ki = 1 / Ti
Время дифференцирования - множитель. Меньше время - медленнее Д-часть..
Kd = Td
Для инерционного процесса (вроде вашего)
1. нужно большое время интегрирования => малый коэффициент Ki => Большое время TN
2. D-часть влияет мало - можно не юзать (выше говорили). Время дифференцирования - множитель. Меньше время - медленнее Д-часть. Т.е малое TV => почти отключение Д-части. Kd = 0 - да, норм.
Kp и TN - ваше все для инерционных процессов.
Смешалисьвкучулюдикони.
Вам не мешало бы почитать теорию и понять разницу между T и K применительно к ПИД.
Время интегрирования - делитель. Меньше время - быстрее И-часть..
Ki = 1 / Ti
Время дифференцирования - множитель. Меньше время - медленнее Д-часть..
Kd = Td
Для инерционного процесса (вроде вашего)
1. нужно большое время интегрирования => малый коэффициент Ki => Большое время TN
2. D-часть влияет мало - можно не юзать (выше говорили). Время дифференцирования - множитель. Меньше время - медленнее Д-часть. Т.е малое TV => почти отключение Д-части. Kd = 0 - да, норм.
Kp и TN - ваше все для инерционных процессов.
----
Не наоборот? ))
Да, теорию я уже читал-перечитал, уже неделю с этим вопросом возимся, понятно, что сказывается отсутствие опыта. А то, что у вас выделено красным это просто, ну не знаю, названия, не более. Методами разными пробовал и Зиглера-Никольса и вот подбором. Тут просто ещё проблема, что пар с котельной не регулируется. По- хорошему, нужен какой-то общий клапан, который бы регулировал подачу пара на "гребёнку", а уже задвижки регулировали бы каждая пара по своей линии. А тут получается, давление пара падает, задвижки открыты полностью, потом котельная начинает разгоняться, пар идёт по линиям через калориферы, датчик срабатывает, но задвижки не успевают закрыться вот и скачки такие. Не знаю, это всё конечно предположения. График ровный, порядка до 1 градуса в разные от уставки стороны, но до тех пор пока давление в котельной не доходит до минимума, потом начинается её разгон и вот результат.
А то, что у вас выделено красным это просто ... названия, не более.
Удачи
....
Но нигде не видно за .CYCLE. По дефолту он 0.
PID_FIXCYCLE:
IF TN>0 AND KP<> 0 AND (NOT OVERFLOW OR RESET OR MANUAL) THEN
...
IF RESET OR MANUAL OR INIT OR (KP<>KPcopy OR TN<>TNcopy OR TV<>TVcopy) THEN
....
ELSE
tmDiff:=REAL_TO_DWORD(CYCLE*1000);
END_IF;
IF TMDIFF>0 THEN
работа регулятора тута
END_IF;
END_IF;
Да, тут я не верно указал- не PID_CYCLE, а просто PID
_________________
RegCycle : DWORD:=15;
________________
GlobalVar.TimerPID(IN:=NOT GlobalVar.TimerPID.Q , PT:=GlobalVar.RegCycle*T#1S);
IF GlobalVar.TimerPID.Q THEN .....
Удачи
....
VAR_GLOBAL RETAIN
// уставка регулятора
kP1:REAL:=5.0; // P регулятора
kI1:REAL:=500.0; // I регулятора
kD1:REAL:=0.0; // D регулятора
__________________________________________________ _______________
GlobalVar.Regul1(
SET_POINT := PLC_PRG.Ust_T1,
KP := GlobalVar.kP1,
TN := GlobalVar.kI1,
TV := GlobalVar.kD1,
Y_MANUAL := GlobalVar.y1_man,
Y_OFFSET := 0,
Y_MIN := 0,
Y_MAX := 100,
MANUAL := GlobalVar.PID1man,
RESET := GlobalVar.res1,
Y=>GlobalVar.outR1,
LIMITS_ACTIVE=>,
OVERFLOW=>);
тут я не верно указал- не PID_CYCLE, а просто PID
Ближе к октябрю еще что-нить внезапно всплывет?
RegCycle : DWORD:=15;
________________
GlobalVar.TimerPID(IN:=NOT GlobalVar.TimerPID.Q , PT:=GlobalVar.RegCycle*T#1S);
IF GlobalVar.TimerPID.Q THEN .....
Что за чудо неведомое?
RESET зачем трогаете?
Ближе к октябрю еще что-нить внезапно всплывет?
Что за чудо неведомое?
RESET зачем трогаете?
Повторюсь: Не я автор, я просто внёс изменения, чтобы не человек уставку перебивал, а она сама менялась, а человек только мог корректировать в таблице значения уставок и время шага, по необходимости, поэтому в саму программу работы PID я не лез. Только недавно вопрос возник, вот сейчас разбираюсь с основной программой, поэтому про Reset не могу сказать ничего.
вот сейчас разбираюсь с основной программой,
Ну как разберетесь - расскажите что и когда вызывается
Ну как разберетесь - расскажите что и когда вызывается
Обязательно
.. Сделай график выхода ПИД (Y).
Актуально
....
RESET зачем трогаете?
Reset, в данном случае используется исключительно в "ручном" режиме.
Актуально
....
Сделал, но человек будет позже на месте и зальет с флэшки проект.
Могу ошибиться, в конкретно этом ФБ ПИД вычисление интегральной не останавливается после достижения выходом Ymin (Ymax), а продолжает накапливаться...
Ошибаетесь.
При Y_MIN <> Y_MAX останавливается. Но значение интеграла при этом <> граница выхода. Значение интеграла упирается в такую расчетную границу которая дает возможность выходу сдвинутся от своей границы при первом же изменении знака E с учетом текущей П и Д частей. Этот ПИД писали реальные ребята, а не сферические кони.
При Y_MIN <> Y_MAX никогда не будет OVERFLOW
При Y_MIN = Y_MAX этот ПИД работает как "классический конно-сферический" с неограниченным интегралом, и как следствие, с OVERFLOW и вытекающими.
Клапана начали закрываться
А kvs этих клапанов адекватный? Уверены что зависимость расхода линейна/близка линейному от выхода ПИД'а? Что после 5...10% открытия клапана им вообще что-то регулируется?
Если TN стоит в знаменателе (см. картинку), то он должен быть большим. Ранее про величину TN я написал не верно. Я бы поставил для начала TN = 5000, а KP = 10.
...потом котельная начинает разгоняться...
Значит в котельной есть свои параметры ПИД? Или как этот "разгон" определяется?
2 и195 у верхнего графика и 2 и 190 у нижнего....
...хочу пока минимизировать этот скачок вначале.
Есть возможность уставку плавно повысить, а не скачкообразно?
Поставили TN=10...
Кстати, ввиду условий получения графика - он очень любопытный с точки зрения - а как оно будет на релюшках с обычным термостатом в режиме практически ОТКР/ЗАКР.
Некая планка от которой можно только лучше. Вывезет ли ПЛК с датчиком в руках ТС супротив реле с термостатом? ))
..Котельная 5 раз в аварию уходила :)
время до зимы есть. Зимой ПИД регулятор настраивается по бразильской системе)
Есть возможность уставку плавно повысить, а не скачкообразно?
При LIN_TRAFO есть. Но исходный код в стадии изучения вроде
Значит в котельной есть свои параметры ПИД? Или как этот "разгон" определяется?
По котельной сказать ничего не могу...
Она повышается автоматом на 2-3 градуса(в зависимости сколько поставит оператор) и цикл идёт полчаса (ну или так же, сколько выставит оператор, но обычно полчаса) на этой уставке. До этого я делал, что 5-6 градусов и цикл час.
Поставили параметры для верхнего графика 6 и 650, для нижнего 5 и 600...Наблюдаем...
При LIN_TRAFO есть. Но исходный код в стадии изучения вроде
LIN_TRAFO знаю...Даже больше скажу - Использовал в другом проекте и не поверите, успешно работает :)
#47 актульно
на фоне графиков выше,
А про "неповерю" - зачем мне это? Это не основная полирующая настройка
#47 актульно
на фоне графиков выше,
Программно сделано, но пока не залито, человек не доехал...
по нижнему графику,
kp умножить бы на 1.5, а TN на 2.5
но это просто предположение. Гарантий улучшения нет) Куда откатится сами знаете.
Как вызывается пид?
При LIN_TRAFO есть. Но исходный код в стадии изучения вроде
Валенок, зачем автору темы понадобился LIN_TRAFO ?
Предположу что конкретно здесь TC LIN_TRAFO'ой по сути ограничивает рассогласование при изменении уставки.
На графике #68 же видно.
LIN_TRAFO можно и для actual'а использовать для той же цели. Как более явный фильтр
..
Хотя не. Для общей фильтрации рассогласования придется по-другому ПИД обвешивать (само рассогласование подавать на acual, а уставку делать 0) или внутрь лезть.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot