Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя
Показано с 31 по 40 из 47

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

  1. #31

    По умолчанию

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

    1.
    pid();
    if abs(SP-PV) < deadband then
    pid.Y := 0; // чтобы задвижка стояла на месте
    end_if

    2.
    pid();
    if abs(SP-PV) < deadband then
    SP:=PV;
    end_if

    3.
    pid();
    if abs(SP-PV) < deadband then
    SP:=PV;
    pid.Y := 0;
    end_if

    Можете предложить свой вариант.

  2. #32

    По умолчанию

    Цитата Сообщение от dzukp Посмотреть сообщение
    Посоветуйте как лучше реализовать мертвую зону на утиловском для регулирования температуры задвижкой.
    ....
    Можете предложить свой вариант.
    можно так

    Код:
    Pid();
    IF Pid.Y <5 AND Pid.Y > -5 THEN (*например меньше 5 больше -5*)
    	P:=0;(*исполнитель отключен*)
    ELSE
    	P:=Pid.Y;(*исполнитель в работе*)
    END_IF
    Последний раз редактировалось Crusash; 26.11.2018 в 14:08.

  3. #33

    По умолчанию

    Цитата Сообщение от Crusash Посмотреть сообщение
    можно так

    Код:
    Pid();
    IF Pid.Y <5 AND Pid.Y > -5 THEN (*например меньше 5 больше -5*)
    	P:=0;(*исполнитель отключен*)
    ELSE
    	P:=Pid.Y;(*исполнитель в работе*)
    END_IF
    В этом варианте меня смущает, что, возможно, будет постоянно расти интегральная составляющая.

  4. #34

    По умолчанию

    Цитата Сообщение от dzukp Посмотреть сообщение
    Посоветуйте как лучше реализовать мертвую зону на утиловском для регулирования температуры задвижкой.
    Ни один из этих вариантов у вас работать не будет. В первом варианте вы не сможете присвоить выходу значение. Во втором варианте у вас уставка будет постоянно "следовать" за переменной, как только переменная попадет в зону нечувствительности. Только если PV изменится резко, чтобы выскочить из зоны, только тогда ПИД заработает.
    Ну а третий вариант это сумма двух первых.

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

    По умолчанию

    Цитата Сообщение от SBeaR Посмотреть сообщение
    Ни один из этих вариантов у вас работать не будет. В первом варианте вы не сможете присвоить выходу значение. Во втором варианте у вас уставка будет постоянно "следовать" за переменной, как только переменная попадет в зону нечувствительности. Только если PV изменится резко, чтобы выскочить из зоны, только тогда ПИД заработает.
    Ну а третий вариант это сумма двух первых.
    if Pid.Pv>=Pid.Sv-Dead_band OR Pid.Pv<=Pid.Sv+Dead_band THEN
    Pid.Pv:=Pid.Sv;
    end_if;
    ...
    ...
    ...
    Pid();
    Т.е вариант№2 товарища стартера, именно этого не хватает в "заводской" комплектации утильного ПИД регулятора, проверено десятками стабильно работающих реализаций. Тут еще кто-то пургу мел про Tn="многим тысячам"...,так вот то именно пурга(или бред). Зырьте формулу,для этого даже код открывать не надо.
    Как то так...

    З.Ы Вы тут такую пургу метете... Господа!Пришлите мне того-же, что вы курите.
    Последний раз редактировалось Sergey666; 26.11.2018 в 21:49.

  6. #36

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Т.е вариант№2 товарища стартера, именно этого не хватает в "заводской" комплектации утильного ПИД регулятора, проверено десятками стабильно работающих реализаций.
    З.Ы Вы тут такую пургу метете... Господа!Пришлите мне того-же, что вы курите.
    А вы принципиально не видите разницы между своим вариантом и вариантом dzukp? Вы оперируете в отличии от него с входными переменными ПИД, а он с какими то абстрактными SP и PV, при этом используя в коде вполне конкретный pid.Y.
    Так вот тот конкретный кусок кода работать не будет, так как переменная SP будет изменяться вслед за PV, как только PV попадет в мертвую зону.
    Избежать этого можно только если где-то ранее в коде будет строка вида: SP:=A;
    В явном виде в варианте dzukp этого нет и реализовав данный вариант "как есть" можно сильно удивится, что переменная так ни когда из мертвой зоны и не выйдет (без резкого скачка значения переменной)
    Да и ваш вариант работать не будет. В вашем случае в условии нужен AND, а не OR.
    Я бы наверно реализовал это как-то так:
    Код:
    IF PV>(SP+DB) THEN
        PID.SP:=(SP+DB);
    ELSIF PV<(SP-DB) THEN
        PID.SP:=(SP-DB);
    ELSE
        PID.SP:=PV;
    END_IF;
    Поясню почему PID.SP:=SP+DB.
    Это позволит регулятору при выходе переменной из мертвой зоны более плавно начать регулирование. В противном же случае мы получим ошибку рассогласования >= величине мертвой зоны, что может привести к резкому скачкообразному изменению выхода ПИД из-за больших значений пропорциональной и дифференциальной составляющих регулятора.

  7. #37
    Пользователь
    Регистрация
    11.10.2013
    Адрес
    Домодедово
    Сообщений
    4

    По умолчанию

    Хотел бы внести своё предложение в дискуссию: добавить задержку включения для того, чтобы "пролетая" уставку переменная не "цеплялась" за границы "мертвой зоны", и ввести "мертвую зону" в установившемся режиме.
    Например:
    ton1(IN := ABS(SP - PV) < DB, PT := <время выхода на уставку>);

  8. #38

    По умолчанию

    А почему нельзя подавать сигнал сброса на вход Reset регулятора?

  9. #39

    По умолчанию

    Цитата Сообщение от Andrew_Stranger Посмотреть сообщение
    А почему нельзя подавать сигнал сброса на вход Reset регулятора?
    Потому что не всегда при выходе на уставку регулятор обнуляется. Для ряда процессов, например таких как поддержание давления, при PV=SP выход регулятора будет каким либо отличным от нуля числом.

  10. #40

    По умолчанию

    Вот и я о том же. Почему нельзя вместо PID.SP:=PV написать Reset:=true?

Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя

Похожие темы

  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

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

Ваши права

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