Страница 1 из 5 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 47

Тема: ПЛК110 с ПИД-регулятором из Utils.lib

  1. #1

    По умолчанию ПЛК110 с ПИД-регулятором из Utils.lib

    Доброго дня, проблема в следующем.

    Использую ПЛК100 [м2]. Добавил в программу ПИД из utils.lib. При запуске программы работает, начинаю его настраивать и через какое-то время значение выхода (Y) перестает меняться. Устанавливаю reset=TRUE, manual = TRUE, y_manual=0, меняю уставку, меняю пропорциональный и интегральный коэффициент - безрезультатно. Как на выходе висело какое-то значение (например -10.651), так и продолжает. При этом выход OVERFLOW = FALSE.

    Мельком пробежал по форуму, вроде не я один жалуюсь на ПИД. Так что использовать? Другой ПИД из oscat или от Овен Pid_reg2 или Pid_regulators?

  2. #2

    По умолчанию

    Цитата Сообщение от dzukp Посмотреть сообщение
    ....
    Мельком пробежал по форуму, вроде не я один жалуюсь на ПИД. Так что использовать? Другой ПИД из oscat или от Овен Pid_reg2 или Pid_regulators?
    Желательно научится использовать стандартный ПИД из utils.lib, он самый простой из всех имеющихся, а уже потом пробовать другие регуляторы..

  3. #3

    По умолчанию

    Попробуйте этот:
    http://www.owen.ru/forum/showthread....l=1#post291549
    В той же теме двумя сообщениями раньше (сообщение 317), есть архив в котором находится описание данного ПИД-регулятора на русском.
    Только имейте в виду, что использовать его необходимо в циклической задаче.

    PS. А вообще убедитесь, что Y Max>Y Min. Условие должно выполнятся строго. Равенство тоже не допускается, иначе ютиловский ПИД начинает выдавать произвольные значения и вроде бы не обрабатывает переполнение.
    Последний раз редактировалось SBeaR; 19.11.2018 в 13:46.

  4. #4

    По умолчанию

    Цитата Сообщение от Crusash Посмотреть сообщение
    Желательно научится использовать стандартный ПИД из utils.lib, он самый простой из всех имеющихся, а уже потом пробовать другие регуляторы..
    Я бы рад использовать utils.lib, но по каким-то причинам он перестает работать через какое-то время. Я предположил, может это особенность реализации ПИД-регулятора на ПЛК110, что он не работает.

    Если дело в том что я неправильно использую, то что я могу делать не так? Параметры К=0.1, И=1, Д=0, мин=-100, макс=100. Вызывается каждый цикл. Что еще не так? Он должен хоть как-то работать. В начале он регулирует, а через несколько минут виснит. При reset=TRUE, manual = TRUE, y_manual=0 на выходе 0 не появляется.

  5. #5

    По умолчанию

    Цитата Сообщение от dzukp Посмотреть сообщение
    Я бы рад использовать utils.lib, но по каким-то причинам он перестает работать через какое-то время. Я предположил, может это особенность реализации ПИД-регулятора на ПЛК110, что он не работает.

    Если дело в том что я неправильно использую, то что я могу делать не так? Параметры К=0.1, И=1, Д=0, мин=-100, макс=100. Вызывается каждый цикл. Что еще не так? Он должен хоть как-то работать. В начале он регулирует, а через несколько минут виснит. При reset=TRUE, manual = TRUE, y_manual=0 на выходе 0 не появляется.
    Чудес то не бывает, значит делаете что-то не така, не может быть так что у всех работает, а у вас не работает, капайте дальше...
    повторюсь, это самый простой ПИД, железобетонный, там ломаться нечему.

    Код:
    Pid(ACTUAL:=tek_t, set_point:=ust_t, KP:=k_P, TN:=k_I, TV:=k_D,
     Y_manual:=0, Y_offset:=0, Y_MIN:=0, Y_MAX:=1000,Manual:=False, RESET:=FALSE);

  6. #6

    По умолчанию

    Цитата Сообщение от dzukp Посмотреть сообщение
    Я бы рад использовать utils.lib, но по каким-то причинам он перестает работать через какое-то время. Я предположил, может это особенность реализации ПИД-регулятора на ПЛК110, что он не работает.

    Если дело в том что я неправильно использую, то что я могу делать не так? Параметры К=0.1, И=1, Д=0, мин=-100, макс=100. Вызывается каждый цикл. Что еще не так? Он должен хоть как-то работать. В начале он регулирует, а через несколько минут виснит. При reset=TRUE, manual = TRUE, y_manual=0 на выходе 0 не появляется.
    И (Tn) = 1 не верно. Tn должно быть многие тысячи.
    Изображения Изображения
    Последний раз редактировалось IVM; 19.11.2018 в 19:13.

  7. #7

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    И (Tn) = 1 не верно. Tn должно быть многие тысячи.
    Tn это время интегрирования? Согласен должно быть побольше.

    Но моя проблема не в том, что неправильно регулирует, а в том, что регулятор в какой-то момент перестает менять значение своего выхода (Y), как будто перестает вызываться. Причем значение выхода остается в каком-то промежуточном положении ни максимум, ни минимум, ни y_manual, ни y_offset.

    Цитата Сообщение от Crusash
    это самый простой ПИД, железобетонный, там ломаться нечему
    Я так и предполагаю, что я что-то не так делаю, но не могу понять что.

    И вызывать каждый цикл не надо
    А как же его вызывать? С чем связано, что не каждый цикл? Хотя в моем конкретном случае действительно не надо. Вы утверждаете, что в любом случае нужно вызывать с каким-то периодом отличным от времени цикла?

  8. #8
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,656

    По умолчанию

    Цитата Сообщение от dzukp Посмотреть сообщение
    Доброго дня, проблема в следующем.

    Использую ПЛК100 [м2]. Добавил в программу ПИД из utils.lib. При запуске программы работает, начинаю его настраивать и через какое-то время значение выхода (Y) перестает меняться. Устанавливаю reset=TRUE, manual = TRUE, y_manual=0, меняю уставку, меняю пропорциональный и интегральный коэффициент - безрезультатно. Как на выходе висело какое-то значение (например -10.651), так и продолжает. При этом выход OVERFLOW = FALSE.
    Мельком пробежал по форуму, вроде не я один жалуюсь на ПИД. Так что использовать? Другой ПИД из oscat или от Овен Pid_reg2 или Pid_regulators?
    Вы что делаете??? Вы одновременно выполняете сброс регулятора и перевод в ручной режим(reset=TRUE, manual = TRUE) и что желаете получить???
    Описаловку читайте!

  9. #9

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Вы что делаете??? Вы одновременно выполняете сброс регулятора и перевод в ручной режим(reset=TRUE, manual = TRUE) и что желаете получить???
    Описаловку читайте!
    "Устанавливаю reset=TRUE, manual = TRUE, y_manual=0, меняю уставку, меняю пропорциональный и интегральный коэффициент" это все не одновременно, а по очереди. Пробовал менять коэффициенты - не помогло. Пробовал reset=true - не помогло. Пробовал manual=True - не помогло.

    Но как я понял из описаловки даже если одновременно reset=TRUE, manual = TRUE, y_manual = 0, y_offset = 0 на выходе должен быть 0. Эксперемент не могу пока провести.

    На данный момент регулятор ведет себя нормально, повторить ситуацию получалось только если TN=0. Тоже, кстати, момент неудобный, если я захочу отказаться от интегральной составляющей что делать? TN=9999999999999 так, но это не очень удобно? Да, можно использовать функциональный блок PD, но это не гибко.

  10. #10

    По умолчанию

    Проблема больше не повторяется. Возможно из-за того, что проект заново перекомпилировал.
    Резюме: ПИД из util.lib работает железобетонно, неопределенная ситуация возникает, когда TN=0.

Страница 1 из 5 123 ... ПоследняяПоследняя

Похожие темы

  1. Помогите разобраться с ПИД регулятором
    от Айдар в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.11.2016, 15:13
  2. Помогите разобраться с ПИД-регулятором
    от Андрей Макаров в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 10.08.2009, 14:08
  3. Управление регулятором расхода
    от Alju в разделе Подбор Оборудования
    Ответов: 10
    Последнее сообщение: 22.08.2008, 18:05
  4. помогите с ПИД-регулятором.
    от Ден в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 12.08.2008, 16:42

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •