Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя
Показано с 41 по 50 из 64

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

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

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Разумеется, разворачивать будет не КДС.
    т.е. вместо привычной записи
    Код:
    res:=OwenFileOpenAsync('usb:test.dat','a',ADR(handle));
    		IF res = ASYNC_DONE THEN
    			(* выполняем дальнейшие действия по теме *)
    		END_IF;
    в КДС будет "портянка" кода, даже если она кем то протестирована
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  2. #2

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    т.е. вместо привычной записи
    Код:
    res:=OwenFileOpenAsync('usb:test.dat','a',ADR(handle));
    		IF res = ASYNC_DONE THEN
    			(* выполняем дальнейшие действия по теме *)
    		END_IF;
    Такая запись не подойдёт, ведь, вы что, на каждый цикл ПЛК будете заново открывать файл?

    После того как он откроется его до закрытия открывать не нужно.
    Иными словами, если мы начали файл писать, то открывать его ещё раз даже вредно.

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    хочу вернутся на пару строк вверх
    Наверняка что-то умное, но всё равно непонятное.

  4. #4

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    так в кейсе можно шагать куда угодно
    Можно, и что?

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    так это и есть одна из основных фишек кейса
    Ну, фишка, и что?
    Вы о том, что "всё и так можно сделать на CASE'ах?

    Наверняка же понимаете, что "делить CASE состояния вручную" тяжелее и менее надёжно.

  6. #6

    По умолчанию

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

    Вон, например, ПЛК110 + MasterScada4D. Там вообще КДС нет. И, ничего.

  7. #7

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А зачем там ST с кейсом оставили ?
    В 4D?
    Так в стандарте есть CASE, вот и оставили. Какие с ним проблемы?

    Я же не говорю, что нужно срочно все CASE'ы переписать на паузы. Я говорю, что ПАУЗА и встраивание асинхронных ФБ в сам компилятор может сильно упростить понимание, поддержку и написание кода.

  8. #8

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Обычное начало потокофилов ))
    Снова какие-то странные комментарии.

  9. #9

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Просто эквивалент tthread'а с блокирующими операциями. Но к ним тогда нужны человечьи события, а их тут нету.
    Снова мимо кассы?

    "события", "state machine" это, да, может требоваться одновременно с асинхронным выполнением, но это не исключающие, а дополняющие друг друга штуки.

    Пример:
    "работа с файлом" -- это просто асинхронный код (возможно, с небольшим ветвлением, но почти прямолинейно)
    На примере с файлом видно, что "никакие события" там не нужны. Просто берём и используем.

    "обработка сетевого протокола" -- тут, возможно, поинтереснее. И, вполне возможно, что тут нужна комбинация автомата (ну, обычного) и асинхронщины.

    Как вариант, можно сделать "полноценную библиотеку modbus" и посмотреть потребуются ли там "события" или нет.

  10. #10

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Где ? Вы это и пытаетесь с самого начала предложить. Пост #35 - просто классический вариант из статей на тему "а потоке это все проще .."
    Тут я вас поправлю: пост 35 называется "а в императивном духе гораздо проще".
    К потокам он не имеет отношения, т.к. я с самого начала заявлял, что код не будет "блокироваться".

    Потоки обычно используют тогда, когда нужно выполнить блокирующийся код, и так, чтобы основной поток не страдал из-за этих блокировок.

    Я же говорю про async/await/coroutines/fibers -- когда "сама работа делится на небольшие кусочки и выполняется понемногу".
    Смысл не в том, чтобы "с помощью какой-то матери создать поток в КДС", а в том, чтобы "составлять программу в обычном императивном стиле, а компилятор при этом подменял код на автомат, прерывающийся и продолжающий работать оттуда, где закончил".

    Да, грубо (ну, очень грубо) можно это назвать потоками, но это называется fiber, coroutine и т.п.

Страница 5 из 6 ПерваяПервая ... 3456 ПоследняяПоследняя

Похожие темы

  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, 21:28
  4. ПЛК63 - непонятные паузы в исполнении при опросе по 485
    от Alex_yu в разделе Помощь Разработчикам
    Ответов: 9
    Последнее сообщение: 02.07.2011, 22:54

Ваши права

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