PDA

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



Мухин Сергей
12.02.2008, 09:18
Здравствуйте.
Разъясните мне пожалуйста такой вопрос. Если предприятию необходимо использовать ПИД регулятор, для регулирования температуры при нагревании пресс-форм и при этом количество пресс-форм с десяток, но возможно и появление новых пресс-форм. То каким образом мне применять автонастройку, чтобы можно было сохранить значения всех коэффициентов для последующего их применения?

Например:
1) Сегодня используем п/ф (пресс-форма) №1, причем используем её впервые, применяем автонастройку, работаем и выключаем борудование до завтра.
2) Завтра используем п/ф №2 также впервые производим автонастройку ...
3) Послезавтра необходимо опять использовать п/ф №1. Вопрос что опять производить автонастройку? Или же существует како-то выход в данной ситуации?

PS:
Данная библиотека была рекомендована Вашим специалистом на выставке в Екатеринбурге. Применять данную библиотеку будем в контроллере 154

Малышев Олег
12.02.2008, 10:33
Наиболее простым представляется следующее решение
1) Объявляете два регулятора в RETAIN
2) При использовании пресс формы №1 используете первый, иначе - второй

Если это не совсем устраивает - например по ограничению размера флеша(сохраняете только к-ты ПИД) или хочется подстроить к-ты вручную создайте один экземпляр АНР и один PID_Function. Регулирование будет выполнять PID_function по к-там АНР

p:PID_2POS_IM_ANR;
p1:PID_FUNCTION;
................
p1.TI_:=p.fKi;
p1.TD_:=p.fKi*p.fKdKi;
p1.PB:=p.fK0;

Мухин Сергей
12.02.2008, 11:59
Последнее больше устраивает, т.к. есть возможность сохранить к-ты во внешнем файле и загружать их при вводе задания.

Мухин Сергей
12.02.2008, 12:06
Ещё один вопрос. Не могу никак понять следующее

Если функциональный блок используется не с измерителем ОВЕН, то необходимо завести переменную, в которую прибавлять время, равное периодичности вызова блока (периоду вызова POU). Единица времени в этой переменной должна равняться 1/100 сек, при переполнении значение должно обнуляться и накопление значения времени должно продолжаться;

У нас ведь прога всеравно выполняется циклически, зачем этот счетчик?
Или другими словами, если я не попаду в цикл POU то как поведет себя регуляттор?
Использовать предстоит ADAM 4017 или 4018

Филоненко Владислав
12.02.2008, 13:05
ПИД-регулятор для вычисления диф. и инт. составляющей обязан иметь информацию о времени. Эта информация поставляется в него извне. Если время меняться не будет - ПИД работать не будет.

Мухин Сергей
12.02.2008, 13:58
Т.е. усли к примеру время цикла 150 мс, то с каждым циклом мы увеличиваем значение на 150 пока не отсчитаем 655.35 секунды, затем начинаем снова. Я правильно понял?

Малышев Олег
12.02.2008, 14:30
Да - абсолютно верно. Думаю смысла запускать регулятор чаще чем раз в 500 миллисекунд нет. Переменная типа word при переполнении сама переходит через 0. Достаточно простого инкремента.

Мухин Сергей
13.02.2008, 06:10
Спасибо за подсказку

Думаю смысла запускать регулятор чаще чем раз в 500 миллисекунд нет

Антон
18.02.2008, 12:36
Регулирование будет выполнять PID_function по к-там АНР

p:PID_2POS_IM_ANR;
p1:PID_FUNCTION;
................
p1.TI_:=p.fKi;
p1.TD_:=p.fKi*p.fKi;
p1.PB:=p.fK0;

Можно p.fKi, p.fKi, p.fK0 сохранять в других переменных а при необходимости перезаписывать из этих переменных? (Чтобы всегда работал ПИД с АНР.)