在codesys使用说明中,对结构体,枚举做了详细介绍,但在新建数据类型时,如果不太清楚其用途,可能会增加我们的工作量,今天对二者做详细介绍,自己也在温顾一下。
在汇川InoProShop中,新建数据类型,点击AppLication——添加对象——UDT,打开页面如下:
添加UDT数据类型,结构,枚举,别名,联合四个选项,结构,枚举是我们日常中常用数据类型。
结构(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构体。例如,一台电机通常都有其对应的信息,如产品型号(Product_ID)、生产厂家(Vendor)、额定电压(Nominal Voltage)、额定电流(Nominal Current)、极对数(Poles),是否带刹车(Brake)等信息。这些信息都和这台电机相关联,可以看出,如果将这些信息分别以独立的变量进行声明,很难反应出它们和电机的内在联系。
以一段ST语言写的结构体数据,以点击编号,功率,电压,电流,频率为例,调用结构体数据时,使用数组,简化多次定义数据:
VAR
ias_电机数组 : ARRAY [0..8] OF 结构体;
END_VAR
ias_电机数组[0].STI_电机编号 :=0;
ias_电机数组[0].STI_电机额定电流 := 2.89;
ias_电机数组[0].STI_电机额定电压 := 400;
ias_电机数组[0].STI_电机功率 := 2;
ias_电机数组[0].STI_电机频率 :=30;
如果一种变量有几种可能的值,可以定义为枚举类型。所谓“枚举”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。例如,必须定义一个变量,该变量的值表示一周中的一天。该变量只能存储七个有意义的值。若要定义这些值,可以使用枚举类型。如一周内星期可能取值的集合为:{ Sun,Mon,Tue,Wed,Thu,Fri,Sat},一般枚举配合case语句使用,调用程序动作程序,具体ST举例如下:
使用case语句,在程序中建立相关动作,如果下图,可以理解为,今天星期一,调用A00()动作,今天星期二,调用A10()动作,按照日期,依次动作。
另外,在PLC写程序时,习惯使用流程步,也是使用case语句,执行完动作1,满足条件,跳过下一步,按照工艺流程依次执行,方便程序理解。
习惯使用结构体和枚举,会很高效的提高我们的写作效率。