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

Тема: ST, паузы, async/await/coroutines

Комбинированный просмотр

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

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    попробую обяснить сейчас я прихожу на работу заглядываю в туалет если туалетная бумага если что, Вы предлагаете сидеть возле туалета, пока уборщица не принесет бумагу, т.е есть если она сегодня не придет я и работать не буду и если буду принципиальным то на работе заночую, что уже пахнет Кащенко
    Где я такое предлагаю? Показывайте где и что зависнет и заблокирует другие задачи.

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,256

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Где я такое предлагаю? Показывайте где и что зависнет и заблокирует другие задачи.
    в этом коде. Если максимум цикла например две секунды, а бибка вернет DONE только после третьей, плк уйдет в перегрузку
    Изображения Изображения
    • Тип файла: png owen.png (51.2 Кб, Просмотров: 29)
    • Тип файла: png owen1.png (7.3 Кб, Просмотров: 14)
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    в этом коде. Если максимум цикла например две секунды, а бибка вернет DONE только после третьей, плк уйдет в перегрузку
    Слушайте, ну неужто вы меня подозреваете в непонимании watchdog механизма?

    Прочитайте, пожалуйста, ещё раз 1-е сообщение в этой теме. Я же написал, что "команда ПАУЗА" будет компилироваться в CASE-автомат.

    Касательно вашего возражения: команда "ПАУЗА" как раз и будет приводить к выходу в основной цикл.
    Как раз в моём REPEAT цикле пауза есть:
    Код:
    	REPEAT
    		res:=OwenFileOpenAsync('usb:test.dat','a',ADR(handle));
    		IF res = ASYNC_WORKING THEN
    			ПАУЗА;  <--- ВОТ ОНА, ПАУЗА!!!
    		END_IF;
    	UNTIL res<>ASYNC_DONE
    	END_REPEAT;
    Как раз, если OwenFileOpenAsync вернуло ASYNC_WORKING, то это означает, что функция ещё не доработала и нам нужно вернуть управление в ПЛК и пробовать в следущий раз.
    Именно это ПАУЗА и сделает. Она вернёт управление в ПЛК, а при следующем вызове мы продолжим как раз с этого момента.

    К слову, если возвращаемых значений более чем 2 (ASYNC_WORKING / ASYNC_DONE), то это не меняет саму суть.


    Использовать примерно так:

    Код:
    PROGRAM PLC_PRG
    VAR
      i: INT;
      filesCreated: INT;
    END_VAR
    
    	i := i+1;
      (* Т.е. в основном цикле ПЛК пинаем программу FileWriteRead, она продвигается (или не продвигается) и тут же возвращает управление нам *)
    	ВЫПОЛНИТЬ_ШАГ FileWriteRead;
    	filesCreated := FileWriteRead.cntr;
    END_PROGRAM
    
    ASYNC PROGRAM FileWriteRead
    VAR_OUTPUT
      cntr: INT;
    END_VAR;
    WHILE TRUE
    	res := OwenFileOpenAsync2('usb:test.dat','a',ADR(handle));
    
    	IF res<0 OR handle=0 THEN
    		CONTINUE; (* ошибка, поехали сначала *)
    	END_IF
    
    	res := OwenFileWriteAsync2(handle,ADR(bufout),14,ADR(result));
    
    	IF result=14 THEN
    		res := OwenFileReadAsync2(handle,ADR(bufin),14,ADR(result));
    	END_IF;
    	
    	res := OwenFileCloseAsync2(handle,ADR(result));
    	cntr := cntr+1;
    END_WHILE;
    END_PROGRAM;
    Последний раз редактировалось Владимир Ситников; 10.10.2017 в 12:44.

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 11.05.2018, 13:01
  2. Режим паузы в ТРМ251 на прошивке 2.10
    от Brewer в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 29.03.2016, 16:10
  3. Реализация паузы в SFC
    от KoT'86 в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 05.06.2013, 22:28
  4. ПЛК63 - непонятные паузы в исполнении при опросе по 485
    от Alex_yu в разделе Помощь Разработчикам
    Ответов: 9
    Последнее сообщение: 02.07.2011, 23:54

Ваши права

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