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

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

6.8 Элементы конфигурации

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

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

Графический пример простой конфигурации приведен на рисунке 27. Скелетные описания для соответствующих функциональных блоков и программ приведены на рисунке 27 b). Объявление примера на рисунке 27 приведено на рисунке 28.

 

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

 

a) Графическое представление

 

FUNCTION_BLOCK A

VAR_OUTPUT

y1: UINT;

y2: BYTE;

END_VAR

END_FUNCTION_BLOCK

 

FUNCTION_BLOCK C

VAR_OUTPUT

c1: BOOL;

END_VAR

VAR

C2 AT %Q*: BYTE;

C3: INT;

END_VAR

END_FUNCTION_BLOCK

FUNCTION_BLOCK B

VAR_INPUT

b1: UINT;

b2: BYTE;

END_VAR

END_FUNCTION_BLOCK

 

FUNCTION_BLOCK D

VAR_INPUT

d1: BOOL;

END_VAR

VAR_OUTPUT

y2: INT;

END_VAR

END_FUNCTION_BLOCK

 

PROGRAM F

VAR_INPUT

x1: BOOL;

x2: UINT;

END_VAR

VAR_OUTPUT

y1: BYTE;

END_VAR

VAR

COUNT: INT;

TIME1: TON;

END_VAR

END_PROGRAM

PROGRAM G

VAR_OUTPUT

out1: UINT;

END_VAR

VAR_EXTERNAL

z1: BYTE;

END_VAR

VAR

FB1: A;

FB2: B;

END_VAR

FB1(...);

out1:= FB1.y1;

z1:= FB1.y2;

FB2(b1:= FB1.y1, b2:= FB1.y2);

END_PROGRAM

PROGRAM H

VAR_OUTPUT

HOUT1: INT;

END_VAR

VAR

FB1: C;

FB2: D;

END_VAR

FB1(...);

FB2(...);

HOUT1:= FB2.y2;

END_PROGRAM

 

b) Объявления скелетного функционального блока и программы

 

Рисунок 27 - Конфигурация (пример)

 

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

- Задачи

Рисунок 27 представляет примеры свойств TASK, соответствующих конфигурации экземпляра, приведенной на рисунке 27 a) и поддерживающих описания, приведенные на рисунке 27 b).

- Ресурсы

Классификатор ON в конструкции RESOURCE...ON...END_RESOURCE используется, чтобы указать тип "функции обработки информации" и ее функций "интерфейса человек-машина" и "интерфейса датчика и привода", на основе которых реализуется ресурс и его связанные программы и задачи. Разработчик обеспечивает библиотеку ресурсов таких элементов, как показанные на рисунке 3. С каждым элементом этой библиотеки связан идентификатор (имя типа ресурса) для использования в объявлении ресурса.

Примечание 1 - Конструкция RESOURCE...ON...END_RESOURCE в конфигурации с одним ресурсом не требуется.

 

- Глобальные переменные

Область действия секции VAR_GLOBAL ограничивается конфигурацией или ресурсом, в котором она описана, за исключением того, что путь доступа может быть объявлен для глобальной переменной в ресурсе с использованием свойства 10d из таблицы 62.

- Пути доступа

Конструкция VAR_ACCESS...END_VAR предоставляет средства задания имен переменных, которые можно использовать для дистанционного доступа некоторыми сервисами связи, определяемыми в МЭК 61131-5. Путь доступа связывает каждое такое имя переменной с глобальной переменной, прямо представленной переменной или любой входной, выходной или внутренней переменной программы или функционального блока.

Связь должна сопровождаться определением имени переменной с полной иерархической конкатенацией имен экземпляра, начиная с имени ресурса (если имеется), за которым следует имя экземпляра программы (если имеется), за которым следует имя (имена) экземпляра (экземпляров) функционального блока (если имеется). Имя переменной связывается в конце цепочки. Все имена в конкатенации должны быть разделены точками. Если такая переменная - это многоэлементная переменная (структура или массив), то путь доступа также может быть задан для элемента переменной.

Не должно быть возможно определить пути доступа к переменным, объявленным в секциях VAR_TEMP, VAR_EXTERNAL или VAR_IN_OUT.

Направление пути доступа задается как READ_WRITE или READ_ONLY, указывая, что сервисы связи могут как считывать, так и изменять значение переменной в первом случае, или только считывать, но не изменять значение во втором случае. Если направление не задано, то направление по умолчанию - READ_ONLY.

Доступ к переменным, объявленным как CONSTANT, и к входам функционального блока, которые внешне соединены с другими переменными, - READ_ONLY.

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

 

- Конфигурации

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

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

Специфические для экземпляра начальные значения, предоставляемые конструкцией VAR_CONFIG...END_VAR, всегда имеют приоритет над специфическими для типа начальными значениями. Нельзя определять специфические для экземпляра инициализации для переменных, которые определены в объявлениях VAR_TEMP, VAR_EXTERNAL, VAR CONSTANT или VAR_IN_OUT.

 

Таблица 62

 

Конфигурация и объявление ресурса

 

Номер

Описание

1

CONFIGURATION...END_CONFIGURATION

2

VAR_GLOBAL...END_VAR внутри CONFIGURATION

3

RESOURCE...ON...END_RESOURCE

4

VAR_GLOBAL...END_VAR внутри RESOURCE

5a

Периодическая TASK

5b

Непериодическая TASK

6a

WITH для PROGRAM со связанными задачами TASK

6b

WITH для FUNCTION_BLOCK со связанными задачами TASK

6c

PROGRAM без связанных задач TASK

7

Прямо представленные переменные в VAR_GLOBAL

8a

Соединение прямо представленных переменных со входами PROGRAM

8b

Соединение переменных GLOBAL со входами PROGRAM

9a

Соединение выходов PROGRAM с прямо представленными переменными

9b

Соединение выходов PROGRAM с переменными GLOBAL

10a

VAR_ACCESS...END_VAR

10b

Пути доступа к прямо представленным переменным

10c

Пути доступа к входам PROGRAM

10d

Пути доступа к переменным GLOBAL в RESOURCEs

10e

Пути доступа к переменным GLOBAL в CONFIGURATIONs

10f

Пути доступа к выходам PROGRAM

10g

Пути доступа к внутренним переменным PROGRAM

10h

Пути доступа к входам функционального блока

10i

Пути доступа к выходам функционального блока

11a

VAR_CONFIG...END_VAR к переменным

Данное свойство поддерживается, если поддерживается свойство "частичное определение" с символом "*" в таблице 16

11b

VAR_CONFIG...END_VAR для компонент структур

12a

VAR_GLOBAL CONSTANT в RESOURCE

12b

VAR_GLOBAL CONSTANT в CONFIGURATION

13a

VAR_EXTERNAL в RESOURCE

13b

VAR_EXTERNAL CONSTANT в RESOURCE

 

На следующем рисунке приведено объявление примера на рисунке 27.

 

Код программы

использует свойство таблицы 62

CONFIGURATION CELL_1

1

VAR_GLOBAL w: UINT; END_VAR

2

RESOURCE STATION_1 ON PROCESSOR_TYPE_1

3

VAR_GLOBAL z1: BYTE; END_VAR 4

4

TASK SLOW_1 (INTERVAL:= t#20ms, PRIORITY:= 2);

5a

TASK FAST_1 (INTERVAL:= t#10ms, PRIORITY:= 1);

5a

PROGRAM P1 WITH SLOW_1:

6a

F(x1:= %IX1.1);

8a

PROGRAM P2: G(OUT1 => w,

9b

FB1 WITH SLOW_1,

6b

FB2 WITH FAST_1);

6b

END_RESOURCE

3

RESOURCE STATION_2 ON PROCESSOR_TYPE_2

3

VAR_GLOBAL z2 : BOOL;

4

AT %QW5: INT;

7

END_VAR

4

TASK PER_2(INTERVAL:= t#50ms, PRIORITY:= 2);

5a

TASK INT_2(SINGLE:= z2, PRIORITY:= 1);

5b

PROGRAM P1 WITH PER_2:

6a

F(x1:= z2, x2:= w);

8b

PROGRAM P4 WITH INT_2:

6a

H(HOUT1 => %QW5,

9a

FB1 WITH PER_2);

6b

END_RESOURCE

3

VAR_ACCESS

10a

ABLE : STATION_1.%IX1.1 : BOOL READ_ONLY;

10b

BAKER : STATION_1.P1.x2 : UINT READ_WRITE;

10c

CHARLIE : STATION_1.z1 : BYTE;

10d

DOG : w : UINT READ_ONLY;

10e

ALPHA : STATION_2.P1.y1 : BYTE READ_ONLY;

10f

BETA : STATION_2.P4.HOUT1 : INT READ_ONLY;

10f

GAMMA : STATION_2.z2 : BOOL READ_WRITE;

10d

S1_COUNT : STATION_1.P1.COUNT : INT;

10g

THETA : STATION_2.P4.FB2.d1 : BOOL READ_WRITE;

10h

ZETA : STATION_2.P4.FB1.c1 : BOOL READ_ONLY;

10i

OMEGA : STATION_2.P4.FB1.C3 : INT READ_WRITE;

10k

END_VAR

10a

VAR_CONFIG

11

STATION_1.P1.COUNT: INT:= 1;

 

STATION_2.P1.COUNT: INT:= 100;

 

STATION_1.P1.TIME1: TON:= (PT:= T#2.5s);

 

STATION_2.P1.TIME1: TON:= (PT:= T#4.5s);

 

STATION_2.P4.FB1.C2 AT %QB25: BYTE;

 

END_VAR

 

END_CONFIGURATION

1

 

Примечание 1 - Графическое и полуграфическое представление таких свойств допускается, но не входит в задачу настоящего стандарта.

Примечание 2 - Ошибка, если тип данных, объявленный в операторе VAR_ACCESS отличается от типа данных, объявленного для переменной в другом месте, например, если переменная BAKER объявлена как WORD в приведенных выше примерах.

 

Рисунок 28 - Описание CONFIGURATION и RESOURCE (пример)

 

6.8.2 Задачи

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

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

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

a) Связанные программные компоненты должны быть спланированы для выполнения при каждом переднем фронте на входного параметра SINGLE задачи;

b) Если входной параметр INTERVAL - ненулевой, то связанные программные компоненты назначаются для периодического выполнения через заданный интервал времени, пока входной параметр SINGLE остается нулевым (0). Если входной параметр INTERVAL равен нулю (значение по умолчанию), периодическое выполнение связанных программных компонентов происходить не будет;

c) Входной параметр PRIORITY задачи устанавливает приоритет планирования связанных программных модулей, где нуль (0) имеет наивысший приоритет, а более низкие приоритеты имеют последовательно большие цифровые значения. Как показано в таблице 63, приоритет программного компонента (т.е. приоритет связанной с ним задачи) может использоваться для планирования с приоритетами или без приоритетов:

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

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

d) Программа без связанной задачи будет иметь самый низкий приоритет в системе. Любая такая программа должна быть спланирована для выполнения после "пуска" ее ресурса и должна быть перепланирована для выполнения, как только ее выполнение заканчивается;

e) Когда экземпляр функционального блока связан с задачей, его выполнение должно происходить под исключительным управлением задачи, независимо от правил оценки программного компонента, в котором объявлен связанный с задачей функциональный блок;

f) Экземпляр функционального блока, который не прямо связан с задачей, будет следовать обычным правилам для порядка оценки элементов языка для программного компонента (который сам может находиться под управлением задачи), в котором объявлен экземпляр функционального блока.

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

Примечание 2 - Методы функционального блока или класса выполняются в программном компоненте, который они вызывают;

 

g) Выполнение функциональных блоков внутри программы должно быть синхронизировано, чтобы обеспечить достижение параллельности доступа к данным в соответствии со следующими правилами:

- если функциональный блок получает более одного входного параметра от другого функционального блока, то когда первый FB выполняется, все входные параметра последнего должны представлять результаты той же оценки;

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

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

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

 

Таблица 63

 

Задача

 

Номер

Описание

Примеры

1a

Текстовое объявление периодической задачи TASK

(свойство 5a таблицы 62)

1b

Текстовое объявление непериодической задачи TASK

(свойство 5b таблицы 62)

 

Графическое представление TASK (общая форма)

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

2a

Графическое представление периодической TASK (с INTERVAL)

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

2b

Графическое представление непериодической TASK (с SINGLE)

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

3a

Текстовая связь с PROGRAMs

(свойство 6a таблицы 62)

3b

Текстовая связь с функциональными блоками

(свойство 6b таблицы 62)

4a

Графическое представление с PROGRAM

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

4b

Графическая связь с функциональными блоками внутри PROGRAMs

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

5a

Планирование без приоритетов

См. рисунок 28

5b

Планирование с приоритетами

См. рисунок 28

Примечание 1 - Подробности объявлений RESOURCE и PROGRAM не показаны.

Примечание 2 - Обозначение X@Y указывает, что программный компонент X спланирован или выполняется с приоритетом Y.

 

Следующие примеры показывают планирование без приоритетов и с приоритетами, определяемое в таблице 63 свойствами 5a и 5b.

 

Пример 1 - Планирование без приоритетов и с приоритетами

1 Планирование без приоритетов

 

- Ресурс STATION_1 как сконфигурирован на рисунке 28

- Времена исполнения: P1 = 2 мс; P2 = 8 мс

- P2.FB1 = P2.FB2 = 2 мс (см. примечание 1)

- STATION_1 запускается при t = 0

Планирование (повторяется каждые 40 мс)

t (мс)

Выполнение

Ожидание

0

P2.FB2@1

P1@2, P2.FB1@2, P2

2

P1@2

P2.FB1@2, P2

4

P2.FB1@2

P2

6

P2

-

10

P2

P2.FB2@1

14

P2.FB2@1

P2

16

P2

(перезапуск P2)

20

P2

P2.FB2@1, P1@2, P2.FB1@2

24

P2.FB2@1

P1@2, P2.FB1@2, P2

26

P1@2

P2.FB1@2, P2

28

P2.FB1@2

P2

30

P2.FB2@1

P2

32

P2

-

40

P2.FB2@1

P1@2, P2.FB1@2, P2

- Ресурс STATION_2 как сконфигурирован на рисунке 28

- Времена исполнения: P1 = 30 мс, P4 = 5 мс, P4.FB1 = 10 мс

- INT_2 срабатывает при t = 25, 50, 90,... мс

- STATION_2 запускается при t= 0

План

t (мс)

Исполнение

Ожидание

0

P1@2

P4.FB1@2

25

P1@2

P4.FB1@2, P4@1

30

P4@1

P4.FB1@2

35

P4.FB1@2

-

50

P4@1

P1@2, P4.FB1@2

55

P1@2

P4.FB1@2

85

P4.FB1@2

-

90

P4.FB1@2

P4@1

95

P4@1

-

100

P1@2

P4.FB1@2

 

2 Планирование с приоритетами

См. таблицу 63, 5b

- Ресурс STATION_1 как сконфигурирован на рисунке 28

- Времена исполнения: P1 = 2 мс; P2 = 8 мс; P2.FB1 = P2.FB2 = 2 мс

- STATION_2 запускается при t= 0

План

t (мс)

Исполнение

Ожидание

0

P2.FB2@1

P1@2, P2.FB1@2, P2

2

P1@2

P2.FB1@2, P2

4

P2.FB1@2

P2

6

P2

-

10

P2.FB2@1

P2

12

P2

-

16

P2

(перезапуск P2)

20

P2.FB2@1

P1@2, P2.FB1@2, P2

- Ресурс STATION_2 как сконфигурирован на рисунке 28

- Времена исполнения: P1 = 30 мс, P4 = 5 мс, P4.FB1 = 10 мс

- INT_2 срабатывает при t = 25, 50, 90,... мс

- STATION_2 запускается при t = 0

План

t (мс)

Исполнение

Ожидание

0

P1@2

P4.FB1@2

25

P4@1

P1@2, P4.FB1@2

30

P1@2

P4.FB1@2

35

P4.FB1@2

-

50

P4@1

P1@2, P4.FB1@2

55

P1@2

P4.FB1@2

85

P4.FB1@2

-

90

P4@1

P4.FB1@2

95

P4.FB1@2

-

100

P1@2

P4.FB1@2

Примечание 1 - Времена выполнения P2.FB1 и P2.FB2 не включены во время выполнения P2.

Примечание 2 - Время выполнения P4.FB1 не включено во время выполнения P4.

 

Пример 2 - Связи задачи с экземплярами функционального блока

RESOURCE R1

PROGRAM X

 

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

 

END_PROGRAM

a) Функциональные блоки с явными связями задачи

 

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

 

P1

PROGRAM X

 

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

END_PROGRAM

slow1

b) Функциональные блоки с неявными связями задачи

RESOURCE R1

 

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

 

P1

PROGRAM X

 

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

END_PROGRAM

c) Явные связи задачи эквивалентны b)

Примечание 3 - Графические представления в этих примерах являются только иллюстративными, но не нормативными.

TOC