Tag Archives: язык SFC

Неявные переменные SFC

Есть 2 основные неявные переменные в стандартном SFC. Это признак активности шага “x” и время его работы “t”. Если заглянуть глубже, то можно заметить еще две переменные с аналогичными названиями, но начинающиеся с символа подчеркивания. Каждое МЭК действие имеет в CoDeSys аналогичный набор переменных плюс свой экземпляр управляющей структуры SFCActionControl

Рис.1 Дерево управляющих структур SFC исполнителя

В упрощенном SFC на каждый шаг неявно объявляется логическая переменная, отвечающая за активность шага. Ее имя совпадает с названием шага: <StepName>. Еще одна переменная имеет имя, начинающееся с символа подчеркивания: <_StepName> . Ее значение изменяется на один цикл вызова раньше. Например, когда шаг получает активность, переменная <_StepName> сразу приобретает значение TRUE, а <StepName> повторяет ее с запаздыванием. Аналогично при деактивации шага. Комбинация значений этих переменных образует четыре возможных состояния шага: пассивен, активация, активен, деактивация (рис. 2). Принудительно задав соответствующую комбинацию при отладке, мы можем выполнить входное, основное или выходное действие. Как вы могли заметить, устройство исполнителя упрощенного SFC существенно проще. Переменные времени шагов и структуры управления действиями для работы упрощенного SFC не нужны.

Рис.2 Диаграмма состояний шага

Но если включить механизм контроля времени выполнения шага, описанный ниже, то CoDeSys все же создает внутреннюю переменную для отсчета времени его активности. Имя переменной образуется так: _time<StepName>.

По умолчанию она не видна. Чтобы получить к ней доступ, ее нужно объявить. Для шага Run_mode она будет выглядеть так: _timeRun_mode : TIME.

Переменные с символом подчеркивания используются для работы внутренних механизмов системы исполнения. Тем не менее, доступ к ним не закрыт. Опытные программисты могут использовать их в отладочных целях.

В стандартном SFC переменные “t” содержат длительность активного состояния. Переменные “_t” хранят абсолютное время момента активации. Это необходимо для поддержки механизма отложенных действий. Как мы уже отмечали, в стандартном SFC переменные “x” можно использовать в программах для целей синхронизации перехо-

дов. В упрощенном SFC для этого служат переменные <StepName>.

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

В диагностических целях можно изменять неявные переменные либо средствами отладчика, либо программно. Однако не используйте неявные переменные на запись в рабочих программах. Это нарушает связь реального хода выполнения шагов с визуальным отображением на диаграмме. Таким образом, SFC диаграмма теряет смысл. Грамотно реализованный программный компонент на SFC может иметь несколько уровней вложений. Отдельные действия могут переставлять собой вложенные диаграммы. Компонент может вызывать другие POU. Но в любом случае последовательность работы компонента должна выражаться средствами языка SFC без применения трюков с неявными переменными.

Редакторы CoDeSys

CoDeSys предоставляет встроенные специализированные редакторы для всех пяти языков МЭК 61131-3 и дополнительный CFC редактор:

  • Список Инструкций (IL)
  • Функциональные блоковые диаграммы (FBD)
  • Релейно-контактные схемы (LD)
  • Структурированный текст (ST)
  • Последовательные функциональные схемы (SFC):

—  мониторинг времени исполнения

шагов

—  автоматический анализатор причин ошибок

—  набор управляющих флагов: сброс, разрешение мониторинга, фиксация переходов и т.д.

  • Непрерывные функциональные диаграммы (CFC):

—  автоматическая расстановка и соединение

—  макро опция для структурирования больших диаграмм.

Два специальных редактора управляют прикладной средой исполнения:

  • Конфигуратор задач задает:

—  циклические задачи и задачи, исполняемые по событиям

—  параметры сторожевого таймера

—  настройку событий

 

  • Конфигуратор ввода-вывода обеспечивает:

—  Profibus конфигурирование на основе GSD файлов

—  CANopen конфигурирование на основе EDS файлов

—  ASI конфигурирование

—  специфическое конфигурирование модульных I/O систем

    Управление сверлильным станком

    Перед началом работы оператор с помощью тумблера выбора определяет режим сверления.

    После нажатия оператором кнопки запуска контроллер начинает управление станком. Подается команда опустить сверло и начинается обратный отсчет координаты. При достижении нижней точки (y=0) снимается команда на опускание и подается команда на сверление.

    Если выбран первый режим, то команда сверления снимается через 5 секунд. Если выбран второй режим, то команда сверления снимается после нажатия оператором кнопки останова сверления.

    Затем контролер подает команду на подъем сверла и начинает прямой отсчет координаты. После достижения верхнего положения (y=70) команда подъема снимается.

    Рисунок 1 Схема упражнения 8.

    Рисунок 1 Схема упражнения 8.

    Программа SFC. Управление сверлильным станком.

    Раздел переменных.

     

    PROGRAM PLC_PRG

    VAR

    start: BOOL; (*сигнал о начале работы станка*)

    y: REAL;(*координата высоты сверла*)

    vniz: BOOL;(*сигнал о движении сверла вниз*)

    sverlo: BOOL;(*сигнал о нахождении станка в режиме сверления*)

    ready: BOOL;(*сигнал о завершении сверления в ручном режиме *)

    vverh: BOOL;(*сигнал о движении сверла вверх*)

    avt: BOOL;(*сигнал включения станка в автоматическом режиме*)

    END_VAR

    Вид основной программы на языке SFC

     

     

    Рисунок 2 Программа на языке SFC

    Рисунок 2 Программа на языке SFC

    Программы действий

    Программы действий

    Программы действий

    Рисунок 3 Атрибуты шага автоматического режима сверления

    Рисунок 3 Атрибуты шага автоматического режима сверления

    Визуализация

     

     

    Рисунок 4Визуализация задачи про станок

    Рисунок 4Визуализация задачи про станок

    Рисунок 5 Настройка положения движущегося блока

    Рисунок 5 Настройка положения движущегося блока

     

    Мой блог находят по следующим фразам