TN большой задавать не надо и все будет нормально.
Вид для печати
А по этому вопросу можете подсказать? Тут получается то, что данные с СПК в облака передаются с выходов ModbusTCP_Slave_Device. Что бы писать с облака в СПК надо использовать Входы ModbusTCP_Slave_Device, но как организовать? Ведь у меня коэффициенты ПИД'ов - Real, которые передаются как два ворда через функцию объединения, но что тогда использовать на входах ModbusTCP_Slave_Device? Те же самые 2 ворда?
Фиг знает. Предполагают, что задвижки закрылись и давление превышало (хотя странно, по идее клапан должен быть для этих целей). Я не на месте, поэтому не владею ситуацией по котельной, и графики соответственно тоже не могу сделать. Надо будет наверно тоже вывести в облака выходы ПИДа, завтра скину проект им, зальют с флэшки тогда. Там котельная рабоает только в процессе сушки, а не всё время.
Смешалисьвкучулюдикони.
Вам не мешало бы почитать теорию и понять разницу между T и K применительно к ПИД.
Время интегрирования - делитель. Меньше время - быстрее И-часть..
Ki = 1 / Ti
Время дифференцирования - множитель. Меньше время - медленнее Д-часть..
Kd = Td
Для инерционного процесса (вроде вашего)
1. нужно большое время интегрирования => малый коэффициент Ki => Большое время TN
2. D-часть влияет мало - можно не юзать (выше говорили). Время дифференцирования - множитель. Меньше время - медленнее Д-часть. Т.е малое TV => почти отключение Д-части. Kd = 0 - да, норм.
Kp и TN - ваше все для инерционных процессов.
Да, теорию я уже читал-перечитал, уже неделю с этим вопросом возимся, понятно, что сказывается отсутствие опыта. А то, что у вас выделено красным это просто, ну не знаю, названия, не более. Методами разными пробовал и Зиглера-Никольса и вот подбором. Тут просто ещё проблема, что пар с котельной не регулируется. По- хорошему, нужен какой-то общий клапан, который бы регулировал подачу пара на "гребёнку", а уже задвижки регулировали бы каждая пара по своей линии. А тут получается, давление пара падает, задвижки открыты полностью, потом котельная начинает разгоняться, пар идёт по линиям через калориферы, датчик срабатывает, но задвижки не успевают закрыться вот и скачки такие. Не знаю, это всё конечно предположения. График ровный, порядка до 1 градуса в разные от уставки стороны, но до тех пор пока давление в котельной не доходит до минимума, потом начинается её разгон и вот результат.
УдачиЦитата:
А то, что у вас выделено красным это просто ... названия, не более.
....
VAR_GLOBAL RETAIN
// уставка регулятора
kP1:REAL:=5.0; // P регулятора
kI1:REAL:=500.0; // I регулятора
kD1:REAL:=0.0; // D регулятора
__________________________________________________ _______________
GlobalVar.Regul1(
SET_POINT := PLC_PRG.Ust_T1,
KP := GlobalVar.kP1,
TN := GlobalVar.kI1,
TV := GlobalVar.kD1,
Y_MANUAL := GlobalVar.y1_man,
Y_OFFSET := 0,
Y_MIN := 0,
Y_MAX := 100,
MANUAL := GlobalVar.PID1man,
RESET := GlobalVar.res1,
Y=>GlobalVar.outR1,
LIMITS_ACTIVE=>,
OVERFLOW=>);
Ближе к октябрю еще что-нить внезапно всплывет?Цитата:
тут я не верно указал- не PID_CYCLE, а просто PID
Что за чудо неведомое?Цитата:
RegCycle : DWORD:=15;
________________
GlobalVar.TimerPID(IN:=NOT GlobalVar.TimerPID.Q , PT:=GlobalVar.RegCycle*T#1S);
IF GlobalVar.TimerPID.Q THEN .....
RESET зачем трогаете?
Повторюсь: Не я автор, я просто внёс изменения, чтобы не человек уставку перебивал, а она сама менялась, а человек только мог корректировать в таблице значения уставок и время шага, по необходимости, поэтому в саму программу работы PID я не лез. Только недавно вопрос возник, вот сейчас разбираюсь с основной программой, поэтому про Reset не могу сказать ничего.
Ну как разберетесь - расскажите что и когда вызываетсяЦитата:
вот сейчас разбираюсь с основной программой,
Ошибаетесь.
При Y_MIN <> Y_MAX останавливается. Но значение интеграла при этом <> граница выхода. Значение интеграла упирается в такую расчетную границу которая дает возможность выходу сдвинутся от своей границы при первом же изменении знака E с учетом текущей П и Д частей. Этот ПИД писали реальные ребята, а не сферические кони.
При Y_MIN <> Y_MAX никогда не будет OVERFLOW
При Y_MIN = Y_MAX этот ПИД работает как "классический конно-сферический" с неограниченным интегралом, и как следствие, с OVERFLOW и вытекающими.
А kvs этих клапанов адекватный? Уверены что зависимость расхода линейна/близка линейному от выхода ПИД'а? Что после 5...10% открытия клапана им вообще что-то регулируется?Цитата:
Клапана начали закрываться
Если TN стоит в знаменателе (см. картинку), то он должен быть большим. Ранее про величину TN я написал не верно. Я бы поставил для начала TN = 5000, а KP = 10.
Кстати, ввиду условий получения графика - он очень любопытный с точки зрения - а как оно будет на релюшках с обычным термостатом в режиме практически ОТКР/ЗАКР.
Некая планка от которой можно только лучше. Вывезет ли ПЛК с датчиком в руках ТС супротив реле с термостатом? ))
время до зимы есть. Зимой ПИД регулятор настраивается по бразильской системе)
Она повышается автоматом на 2-3 градуса(в зависимости сколько поставит оператор) и цикл идёт полчаса (ну или так же, сколько выставит оператор, но обычно полчаса) на этой уставке. До этого я делал, что 5-6 градусов и цикл час.
Поставили параметры для верхнего графика 6 и 650, для нижнего 5 и 600...Наблюдаем...
#47 актульно
на фоне графиков выше,
А про "неповерю" - зачем мне это? Это не основная полирующая настройка
по нижнему графику,
kp умножить бы на 1.5, а TN на 2.5
но это просто предположение. Гарантий улучшения нет) Куда откатится сами знаете.
Как вызывается пид?
Предположу что конкретно здесь TC LIN_TRAFO'ой по сути ограничивает рассогласование при изменении уставки.
На графике #68 же видно.
LIN_TRAFO можно и для actual'а использовать для той же цели. Как более явный фильтр
..
Хотя не. Для общей фильтрации рассогласования придется по-другому ПИД обвешивать (само рассогласование подавать на acual, а уставку делать 0) или внутрь лезть.