PDA

Просмотр полной версии : PID_FUNCTION библиотеки PID_Regulators.lib



nvtech
06.11.2008, 09:07
Здравствуйте.
Вопрос касательно блока
Регулятор без автонастройки (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

VadMol
10.11.2008, 17:28
А обнулять CyclTime при переполнении надо ?
И еще такой вопрос: как остановить расчет регулятора и изменение его выхода ? Иногда требуется переключаться в ручной режим управления исполнительным механизмом, а пока оператор будет работать в ручном режиме, надо как то остановить регулятор, чтобы при переключении обратно в автомат интегральная составляющая равнялась нулю, а не содержала какое то накопленное значение

Филоненко Владислав
10.11.2008, 19:04
1.Он сам обнулится, по физической природе своей, как беззнакового числа.
2.Все внутренние переменные доступны по указателю для чтения/записи.

VadMol
10.11.2008, 19:40
По второму ответу не понял, нельзя ли по подробнее ?

Малышев Олег
10.11.2008, 20:01
1) При ручном режиме подавайте на вход SP измеренное значение температуры.
2) Изменить значение интегральной составляющей можно установив _IMIN и _IMAX в нужное значение

VadMol
11.11.2008, 09:50
Спасибо, так и сделаю

VadMol
25.11.2008, 10:08
Если у Вас стандартный цикл ПЛК - 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
Прибавлять чаще можно, но вот в ПИД регуляторе так заложено, что сравнивает он изменение физической величины с таким интервалом времени - это раз.
А второе - нет прямой зависимости интегральной составляющей от времени изменения измеренной физической величины.

VadMol
25.11.2008, 10:41
Да, действительно, ведь CyclTime определяет интервал времени, через который нужно брать значение ошибки для расчета интеграла. Если уменьшить этот интервал, то соответственно и значение интеграла уменьшится и в итоге ничего не изменится. Тогда как же поступить, если необходимо более быстроее накопление интегральной составляющией ? Устанавливаю значение постоянной интегрирования равное 1 и все равно это медленно.

Малышев Олег
25.11.2008, 11:10
..CyclTime определяет интервал времени... это не совсем так. Разница между текущим и предыдущим CyclTime - интервал времени.
Не совсем понятно зачем вам нужно быстрое изменение интегральной составляющей... Вы точно уверены что в системе есть запаздывание?? Если нужно быстро выйти на уставку возможно поможет _IMIN _IMAX

VadMol
25.11.2008, 12:24
Вы точно уверены что в системе есть запаздывание??
Не понял причем тут запаздывание ? Что вы имеете ввиду ? Я понимаю под запаздыванием время, которое необходимо для того чтобы изменение управляющего воздействия отразилось на регулируемой величине. В моем случае оно минимально.

Малышев Олег
25.11.2008, 12:55
Ок, тогда вопрос - а не лучше ли применить П или ПД регулятор?

VadMol
25.11.2008, 14:58
Так ведь необходимо, чтобы при отсутствии ошибки выход регулятора не нулю равен был, а какому то определенному значению, которое формируется как раз благодаря интегральной составляющей. Поеду на объект, попробую поставить плк, может все таки получится с минимальным значением постоянной интегрирования.

Малышев Олег
25.11.2008, 15:03
может быть так y:=A*x+B ???

VadMol
25.11.2008, 21:08
Если 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 и может быть подскажите что за специальный регистр?

amn
25.12.2014, 01:01
Надо подавать переменную типа 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АС

Junoka
04.08.2022, 08:33
Здравствуйте!

Имеется ПЛК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.
Вот их можно будет проверить в эмуляции.