Показано с 1 по 10 из 48

Тема: Обработка аналоговых входов в ОЛ

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от ВЗМП Посмотреть сообщение
    вот этого не вижу. или может в пустом проекте этого сделать нельзя?
    В режиме симуляции щёлкать по AI пробовали?
    К чему-нибудь это приводит?

    У меня как-то так: http://recordit.co/3nR9LdhxeD

    Пользуясь случаем, вопрос Алексею: так и ожидается, то при значении 65 на входе PID выдаёт ненулевую мощность?
    Зачем он "греет", если значение на входе равно уставке?

  2. #2

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Пользуясь случаем, вопрос Алексею: так и ожидается, то при значении 65 на входе PID выдаёт ненулевую мощность?
    Это значит что вы невнимательны, и не обратили внимание на то, что интегральная составляющая не равна нулю.
    В программе по дефолту забиты значения P,I,D "под себя".
    Зачем он "греет", если значение на входе равно уставке?
    Перечитайте раздел "ПИД- регулирование" в ТАУ, особое внимание обратите на работу интегральной составляющей.

  3. #3

    По умолчанию

    Цитата Сообщение от Алексей Геннадьевич Посмотреть сообщение
    Это значит что вы невнимательны, и не обратили внимание на то, что интегральная составляющая не равна нулю.
    Не не не, Девид Блейн.

    Температура равна уставке, т.е. невязка равна нулю.
    Классическая формула ПИД должна выдавать нулевое воздействие: невязка равна 0, её интеграл и производная тоже равны нулю.
    Надеюсь, не нужно доказывать, что интеграл от 0 и его производные тоже равны нулю?

    Откуда ненулевое значение на выходе PID? Похоже на багу.

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

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Не не не, Девид Блейн.

    Температура равна уставке, т.е. невязка равна нулю.
    Классическая формула ПИД должна выдавать нулевое воздействие: невязка равна 0, её интеграл и производная тоже равны нулю.
    Надеюсь, не нужно доказывать, что интеграл от 0 и его производные тоже равны нулю?

    Откуда ненулевое значение на выходе PID? Похоже на багу.
    что то не в ту степь, если исполнительному механизму поддерживать уставку требуется например 34% то они так и будут тридцать четыре пока текущая температура не отклониться от уставки, почему регулятор ноль то должен выдавать, раз нет воздействия значит и PV "побежит" от SP в сторону комнатной температуры, разве нет
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    что то не в ту степь, если исполнительному механизму поддерживать уставку требуется например 34% то они так и будут тридцать четыре пока текущая температура не отклониться от уставки, почему регулятор ноль то должен выдавать, раз нет воздействия значит и PV "побежит" от SP в сторону комнатной температуры, разве нет
    Вообще говоря, нет.
    Это самое 34% будет каждый раз складываться из того, насколько система остыла за с момента "прошлого опроса PID" и "насколько наросли D и I составляющие".

    Но, в любом случае, я с самого начала запускаю в режиме температура==уставка.
    Т.е. перехожу в симуляцию, указываю 65 на входе, запускаю.

    Начальные условия: температура равна уставке. Зачем посылать сигнал о нагреве?

    В КДС простой pid actual := 65, set_point := 65, kp := 30, tn := 10, tv := 10 выдаёт Y==0.


    Я, конечно, понимаю, что использование PID'а для режима уставка_всегда_равна_температуре это бред, но, в моём понимании, если PID написан верно, то на выходе в таком режиме он должен давать 0. Посмотреть прямо сейчас не могу, т.к. Windows под рукой нет, а ОЛ не работает на OS X.

    "невозможность идеального интегратора" я тоже понимаю. Понимаю, что Рунге-Кутта вряд ли кто делать будет в ОЛ. Но уж простой 0-то можно проинтегрировать без таких явных ошибок?

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

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Вообще говоря, нет.
    Это самое 34% будет каждый раз складываться из того, насколько система остыла за с момента "прошлого опроса PID" и "насколько наросли D и I составляющие".

    Но, в любом случае, я с самого начала запускаю в режиме температура==уставка.
    Т.е. перехожу в симуляцию, указываю 65 на входе, запускаю.

    Начальные условия: температура равна уставке. Зачем посылать сигнал о нагреве?

    В КДС простой pid actual := 65, set_point := 65, kp := 30, tn := 10, tv := 10 выдаёт Y==0.


    Я, конечно, понимаю, что использование PID'а для режима уставка_всегда_равна_температуре это бред, но, в моём понимании, если PID написан верно, то на выходе в таком режиме он должен давать 0. Посмотреть прямо сейчас не могу, т.к. Windows под рукой нет, а ОЛ не работает на OS X.

    "невозможность идеального интегратора" я тоже понимаю. Понимаю, что Рунге-Кутта вряд ли кто делать будет в ОЛ. Но уж простой 0-то можно проинтегрировать без таких явных ошибок?
    в таком случае требуется соблюсти условие, что в первом цикле точно уже есть равенство уставки текущей температуре, если на поверку окажется не так, то и срабатывают все составляющие и не забываем что в первоначальный момент времени якобы предыдущие итерации равны нулю, а значит некая разница между итерациями изначально уже есть
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #7

    По умолчанию

    Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
    Я, конечно, понимаю, что использование PID'а для режима уставка_всегда_равна_температуре это бред, но, в моём понимании, если PID написан верно, то на выходе в таком режиме он должен давать 0. Посмотреть прямо сейчас не могу, т.к. Windows под рукой нет, а ОЛ не работает на OS X.

    "невозможность идеального интегратора" я тоже понимаю. Понимаю, что Рунге-Кутта вряд ли кто делать будет в ОЛ. Но уж простой 0-то можно проинтегрировать без таких явных ошибок?
    Ваши замечания приняты. Интегратор переписан заново, ограничение перерегулирования при старте пришлось возложить на отдельный модуль, который можно отключить просто введя 0.
    Возросла точность удержания уставки при внешних воздействиях.
    Макрос пока ещё "сыроват".

    Понимаю, что Рунге-Кутта вряд ли кто делать будет в ОЛ.
    Ресурсы на что-нибудь ещё останутся? Это просто какая-то самоцель получится.
    Выложенный макрос только для обсуждения! "Боевое" применение категорически не рекомендовано, т.к. это этап разработки.
    Вложения Вложения
    Последний раз редактировалось Алексей Геннадьевич; 30.03.2016 в 23:07. Причина: Предупреждение

  8. #8

    По умолчанию

    Цитата Сообщение от Алексей Геннадьевич Посмотреть сообщение
    Ваши замечания приняты. Интегратор переписан заново, ограничение перерегулирования при старте пришлось возложить на отдельный модуль, который можно отключить просто введя 0.
    Возросла точность удержания уставки при внешних воздействиях.
    Макрос пока ещё "сыроват".
    О, посмотрю.

    На этот раз странно, что KP применяется не к разности, а к фактическому значению величины.
    По-моему, это косяк. Можете перепроверить?

    Цитата Сообщение от Алексей Геннадьевич Посмотреть сообщение
    Ресурсы на что-нибудь ещё останутся? Это просто какая-то самоцель получится.
    Ну, Р-К методы это немного сложений-умножений. Ресурсы вполне должны остаться.

    Хорошо бы, конечно, построить модель реальной печки, и на модели тренироваться как ведут себя те или иные подходы к ПИДированию.
    Что-нибудь в духе "программа, которая по modbus прикидывается печкой (эмулирует нагреватель и термодатчик), реагирует на подачу нагрева и его отключение".

  9. #9

    По умолчанию

    Очень бы хотелось для ПР200 в список системных переменных добавления чтения границ AI1...AI4. Сейчас получается, что пользователь изменить их с системного меню может, и это хорошо, но в программе есть связанные с этими границами переменные, которые должны работать в том же диапазоне, что и сигнал с AI. И если границы пользователь поменяет, то возникнут проблемы с адекватностью связанных с границами функций (задатчики, ограничители, перевод сигнала в относительный формат 0...100% для обработки). Формат float без чтения его границ безотносителен и плох для обработки, только для индикации годится. А если надо и то и другое - проблема. В общем обеспечить чтение границ - важно.

Похожие темы

  1. Имитация аналоговых входов
    от alexfromnn в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 24.11.2014, 22:38
  2. проблема аналоговых входов на ПЛК 154
    от ANDREY2002 в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 04.06.2014, 20:12
  3. Ответов: 8
    Последнее сообщение: 18.02.2014, 13:25
  4. Ответов: 1
    Последнее сообщение: 19.05.2012, 10:21
  5. Программировние аналоговых входов
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 02.08.2011, 15:11

Ваши права

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