я реализовал функцию внутри функции есть кейс
При первом запуске функции проблем нет
При повторном запуске функция начинает не с кейс 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




Ответить с цитированием