枚举
枚举是一种用户定义的数据类型,由一系列逗号分隔的组件(枚举值)组成,用于声明用户定义的变量。
ST 语法
TYPE <枚举类型名称> :
(
<组件声明> ,
<组件声明>
)
;
END_TYPE
| 可在代码中用作数据类型的枚举名称 例子: |
| 任意数量的成员,但至少两名成员 成员的值是自动初始化的:从 0 开始,值连续递增 1。还可以为各个成员明确地分配固定的初始值。 例子: |
| 可选的 可以将其中一个成员声明为初始成员。如果未指定初始化,则使用top成员自动执行初始化。 |
示例
TYPE COLOR_BASIC :
(
yellow,
green,
blue,
black
) // Basic data type is INT, default initialization for all COLOR_BASIC variables is yellow
;
END_TYPE
具有基本数据类型的枚举
枚举声明的基本数据类型是 INT 默认情况下。但是,您也可以声明基于另一个整数数据类型的枚举。
<基本数据类型> : INT | UINT | SINT | USINT | DINT | UDINT | LINT | ULINT | BYTE | WORD | DWORD | LWORD
示例
基本数据类型 DWORD
的枚举
TYPE COLOR :
(
white := 16#FFFFFF00,
yellow := 16#FFFFFF00,
green := 16#FF00FF00,
blue := 16#FF0000FF,
black := 16#88000000
)
;
END_TYPE
枚举变量的声明和初始化
ST语法
<变量名> : <枚举类型名> ( := <初始化值> ) ;
用于声明具有用户定 义数据类型的枚举变量 <枚举类型名>
,这可以用枚举组件初始化。
示例
PROGRAM PLC_PRG
VAR
colorCar: COLOR;
colorTaxi : COLOR := yellow;
END_VAR
-
变量
colorCar
初始化为black
.这是所有类型枚举变量的默认初始化COLOR
并在类型声明中以这种方式定义。变量colorTaxi
有自己的初始化。 -
如果未指定初始化,则初始化值为 0。
PROGRAM PLC_PRG
VAR
cbFlower : COLOR_BASIC;
cbTree: COLOR_BASIC := green;
END_VAR
-
变量
cbFlower
初始化为COLOR_BASIC.yellow.
这是所有类型枚 举变量的默认初始化COLOR_BASIC
.因为枚举声明没有指定初始化的组件,系统会自动使用值为0的组件进行初始化。这通常是枚举组件中的第一个。但是,它也可以是另一个不在第一个位置但初始化为 0 的组件。 -
变量
cbTree
有明确的初始化。
如果为类型和变量指定值,则适用以下规则:如果枚举包含 0 的值,则此值是默认初始化,如果不是,则为列表中值最小的组件。
使用 0 组件初始化
TYPE ENUM :
(
e1 := 2,
e2 := 0,
e3
)
;
END_TYPE
PROGRAM PLC_PRG
VAR
e : ENUM;
END_VAR
变量 e
初始化为 ENUM.e2
.
用第一个组件初始化
TYPE ENUM2 :
(
e1 := 3,
e2 := 1,
e3
)
;
END_TYPE
PROGRAM PLC_PRG
VAR
e2 : ENUM2;
END_VAR
变量 e2
初始化为 ENUM.e2
.
对枚举组件的唯一访问
枚举组件也可以用作带有标识符的常量变量 <枚举类型名称>#<组件名称>
.枚举组件在项目中被全局识别,并且对它们的访问是唯一的。因此,可以在不同的枚举中使用组件名称。
PROGRAM PLC_PRG
VAR
cbFlower : COLOR_BASIC;
colorCar : COLOR;
END_VAR
(* unambiguous identifiers although the component names are identical *)
cbFlower := COLOR_BASIC#blue;
colorCar := COLOR#blue;