枚举是由用户自定义的数据类型,由用于声明用户定义变量的一系列逗号分隔的组件(枚举值)组成。此外,你可以使用枚举组件,例如常量,其标识符<enumeration name>.<component name>在工程中被全局识别。
你可以在DUT对象中声明一个枚举,该对象已通过单击添加对象在工程中创建。
.语法
( {attribute 'strict'} )? // 语法可选,但推荐
TYPE <枚举的名称> :
(
<第一个组件声明>,
( <组件声明> ,)+
<最后一个组件声明>
)( <基本数据类型> )? ( := <默认的变量初始值> )? ;
END_TYPE
( ...)? : 可选的
<组件声明> : <组件的名称> ( := <组件初始化> )?
<基本数据类型> : INT | UINT | SINT | USINT | DINT | UDINT | LINT | ULINT | BYTE | WORD | DWORD | LWORD
<变量初始化> : <组件名称之一>
在枚举声明中,通常至少声明两个组件。但是,你可以声明任意多个。每个组件都可以分配自己的初始化。枚举自动具有INT的数据类型,但是你可以指定其他基本数据类型。此外,你可以在声明中指定一个组件,然后使用该组件初始化枚举变量。
用法{attribute 'strict'}导致执行严格类型测试,如下所述。
IEC 61131-3标准的扩展
枚举声明的基本数据类型默认为INT。但是,你也可以声明基于另一种整数数据类型的枚举。
<基本数据类型> : INT | UINT | SINT | USINT | DINT | UDINT | LINT | ULINT | BYTE | WORD | DWORD | LWORD
在CODESYSV3.5 SP7和更高版本中,在声明枚举时,在第一行中自动添加了杂注{attribute 'strict'}。 |
添加编译提示{attribute 'strict'}时,将激活严格的编程规则。
.以下代码被视为编译器错误:
算术运算可能导致未声明的值分配给枚举组件。更好的编程风格是使用SWITCH/CASE语句来使用组件值。
对于使用用户自定义的数据类型<enumeration name>的枚举变量的声明,可以使用枚举组件对其进行初始化。
.例如
PROGRAM PLC_PRG
VAR
colorCar: COLOR;
colorTaxi : COLOR := COLOR.yellow;
END_VAR
变量colorCar用COLOR.black初始化。这是所有COLOR类型的枚举变量的默认初始化,并在类型声明中以此方式定义。变量colorTaxi有其自己的初始化值。
如果未指定初始化,则初始化值为0。
.例如
PROGRAM PLC_PRG
VAR
cbFlower : COLOR_BASIC;
cbTree: COLOR_BASIC := COLOR_BASIC.green;
END_VAR
变量cbFlower用COLOR_BASIC.yellow初始化。这是所有COLOR_BASIC类型的枚举变量的默认初始化。由于枚举声明未指定要初始化的组件,因此系统会自动使用值为0的组件进行初始化。这通常是枚举组件的第一个。但是,它也可以是不在第一位置但显式初始化为0的另一个组件。
变量cbTree具有显式的初始化。
如果没有为类型和变量都指定值,则以下规则适用:如果枚举包含一个值为0的值,则此值为默认的初始化,否则为列表中的第一个组件。
IEC 61131-3标准的扩展
枚举组件还可以与标识符<enumeration name>.<component name>一起用作常量。枚举组件在工程中被全局识别,对其的访问是唯一的。因此,可以在不同的枚举中使用组件名称。
.另请参考