ГОСТ Р МЭК 61131-3—2016
END_VAR
IF Му_TrafficJight = TrafficJight*Amber THEN... // OK
IF My_TrafficJig h t = TrafficJightURed THEN... I/ OK
IF My_TrafficJig h t = Amber THEN... // OK — идентификатор Amber уникален
IF MyJTrafficJig h t = Red THEN... И ОШИБКА — идентификатор Red не является уникальным
6А.4.2.2 Инициализация
Неявное начальное значение перечислимого типа данных — первый идентификатор в связанном
перечне перечисления.
Пользователь может инициализировать тип данных определенным пользователем значением из
перечня перечислимых значений данного типа. Такая инициализация имеет приоритет.
Как показано в таблице 11 для ANALOG_SIGNAL_RANGE. определенное пользователем началь
ное значение перечислимого типа данных — это присвоенное значение UNIPOLAR_1_5V.
Определенное пользователем присваивание начального значения типа данных является свой
ством в таблице 11.
6.4.4.3 Тип данных с именованными значениями
6.4.4.3.1 Общие положения
Связанным с перечислимым типом данных, где перечислимые идентификаторы не заданы поль
зователем. является перечислимый тип данных с именованными значениями. Объявление определяет
тип данных и присваивает значения именованных переменных, как показано в таблице 11.
Объявление именованных значений не ограничивает диапазон значений переменных этого типа,
то есть переменной могут быть присвоены другие константы, или значение может определяться вы
числением.
Для обеспечения уникальной идентификации при использовании в конкретном контексте, имено
ванные значения могут уточняться префиксом, состоящим из имени ассоциированного типа данных и
символа номера «#». аналогично типизированным литералам.
В перечне объявления префиксы не используются. Происходит ошибка, если в перечислимом
литерале недостаточно информации для однозначного определения его значения (см. пример).
Пример — Тип данных с именованными значениями
TYPE
TrafficJight: INT (Red:= 1. Amber
:= 2.
Green:= 3):= Green;
Painting_colors: INT (Red:- 1, Yellow:= 2. Green:= 3. Blue:= 4):= Blue;
ENDJTYPE
VAR
MyJTrafficJight: TrafficJight;
END_VAR
My_TrafficJight:= 27;// Присваивание константы IF
My_TrafficJight =Amber THEN ..Л Присваивание выражения
//Примечание — Это невозможно для перечислимых значений
Му_TrafficJight:= TrafficJightttRed * 1;
IF My_TrafficJight
= 123 THEN...
/ / OK
IF My_TrafficJight
= TrafficJigh t*Amber
THEN...
/ / OK
THEN...
HOK
= TrafficJightttRed
= Amber THEN...
H OK — идентификатор Amber
IF My_TrafficJig h t
IF My_TrafficJight
уникален
IF MyJTrafficJig h t
= Red THEN...
И ОШИБКА — идентификатор
Red не является уникальным
26