Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 33

Тема: Программирование на SFC

  1. #1

    Exclamation Программирование на SFC

    Добрый день!
    Прошу вашей помощи по программированию на SFC!
    Мне необходимо автоматизировать линию сращивания древесины по длине.
    Весь процесс поделен на две зоны, которые работают параллельно и независимо друг от друга, на каждую зону я планирую написать программы на SFC т,к нужна определенная последовательность работы. Дополнительно нужна будет программа на SFC для запуска и останова в строгой последовательности основных двигателей станка, где также будут проверяться конт.состояния их пускателей и автоматов.
    Еще необходимо постоянно контролировать датчики безопасности станка.

    У меня возникает вопрос по цикличности такой программы.
    Если я основной PLK_PRG сделаю программу на ST или CFC, где буду проверять безопасность работы, если все нормально вызываю программы:
    -запуск или контроль работы двигателей SFC1,
    -зона1 SFC2,
    -Зона2 SFC3.

    1. Правильно ли я понимаю что в каждом цикле ПЛК в программах SFC будет выполняться не более одного шага, а переход будет выполнен в следующем цикле?
    И если это так то необходимо в каждом переходе из шага в шаг делать альтернативные ветви, где необходимо выполнять определенные условия безопасности работы

    2. При пропадании сигнала Power status, в статистике ПЛК все исполнительные механизмы переведутся в безопасное состояние а программа остановится.
    При возобновлении питания механизмы останутся выключенными а программа продолжит свое выполнение с места останова?
    Чтобы этого избежать необходимо дополнительно проверять переменную питания в каждом переходе и при её пропадании сделать переход в исходный шаг?

    3. Если учитывать все выше написанное, то программы SFC получатся очень большими и будут иметь много ветвей, скажутся ли эти ответвления при условии, что никаких аварийных ситуаций не случится, на скорости работы станка?

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

    По умолчанию

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

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

    По умолчанию

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

  4. #4

    По умолчанию

    Программа должна все равно видеть эту ситуацию и перейти в безопасный режим

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

    По умолчанию

    А кто против?

  6. #6

    По умолчанию

    Цитата Сообщение от TYER Посмотреть сообщение
    Программа должна все равно видеть эту ситуацию и перейти в безопасный режим
    к примеру в plc_prg обрабатываете ошибки, переменную "ошибка" заводите в sfc программы, там через ответвление мониторите ее состояние, в случае чего алгоритм прерывается, возвращается на шаг init. + ко всему и там и там по сигналу "ошибка" отключаете все выходы управления

  7. #7

    По умолчанию

    Мной так и предусмотрено. Вопрос в том - эту переменную необходимо проверять в каждом переходе межу шагами.
    Нашла в руководстве пользователя CoDeSys в описании языка флаги SFC:

    SFCInit: Переменная типа BOOL. Когда переменная получает значение ИСТИНА, программа переходит на шаг Init и все SFC флаги сбрасываются. Шаг Init становится активным, но не выполняется, пока переменная имеет значение ИСТИНА. Как только SFCInit примет значение ЛОЖЬ, выполнение программы продолжится.

    SFCReset: Переменная типа BOOL. Работает подобно SFCInit. Но приостановка выполнения происходит после шага инициализации Init. Поэтомуфлаг SFCReset можно сбросить в самом шаге Init.
    Внимание: начиная с версии компилятора 2.3.7.0, флаг SFCReset сбрасывает также логические действия, ассоциированные с МЭК шагами, чего не было ранее.

    Сейчас попробую проверить как они работают.

  8. #8

    По умолчанию

    SFC порядок работы, флаги и пр. см. 'Отладка прикладных ПЛК программ в CoDeSys' части 6-8

  9. #9

    По умолчанию

    Спасибо. Полезная статья.
    1. Можно использовать Переменную SFCReset для перевода программы в шаг Init, где можно выключить все выходы при попадании питания на ПЛК, чтобы не делать условий переходов в начальный шаг. И я посмотрела она работает одновременно для всех подпрограмм SFC.
    2. Можно использовать действие стандартного SFC для установления/снятия сигнала на выходе ПЛК или блока расширения или для этого лучше использовать упрощенный SFC.
    Если можно, сильно это повлияет на быстродействие программы.

  10. #10

    По умолчанию

    TYER Вы все правильно понимаете. 1 нормально. Обычно короткую главную программу PLC_PRG пишут на LD или ST. В ней идет обработка выбора режимов, кнопки Стоп. Минимум кода - надежность, быстрая реакция. Из нее же идет вызов (если все хорошо) основной управляющей подпрограммы (PRG или FB) автоматического режима, на SFC.

    Выше уже заметили, что переход от шага к шагу – это всегда 1 цикл вызова. Длительность цикла задачи знаем. Число переходов из шага А в шаг Б знаем. Время реакции всегда SFC четко просчитывается.

    Если активируем переменную-действие МЭК SFC, связанную в выходом ПЛК, то физически она поднимается в хвосте своего цикла, как и в любом другом языке. Никаких задержек тут нет.

Страница 1 из 4 123 ... ПоследняяПоследняя

Ваши права

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