Страница 9 из 51 ПерваяПервая ... 789101119 ... ПоследняяПоследняя
Показано с 81 по 90 из 509

Тема: ПИД регулятор

  1. #81

    По умолчанию ПИД-регулятор для преобразователей частоты в CoDeSys

    Продолжаю делиться функциональными блоками
    Этот блок я использую для управления частотниками с помощью ПЛК. Сейчас задействован аналоговый выход ПЛК, но с таким же успехом блок можно применять и для соединений ПЛК и ЧП через цифровые интерфейсы.

    ПИД, реализованный на ПЛК, для управления частотниками мы применяем совсем недавно. Толкнула к этому необходимость поддержания заданной температуры отопления с помощью насосов расхолодки по показаниям обычного ДТС.

    Блок также экспортирован и код открыт. Он очень прост (подробное описание), но достаточно универсален и пока отлично показывает себя на практике.

    Тем не менее, буду признателен, если и вы поделитесь своим опытом реализации ПИДа для ЧП. Задача-то очень типичная, а я не пытался найти готовое решение и сделал блок на месте, поэтому мог и упустить что-то.
    Вложения Вложения

  2. #82

    По умолчанию

    Огромное спасибо.

  3. #83
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    А чем не устроил ПИД в частотнике?
    для датчиков есть НТП1.

  4. #84

    По умолчанию

    Необходимость создания блока появилась когда кто-то решил изменить технологию на готовых объектах и вместо привычного прямого регулирования давления использовать обратное регулирование по температуре. Для переделки шкафа под программный ПИД надо было лишь перекинуть два провода.

    А если в общем:
    • ПИД в данной модели ЧП - плох (коэффициенты не влияют на его работу)
    • В нем нет возможности обратного управления (разгон двигателя если значение выше уставки)
    • НТП стоит денег, а на ПЛК есть свободные аналоговые выходы.
    • Сначала я и попробовал ПИД ЧП, а с ПЛК пересылал инвертированное, преобразованное в 4-20 мА, значение температуры - уставка. Да, помимо текущего значения необходимо отсылать и уставку (которая меняется в зависимости от т-ры воздуха на улице). Всё работало... Но зачем такие извороты подумал я
    • Можно было и по Modbus всё передавать, но в ЧП помимо схемотехнических проблем (резистор надо выпаивать, причем это нигде не описано и я первым это обнаружил, а частотников больше 200 таких) были и программные проблемы (по Modbus нельзя изменить параметр уставки если активирован встроенный ПИД - это я тоже первый в России обнаружил, вот такой я хренов открыватель)


    Как видите, проблемы в основном из-за ЧП. Хотя ПИД на ПЛК мне лично кажется более удобным, простым, надежным (в нашем случае), и более профессиональным что ли.
    Последний раз редактировалось ga-nozry; 24.05.2013 в 22:29.

  5. #85

    По умолчанию

    Подскажите какую библиотеку пид лучше использовать. Модель - нагревательный элемент внутри замкнутой камеры, необходимо поддерживать температуру с точностью до градуса. Нужно чтобы по приближению к уставке пид работал на опережения как бы предсказывая и уменьшал выходную мощность

  6. #86

    По умолчанию

    т.е подбирать коэффициенты?

  7. #87

    По умолчанию

    Прошло уже много лет, а тема до сих пор актуальна! Боролся и я в свое время с библиотечными творениями, но закончилось это написанием простого функционального блока, который устраивает в 99% случаев.
    Вот код:

    FUNCTION_BLOCK PID_REG
    VAR_INPUT
    EN:BOOL; (*Включить регулятор*)
    SETP: REAL ; (*Уставка*)
    FEED: REAL ; (*Обратная связь*)
    MAN_IN: REAL; (*Выход в ручном режиме*)
    KP: REAL ; (*Коэффициент усиления*)
    KI: REAL ; (*Коэффициент усиления интегрального звена*)
    KD: REAL; (*Коэффициент усиления дифференциального звена*)
    MAX_V: REAL; (*Максимум выхода*)
    MIN_V: REAL; (*Минимум выхода*)
    RES: BOOL; (*Сброс регулятора*)
    MAN: BOOL; (*Ручной режим*)
    CLOCK: DINT; (*Текущее время*)
    END_VAR
    (*Вход CLOCK - часы, постоянно инкрементируемое двойное слово. Частота может быть любой.
    Это зависит от того с какой точностью необходимо обрабатывать временные интервалы.*)

    VAR_OUTPUT
    END:BOOL; (*Регулятор включен*)
    LMN: REAL ; (*Выход регулятора*)
    END_VAR

    VAR
    E_N,E_N1,E_N2,U_N0,U_N1: REAL;
    DELTA_T,KI_DISCR,KD_DISCR: REAL;
    ST0,ST1: DINT;
    END_VAR

    (*Собственно код*)

    IF EN THEN (*Если включено, то ПОЕХАЛИ!*)
    (*Посчитаем отклонения во все моменты времени*)
    E_N2:=E_N1;
    E_N1:=E_N;
    E_N:=SETP-FEED;
    ST1:=ST0;
    ST0:=CLOCK;
    DELTA_T:=DINT_TO_REAL(ST0-ST1)/10.0; (*Временной интервал X Сек. Часы на входе с дискретностью X/10 Сек*)
    (*А теперь с коэффициентами*)
    KI_DISCR:=KI*DELTA_T;
    KD_DISCR:=KD/DELTA_T;
    (*Собственно - выход, то есть сумма интегрального и дифференциального звена*)
    U_N0:=U_N1+KI_DISCR*E_N+KD_DISCR*(E_N-2*E_N1+E_N2);
    IF KI>0 THEN
    IF KP*E_N+U_N0>MAX_V THEN (*Проверка максимума*)
    U_N0:=MAX_V-KP*E_N;
    END_IF;
    IF KP*E_N+U_N0<MIN_V THEN (*Проверка минимума*)
    U_N0:=MIN_V-KP*E_N;
    END_IF;
    ELSE U_N0:=0;
    END_IF;
    IF RES=TRUE THEN (*Сброс, однако*)
    U_N0:=0;
    END_IF;
    IF MAN=TRUE THEN (*Ручной режим*)
    U_N0:=MAN_IN-KP*E_N;
    END_IF;
    U_N1:=U_N0;
    LMN:=KP*E_N+U_N0; (*Добрались, таки до выхода*)
    END:=TRUE; (*Все посчитано*)
    ELSE
    END:=FALSE; (*Регулятор отключен, дальше тоже ничего не выполняется*)
    LMN:=0; (*Выход, на всякий случай обнулим*)
    END_IF;

    Пробуйте, видоизменяйте как душе угодно!
    Последний раз редактировалось Алексей Дмитриев; 18.06.2013 в 10:44.

  8. #88
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,653

    По умолчанию

    Вопрос по PID из Util.lib

    Уставка 18, когда ставлю значение 18 на измеряемом входе, то выход фиксируется на том значении, которое было или становится чуть меньше или чуть больше в зависимости от предыдущего состояния.
    например при входе 17,9 доползло до 100 (ограничение лимита Y_MAX), ставлю на вход 18 и значение на выходе 99,8 и снижаться начинает только если на входе 18,1

    Разве не должно значение стать 0 (Y_MIN) или продолжать снижаться до 0?

    Y_OFFSET равен 0

  9. #89
    Пользователь
    Регистрация
    10.09.2012
    Адрес
    Кемерово
    Сообщений
    93

    По умолчанию

    Лучше проверять на реальном объекте или на модели. Возможно это как-то связано с мертвой зоной или накоплением очень большой интегральной составляющей.

  10. #90
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,653

    По умолчанию

    Кто сталкивался с ПИД регулированием нагрева тенами с ШИМ, подскажите, какие параметры лучше выставлять изначально исходя из своего опыта ?

    KP Коэффициент передачи.
    TN Постоянная интегрирования, в секундах (т.е. "0.5" для 500 мс).
    TV Постоянная дифференцирования, в секундах (т.е. "0.5" для 500 мс).

    И что лучше ставить в МИН МАХ, 10 и потом умножать на 100 или 100 потом * на 10 или просто уж 1000 и передавать на ШИМ.

    Из опыта прошлых побед так сказать.

Страница 9 из 51 ПерваяПервая ... 789101119 ... ПоследняяПоследняя

Похожие темы

  1. регулятор
    от Egor в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 23.02.2011, 10:58
  2. пид регулятор плк 150 и.м.
    от mihan-987654321 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.09.2010, 12:17
  3. пид регулятор с шим в 110-60
    от AKHolod в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 07.07.2010, 14:19
  4. ПИД-регулятор
    от trunf в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 14.11.2008, 23:17
  5. ПИД регулятор
    от Александр М в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 22.10.2007, 08:47

Ваши права

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