Просмотр полной версии : PID_FUNCTION библиотеки PID_Regulators.lib
Здравствуйте.
Вопрос касательно блока
Регулятор без автонастройки (PID_FUNCTION) библиотеки PID_Regulators.lib
В описании библиотеки сказано:
"PV_TIME: WORD; – время получения значений регулируемой величины (циклическое время), используется для вычисления интегральной и дифференциальной составляющих.
Отсчитывается в сотых долях секунды и берется из модуля UNIVERSAL Sensor, переменной Circular time (т. е. указывается для входной переменной адрес соответствующего модуля конфигурации контроллера в разделе PLC Configuration) или получается по сети от приборов ОВЕН. Если функциональный блок используется
не с измерителем ОВЕН, то необходимо завести переменную, в которую прибавлять время, равное периодичности вызова блока (периоду вызова POU). Единица времени в этой переменной должна равняться 1/100 сек, при переполнении значение должно обнуляться и накопление значения времени должно продолжаться;"
Поясните пожалуйста или дайте, если можно, пример использования блока не с измерителем Овен, а конкретно
пример формирования времени PV_TIME
Малышев Олег
06.11.2008, 09:49
Если у Вас стандартный цикл ПЛК - 1мс
делаем так
nn:=nn+1;
if (nn mod 100 )=0 then CyclTime:=CyclTime+1; nn:=0;end_if
А обнулять CyclTime при переполнении надо ?
И еще такой вопрос: как остановить расчет регулятора и изменение его выхода ? Иногда требуется переключаться в ручной режим управления исполнительным механизмом, а пока оператор будет работать в ручном режиме, надо как то остановить регулятор, чтобы при переключении обратно в автомат интегральная составляющая равнялась нулю, а не содержала какое то накопленное значение
Филоненко Владислав
10.11.2008, 19:04
1.Он сам обнулится, по физической природе своей, как беззнакового числа.
2.Все внутренние переменные доступны по указателю для чтения/записи.
По второму ответу не понял, нельзя ли по подробнее ?
Малышев Олег
10.11.2008, 20:01
1) При ручном режиме подавайте на вход SP измеренное значение температуры.
2) Изменить значение интегральной составляющей можно установив _IMIN и _IMAX в нужное значение
Если у Вас стандартный цикл ПЛК - 1мс
делаем так
nn:=nn+1;
if (nn mod 100 )=0 then CyclTime:=CyclTime+1; nn:=0;end_if
А почему именно каждые 100 мс инкрементировать CyclTime, если мне необходимо более быстрое накопление интегральной составляющей, можно чаще прибавлять 1 к CyclTime ?
Николаев Андрей
25.11.2008, 10:17
Прибавлять чаще можно, но вот в ПИД регуляторе так заложено, что сравнивает он изменение физической величины с таким интервалом времени - это раз.
А второе - нет прямой зависимости интегральной составляющей от времени изменения измеренной физической величины.
Да, действительно, ведь CyclTime определяет интервал времени, через который нужно брать значение ошибки для расчета интеграла. Если уменьшить этот интервал, то соответственно и значение интеграла уменьшится и в итоге ничего не изменится. Тогда как же поступить, если необходимо более быстроее накопление интегральной составляющией ? Устанавливаю значение постоянной интегрирования равное 1 и все равно это медленно.
Малышев Олег
25.11.2008, 11:10
..CyclTime определяет интервал времени... это не совсем так. Разница между текущим и предыдущим CyclTime - интервал времени.
Не совсем понятно зачем вам нужно быстрое изменение интегральной составляющей... Вы точно уверены что в системе есть запаздывание?? Если нужно быстро выйти на уставку возможно поможет _IMIN _IMAX
Вы точно уверены что в системе есть запаздывание??
Не понял причем тут запаздывание ? Что вы имеете ввиду ? Я понимаю под запаздыванием время, которое необходимо для того чтобы изменение управляющего воздействия отразилось на регулируемой величине. В моем случае оно минимально.
Малышев Олег
25.11.2008, 12:55
Ок, тогда вопрос - а не лучше ли применить П или ПД регулятор?
Так ведь необходимо, чтобы при отсутствии ошибки выход регулятора не нулю равен был, а какому то определенному значению, которое формируется как раз благодаря интегральной составляющей. Поеду на объект, попробую поставить плк, может все таки получится с минимальным значением постоянной интегрирования.
Малышев Олег
25.11.2008, 15:03
может быть так y:=A*x+B ???
Если B - не константное значение, а значение каким-то обрзом рассчитываемое, тогда может что то и получится. Потому как в моем случае при одном и том же значении рассогласования могут быть необходимы разные значения выхода регулятора, так как на процесс влияют внешние факторы. ПИ-регулятор вполне должен подойти.
sashakim
24.12.2014, 12:18
Добрый день!
я не много не понял... Подскажите, что я должен прописать PV_TIME?15871
Трофимов Артем
24.12.2014, 16:02
вы должны подать время вычитки значения. в подулях 8АС или ПЛК150 есть специальный регистр для этого.
в противном случае поставьте счётчик i:=i+1; и подавайте значение i На вход , когда обновились данные на входе температуры ( когда вызываете ФБ)
sashakim
24.12.2014, 23:00
Я сегодня попробывал подать на этот вход импульсы (ФБ BLINK). Не будет ли это ошибкой? У меня ПЛК110-30 и может быть подскажите что за специальный регистр?
Надо подавать переменную типа WORD (счетчик), значение которой постоянно увеличивается, как Вам и сказали в предыдущем посте. Специальный регистр - это надо посмотреть документации на прибор, который опрашивает Ваш контроллер. Там надо смотреть таблицу регистров модбас, что-то похожее на "циклическое время измерения входа". Значение этого регистра и надо подавать на вход PV_TIME.
sashakim
25.12.2014, 11:57
У меня ПЛК110-30. В нем нет аналоговых входов. Но я нашел в МВ110-8А. Теперь осталось его вытащить от туда.
sashakim
25.12.2014, 12:34
Спасибо за помощь. У меня ПЛК110-30 и в нем нет аналоговых входом, но я нашел в МВ110-8А. Все заработало.
Muhomor-74
21.02.2016, 11:27
Помогите разобраться, ничего не могу понять откуда читать Circular time или как её заменить... ПЛК110-30 + МВА110-8АС
Здравствуйте!
Имеется ПЛК160. В нем на аналоговый вход приходит сигнал 4..20мА для обратной связи по температуре в PID_FUNCTION. Когда настраивал конфигурацию устройства увидел переменную "AI read time (10ms)" в блоке аналоговых входов ПЛК (см. на фото). Получается я могу подать эту переменную на вход PV_TIME функционального блока PID_FUNCTION?
62009
Можно ли без ПЛК провести эмуляцию работы данного ПИД-регулятора??
Евгений Кислов
04.08.2022, 08:43
Здравствуйте!
Имеется ПЛК160. В нем на аналоговый вход приходит сигнал 4..20мА для обратной связи по температуре в PID_FUNCTION. Когда настраивал конфигурацию устройства увидел переменную "AI read time (10ms)" в блоке аналоговых входов ПЛК (см. на фото). Получается я могу подать эту переменную на вход PV_TIME функционального блока PID_FUNCTION?
62009
Можно ли без ПЛК провести эмуляцию работы данного ПИД-регулятора??
Добрый день.
Получается я могу подать эту переменную на вход PV_TIME функционального блока PID_FUNCTION?
Да, так и нужно сделать.
Можно ли без ПЛК провести эмуляцию работы данного ПИД-регулятора??
Нет, так не получился.
Но если вам нужен обычный ПИД без автонастройки (как PID_FUNCTION), то можете использовать ФБ PID или PID_FIXCYCLE из библиотеки Util.
Вот их можно будет проверить в эмуляции.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot