Язык sfc для чайников

Общие сведения о языке SFC¶

SFC (Sequential Function Chart) расшифровывается как «Последовательность функциональных диаграмм», и является одним из языков стандарта IEC 61131-3. SFC позволяет легко описывать последовательность протекания процессов в системе.

SFC осуществляет последовательное управление процессом, базируясь на системе условий, передающих управления с одной операции на другую. Язык SFC состоит из конечного числа базовых элементов, которые используются как блоки для построения целостного алгоритма протекания программы.

Основные понятия языка SFC¶

Язык SFC использует следующие структурные элементы для создания программы: шаг (и начальный шаг), переход, блок действий, прыжок и связи типа дивергенция и конвергенция.

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

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

Далее описывается каждый элемент SFC диаграммы.

Наиболее важным элементом языка SFC является шаг, который описывает одну операцию. Шаг изображается в виде прямоугольника с собственным именем внутри (см. рис. 7.1).

Рис. 7.1 – Графическое представление «Шага» языка SFC

У каждого шага может быть 3 контакта. Сверху и снизу для соединения с переходом и справа для соединения с блоком действий. Шаг предваряется переходом, который определяет условие для активации данного шага в процессе выполнения программы и отображается в виде горизонтальной черты на ветви диаграммы процесса с указанием имени и условия. Два шага никогда не могут быть соединены непосредственно, они должны всегда отделяться переходом (см. рис. 7.2).

Рис. 7.2 – Шаги «step2» и «step3», соединённые переходом «tr2_3»

Любая SFC диаграмма должна содержать начальный шаг (шаг, выделенный двойной рамкой), с которого начинается выполнение диаграммы.

Переход¶

Между шагами находятся так называемые переходы. Условием перехода может быть логическая переменная или константа, логический адрес или логическое выражение, описанное на любом языке. Условие может включать серию инструкций, образующих логический результат, в виде ST выражения, например:

На рис. 7.4 представлен переход между шагами «Step6» и «Step7» в виде обычного условия:

Рис. 7.4 – Переход между шагами «step6» и «step7» с предопределённым условием «transition4»

На рис. 7.5 представлен переход между шагами «Step8» и «Step9» в виде значения логического выражения «AND» на языке FBD:

Рис. 7.5 – Переход между шагами «step8» и «step9», заданный «логическим И» на языке FBD

Условие не должно содержать присваивания, вызов программ и экземпляров функциональных блоков.

Блок действий¶

Каждый шаг имеет нулевое или большее количеством действий, объединённых, как правило, на диаграмме, в блок действий. На рис. 7.6 показан примера шага «evaluateStep» и связанный с ним блок действий.

Рис. 7.6 – Шаг «evaluateStep» и связанный с ним блок действий, содержащий 3 действия

Блок действий определяет операции, которые должны выполняться при активации (выполнении) шага. Шаги без связанного блока действий идентифицируются как ждущий шаг. Блок действий может состоять из предопределённых действий. Каждому предопределённому действию присваивается имя (на рис. 7.6 это «action0» и «action1»). Одно действие может использоваться сразу в нескольких шагах. Действие может выполняться непрерывно, пока активен шаг, либо единожды. Это определяется специальными квалификаторами, описание которых приведено в таблице 6. Квалификаторы также могут ограничивать время выполнения каждого действия в шаге.

«Прыжок» – переход на произвольный шаг¶

Шаг может быть также заменён «прыжком». Последовательности шагов всегда ассоциируются с прыжком к другому шагу той же самой последовательности шагов. Это означает, что они выполняются циклически. Переход на произвольный шаг – это соединение на шаг, имя которого указано под знаком «прыжка». Такие переходы нужны для того, чтобы избежать пересекающихся и идущих вверх соединений. На рис. 7.7 показана SFC диаграмма, содержащая два «прыжка».

Рис. 7.7 – SFC диаграмма, содержащая «прыжки»

Первый делает переход к шагу «init» в случае выполнения условия «transition4», второй делает переход к шагу «step1», в случае выполнения условия «transition2».

Дивергенция и конвергенция¶

Дивергенция – это множественное соединение в направлении от одного шага к нескольким переходам. Активируется только одна из ветвей. Условия, связанные с различными переходами в начале дивергенции, не являются взаимоисключающими по умолчанию. Взаимоисключение должно быть явно задано в условиях переходов, чтобы гарантировать, что во время выполнения программы активируется одна конкретная ветвь. Пример дивергенции на SFC диаграмме приведён на рис. 7.8 и выделен красным цветом:

Рис. 7.8 – Дивергенция на SFC диаграмме

Конвергенция – это множественное соединение, направленное от нескольких переходов к одному и тому же шагу. Она обычно используется для группировки ветвей SFC – программы, которые берут начало из одинарной дивергенции. Пример конвергенции на SFC диаграмме приведён на рис. 7.9 и выделен красным цветом:

Рис. 7.9 – Конвергенция на SFC диаграмме

Параллельная дивергенция – это множественное соединение, направленное от одного перехода к нескольким шагам. Она соответствует параллельному выполнению операций процесса. Пример параллельной дивергенции на SFC диаграмме приведён на рис. 7.10 и выделен красным цветом:

Рис. 7.10 – Параллельная дивергенция на SFC диаграмме

Параллельная конвергенция – это соединение нескольких шагов к одному и тому же переходу. Обычно она используется для группирования ветвей, взявших начало дивергенции. Пример параллельной конвергенции на SFC диаграмме приведён на рис. 7.11 и выделен красным цветом:

Рис. 7.11 – Параллельная конвергенция на SFC диаграмме

Пример программы на языке SFC¶

На рис. 7.12 приведен пример SFC диаграммы состоящей из начального шага «initStep», шагов «firstStep» и «secondStep» и 3 перехода.

Во время действия «firstStep» выполняется увеличение переменной count на 1. Во время действия «secondStep» из переменной «value» вычитается 10.

Источник

Язык SFC. Структура программы, основные элементы и правила программирования.

SFC (Sequential Function Chart) – язык последовательных функциональных схем, с помощью которого программа представляется последовательностью шагов, разделяемых переходами. Язык хорошо приспособлен для программирования задач логического управления. Очень нагляден.

Язык предназначен для описания последовательных операций по контролю и управлению объектом, которые могут быть представлены набором хорошо описанных шагов, соединенных условными переходами. К каждому переходу присоединяется булево (логическое) условие, обычно записанное на языке ST. Действие внутри шагов детально описываются на других языках, обычно также на ST.

1. Основные компоненты языка SFC.

Одинарная дивергенция и Двойная дивергенция и

Шаг изображается одинарным квадратом. К шагам адресуются по номерам, написанным на квадратике шага. Основное описание шага записывается в прямоугольник, присоединённый к символу шага.

Переход изображается пересекающейся линией. Условие перехода записывается в прямоугольнике, присоединенном к нему.

Каждый шаг и переход должны иметь уникальный идентификатор, по которому к нему ссылаются из других программ. У шага по умолчанию идентификатор GSnnn, где nnn – номер шага. У перехода GTnnn.

GSnnn является сложной переменной, состоящей из 2-х компонетов: GSnnn.х – булева переменная, обозначающая активность шага;

GSnnn.t – таймерная переменная. Время, прошедшее с момента последней активации шага.

Одинарная дивергенция – это множественное соединение от одного шага к нескольким переходам. Условие переходов должно быть взаимоисключающим, чтобы гарантировать, что во время выполнения программы активизируется одна конкретная ветвь.

Одинарная конвергенция – это множественное соединение от нескольких переходов к одному шагу. Используется, чтобы сгруппировать ветви программы, берущие начало из одинарной дивергенции.

Двойная дивергенция – это множественное соединение от одного перехода к нескольким шагам, выполняемым параллельно.

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

Макрошаг – это уникальная группа шагов и переходов на языке SFC, записанных отдельно и изображаемых в основной программе в виде одного символа. Ссылочный номер, записанный в символе макрошага основной схемы или программы, – это ссылочный номер первого шага в теле макрошага. Сам макрошаг представляет собой автономную схему, где первый шаг не имеет верхнего соединения, то есть к нему нет явного перехода, а конечный шаг не имеет нижнего соединения, то есть от него нет переходов. Поскольку макрошаг является уникальным набором шагов и переходов, он не может использоваться в программе на языке SFC более одного раза.

Основная программа Тело макрошага

2. Понятиеактивностишага.

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

3. ДинамическиеправилаязыкаSFC.

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

2) Переход может быть разрешен, если совместно выполняются два условия: а) условие перехода истинно; и б) все непосредственно предшествующие шаги, присоединённые к нему, активны. Если одно из условий не выполняется, переход запрещён и не может быть произведен.

3) Изменение состояния активности шагов – выполнение переходов немедленно приводит к активному состоянию непосредственно следующих за ним шагов и неактивному состоянию непосредственно предшествующих шагов.

4) Если во время выполнения программы шаг одновременно активизирован и деактивизирован приоритет отдаётся активизации.

4. Описание действий внутри шагов.

Описание действий выполняемых во время активности шага, называют вторым уровнем шага SFC. Такое описание обычно выполняется с использованием языка ST (хотя возможно использование и других языков) и дополнительных возможностей языка SFC, так называемых текстовых возможностей. К ним относятся:

Булевы действия

Они присваивают булевой переменной значение активности шага. Булева переменная может быть выходной или внутренней. Ей присваивают значение каждый раз, когда активные шаги начинаются или заканчиваются. Синтаксис основных булевых действий и соответствующие им временные диаграммы приведены ниже.

(N); присваивает переменной сигнал активности шага;

; тот же самый эффект (атрибут N является необязательным);

/ ; присваивает переменной отрицание сигнала активности шага;

(S); устанавливает переменную в 1, когда сигнал активности шага 1

(R); сбрасывает переменную в FALSE, когда сигнал активности шага становится TRUE.

Puls-действия

Это список команд на языке ST или IL, которые выполняются только один раз в момент активизации шага

Операторы языка ST или IL; END_ACTION;

Non-stored-действия

Это список команд на языке ST или IL, которые выполняются на каждом цикле работы контроллера в течение всего периода активности шага (рисунок 4).

Синтаксис описания Non-stored-действия: ACTION(N):

Операторы языка ST или IL; END_ACTION;

SFC действия

Это дочерняя последовательность на языке SFC, запускаемая или уничтожаемое в соответствии с изменением сигнала активности шага.

В отличии от макрошага, который пока не выполнится до конца, не происходит дальнейшего перехода, SFC-действие сразу прекращается при выполнении условия перехода.

SFC-действие может иметь один из следующих спецификаторов: N (“non-stored”), S (установки) или R (сброса).

Основные понятия теории автоматов. Автоматы Мили и Мура. Их аналитическое, табличное и графическое представление.

Абстрактный автомат – это математическая модель системы, обеспечивающая прием хранение и обработку информации.

Рис.1 Графическое изображение автомата

Х – множество, называемое входным алфавитом автомата;

Q – множество внутренних состояний автомата;

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

Работа автомата заключается в следующем: на вход автомата подается послед-ность разрешенных входных значений, которые преобразуются в набор внутренних состояний. На выходе автомат генерирует выходную последовательность, которая зависит от входных значений и от внутреннего состояния. Внутреннее состояние представляет из себя некоторую память о прошлом и устраняет из работы автомата понятие времени.

Математически понятия автомата можно представить следующим образом:

X, Y, Q – определены выше;

Ψ – функция переходов ψ: эта ф-ция ставит в соответствие входному множеству Q и X новое множество состояний команд

φ – функция выходов φ: преобразует внутреннее состояние и входной сигнал в выходной сигнал

q0 – начальное состояние автомата.

Рис. 2. Автомат Мили

Кроме автомата Мили существует автомат Мура у которых в отличие от автомата Мили выходные значения зависят только от внутреннего состояния.

Рис. 3. Автомат Мура

В теории автоматов функции φ и ψ обычно не представляют аналитически, т.е. в какой то определенной форме, а имеют табличную форму представления.

Детерминированный автомат – функции перехода и выходы определены для всех входных сигналов. Если некоторые варианты функции не определены до конца (отсутствуют), то автомат называется частично определенным или недетерминированым.

1. Детерминированный автомат Мили (φ, ψ)

Текущее состояние, q Символы входного алфавита, х
x1 x2 xn
q1 q;y q;y q;y
q2 q;y
qm

2. Недетерминированный автомат Мили (φ, ψ)

Текущее состояние, q Символы входного алфавита, х
x1 x2 x3 x4
q1 q2;y1;y2 *;* *;* q3;y1;y2
q2 *;* q1;y1;y2 *;* q3;y1;y2
q3 *;* *;* q4;y1;y2 *;*
q4 q1;y1;y2 *;* *;* *;*

3. Недетерминированный автомат Мура (φ, ψ)

Текущее состояние, q Символы входного алфавита, х Символы выходного алфавита, ψ
x1 x2 x3 x4
q1 q2 * * q3 y1;y2
q2 * q1 q4 * y1;y2
q3 * q4 * * y1;y2
q4 * * q1 * y1;y2

Граф переходов, у которого в каждой вершине явно указаны значения каждой выходной переменной называется графом переходов с явным заданием всех выходных переменных, иначе граф переходов неявно задан.

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

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

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

Источник

Поделиться с друзьями
admin
Оцените автора
( Пока оценок нет )
Как переводится?
Adblock
detector