PDA

Просмотр полной версии : Pid из UTIL.LIB проблемы



nlf
23.05.2011, 07:15
Проверяю работу Pid из библиотеки UTIL.LIB.
Проблемы с коэфициентом усиления.
GoDeSYS ver 2.3.9.9.
После загрузки программы делаю сброс контроллера, ввожу переменные в среде визуализации, старт контроллера. Происходит нормальный расчет формулы. Изменяю коэфициентом усиления. Программа новое значение не воспринемает, расчет идет со старым коэфициентом усиления. Делаю повторно сброс и пуск. Расчет один раз делается верно.
Также не уверен в правельности работы интегральной части.
Прощу поделится мнениями об этом регуляторе.
Прощу рекомендовать какой PID применять при управлении МЭО с выходом подобным регулятора завода МЭТА (Минетерм 400). Этот регулятор при постояной длительности импульса меняет период их выдачи.

ward
23.05.2011, 16:18
что за плк?

Gans
23.05.2011, 17:54
Прощу рекомендовать какой PID применять при управлении.
На форуме примеры рукодельных ПИД-регуляторов выкладывались вот их и использовать.
На счет Pid из библиотеки UTIL.LIB - на объектах работает, но при пуске и после ресета ведет себя по началу неадекватно, а затем все нормуль :-)
P. S. Все выше указанное проверено/обкатано на ПЛК100.

nlf
24.05.2011, 05:27
что за плк?

ПЛК 110.
В форуме были рекомендации применять этот ПИД.

Как я понимаю, библиотеки GоDeSys прошиваются при применении target фаилов. Предполагаю что здесь не все в порядке с ПИД .
Пытался применять самодельные ПИД. Времени потрачено много, полезного выхода нет. Предпологаю что они зависимы от ПЛК.
Привет вем с Алтая. Здесь наконец весна.

Gans
24.05.2011, 07:05
Забыл упомянуть: я вызываю ПИД-регулятор раз в секунду, а выход подаю на VALVE_REG_NO_POS далее у меня релейные выхода ПЛК100.
Управление клапана через его концевики, которые отключают привод в крайних положениях.

(*==============Далее регулятор температуры ГВС============================*)
TON_GVS(IN:= NOT TON_GVS.Q, PT:=t#1s);
(*IF (-1000000>PID_GVS.D.OUT) AND (PID_GVS.D.OUT>1000000) THEN PID_GVS(reset:=TRUE); END_IF;*)
IF iblnValveManContorl AND iblnIn220OFF THEN (*Проверим положение ручкпереключателя клапана (авт/руч) и наличие напряжения питания*)
IF TON_GVS.q THEN (*Режим управления клапаном ГВС с периодичность 1 раз в секунду*)
R_TRIG_ResetPid_GVS(CLK:=PID_GVS.OVERFLOW, Q=>PID_GVS.RESET); (*Перезапуск регулятора если интегральная сосотавляющая вырасла дофига*)
PID_GVS(
ACTUAL:=rlT_PrjamGVS,
SET_POINT:=rlT_Zadan_Curent,
KP:=0.01*iwdK_Proporc,
TN:=WORD_TO_REAL(iwdTi),
TV:=WORD_TO_REAL(iwdTd),
Y_MANUAL:=0,
Y_OFFSET:=0,
Y_MIN:=0,
Y_MAX:=100,
MANUAL:=FALSE);
END_IF (*IF TON_GVS.q THEN*)
ELSE (*IF iblnValveAuto AND iblnIn220OFF THEN*)
PID_GVS(reset:=TRUE);(*Готовим регулятор к работе*)
END_IF (*IF iblnValveAuto AND iblnIn220OFF THEN*)


IF PID_GVS.Y=0 THEN
qblnMore:=FALSE;
qblnLess:=TRUE;
ELSIF PID_GVS.Y=100 THEN
qblnMore:=TRUE;
qblnLess:=FALSE;
ELSE
ValveGVS_REG_NO_POS(
IN_VAL:=PID_GVS.Y,
DBF:=0.5,
FullMotionTime:= iwdTimeValveMove,
LuftTime:=0,
SYNC:=FALSE,
ReversTime:=3,
MinWork:=0.5,
MinStop:=0.5,
LESS=>qblnLess,
MORE=>qblnMore);
END_IF

nlf
24.05.2011, 08:21
Спасибо за ответ.
Но похоже этот регулятор с ПЛК 110 не работает.
Буду пробовать дальше.
К сожелению наладчиков регулятор с автонастройками не устраивает.
Слышал звон, есть возможность импортировать регуляторы из Сименса.
Но Сименсом не владею.
Может кто выложит конвертацию из Сименса.

Алексей Дмитриев
25.05.2011, 09:23
Я выкладывал неоднократно, поищите на форуме.:)
Там был простой регулятор (не глючный) самописаный, причем первоначально реализовали на сименсе. Отзывы неплохие. Потом где-то здесь же попадались регуляторы как раз для МЭО.
У сименса тоже все регуляторы глюкавые, не обольщайтесь!
Вот, нашел
http://www.owen.ru/forum/attachment.php?attachmentid=3873&d=1302694685

Игорь Петров
26.05.2011, 10:01
Этот регулятор приведен в стандарте МЭК, вместе с простейшей реализацией – основой для развития под свои нужды. Библиотека UTIL никуда не прошивается. Она написана на МЭК языках. Открываете ее в CoDeSys как обычный проект и смотрите реализацию.

Алексей Дмитриев
26.05.2011, 11:48
Как Вы это себе представляете, ведь исходников нет!:confused:

Gans
26.05.2011, 14:03
Как Вы это себе представляете, ведь исходников нет!:confused:
1. Запускаем CoDeSys.
2. Файл->Открыть (Ctrl+O).
3. В нижней части окна напротив надписи "Тип файла" из выподающего меню выбираем "Library (*.lib)"
4. Теперь выбираем библиотеку "Util.lib"

Библиотека открывается с возможностью просмотра/редактирования внутренностей.

Алексей Дмитриев
31.05.2011, 23:22
Спасибо Gans! Действительно все просто открывается и можно глючный алгоритм подправить.