codesys enum 枚举数据类型单元的使用
enum 类型的 dut 可以定义一组属性及其值,调用的时候可以方便的通过写其属性名称得到属性的值,也可以获取到属性本身的名称。
下面举一个例子说明:
{attribute 'qualified_only'} // 必须先写类型名称再写属性名称 (例如 eColor.Red)
// {attribute 'strict'} //取消 'strict' 以允许转换 UDINT 数据类型
{attribute 'to_string'} // 运行字符串转换 (例如 TO_STRING(eColor.Red) = 'Red')
TYPE eColor :
(
Red := 16#FFFF0000,
Green := 16#FF00FF00,
Blue := 16#FF0000FF
Yellow := 16#FFFFFF00,
) UDINT; // 声明 UDINT 作为 int 整形类型
END_TYPE
// 定义一些变量
ColorVar1 : eColor;
ColorVar2 : eColor;
ColorName : STRING;
ColorValue : UDINT;
ColorVar1 := eColor.Green; // ColorVar1 = 16#FF00FF00
ColorName := TO_STRING(ColorVar1); // ColorName = 'Green';
ColorValue := TO_UDINT(ColorVar1); // ColorValue = 16#FF00FF00
ColorVar2 := 16#FF00FF00; // ColorVar2.Green
ColorName := TO_STRING(ColorVar2); // ColorName = 'Green';
ColorValue := TO_UDINT(ColorVar2); // ColorValue = 16#FF00FF00
ColorVar1 := ColorVar2 OR eColor.Red; // 按位相与得到 Yellow=16#FFFFFF00
ColorName := TO_STRING(ColorVar1); // ColorName = 'Yellow';
ColorValue := TO_UDINT(ColorVar1); // ColorValue = 16#FFFFFF00
以上示例列举了常用的 enum 类型可进行的数据交互方式。
eColor.Green
可以获取enum类型属性的值,并可以赋值给其他对应 enum 实例TO_STRING(ColorVar1)
可以转换获取 enum 实例当前值对应属性名称字符串