理论教育 施耐德SoMachine控制器中的枚举变量应用

施耐德SoMachine控制器中的枚举变量应用

时间:2023-10-22 理论教育 版权反馈
【摘要】:即使在POU之内声明枚举值,枚举值仍然可以在整个工程范围内被识别。语法结构:TYPE<标识符>:(,…图6-44 在程序中调用枚举变量6)执行程序仿真,当condition为“0”时,条件不满足,traffic sig保持初始值,即“0”,如图6-45所示。

施耐德SoMachine控制器中的枚举变量应用

枚举是由很多字符串常量组成的用户定义数据类型。这些常量称为枚举值。即使在POU之内声明枚举值,枚举值仍然可以在整个工程范围内被识别。用户可以通过添加对象对话框建立“DUT”对象来创建一个枚举。

注意:与CoDeSys V2.3不同的是,必须使用“TYPE”才能进行局部枚举声明。

语法结构:

TYPE<标识符>:(<Enum_0>,<Enum_1>,…,<Enum_n>)<数据类型>;

END_TYPE

<标识符>变量可以代表枚举值<Enum…>并被初始化为第一个值。这些值与所有的数字类型兼容,也就是说可以像使用整形变量一样对其进行操作。您也可以把数x赋给这个值。如果在声明中枚举值没有被初始化为指定的值,那么将从0开始递增依次进行初始化。请确保初始化时的初始值在内部元素中递增。运行时将会检查这些值的有效性。

例如,我们建立一个枚举变量如下。

1)添加数据单元类型DUT,如图6-40所示。

978-7-111-46531-7-Chapter06-42.jpg

图6-40 选择添加DUT

2)命名一个枚举变量名,并选择枚举,如图6-41所示。

978-7-111-46531-7-Chapter06-43.jpg

图6-41 选择枚举

3)打开枚举编辑,如图6-42所示。

978-7-111-46531-7-Chapter06-44.jpg

图6-42 打开枚举编辑

4)编辑枚举变量下的元素,如图6-43所示。

978-7-111-46531-7-Chapter06-45.jpg

图6-43 编辑枚举值

5)在程序中声明一个变量为一个枚举体,并在编程区调用这个枚举体变量,如图6-44所示。

978-7-111-46531-7-Chapter06-46.jpg

图6-44 在程序中调用枚举变量

6)执行程序仿真,当condition为“0”时,条件不满足,traffic sig保持初始值,即“0”,如图6-45所示。

978-7-111-46531-7-Chapter06-47.jpg

图6-45 仿真程序(一)

当condition为“1”时,条件满足,traffic_sig被赋值为“1”,traffic_sig为yellow,如图6-46所示。(www.daowen.com)

978-7-111-46531-7-Chapter06-48.jpg

图6-46 仿真程序(二)

枚举类型的名称可以(作为范围操作符)用来确定需要访问的枚举常量。因此,您可以在不同枚举中使用相同的常量。

例如:

定义两个枚举:

TYPE_COLORS_1:(red,blue);

END_TYPE

TYPE COLORS_2:(green,blue,yellow);

END_TYPE

在POU中使用枚举值Blue:

声明:

colorvar1:COLORS_1;

colorvar2:COLORS_2;

实现:

可以这样使用:

colorvar1:=colors_1.blue;

colorvar2:=colors_2.blue;

不能这样使用:

colorvar1:=blue;

colorvar2:=blue;

还可以明确指定枚举所指向的数据类型(默认类型是INT)。

例如:

需要将枚举BigEnum的数据类型指定为DINT:

TYPE BigEnum:(yellow,blue,green:=16#8000)DINT;

END TYPE

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈