я реализовал функцию внутри функции есть кейс
При первом запуске функции проблем нет
При повторном запуске функция начинает не с кейс 0 а с того места где последний раз закончилась (понял по переменной error)
Код:
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
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
Возможно я как-то неправильно создал функцию или ещё что-то сделал нет так?