PDA

Просмотр полной версии : выходной сигнал ПИД регулятора



Fix_m
17.12.2012, 10:23
Добрый день!
прописал ПИД-регулирование для ПЛК150, который , меряя температуру охлаждающей жидкости, через выходной сигнал 0-5В регулирует скоростью электродвигателя. этот электродвигатель гоняет охлаждающую жидкость. Чем больше скорость вращения, тем быстрее охлаждается жидкость. Стабилизируемое значение температуры - 95 градусов.
проблема такая.
если температура более 95 градусов, то на выходе 0В, электродвигатель тормозится, если менее 95, то ускоряется (сразу становится 5В). но ведь он работает на охлаждение!!!! должно быть наоборот. если меньше 95, то медленно крутится, если более 95, то быстрее и быстрее, пока не достигнет максимальной скорости ,чтобы охладить жидкость!
Как это возможно прописать в проге?
И если сможете помочь, то подскажите как плавно изменять скорость двигателя в районе 95 градусов. (чтобы не было резких скачков от 0 до 5 В). это решается подбором коэффициентов?

capzap
17.12.2012, 10:46
и решается с помощью коэффицентов и еще у регуляторов бывает режим тепло/холод

Fix_m
17.12.2012, 12:08
и решается с помощью коэффицентов и еще у регуляторов бывает режим тепло/холод

Спасибо, помогите подробнее)
я применил CTRL_PI из библиотеки oscat.de . можете подсказать как изменить режим?

lara197a
17.12.2012, 12:20
Вам проще термостат поставить. Значение стандартное. Работать будет стабильно. Дешево и надежно.

Или ТРМ на 3-х ходовой кран поставить.

Fix_m
17.12.2012, 12:37
Вам проще термостат поставить. Значение стандартное. Работать будет стабильно. Дешево и надежно.

Или ТРМ на 3-х ходовой кран поставить.
К сожалению, мы уже закупили оборудование. и надо его применить.
кто-то может предложить решение проблемы в моем случае? как прописать это в коде программы?

capzap
17.12.2012, 12:44
я пока только на телефоне, но помоему там надо местами поменять уставку и текущее значение тогда начнет охлаждать, но это лишь версия гарантировать сейчас не могу

Fix_m
17.12.2012, 14:13
я пока только на телефоне, но помоему там надо местами поменять уставку и текущее значение тогда начнет охлаждать, но это лишь версия гарантировать сейчас не могу
жду, когда сможете, помочь)

petera
17.12.2012, 14:34
жду, когда сможете, помочь)
Пропустите выходной сигнал с блока CTRL_PI через функцию F_LIN2 из той же библиотеки OSCAT
X1:=0
X2:=5
Y1:=5
Y2:=0
На выходе будет сигнал с обратным направлением изменения.

capzap
17.12.2012, 15:24
Пропустите выходной сигнал с блока CTRL_PI через функцию F_LIN2 из той же библиотеки OSCAT
X1:=0
X2:=5
Y1:=5
Y2:=0
На выходе будет сигнал с обратным направлением изменения.

Это не должно работать, пид посчитал разницу между уставкой и текущей температурой вычислил процент открытия например 30процентов, а дали команду исполнительному механизму 70процентов, другими словами там где клапан должен закрываться он еще больше откроется. Тут как раз должно быть, при нагреве если уставка выше текущей, то клапан открывается, а при охлаждений должен закрываться, чтоб это обеспечить в формуле надо менять местами уставку с текущей

Fix_m
17.12.2012, 16:08
Это не должно работать, пид посчитал разницу между уставкой и текущей температурой вычислил процент открытия например 30процентов, а дали команду исполнительному механизму 70процентов, другими словами там где клапан должен закрываться он еще больше откроется. Тут как раз должно быть, при нагреве если уставка выше текущей, то клапан открывается, а при охлаждений должен закрываться, чтоб это обеспечить в формуле надо менять местами уставку с текущей

думаю, в моем случае petera будет прав. так как сигнал подается не на клапан, на электродвигатель, который вращаясь гонит охлаждающую жидкость с разной скоростью. мне как раз сигнал надо будет подавать, на уменьшение скорости вращения.
как вы думаете?

capzap
17.12.2012, 17:43
а какая разница клапан или насос, сто процентов у всех означает максимум, Вы же сами написали чем больше вращение двигателя там больше охлаждает

petera
17.12.2012, 18:04
Будет работать и если местами поменять уставку с текущим значением, и если сделать как я предлагаю.
Формула для этого регулятора
Y = KP * DIFF + KI * INTEG(DIFF) + OFFSET
где DIFF = SET_POINT - ACTUAL

Fix_m
21.12.2012, 11:17
Спасибо большое за ответы! мне очень помогли! сейчас всё работает.