Цитата Сообщение от EFrol Посмотреть сообщение
А Вам интересно мнение человека, который такое уже реализовывал?
Нет, интересно было как сделать с пид регулятором, т.к. у пид только один выход, а клапана два. В настройках пид минимум указал -100 максимум 100, потом взял макрос, который разделяет этот сигнал на два сигнала - FUNCTION_BLOCK FB_SplitSignal

VAR_INPUT
PID_Signal : REAL; // Вход от ПИД (-100...+100%)
DeadZone : REAL := 2.0; // Мертвая зона
END_VAR

VAR_OUTPUT
Out_Napoln : REAL; // Сигнал для наполнения (0-100%)
Out_Sbros : REAL; // Сигнал для сброса (0-100%)
State : UDINT; // 0-нет, 1-наполнение, 2-сброс
END_VAR

// ----------------------------------------------------------------------------
// ПРЕОБРАЗОВАНИЕ
// ----------------------------------------------------------------------------
IF ABS(PID_Signal) <= DeadZone THEN
Out_Napoln := 0.0;
Out_Sbros := 0.0;
State := 0;
ELSIF PID_Signal > DeadZone THEN
Out_Napoln := PID_Signal;
Out_Sbros := 0.0;
State := 1;
ELSE
Out_Napoln := 0.0;
Out_Sbros := -PID_Signal;
State := 2;
END_IF;

END_FUNCTION_BLOCK
Снимок экрана 2026-04-01 155809.png
И уже сигнал с данного блока подаю на генератор шим из библиотеки, вроде получилось.