Существует 3 вопроса

1. Функциональный блок PID_3POS_IM_ANR начинает работать только когда мы подаем значение на вход START_ANR=0; Мы так и делаем, но регулирования (то есть нет на выходе никого сигнала (хотя действующее значение 50 а уставка 70)) не происходит. Мы изменяем START_ANR на 1 подключаемся к контроллеру, потом отключаемся и меняем START_ANR на 0. Опять подключаемся к контроллеру и блок начинает работать (мы видим сигнал на выходе)

2. Не могли бы подсказать в каком диапазоне значений брать YDOP, TVAL, PST, PTOL.

3. Как написано в описании библиотеки PID_regulators. Регулирование происходит так: Сначала мы с действующего значения доходим до значения уставки, потом значение стабилизируется, проходит какое-то время и происходит автонастройка, после того как автонастройка заканчивается происходит регулирование. У нас значение стабилизируется (погрешность +- 0.5%), но перехода на автонастройку не происходит.


Vlazh: PSI_MOIST;
PSi_koeff: REAL;
Davl: REAL;
Oshibka: BYTE;
Vlazhnostt: REAL;

Reg_Vlazh: PID_3POS_IM_ANR;
yst_vlazh: REAL;
START_ANR_VL: BOOL;
YDOP_VL: REAL;
TVAL_VL: DINT;
PSt_VL: REAL;
PTOL_VL: DINT;
IMIN_VL: REAL;
IMAX_VL: REAL;
Out_val_vl: REAL;
START_ANR_VL2: BYTE;

PSi_koeff:=0.0064;
Davl:=1013.25;
IMIN_VL:=-1;
IMAX_VL:=1;
YDOP_VL:=5;
yst_vlazh:=70;

VLAZH(T_Dry:=Temp1, T_Moist:=Temp2, A_Koeff:=PSi_koeff, Pressure:= Davl);

Vlazhnostt:=Vlazh.Res;
Oshibka:=VLAZH._err;


Reg_Vlazh(PV:=Vlazhnostt, PV_TIME:=Time1, SP:=yst_vlazh, START_ANR:=START_ANR_VL, YDOP:=YDOP_VL, TVAL:=TVAL_VL, PST:=PSt_VL, PTOL:=PTOL_VL, _IMIN:=IMIN_VL, _IMAX:=IMAX_VL);

Out_val_vl:=Reg_Vlazh.OUT_VAL;
START_ANR_VL2:=Reg_Vlazh.STATE_ANR;

IF

START_ANR_VL2=0

THEN

START_ANR_VL:=0;

ELSE

START_ANR_VL:=1;

END_IF



IF
out_val_vl>0

THEN

Yvlazhnitel:=REAL_TO_WORD(MAX(0, out_val_vl)*655.35);
Osyshitel:=0;
ELSE

Osyshitel:=REAL_TO_WORD(MAX(0,out_val_vl*-1)*655.35);
Yvlazhnitel:=0;


END_IF