衍生数据类型是用户在基本数据类型的基础上,建立的由用户自定义的数据类型,与基本数据类型所使用的相同方法对变量进行声明。
![2ca6319bfdd1a1c8df1d5e382903239e.png](https://i-blog.csdnimg.cn/blog_migrate/e3ba1127c3920b2a7736805833647627.jpeg)
数组
数组是多个相同类型数据的有序集合。组成数组的各个变量称为数组的元素,用于区分数组的各个元素的数字编号称为下标。其中数组内元素的数据类型可以是基本数据类型,也可以是衍生数据类型。数组的定义格式如下:
arr : ARRAY [1..5] OF INT := [1,2,3,4,5]; //数组arr 内有5个INT类型的元素,其值分别为1、2、3、4、5
使用下列语法访问数组内的元素:[下标],如:arr[1]。下标范围从1至数组内元素个数,不能超过其上下限。如arr[1]是访问数据arr的第一个元素。
结构体
结构是由一系列具有相同类型或不同类型的数据构成的数据集合。结构的定义使用TYPE关键字开始,END_TYPE关键字结束,定义格式如下:
TYPE CIRCLE: STRUCT X : REAL; Y : REAL; Radius : REAL; END_STRUCTEND_TYPE//以上定义了一个名为CIRCLE类型的结构体,里面三个REAL类型成员,分别为X、Y、Radius。
使用下列语法访问结构体内的成员:.,如circle.X,其中circle为CIRCLE类型变量。
枚举
枚举是一个被命名的整型常数的集合。枚举的定义用关键字 TYPE 开始,END_TYPE 结束。定义格式如下:
TYPE MainState :( InitSys := 0, SeekHome := 1, Working := 2, ErrorHandle := 3);END_TYPE//以上定义了一枚举类型,其取值分别为InitSys(0) 、SeekHome(1) 、Working (2)、ErrorHandle(3)
枚举变量可以取枚举值中的任何一个值。缺省情况下,第一个枚举值为零,其后依次递增。
指针
指针用于存储变量/功能块地址的变量。指针可指向任何数据类型、功能块和用户定义的数据类型。定义格式如下:
piInt : POINTER TO INT;//定义一个指向INT类型的指针变量piInt
使用对地址操作符ADR可将变量或功能块的地址赋给指针。指针变量后加内容操作符”^”可取出指针中的数据。如:
a1 : INT := 10; a2 : INT; piInt := ADR(a1);//piInt指向变量a1的地址 a2 := piInt^; //取piInt内地址对应的值到变量a2,与a2 := a1等价
直接衍生的数据类型
直接衍生的数据类型定义格式如下:
TYPE : ; END_TYPE
别名是指给一个基本数据类型起另外一个名称。定义格式如下:
SWITCH : BOOL; END_TYPE//定义一个SWITCH类型,其与BOOL类型相同
具有某个初始值的数据类型。定义格式如下:
TYPE PI : REAL := 3.14; END_TYPE//定义一个PI类型,其与REAL类型相同,初值是3.14
定义一个基本数据类型的子范围
TYPE sByte : BYTE(0..10); END_TYPE//定义一个sByte类型,其取值范围界定在0到10之间的BYTE数据类型
对IEC61131-3衍生数据类型的介绍到这里结束,大家有什么疑问可在留言区提出,我会一一解答。
明天将对IEC61131-3的STL语言作详细介绍,有需要的朋友请多多关注!