Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

Тема: Вопросы по переводу алгоритма из блок-схемы в язык ST

  1. #11

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    надо описать условия возврата в основную прогу, а потом хоть всю работу выполнять в этом ФБ
    Не понимаю. Если я вызвал функциональный блок, то управление передаётся в него, это понятно. Но разве по выполнению всех строк блока управление не передаётся в основную программу? Не могли бы вы на примере моей программы показать, как оформить обработку нажатия кнопки _влево_ в виде функционального блока, передать ему управление целиком и пример условия возврата в основную программу? Спасибо заранее.
    Последний раз редактировалось Вова; 02.06.2015 в 05:58. Причина: исправил ошибку

  2. #12

    Lightbulb

    Цитата Сообщение от Вова Посмотреть сообщение
    Не понимаю. Если я вызвал функциональный блок, то управление передаётся в него, это понятно. Но разве по выполнению всех строк блока управление не передаётся в основную программу?
    если ФБ из одной строки вида
    out:=in1+in2;
    то да, надолго тут не задержишься.
    если же у вас в ФБ описан алгоритм (на SFC) подготовки космического корабля к запуску в долгий полет, по окончании которого ФБ радостно рапортует о проделанной работе, то тут придется задержаться, и чтоб в случае чего прервать этот алгоритм надо описать условия преждевременного завершения
    управление туда, управление сюда... если вызывается ФБ это еще не значит, что в основной программе в этот момент нельзя производить никаких действий. контроллер все равно обрабатывает весь код.
    вот слабо, но на вашем примере - в каком-то ФБ идет обработка каких-либо условий и выполнение каких-либо действий. а если в этот момент произошел сбой, АО съехал с рельс (просто для примера). где будет сидеть код обработки этой ошибки, в ФБ, в основной программе? если в основной, то по вашим словам вы все управление передаете в ФБ. так можно и установку сломать. а если обработка в ФБ, то что же вы будете 1 и тот же код пихать во все ФБ?
    Последний раз редактировалось swerder; 12.04.2011 в 13:20.

  3. #13

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    управление туда, управление сюда... если вызывается ФБ это еще не значит, что в основной программе в этот момент нельзя производить никаких действий. контроллер все равно обрабатывает весь код.
    Мне просто казалось, что в конкретный цикл контроллер обрабатывает одну задачу (если в ней идёт вызов других, то и их тоже, конечно). А далее - по условию, т.е. если одна программа, то в следующем цикле - тот же CASE, если используется несколько задач, то будет вызов задачи циклически либо по событию. Но я правильно понимаю, что в одном цикле обрабатывается только одна задача, или нет?
    Последний раз редактировалось Вова; 02.06.2015 в 05:59.

  4. #14

    По умолчанию

    Цитата Сообщение от Вова Посмотреть сообщение
    Но я правильно понимаю, что в одном цикле обрабатывается только одна задача, или нет?
    нет. в каждом цикле ПЛК опрашивает входы, обрабатывает всю программу пользователя, записывает выходы, (передает данные по сети)
    Цитата Сообщение от Вова Посмотреть сообщение
    То есть обработка будет в отдельной программе, но вызываться она будет немедленно, а так как во всех задачах у меня нет длительных ожиданий чего-либо, то думаю обработка аварийной ситуации не доставит трудностей.
    т.е. обработка ошибок в подпрограмме, которая вызывается только по окончании какой либо задачи? а если задача все же затянется?
    Последний раз редактировалось swerder; 12.04.2011 в 14:45.

  5. #15

    По умолчанию

    Цитата Сообщение от swerder Посмотреть сообщение
    нет. в каждом цикле ПЛК опрашивает входы, обрабатывает всю программу пользователя, записывает выходы, (передает данные по сети)
    Так а если у меня все подпрограммы вызываются либо из основной программы, либо по внешнему событию, на основании чего ПЛК будет их обрабатывать, если они не вызываются в конкретный цикл ниоткуда?
    Последний раз редактировалось Вова; 02.06.2015 в 06:01.

  6. #16

    По умолчанию

    Цитата Сообщение от Вова Посмотреть сообщение
    Так а если у меня все подпрограммы вызываются либо из основной программы, либо по внешнему событию, на основании чего ПЛК будет их обрабатывать, если они не вызываются в конкретный цикл ниоткуда?
    это как загадка «Слышен ли звук падающего дерева в лесу, если рядом никого нет?»
    не вызываем - не обрабатывает. а как проверить что не обрабатывает?
    p.s. надо сделать уточнение - под "обрабатывает всю" я имел ввиду не то, что прямо производит вычисления, действия если подпрога не вызвана, а что просто пробегается по простыне кода
    Последний раз редактировалось swerder; 12.04.2011 в 17:09.

  7. #17

    По умолчанию

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

  8. #18
    Пользователь
    Регистрация
    11.03.2010
    Адрес
    Петрозаводск Карелия
    Сообщений
    242

    По умолчанию

    Для того, что бы не пропустить никакого изменения в переменных...и не важно входа это или регистры, таймеры или счётчики....

  9. #19

    По умолчанию

    Господа, может конечно я чего не понял, но

    Пишем на LD 14...20 цепочек и вуаля, зачем так сложно-то. Почитайте литературу по контроллерам (PLC) для начинающих.

  10. #20

    По умолчанию

    Хорошая работа!

    Используйте многозадачность для эмулятора. Обычно параллельно с рабочей программой, прямо в CoDeSys мы запускаем программу эмулирующую объект. В старые времена (до CoDeSys) делали подобные внешние эмуляторы.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Ваши права

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