Страница 3 из 6 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 21 по 30 из 64

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

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

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

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    тогда два момента
    почему в одном кейсе не проверять и WORKING и DONE и зачем тогда CASE вобще нужно
    Этот вопрос точно относится к обсуждаемому?

    Я спрошу: вы поняли *в какой код* я предлагаю компилировать "код на паузах"?
    У вас исходно было возражение: код с паузами "зациклится, подвесит ПЛК, приведёт к перезагрузке". Это возражение осталось?

    По-моему, я весьма подробно описал почему код не зависнет. Нет?

    Наличие или отсутствие CASE это экономия на спичках. На что влияет есть тут CASE или нет?


    Цитата Сообщение от capzap Посмотреть сообщение
    во вторых еще раз спрошу если DONE не наступит ни когда что будет с циклом while ?
    Есть 2 варианта:
    1) Если оно будет равно ASYNC_WORKING, то state застрянет в 0 и ФБ будет возвращать управление
    2) Если res окажется ни WORKING ни DONE (а хренью какой-нибудь), то, разумеется, цикл зависнет (вызовет перезагрузку ПЛК).

    Но это как это относится к сути предлагаемого мною подхода?

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

    По умолчанию

    а почему я должен его постоянно открывать? Взять те же примеры по сетевому обмену, отдельно функция по открытию сокета, отдельно по ожиданию приема

    в более сложных случаях (почти во всех в реальности)
    сложные случаю, как раз таки быстро дадут понять, что паузы через бесконечные циклы не дадут работать. Не стали у меня работать быки и коровы когда я стал набирать случайными и не повторяющимися цифрами коды с помощью таких вот циклов
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  3. #3

    По умолчанию

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

    открыть файл
    записать
    IF записалось
    прочитать
    END_IF
    закрыть файл

    повторить (ну, чтобы файл обновлялся новыми данными по мере того, как работает ПЛК)

    ОВЕН показали. У них это 7 состояний и 100 строк

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

    По умолчанию

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

    открыть файл
    записать
    IF записалось
    прочитать
    END_IF
    закрыть файл

    повторить (ну, чтобы файл обновлялся новыми данными по мере того, как работает ПЛК)

    ОВЕН показали. У них это 7 состояний и 100 строк
    нет у меня сейчас ни чего с асинхронной бибкой, но было бы что то подобное этому
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  5. #5

    По умолчанию

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

    Если же SysFileRead будет читать по 1 байту (имеет право), то ваш код вообще никогда не сможет файл прочитать.

    И, всё-таки, оно будет не "подобное", а с кучей IF/CASE. Как-никак, если код сначала M циклов тратит на открытие файла, потом N циклов на запись, потом K циклов на закрытие, то где-то нужно хранить "что же мы сейчас должны делать" и нужно правильно учитывать "а что делать дальше" (например, чтобы не забыть закрыть)

    Поэтому я и говорю: "обычный рукописный код" будет сложнее чем 1 IF, который вы показываете.

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

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Тот код выглядит странным, ведь там на каждом цикле ПЛК файл открывается, читается и закрывается.

    Если же SysFileRead будет читать по 1 байту (имеет право), то ваш код вообще никогда не сможет файл прочитать.

    И, всё-таки, оно будет не "подобное", а с кучей IF/CASE. Как-никак, если код сначала M циклов тратит на открытие файла, потом N циклов на запись, потом K циклов на закрытие, то где-то нужно хранить "что же мы сейчас должны делать" и нужно правильно учитывать "а что делать дальше" (например, чтобы не забыть закрыть)

    Поэтому я и говорю: "обычный рукописный код" будет сложнее чем 1 IF, который вы показываете.
    это кусок рабочей программы с производства, показывающий как я читаю файлы, ни чего больше к нему я дописывать не должен, максимум код может повториться один для настроек программы, другой для рецептуры

    ЗЫ не приходило в голову что сишный код в библиотеке сам решает первый это запрос на открытие или ожидание ответа
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    сложные случаю, как раз таки быстро дадут понять, что паузы через бесконечные циклы не дадут работать
    Пример "сложного случая" есть? Ну, чтобы обсуждать что-то конкретное, а не абстрактное "быстро дадут понять".

    Я переписал пример "асинхронной записи файлов" -- стало намного понятнее.

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

    По умолчанию

    Есть POSIX
    пускай он есть, как он относится ко мне, между мной и им есть еще приложение в виде набора билиотек syslibfile, мне оно возвращает готовый результат, ни где не сказано что я общаюсь на прямую с ОС
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  9. #9

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    пускай он есть, как он относится ко мне, между мной и им есть еще приложение в виде набора билиотек syslibfile, мне оно возвращает готовый результат, ни где не сказано что я общаюсь на прямую с ОС
    А где-то сказано, что SysFileRead всегда читает целиком?
    Я найти не смог. Максимум нашёл то, что "SysFileRead возвращает количество прочитанных байт". Это намекает на то, что количество прочитанных байт может отличаться от того количества, которое "просили прочитать".
    Последний раз редактировалось Владимир Ситников; 10.10.2017 в 19:03.

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

    По умолчанию

    диалог опять превратился в то как вы "давите своим интеллектом", обсуждение нужности пауз превратилось в обсуждение что я выложил неправильный код. Напоминаю, что в выложенном Вами коде нет намека на дочитывание файла, не хотите принять что мой код проще Ваших замудренностей, да наздоровье
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

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

Похожие темы

  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

Ваши права

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