Использую среду программирования Codesys v.2.3 для программирования ПЛК ОВЕН 110.60(М02).
Использую функциональный блок ПИД-регулирования из стандартной библиотеки Util.lib.
Во время работы программы переменная ПИД-регулятора ctu_PID.Y всегда равна 0, хотя согласно пред-настройкам входных переменных должна принимать другое значение. Кто-нибудь может проверить код выложенный ниже и объяснить мне как правильно подключать функциональные блоки из библиотек Codesys?
PHP код:
PROGRAM PLC_PRG
VAR CONSTANT
Curr_SetPoint: REAL := 12.5;
Low_Pressure_Set: REAL := 10.0;
High_Pressure_Set: REAL := 15.0;
END_VAR
VAR
ctu_PID: PID;
Curr_Dif_Pressure: REAL;
Tmp: REAL;
Is_Door_Open: BOOL;
END_VAR
Moving1 := Moving2 := 1;
Moving3 := Moving4 := Moving5 := 2;
Is_Door_Open := FALSE;
Curr_Dif_Pressure := 8.6;
ctu_PID.ACTUAL := Curr_Dif_Pressure;
ctu_PID.SET_POINT := Curr_SetPoint;
ctu_PID.Y_MIN := 0.0;
ctu_PID.Y_MAX := 1000;
Tmp := ctu_PID.Y;
IF(ctu_PID.OVERFLOW )
THEN
ctu_PID.RESET := TRUE;
END_IF;
IF NOT( Is_Door_Open)
THEN
IF(Curr_Dif_Pressure < Low_Pressure_Set)
THEN
Frequency1 := REAL_TO_WORD(Tmp);
Frequency2 := REAL_TO_WORD(Tmp);
Frequency3 := 0;
Frequency4 := 0;
Frequency5 := 0;
ELSIF(Curr_Dif_Pressure > High_Pressure_Set)
THEN
Frequency1 := 0;
Frequency2 := 0;
Frequency3 := REAL_TO_WORD(Tmp);
Frequency4 := REAL_TO_WORD(Tmp);
Frequency5 := REAL_TO_WORD(Tmp);
ELSE
Frequency1 := 300;
Frequency2 := 0;
Frequency3 := 300;
Frequency4 := 300;
Frequency5 := 0;
END_IF;
ELSE
Frequency1 := 300;
Frequency2 := 0;
Frequency3 := 300;
Frequency4 := 300;
Frequency5 := 0;
END_IF;
В ручном режиме ПИД-регулятор также не работает(скриншот ниже)