Показано с 1 по 10 из 10

Тема: Проблема с функцией

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Проблема с функцией

    я реализовал функцию внутри функции есть кейс
    При первом запуске функции проблем нет
    При повторном запуске функция начинает не с кейс 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
    Возможно я как-то неправильно создал функцию или ещё что-то сделал нет так?
    Последний раз редактировалось Стас Ц.; 11.10.2023 в 16:11.

Похожие темы

  1. Исключение при работе с функцией OSU.WReplaceSubstring
    от alekstani в разделе Помощь Разработчикам
    Ответов: 3
    Последнее сообщение: 13.03.2023, 15:26
  2. Работа в c функцией на ST в OWEN LOGIC
    от Lev_Cheg в разделе Среда программирования OWEN Logic
    Ответов: 6
    Последнее сообщение: 27.05.2022, 12:48
  3. Ответов: 21
    Последнее сообщение: 24.12.2021, 20:58
  4. проблема с функцией blinker
    от mp3moto в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 22.12.2008, 19:19
  5. проблема с функцией Real_to_string
    от mettled в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 25.04.2008, 17:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •