1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Подозрительный программный блок ПИД-регулятора

Обсуждение вопросов, не относящихся ни к одному из других подразделов

Модератор: kirillio

Ответить

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Приветствую вас, дорогие коллеги!

Столкнулся с проблемой, погружение в которую вызывает у меня ассоциации с Алисой из "Страны Чудес" - становится всё страньше и страньше.
Итак, имеем несколько воздушных турбо-компрессоров одинаковой модели фирмы, название которой начинается на КОП, а заканчивается на КО.
Когда-то давно эти компрессоры были заказаны с управлением на базе CompactLogix (почему так - отдельная и длинная история).
Технологи жалуются на нестабильную работу ведущего компрессора при работе компрессоров в паре. Приводы входного направляющего аппарата и разгрузочного клапана начинают рыскать почти по всему диапазону, компрессор добром не качает...
Поиски вывели на странный функциональный блок ПИД-регулятора с функцией мёртвой зоны.
Блок этот, судя по всему, не из стандартной библиотеки, а порождение сумрачного итальяно-германского гения.
[+] ST-код этого ПИДа

Код: Выделить всё

// PID REGULATION

// Update Control Value Internal
// Necessary when enabling-disabling PID (and changing CV)
// is faster then the PID execution interval

IF Invert_ControlValue THEN
	ControlValue_Internal := ControlValue_Max - (ControlValue - ControlValue_Min);
ELSE
	ControlValue_Internal := ControlValue;
END_IF;


//Check if ProcesValue_Gain is OK to avoid dividing by zero and not accept negative values
//ProcesValue_Gain is inroduced to have that are similar as the ones used in Elektonikon :
//- Elektonikon uses cbar & PLC uses mbar as Engineering units
//- Kp, Ki, Kd values independent of control value range (BOV : 0->100%; rpm : e.g. 1000-2500)
IF ProcesValue_Gain <= 0 THEN
	ProcesValue_Gain := 1;
END_IF;

//Calculation error
Error := (ProcesSetPoint  - ProcesValue)/ProcesValue_Gain;

//-------------------------------------------Deadband---------------------------------------------------------------

//Check if entered Factor_Gain_Deadband is OK and not accept negative Factor_Gain_Deadband values 
IF Factor_Gain_Deadband < 0 THEN
	Factor_Gain_Deadband := 0;	
END_IF;

//Check if within deadband :
// Use opposite value for deadband max, because : deadband max is positive offset from setpoint & a negative error corresponds with an actual value above setpoint
// Use opposite value for deadband min, because : deadband min is negative offset from setpoint & a positive error corresponds with an actual value below setpoint
IF Error < -Deadband_Delta_Min/ProcesValue_Gain AND Error > -Deadband_Delta_Max/ProcesValue_Gain THEN
	Deadband_Active := 1;
ELSE
	Deadband_Active := 0;
END_IF;

//When deadband is enabled & active : apply deadband gain to kp factor
IF Deadband_Enabled AND Deadband_Active THEN
	Factor_Kp_Gain := Factor_Kp * Factor_Gain_Deadband;
ELSE
	Factor_Kp_Gain := Factor_Kp;
END_IF;

//-------------------------------------------Classic Formula P-------------------------------------------------------

//Classic Formula P
IF Factor_Kp_Gain <= 0 THEN
	P_actionClassic := 0;		//Kp = 0 = exclude proportional influence
					//Check if entered Kp is OK to avoid dividing by zero or accept negative Kp values 
ELSE
	P_actionClassic := Error / Factor_Kp_Gain;
END_IF;

//----------------------------------------------------PID------------------------------------------------------------

//Formula's P,I,D
IF Factor_Ki <= 0 THEN			//Ki = 0 = exclude integral influence
					//Check if entered Ki is OK to avoid dividing by zero or accept negative Ki values 
	Factor_Ki := 0;
	I_action := 0;
ELSE
	I_action := Error* ScanTime / (Factor_Kp_Gain * Factor_Ki * 1000000);	//Deviding by 1000000 because ScanTime is µs
END_IF;
IF Factor_Kd <= 0 THEN			//Kd = 0 = exclude differntial influence
					//Check if entered Kd is OK to avoid dividing by zero or accept negative Kd values
					//Added minus sign in D-action because opposite reaction,
					//bigger should increase D-action and make PID action more stable
	Factor_Kd := 0;
	D_action := 0;
ELSE
	D_action := -(Error - 2 * Error_1previous + Error_2previous) * 1000000 / (Factor_Kp_Gain * Factor_Kd * ScanTime);		//Deviding by 1000000 because ScanTime is µs
END_IF;
IF Factor_Kp_Gain <= 0 THEN		//Kp = 0 = exclude proportional influence
					//Check if entered Kp is OK to avoid dividing by zero or accept negative Kp values 
	Factor_Kp := 0;
	P_action := 0;
ELSE
	P_action := (Error - Error_1previous ) / Factor_Kp_Gain;
END_IF;

//------------------------------------PID control---------------------------------------------------------

// Setting ControlValue Internal, not limited by controlvalue max and min
IF P_actionClassic + ControlValue_Min > ControlValue_Max AND P_ClassicActive THEN
	// When reaching max control value with only P-action : I and D action are eliminated
	ControlValue_Internal :=  ControlValue_Max;		
ELSE
	ControlValue_Internal := ControlValueInternal_previous + (P_action + I_action + D_action);
END_IF;

//To stay within the control band (avoid Windup)
IF ControlValue_Internal > ControlValue_Max  THEN
	ControlValue_Internal := ControlValue_Max;
ELSIF ControlValue_Internal < ControlValue_Min THEN
	ControlValue_Internal := ControlValue_Min;
END_IF;

//PID regulation type : positive error resulting in increasing or decreasing output
IF Invert_ControlValue THEN
	ControlValue := ControlValue_Max - (ControlValue_Internal - ControlValue_Min);		//decreasing output
ELSE
	ControlValue := ControlValue_Internal;							//increasing output
END_IF;

//Save values for next PID cycle
ControlValueInternal_previous := ControlValue_Internal;
Error_2previous := Error_1previous;
Error_1previous := Error;
Сначала мы заметили, что один из экземпляров этого регулятора в своих входных параметрах имеет Factor_Gain_Deadband = 0, и решили, что как только Error оказывается в "мёртвой зоне", деление на ноль (реально - на очень малую величину Factor_Kp_Gain := Factor_Kp * Factor_Gain_Deadband ) через интегральное I_action := Error* ScanTime / (Factor_Kp_Gain * Factor_Ki * 1000000) и/или дифференциальное D_action := -(Error - 2 * Error_1previous + Error_2previous) * 1000000 / (Factor_Kp_Gain * Factor_Kd * ScanTime) воздействие швыряет регулятор прочь из зоны со всей своей пролетарской ненавистью.
Но, продолжая размышлять над происходящим, я задался вопросом :
"- А с какого такого перепугу Factor_Kp_Gain входит в формулы вычисления воздействий в качестве делителя, а не множителя?"

Код: Выделить всё

P_action := (Error - Error_1previous ) / Factor_Kp_Gain;
I_action := Error* ScanTime / (Factor_Kp_Gain * Factor_Ki * 1000000);
D_action := -(Error - 2 * Error_1previous + Error_2previous) * 1000000 / (Factor_Kp_Gain * Factor_Kd * ScanTime);

ControlValue_Internal := ControlValueInternal_previous + (P_action + I_action + D_action);
//конкретное значение ScanTime = 200000 микросекунд или 200 милисекунд//

Если у нас формула с зависимыми коэффициентами, а судя по всему это так, то
Factor_Kp_Gain := Factor_Kp * Factor_Gain_Deadband
должен быть множителем.

Или я не прав и чего-то не учёл?

Как вы думаете?
Дополнительные материалы выложил тут https://disk.yandex.ru/d/EvwbZ0gqtGDZag
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Прошерстив буквари и сеть на предмет реализации блоков ПИД, я убедился в обоснованности своих подозрений.
Реализованный вендором функциональный блок никуда не годится. Удивительно, как всё это несколько лет как-то проработало...
А теперь давайте, доказывайте мне, что я нарушил авторские права, вскрыв защиту этого программного, с позволения сказать, кода.
И что это, ай-яй-яй, и коммерческая тайна.
Если вендор не даёт открытый код на оборудование для ОПО - гоните такого с тендера взашей, иначе нахлебаетесь как я.
Теперь у нас другая забава будет - ПНР и настойка параметров с новой версией регулятора.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

rwg
почётный участник форума
почётный участник форума
Сообщения: 1041
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 55 раз
Поблагодарили: 134 раза

Подозрительный программный блок ПИД-регулятора

Сообщение rwg »

Ryzhij писал(а): 29 июл 2023, 11:45 А с какого такого перепугу Factor_Kp_Gain входит в формулы вычисления воздействий в качестве делителя, а не множителя?"
Когда-то долго разбирался с ПИ-регуляторами Овена. Они вместо Кп используют нечто вроде 1/Кп и называют это "полоса пропорциональности". Она равна у них изменению входного сигнала, при котором П-регулятор меняет выходной сигнал от минимума до максимума.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

rwg писал(а): 30 июл 2023, 21:21 Когда-то долго разбирался с ПИ-регуляторами Овена. Они вместо Кп используют нечто вроде 1/Кп и называют это "полоса пропорциональности".
Проблема не столько в том, какую величину использовать при вычислениях, прямую или обратную, проблема в увязке с логикой "мертвой зоны".
У рассматриваемого регулятора в качестве исполнительных механизмов используется серво-электропривод. Без мертвой зоны вокруг значения, равного уставке, электропривод долго не протянет.

Используемая логика перевода регулятора в режим мертвой зоны противоречит гипотезе о 1/КП.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3577
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Михайло »

В каких случаях мертвая зона обнуляется (переменная, которая приводит к делению на ноль)?

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Ryzhij писал(а): 30 июл 2023, 18:34 В каких случаях мертвая зона обнуляется (переменная, которая приводит к делению на ноль)?
Это происходит когда
Ryzhij писал(а): 29 июл 2023, 11:45 Factor_Gain_Deadband = 0, и ...как только Error оказывается в "мёртвой зоне", деление на ноль (реально - на очень малую величину Factor_Kp_Gain := Factor_Kp * Factor_Gain_Deadband ) через интегральное I_action := Error* ScanTime / (Factor_Kp_Gain * Factor_Ki * 1000000) и/или дифференциальное D_action := -(Error - 2 * Error_1previous + Error_2previous) * 1000000 / (Factor_Kp_Gain * Factor_Kd * ScanTime) воздействие швыряет регулятор прочь из зоны...
поскольку при вычислении интегрального и дифференциального воздействия нет проверки на ноль переменной Factor_Kp_Gain.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3577
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Михайло »

И что за условие приводит к Factor_Gain_Deadband = 0?
А когда Factor_Gain_Deadband != 0?

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

А это входной настроечнный коэффициент, оставленный фирмачем-наладчиком. :ext_secret:
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3577
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Михайло »

Нельзя просто обнулять?

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Михайло писал(а): 31 июл 2023, 07:13 Нельзя просто обнулять?
Как видите, программа под это "не заточена". И это у меня тоже вызывает недоумение.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Реальные настройки
IV_PID2.png
IV_PID.png
BOV_PID.png
Выставленная нулевая ширина мёртвой зоны тоже вызывает недоумение.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17594
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 826 раз
Поблагодарили: 1654 раза

Подозрительный программный блок ПИД-регулятора

Сообщение Jackson »

Кхм, тема интересна исторически, потому что компания, что начинается на КОП и заканчивается на КО на правах OEM использовала (а может и продолжает) DEIF в качестве штатных контроллеров управления. Но не везде. В то же время DEIF уже решал задачу параллельной работы насосов и компрессоров в своих контроллерах не для КОП а просто под пользователя. И работало прекрасно. Странно, что это не было применено самой компанией и не предложено DEIFом. Ну да ладно. Просто историческая справка. Наблюдаю дальше.
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Продолжал "скрипеть мозгами" над программным блоком.
Решил выяснить размерности используемых величин. Оказалось весьма полезно.
Теперь стала ясна цель использования в формуле обратных величин. Просто, понятно и практично измерять и задавать параметры в реальных размерностях.
Но, глядя на получившиеся значения размерностей и оставленные наладчиком настройки, моё изумление :o только возрастает.
Ну, никак не может перестановка клапана на 10% изменять давление лишь на пару милибар )))
Халтура!
rwg писал(а): 30 июл 2023, 21:21 Когда-то долго разбирался с ПИ-регуляторами Овена. Они вместо Кп используют нечто вроде 1/Кп и называют это "полоса пропорциональности".
Спасибо за зерно сомнений!
Ryzhij писал(а): 30 июл 2023, 21:51 Используемая логика перевода регулятора в режим мертвой зоны противоречит гипотезе о 1/КП.
Тут был неправ. Сознаюсь и каюсь. Никакого противоречия нет.

Попутно выловил ещё один "косяк" с отсутствием отключения интегрального и дифференциального воздействия при приближении к нижней границе диапазона регулирования. Верхняя граница обрабатывается, а про нижнюю забыли.
Jackson писал(а): 01 авг 2023, 11:11 на правах OEM использовала (а может и продолжает) DEIF в качестве штатных контроллеров управления. Но не везде. В то же время DEIF уже решал задачу параллельной работы насосов и компрессоров в своих контроллерах не для КОП а просто под пользователя. И работало прекрасно.
Речь о турбокомпрессорах с защитой от помпажа? Или о компрессорах с телом вытеснения?

Плоды раздумий в файлах. Будем "шлифовать".
У вас нет необходимых прав для просмотра вложений в этом сообщении.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

ITop
здесь недавно
здесь недавно
Сообщения: 18
Зарегистрирован: 12 авг 2016, 13:49
Имя: Погодин И. И.
Поблагодарили: 8 раз

Подозрительный программный блок ПИД-регулятора

Сообщение ITop »

Добрый день!

Скорей всего портировали старую программу без переработки кода.
За время работы каких только PID-регуляторов самописных не видел! Понятно, что они все со своими проблемами.
Под Rockwell гораздо удобней PID с независимыми коэффициентами, а ещё лучше сразу PIDE (Enhanced PID) из новых версий.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

ITop писал(а): 02 авг 2023, 09:15 Под Rockwell гораздо удобней PID с независимыми коэффициентами, а ещё лучше сразу PIDE (Enhanced PID) из новых версий.
Я тоже придерживаюсь этой стратегии.
А то, с чем сейчас столкнулся, это просто наше "асутпшное бытие" - реальность, данная нам в ощущениях.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17594
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 826 раз
Поблагодарили: 1654 раза

Подозрительный программный блок ПИД-регулятора

Сообщение Jackson »

Ryzhij писал(а): 01 авг 2023, 22:46 Речь о турбокомпрессорах с защитой от помпажа? Или о компрессорах с телом вытеснения?
Вот этого не могу знать. Это голова в Дании делала лет 10 назад - поди у них спроси теперь.
По вопросам работы Форума можно обратиться по этим контактам.

Sergy6661
read only
read only
Сообщения: 577
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 17 раз
Поблагодарили: 77 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Sergy6661 »

Ryzhij писал(а): 01 авг 2023, 22:46 Плоды раздумий в файлах
Я это перенес в Кодесис, проверил в симуляции...ПИД как ПИД, настройки под конкретный объект делать надо в любом случае.
Единственно по коду у разработчика небрежность, которую только RSLogix прощает, несоответствие типов в выражениях , непонятно зачем делает "// Update Control Value Internal" в начале блока, также непонятен смысл IN_OUT переменных в данной реализации.

И, кстати, судя по настройкам PID2 является "Р" регулятором, а контроль т.н мертвой зоны везде отключен.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Sergy6661 писал(а): 02 авг 2023, 13:04 ...непонятно зачем делает "// Update Control Value Internal"
Там во внешней программе играются входом Enable функционального блока ПИД и пишут во внешний выходной тег свои хотелки. Режимов много, а регулятор то включат, то выключат.

Кстати, немного копнув внешнюю программу удалось выяснить, что IV_PID2 это антипомпажный регулятор, управляющий входным направляющим аппаратом и поддерживающий нулевое отклонение рабочей точки от линии антипомпажного регулирования.
Это считается самым экономичным режимом работы компрессора.
Но, оставив за скобками ошибки реализации, к настройкам регулятора тоже масса вопросов.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Sergy6661
read only
read only
Сообщения: 577
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 17 раз
Поблагодарили: 77 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Sergy6661 »

Ryzhij писал(а): 02 авг 2023, 14:46 Там во внешней программе играются входом Enable функционального блока ПИД и пишут во внешний выходной тег свои хотелки. Режимов много, а регулятор то включат, то выключат.
Так может быть это не регуляторы виноваты, а тот, кто хотелки пишет?
Судя по коду пид регулятора это типовой пид регулятор (Очень похожа формула регулятора в кодесис) с функцией изменения Кр при нахождении внутри мертвой зоны.
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4743
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 397 раз

Подозрительный программный блок ПИД-регулятора

Сообщение VADR »

Ryzhij писал(а): 02 авг 2023, 14:46 удалось выяснить, что IV_PID2 это антипомпажный регулятор, управляющий входным направляющим аппаратом и поддерживающий нулевое отклонение рабочей точки от линии антипомпажного регулирования
Опа... а как это сделано? На известных мне реализациях управления компрессорами антипомпажная защита реализована примерно никак (т.е. она как бы есть, но...), а антипомпажного регулирования нет в принципе.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

VADR писал(а): 02 авг 2023, 21:10 Опа... а как это сделано? На известных мне реализациях управления компрессорами антипомпажная защита реализована примерно никак (т.е. она как бы есть, но...), а антипомпажного регулирования нет в принципе.
Похоже, что тут ситуация аналогичная ;)
Сейчас это регулирование не работает, а даже немножко вредит, из-за некачественно проведённых работ по помпажному тестированию.
Могу рассказать, как оно, антипомпажное регулирование, должно работать.
"Рёбра" процесса выглядят так:
1. В контроллер забивается уравнение для определения положения рабочей точки компрессора в двумерной или даже трехмерной системе координат (Степень_сжатия, Расход, Скорость).
2. В ходе помпажных тестов определяют положение в этих координатах линии (поверхности) помпажа.
3. Немного отступая от этой линии (поверхность) в область устойчивой работы определяют линию (поверхность) регулирования.
4. Записывают уравнение для отклонения (девиации) рабочей точки компрессора от линии регулирования в зависимости от регулируемого параметра. Обычно это отклонение обозначают буквой S и часто называют ещё "помпажным числом".
5. Текущее вычисленное значение S подают на вход РV ПИД-регулятора c уставкой "0", а выход CV регулятора заводят на исполнительный механизм для изменения регулируемого параметра (того же, что в п.4).
На эти "рёбра" дальше ладят границы регулирования, "стратегии выживания" при отказе датчиков, сервисные режимы для обслуживания приборов, режимы ручного управления и т.д., и т.п.
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4743
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 397 раз

Подозрительный программный блок ПИД-регулятора

Сообщение VADR »

Жуть какая. То есть - надо в ходе настройки выходить на помпаж? Не развалится железяка от такого отношения? И что делать, если с течением времени характеристики компрессора "поплывут"? Заново выводить на помпаж для перенастройки?
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Для специалистов, как я заметил, помпажные тесты хотя и хлопотная, но довольно обычная, процедура. Кроме того, есть т.н. ранние признаки надвигающегося помпажа. К таким признакам относится резкий рост радиальной вибрации ротора, когда поток только начинает срываться с лопаток турбины. Такая точка считается за помпажную.
Ну и защиту же при этом никто не отключает, а для настройки антипомпажной защиты сами тесты не очень-то и нужны. Разве что для проверки срабатывания защиты.
Минимальноое количество точек помпажной кривой, которые определялись в процессе тестов, на которых я присутствовал, это - три.
И да, после ремонта и/или существенного изменения газового тракта тесты надо повторять для коррекции помпажной характеристики.
Ноу-хау обработки результатов тестов мне никто не раскрыл. Каждая фирма приезжала со своим софтом для обсчёта и никого из заказчиков к этому не допускали. Вечером тесты - утром в антипомпажный контроллер заливался массив параметров. Затем проверялось качество регулирования.
Так дело обстояло у солидных контор. А после деятельности учреждений "Рога&Копыта" имем, что имеем...
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

VADR
администратор
администратор
Сообщения: 4743
Зарегистрирован: 25 июл 2008, 07:12
Имя: Диев Александр Васильевич
Страна: Россия
город/регион: г. Сегежа, Карелия
Благодарил (а): 225 раз
Поблагодарили: 397 раз

Подозрительный программный блок ПИД-регулятора

Сообщение VADR »

Стало быть, имеются в виду большие газовые компрессоры. Я имел дело с другими - воздушными, с максимальной мощностью 1.6 МВт. Там датчиков вибрации ротора нет в принципе, а помпажная защита не прописана даже в инструкции. Хотя помпажный клапан есть. Есть также ещё более мелкие компрессоры на 800 кВт, называемые технологами воздуходувками, в которых противопомпажная зашита в инструкции прописана, но никогда не проверялась. Там она базируется на поиске колебаний тока нагрузки.
Повторное использование кода не отменяет повторного использования мозга при его повторном использовании.

Автор темы
Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5639
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 602 раза
Поблагодарили: 760 раз

Подозрительный программный блок ПИД-регулятора

Сообщение Ryzhij »

Ну не знаю, тут всё от производителя зависит и года выпуска. Компрессоы, вокруг которых я сейчас камлаю, как раз воздушные с мощностью двигателя 800 кВт и тут есть датчики вибрации.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Ответить

Вернуться в «Общие вопросы»