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

Тема: тонкости вложенных шагов Sfc

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

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

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    В CoDeSys 2.3 есть такая тонкость: в шаге INIT "step attributes" использовать нельзя.
    Странно. У Lenze в их Drive PLC developer studio (их вариант codesys) шаг INIT можно задавать, там даже примеры фирменные были: POU для работы с блоками распределенного ввода-вывода. Заданная время "простоя" INIT требовалось для аппаратной инициализации CANbus.

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Если внешний SFC POU ушел на другой шаг, то вложенный SFC POU просто перестает вызываться и более ничего. В итоге 1) он естественно не доработает свою задержку 2) при повторном вызове (когда внешний SFC POU опять придет на шаг, где он вызывается), то пойдет он не с INIT, а с того места, где был брошен.

    внешнего POU.
    А что делать, если в ситуации, описанной Вами в пункте 2, требуется начать с INIT, а не с того места, где он был брошен?

  2. #2

    По умолчанию

    Цитата Сообщение от Kiselev Посмотреть сообщение
    Странно. У Lenze...
    Вполне возможно, они поправили эту 'особенность' в своей системе исполнения. Однако в других контроллерах с CoDeSys нельзя гарантировать, что так будет работать.

    Цитата Сообщение от Kiselev Посмотреть сообщение
    А что делать, если в ситуации, описанной Вами в пункте 2, требуется начать с INIT, а не с того места, где он был брошен?
    Хорошие методы:
    1) проработать алгоритм так чтобы такая нужда не возникала
    2) дать доработать вложенному POU так, чтобы он сам дошел на 'правильный' шаг прежде чем выдаст наверх флаг готовности (см. выше).
    3) составить этот POU так, чтобы после отработки таймаутов он сам бы доходил до на INIT. Тогда при повторном вызове если время таймеров к этому моменту вышло, то он автоматом сразу прошагает куда надо. Таймеры идут даже если блок не вызывается – время остановить нельзя.

    Кривой метод: сбросить извне вложенный POU вызвав его со взведенным флажком SFCInit

Ваши права

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