БИБЛИОТЕКА НОРМАТИВНЫХ ДОКУМЕНТОВ

ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования

6.7 Элементы последовательной функциональной схемы (SFC)

6.7.1 Общие положения

Подраздел 6.7 определяет элементы последовательной функциональной схемы (SFC) для использования в структурировании внутренней организации программного компонента программируемого контроллера, записанные в одном из языков, определенных в настоящем стандарте, для цели выполнения функций последовательного управления. Определения в подразделе 6.7 приведены из МЭК 60848 с изменениями, необходимыми для того, чтобы преобразовать представления из документального стандарта в набор элементов реализации управления для программного компонента программируемого контроллера.

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

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

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

6.7.2 Шаги

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

Как показано в таблице 54 шаг графически представляется блоком, содержащим имя шага в форме идентификатора или текстуально с помощью конструкции STEP...END_STEP. Направленная в шаг связь (связи) графически представляется вертикальной линией, присоединенной к верху шага. Направленная из шага связь (связи) графически представляется вертикальной линией, присоединенной к низу шага. Как альтернатива, направленные связи представляются в текстовом виде с помощью конструкции TRANSITION... END_TRANSITION.

 

Таблица 54

 

Шаг SFC

 

Номер

Описание

Представление

1a

Шаг - графическая форма с направленными связями

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

1b

Начальный шаг - графическая форма с направленной связью

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

2a

Шаг - текстовая форма без направленных связей

STEP ***:

(* Тело шага *) END_STEP

2b

Начальный шаг - текстовая форма без направленных связей

INITIAL_STEP ***:

(* Тело шага *) END_STEP

3a <a>

Флаг шага - общая форма ***.X = BOOL#1 когда *** активно, в противном случае BOOL#0

***.X

3b <a>

Флаг шага - непосредственное присоединение логической переменной ***.X к правой стороне шага

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

4 <a>

Истекшее время шага - общая форма ***.T = переменная типа TIME

***.T

Примечание 1 - Верхняя направленная связь к начальному шагу не представлена, если у нее нет предшественников.

Примечание 2 - *** = имя шага.

<a> Если свойство 3a, 3b или 4 поддерживается, то возникает ошибка, если программа пользователя пытается изменить связанную переменную. Например, если S4 - имя шага, тогда следующие утверждения будут ошибками в языке ST, определенном в подразделе 7.3:

S4.X:= 1; (* ошибка *)

S4.T:= t#100ms; (* ошибка *)

 

Флаг шага (активное или неактивное состояние шага) представляется логическим значением элемента логической структуры ***.X, где *** - имя шага, как показано в таблице 54. Эта логическая переменная имеет значение 1, когда соответствующий шаг активен, и значение 0, когда он неактивен. Состояние этой переменной доступно для графического соединения в правой части шага, как показано в таблице 54.

Аналогично, истекшее время ***.T с момента начала шага представляется структурным элементом типа TIME, как показано в таблице 54. Когда шаг деактивирован, значение истекшего времени шага остается на том значении, которое оно имело, когда шаг был деактивирован. Когда шаг активирован, значение истекшего времени шага сбрасывается в t#0s.

Область действия имен шага, флагов шага и времен шага является локальной для программного компонента, в котором появляются шаги.

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

Начальный шаг графически изображается с двойными линиями для границ. Когда для графического представления используется набор символов, установленный в 6.1.1, начальный шаг должен быть изображен так, как показано в таблице 54.

Для инициализации системы начальное истекшее время по умолчанию для шагов - t#0s, а начальное состояние по умолчанию равно BOOL#0 для обычных шагов и BOOL#1 для начальных шагов. Однако когда экземпляр функционального блока или программы объявляется как сохраняемый для экземпляра, состояния и истекшие времена (если поддерживаются) всех шагов, содержащихся в программе или функциональном блоке, должны рассматриваться как сохраняемые для инициализации системы.

Максимальное число шагов на SFC и точность истекшего времени шага зависят от реализации.

Ошибка возникает, если:

1) сеть SFC содержит не единственный начальный шаг;

2) программа пользователя предпринимает попытки присвоить значение непосредственно состоянию шага или времени шага.

6.7.3 Переходы

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

Направление эволюции, в соответствии в направленными связями, - от низа предшествующего шага (шагов) к верху последующего шага (шагов).

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

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

a) помещение соответствующего логического выражения на языке ST физически или логически рядом с вертикальной направленной связью;

b) посредством сети релейно-контактных схем на языке LD физически или логически рядом с вертикальной направленной связью;

c) посредством сети на языке FBD, определенном в 8.3, физически или логически рядом с вертикальной направленной связью;

d) посредством сети LD или FBD, выходы которой пересекают вертикальную направленную связь через соединитель;

e) за счет конструкции TRANSITION...END_TRANSITION с использованием языка ST. Конструкция должна включать:

- ключевые слова TRANSITION FROM с последующим именем предшествующего шага (или, если имеется более одного предшественника, с перечнем предшествующих шагов в скобках);

- ключевое слово TO, за которым следует имя следующего шага (или, если имеется более одного преемника, перечень имен следующих шагов в скобках);

- оператор присваивания ":=", за которым следует логическое выражение в языке ST, определяющее условие перехода;

- ключевое слово завершения END_TRANSITION;

f) с помощью конструкции TRANSITION...END_TRANSITION с использованием языка IL. Она должна включать:

- ключевые слова TRANSITION FROM, за которыми следует имя предшествующего шага (или, если имеется более одного предшественника, перечень имен предшествующих шагов в скобках), за которым следует двоеточие ":";

- ключевое слово TO, за которым следует имя шага последующего шага (или, если имеется более одного преемника, перечень последующих шагов в скобках);

- начиная с новой строки, перечень инструкций на языке IL, результат оценки которых определяет условие перехода;

- ключевое слово завершения END_TRANSITION на отдельной строке;

g) использованием имени перехода в форме идентификатора справа от направленной связи. Данный идентификатор должен относиться к конструкции TRANSITION...END_TRANSITION, определяющей один из следующих объектов, оценка которых приведет к присваиванию логического значения переменной, обозначенной именем перехода:

- на языке LD или FBD;

- перечень инструкций на языке IL;

- присваивание логического выражения на языке ST.

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

Ошибка возникает, если во время оценки условия перехода появляется какой-либо побочный эффект (например, назначение значения переменной, кроме имени перехода).

Максимальное число переходов на SFC и на шаг определяется разработчиком.

 

Таблица 55

 

Переход SFC и условие перехода

 

Номер

Описание

Пример

1 <a>

Условие перехода на языке ST, расположенное физически или логически рядом с переходом

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

2 <a>

Условие перехода на языке LD, расположенное физически или логически рядом с переходом

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

3 <a>

Условие перехода на языке FBD, расположенное физически или логически рядом с переходом

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

4 <a>

Использование соединителя

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

5 <a>

Условие перехода на языке LD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

6 <a>

Условие перехода на языке FBD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

7 <b>

Текстовый эквивалент свойства 1 на языке ST

STEP STEP7: END_STEP

TRANSITION FROM STEP7 TO STEP8

:= bvar1 & bvar2;

END_TRANSITION

STEP STEP8: END_STEP

8 <b>

Текстовый эквивалент свойства 1 на языке IL

STEP STEP7: END_STEP

TRANSITION FROM STEP7 TO STEP 8:

LD

bvar1

AND

bvar2

END_TRANSITION

STEP STEP8: END_STEP

9 <a>

Использование имени перехода

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

10 <a>

Условие перехода на языке LD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

11 <a>

Условие перехода на языке FBD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

12 <b>

Условие перехода на языке IL

TRANSITION TRAN78 FROM STEP7 TO STEP8:

LD

bvar1

AND

bvar2

END_TRANSITION

13 <b>

Условие перехода на языке ST

TRANSITION TRAN78 FROM STEP7 TO STEP8

:= bvar1 & bvar2;

END_TRANSITION

<a> Если свойство 1 таблицы 54 поддерживается, то поддерживается одно или более свойств 1, 2, 3, 4, 5, 6, 9, 10 или 11 настоящей таблицы.

<b> Если свойство 2 таблицы 54 поддерживается, то поддерживается одно или более свойств 7, 8, 12 или 13 настоящей таблицы.

 

6.7.4 Действия

6.7.4.1 Общие положения

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

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

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

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

6.7.4.2 Объявление

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

 

Таблица 56

 

Объявление действий SFC

 

Номер

Описание <a>, <b>

Пример

1

Любая логическая переменная, описанная в блоке VAR или VAR_OUTPUT или их графические эквиваленты могут быть действием

 

2l

Графическое описание на языке LD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

2s

Включение элементов SFC в действие

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

2f

Графическое описание на языке FBD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

3s

Текстовое описание на языке ST

ACTION ACTION_4:

bOut1:= bvar1 & bvar2 & S8.X;

FF28(S1:= (C<D));

bOut2:= FF28.Q;

END_ACTION

3i

Текстовое описание на языке IL

ACTION

ACTION_4: LD

S8.X

AND

bvar1

 

AND

bvar2

ST

bOut1

LD

C

LT

D

S1

FF28

LD

FF28.Q

ST

bOut2

END_ACTION

Примечание - Флаг шага S8.X использован в этих примерах для получения желаемого результата такого, как в случае, когда S8 деактивирован, bOut2:= 0.

<a> Если свойство 1 таблицы 54 поддерживается, то должно поддерживаться одно или более свойств в настоящей таблице, или свойство 4 таблицы 57.

<b> Если свойство 2 таблицы 54 поддерживается, то должно поддерживаться одно или более свойств 1, 3s или 3i из настоящей таблицы.

 

6.7.4.3 Связь с шагами

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

 

Таблица 57

 

Связь шаг/действие

 

Номер

Описание

Пример

1

Блок действия, расположенный физически или логически рядом и с шагом

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

2

Сцепленные блоки действия, расположенные физически или логически рядом с шагом

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

3

Текстовое тело шага

STEP S8:

ACTION_1 (L,t#10s,DN1);

ACTION_2(P);

ACTION_3(N);

END_STEP

4 <a>

Поле "d" блока действия

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

<a> Когда используется свойство 4, то соответствующее имя действия не может быть использовано в любом другом блоке действия.

 

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

Как показано в таблице 58, блок действия - это графический элемент для сочетания логической переменной с одним из классификаторов действий для получения разрешающего условия в соответствии с правилами для связанного действия.

 

Таблица 58

 

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

 

Номер

Описание

Графическая форма/пример

1 <a>

"a": Классификатор в соответствии с 6.7.4.5

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

2

"b": Имя действия

3 <b>

"c": Логические "индикаторные" переменные (не рекомендуется)

 

"d": Действие использует:

-

4i

язык IL

4s

язык ST

4l

язык LD

4f

язык FBD

5l

Использование блоков действий в языке LD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

5f

Использование блоков действий в языке FBD

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

<a> Поле "a" может быть пропущено, когда классификатор равен "N".

<b> Поле "c" может быть пропущено, когда индикаторная переменная не используется.

 

Блок действия предоставляет средства опционального задания логических "индикаторных" переменных, указанных полем "c" в таблице 58, которые могут быть установлены заданным действием для индикации его завершения, ожидания, условий ошибки и т.д. Если поле "c" отсутствует, а поле "b" определяет, что действие должно быть логической переменной, то эта переменная интерпретируется как переменная "c", при необходимости. Если поле "c" не определено, а поле "b" не определяет логическую переменную, то значение "индикаторной" переменной всегда считается равным FALSE.

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

Использование "индикаторной" переменной не рекомендуется.

Помимо того, что блок действия связан с шагом, он может использоваться как графический элемент в языках LD или FBD.

6.7.4.5 Классификаторы действий

Классификатор действия связан с каждой связью шага/действия или с каждым событием блока действий. Значение этого классификатора должно быть одним из значений, перечисленных в таблице 59. Кроме того, классификаторы L, D, SD, DS и SL должны иметь связанную продолжительность времени типа TIME.

 

Таблица 59

 

Классификаторы действий

 

Номер

Описание

Классификатор

1

Не сохраняется (нулевой классификатор)

Отсутствует

2

Не сохраняется

N

3

Сброс переопределения

R

4

Установка (Сохранено)

S

5

Ограничено по времени

L

6

Отложено

D

7

Импульс

P

8

Сохранено и отложено по времени

SD

9

Отложено и сохранено

DS

10

Сохранено и ограничено по времени

SL

11

Импульс (передний фронт)

P1

12

Импульс (задний фронт)

P0

 

6.7.4.6 Управление действием

Управление действиями функционально эквивалентно применению следующих правил:

a) С каждым действием был связан функциональный эквивалент экземпляра функционального блока ACTION_CONTROL, определенного на рисунках 22 и 23. Если действие объявлено как логическая переменная, то выход Q этого блока представляет собой состояние этой логической переменной. Если действие объявлено как совокупность операторов или сетей, то эта совокупность должна выполняться непрерывно, пока выход A (активации) функционального блока ACTION_CONTROL поддерживается равным BOOL#1. В этом случае состояние выхода Q (называемое "флагом действия") доступно в пределах действия чтением доступной только для чтения логической переменной, которая имеет форму ссылки на выход Q экземпляра функционального блока, имя экземпляра которого совпадает с именем соответствующего действия, например, ACTION1.Q.

Разработчик может выбрать более простую реализацию, как показано на рисунке 23 b). В этом случае, если действие объявлено как совокупность операторов или сетей, то эта совокупность должна исполняться непрерывно, пока выход Q функционального блока ACTION_CONTROL поддерживает значение BOOL#1. В любом случае разработчик определяет, какое из свойств таблицы 60 поддерживается.

Примечание 1 - Условие Q=FALSE обычно используется действием для определения того, что оно выполняется получением конечного результата во время его текущей активации.

Примечание 2 - Значение Q равно FALSE во время выполнения действий, вызванных классификаторами P0 и P1.

Примечание 3 - Значение A равно TRUE только для одного выполнения действия, вызванного классификатором P1 или P0. Для всех других классификаторов A должно быть истинным для одного дополнительного выполнения после заднего фронта Q.

Примечание 4 - Доступ к функциональному эквиваленту выходов Q или A функционального блока ACTION_CONTROL снаружи относительно связанного действия определяется разработчиком;

 

b) Логический вход в блок ACTION_CONTROL для действия должен быть заявлен как связанный с шагом или с блоком действия, если соответствующий классификатор эквивалентен имени входа (N, R, S, L, D, P, P0, P1, SD, DS или SL). Связь заявляется, как активная, если связанный шаг является активным, или если вход связанного блока действия имеет значение BOOL#1. Активные связи действия эквивалентны набору активных связей всех входов с его функциональным блоком ACTION_CONTROL.

Логический вход в блок ACTION_CONTROL должен иметь значение BOOL#1, если он имеет, по меньшей мере, одну активную связь, и значение BOOL#0 в противном случае;

c) Значением входа T в блок ACTION_CONTROL является доля продолжительности связанного со временем классификатора (L, D, SD, DS или SL) активной связи. Если такая связь не существует, значением входа T должно быть t#0s;

d) Ошибка возникает, если выполняется одно или более из следующих условий:

- более одной активной связи действия имеет квалификатор времени (L, D, SD, DS или SL);

- вход SD в блок ACTION_CONTROL имеет значение BOOL#1, когда выход Q1 его блока SL_FF имеет значение BOOL#1;

- вход SL в блок ACTION_CONTROL имеет значение BOOL#1, когда выход Q1 его блока SD_FF имеет значение BOOL#1;

e) Не требуется реализации собственно блока ACTION_CONTROL, а требуется только, чтобы управление действиями было эквивалентно предшествующим правилам. Как показано на рисунке 24, необходимо реализовывать только те части управления действием, которые соответствуют конкретному действию. В частности, следует отметить, что простой функции MOVE (:=) и функции логического OR достаточно для управления действиями логической переменной, если связи последней имеют только классификаторы "N".

На рисунках 22 и 23 приведена сводка интерфейса параметров и тело функционального блока ACTION_CONTROL. На рисунке 24 приведен пример управления действием.

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

a) С логикой "завершающего сканирования"

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

b) Без логики "завершающего сканирования"

 

Примечание - Данные интерфейсы невидимы для пользователя.

 

Рисунок 22 - Функциональный блок ACTION_CONTROL - Внешний

интерфейс (сводка)

 

 

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

a) Тело с логикой "завершающего сканирования"

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

b) Тело без логики "завершающего сканирования"

 

Примечание 1 - Экземпляры таких типов функционального блока не видимы для пользователя.

Примечание 2 - Внешние интерфейсы таких типов функционального блока приведены выше.

 

Рисунок 23 - Тело функционального блока ACTION_CONTROL

(обзор)

 

 

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

a) Представление SFC

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

b) Функциональный эквивалент

 

Примечание - В данном примере не показана полная сеть SFC и ее соответствующие объявления.

 

Рисунок 24 - Управление действием (пример)

 

Два возможных свойства управления действием приведены в таблице 60.

 

Таблица 60

 

Свойства управлением действием

 

Номер

Описание

Ссылка

1

С завершающим сканированием

в соответствии с рисунком 22 a) и рисунком 23 a)

2

Без завершающего сканирования

в соответствии с рисунком 22 b) и рисунком 23 b)

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

 

6.7.5 Правила эволюции

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

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

Переход разрешен, когда все предшествующие шаги, присоединенные к соответствующему символу перехода направленными связями, являются активными. Пересечение перехода происходит, когда переход разрешен и когда соответствующее условие перехода является истинным.

Очистка перехода вызывает деактивацию (или "сброс") всех непосредственно предшествующих шагов, соединенных с соответствующим символом перехода направленными связями, с последующей активацией всех непосредственно последующих шагов.

Изменение шаг/переход и переход/шаг всегда должно поддерживаться в соединениях элементов SFC, то есть:

- два шага никогда не должны быть связаны непосредственно; они всегда должны разделяться переходом;

- два перехода никогда не должны быть связаны непосредственно; они всегда должны разделяться шагом.

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

Ошибка возникнет, если имеется возможность того, что неприоритетные переходы в разветвлении выбора, как показано в свойстве 2a таблицы 61, одновременно являются истинными. Пользователь может предпринять меры предосторожности, чтобы избежать этой ошибки, как показано в свойствах 2b и 2c таблицы 61.

Синтаксис и семантика разрешенных комбинаций шагов и переходов определены в таблице 61.

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

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

Испытание условия (условий) перехода преемника активного шага не выполнятся до тех пор, пока влияния активации шага не распространятся по программному компоненту, в которой описывается шаг.

Рисунок 25 демонстрирует применение данных правил. На этом рисунке активное состояние шага указано присутствием звездочки "*" в соответствующем блоке. Это примечание используется только для иллюстрации, и не является обязательным свойством языка.

Применение правил, приведенных в этом подразделе, не может предотвратить формулировку "небезопасных" SFC, таких как приведенная на рисунке 26 a), которая может продемонстрировать неконтролируемое распространение маркеров. Аналогично, применение этих правил не может предотвратить формулировку "недосягаемых" SFCs, таких как приведенная на рисунке 26 b), которая может проявлять "замкнутое" поведение. Система программируемого контроллера рассматривает наличие таких условий как ошибку.

Максимально допустимая ширина конструкций "дивергенции" и "конвергенции" в таблице 61 определяется разработчиком.

 

Таблица 61

 

Эволюция последовательности (графическая форма)

 

Номер

Описание

Объяснение

Пример

1

Простая последовательность

Изменение шаг - переход повторяется последовательно

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция от шага S3 к шагу S4 происходит, если и только если шаг S3 находится в активном состоянии, а условие перехода с равно TRUE

2a

Дивергенция последовательности с приоритетом слева направо

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

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S5 к S6, если S5 активен, а условие перехода "e" равно TRUE (независимо от значения "f"), или от S5 до S8, только если S5 активен, и "f" равно TRUE, а "e" равно FALSE

2b

Дивергенция последовательности с нумерованными ветвями

Звездочка "*", за которой следуют нумерованные ветви, указывает на определяемый пользователем приоритет оценки перехода, причем ветвь с наименьшим номером имеет наивысший приоритет

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S5 к S8, если S5 активен, а условие перехода "f" равно TRUE (независимо от значения "e"), или от S5 к S6, только если S5 активен и "e" равно TRUE, а "f" равно FALSE

2c

Дивергенция последовательности со взаимным исключением

Присоединение ("+") ветви указывает, что пользователь будет гарантировать, что условия перехода являются взаимно исключающими

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S5 к S6, если S5 активен, а условие перехода - это TRUE, или от S5 к S8, только если S5 активен, и "e" равно FALSE, а "f" равно TRUE

3

Конвергенция последовательности

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

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S7 к S10, если S7 активен, а условие перехода "h" равно TRUE, или от S9 к S10, если S9 - активен, а "j" равно TRUE

4a

Параллельная дивергенция после одиночного перехода

Двойной горизонтальной линии синхронизации может предшествовать условие одиночного перехода

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S11 к S12, S14, если S11 активен, а условие перехода "b", связанное с обычным переходом, равно TRUE

После параллельной активации S12, S14 и т.д. эволюция каждой последовательности продолжается независимо

4b

Параллельная дивергенция после конверсии

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

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит к шагам S3, S6 и S7, если S2 активен, а переход T2 равен TRUE или S5 активен, а переход T6 равен TRUE

4c

Параллельная конвергенция перед одним переходом

За двойными линиями параллельной конвергенции может следовать одиночный переход

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S13, S15, ... к S16 только в случае, если все приведенные выше шаги, присоединенные к двойной горизонтальной линии, активны, а условие перехода "d", связанное с общим переходом равно TRUE

4d

Параллельная конвергенция перед выбором последовательности

За двойными линиями параллельной конвергенции может следовать дивергенция выбора последовательности

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

Эволюция происходит от S5, S4 и S3 к одному из шагов S6, S7 или S8, только в случае, если все приведенные выше шаги, присоединенные к двойной горизонтальной линии, активны, а условие перехода T2, T5 или T6 равно TRUE, соответственно

5a, b, c

Пропуск последовательности

"Пропуск последовательности" - это особый случай выбора последовательности, (свойство 2), в которой одна или более ветвей не содержат шагов. Свойства 5a, 5b и 5c соответствуют опциям, заданным в свойствах 2a, 2b представления заданным свойствами 2a, 2b и 2c, соответственно

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

(показано свойство 5a)

Эволюция происходит от S30 к S33, если "a" равно FALSE, а "d" - это TRUE, равно TRUE, то есть последовательность (S31, S32) будет пропущена

6a, b, c

Цикл последовательности

"Цикл последовательности" - это особый случай выбора последовательности (свойство 2), в которой одна или большее число ветвей возвращается к предшествующему шагу. Свойства 6a, 6b и 6c относятся к опциям представления, заданным в свойствах 2a, 2b и 2c соответственно

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

(показано свойство 6a)

Эволюция происходит от S32 к S31, если "c" равно FALSE, а "d" равно TRUE, т.е. последовательность (S31, S32) должна быть повторена

7

Стрелки направления

Если это необходимо для ясности, символ "<" набора символов, определенного в 6.1.1, может использоваться для того, чтобы указывать поток управления справа налево, а символ ">", чтобы представлять поток управления слева направо

Если используется данное свойство, соответствующий символ должен быть расположен между двумя символами "-", то есть в последовательности символов "-<-" или "->-", как показано в соответствующем примере

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

a) Переход не разрешен (см. примечание 2)

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

b) Переход разрешен, но не очищен (X = 0)

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

c) Переход очищен (X = 1)

 

Примечание 1 - На данном рисунке активное состояние шага обозначено звездочкой "*" в соответствующем блоке. Данное примечание используется только для иллюстрации и не является обязательным свойством языка.

Примечание 2 - В случае a) значение логической переменной X может быть как TRUE, так и FALSE.

 

Рисунок 25 - Эволюция SFC (правила)

 

 

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

a) Ошибка SFC: "небезопасная" SFC

 

"ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования"

 

b) Ошибка SFC: "недостижимая SFC"

 

Рисунок 26 - Ошибки SFC (пример)

TOC