Код:
FUNCTION setPRESS : REAL
VAR_INPUT
pressS: REAL; // нужное давление
END_VAR
VAR
press: REAL; // текушее давление
END_VAR
Это инициализация а дальше что мы в ней делаем
Код:
press:=getPRESS();
CASE PLC_PRG.iStateSetPress OF
0: // определение вектора создания давления и запуск двигателя
IF press < 0.5 THEN
IF press < pressS THEN
driveDOWN();
PLC_PRG.iStateSetPress := 1;
ELSE
driveUP();
PLC_PRG.iStateSetPress := 2;
END_IF
ELSE
IF press < pressS THEN
//driveDOWN();
PLC_PRG.iStateSetPress := 3;
ELSE
//driveUP();
PLC_PRG.iStateSetPress := 4;
END_IF
END_IF
1: // давим на зоготвку
IF press >= 0.5 THEN
stopMOTORS();
PLC_PRG.iStateSetPress := 3;
END_IF
2: //уменьшаем давление на заготовку
IF press <= pressS THEN
stopMOTORS();
PLC_PRG.iStateSetPress := 4;
END_IF
3: // поэтапное давление на заготовку
CASE PLC_PRG_SM.pre OF
0://проверка условия
IF press >= pressS THEN
stopMOTORS();
PLC_PRG.iStateSetPress := 9;
ELSE //возможно надо сделать elseif для контроля состояния дверей
PLC_PRG_SM.pre:= 1;
driveDOWN();
END_IF
1://давим
PLC_PRG_SM.preX:= PLC_PRG_SM.preX + 1;
IF PLC_PRG_SM.preX >= 5 THEN
stopMOTORS();
PLC_PRG_SM.pre:= 2;
END_IF
2://ждём стабилизации
PLC_PRG_SM.preX:= PLC_PRG_SM.preX + 1;
IF PLC_PRG_SM.preX >= 5 THEN
stopMOTORS();
PLC_PRG_SM.pre:= 0;
END_IF
END_CASE
4: // поэтапное уменьшение давления на заготовку
CASE PLC_PRG_SM.pre OF
0://проверка условия
IF press >= pressS THEN
stopMOTORS();
PLC_PRG.iStateSetPress := 9;
ELSE
PLC_PRG_SM.pre:= 1;
driveUP();
END_IF
1://уменьшаем давление
PLC_PRG_SM.preX:= PLC_PRG_SM.preX + 1;
IF PLC_PRG_SM.preX >= 5 THEN
stopMOTORS();
PLC_PRG_SM.pre:= 2;
END_IF
2://ждём стабилизации
PLC_PRG_SM.preX:= PLC_PRG_SM.preX + 1;
IF PLC_PRG_SM.preX >= 5 THEN
stopMOTORS();
PLC_PRG_SM.pre:= 0;
END_IF
END_CASE
5: //
6: //
7: // давим на зоготвку
IF press >= pressS THEN
stopMOTORS();
PLC_PRG.iStateSetPress := 9;
END_IF
8: //уменьшаем давление на заготовку
IF press <= pressS THEN
stopMOTORS();
PLC_PRG.iStateSetPress := 9;
END_IF
9: //
targetvars.error:= 1;
END_CASE
Возможно мне надо создать POU программу, а не функцию, но я всё равно не понимаю почему функция не работает