汇川AM系列控制器支持的数据类型包括:标准数据类型和复杂数据类型。标准数据类型包括:布尔型、位、整数、实数、字符串、时间等。复杂数据类型包括:数组、结构体、枚举、别名、子集、引用和指针。今天这篇文章我们先来介绍下数组和结构体。
1、数组
数组是相同数据类型的元素的集合,其定义语法为:
<数组名称>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF<类型>
其中:
<ll1>是第一维的下限值,<ul1>是第一维的上限值;
类似的,<ll2>是第二维的下限值,<ul2>是第二维的上限值。<ll3>是第三维的下限值,<ul3>是第三维的上限值;
限值必须是整数,最多支持三维数组;
举例:
buff1:ARRAY[0..19] OF REAL;//具有20个实数的一维数组 buff2:ARRAY[0..9,0..9] OF INT;//二维整数数组,每维10个元素
可以在定义数组的同时对元素进行初始化,比如:
buff1:ARRAY[0..19] OF REAL :=[0.1,2.0,10.9];
上例中只对数组中的前三个元素进行了初始化,这是允许的。未初始化的元素将使用默认值,实数类型的默认值为0.0
2、结构体
结构体是一种多元素的集合,元素的类型可以不同,其定义语法为:
TYPE <结构体名称> | EXTENDS <父类名称>: STRUCT <声明变量1 :=[初始值]> ... <声明变量n :=[初始值]> END_STRUCT END_TYPE
其中:“| EXTENDS <父类名称>”是表示继承自另一个结构体(或子集、联合体),可省略;
在InoProShop中添加结构体方法如下:开发环境左侧的“POUs”(或设备树的“应用”)单击右键,在弹出的菜单中选择“添加对象”→“DUT”,如下图所示:
在弹出的对话框中设置“类型”为“结构”,根据情况起个名字,比如“typeSensor”,如下图所示:
单击“打开”按钮会创建该结构类型的文本,在其中添加变量,比如下图:
上图中声明了结构体的两个属性:
name:宽字符串,用于存储其名称;
fault:布尔型,表示其是否有故障,默认无;
接下来我们再声明一个结构体“模拟量传感器”,名称为<typeAnalogSensor>,它继承自结构体typeSensor。
同样的方法添加DUT,在弹出的对话框设置名称为“typeAnalogSensor”,勾选结构下的“扩展”,并单击右侧的【...】按钮,如下图所示:
单击【打开】按钮创建该结构体,在其中声明属性value和offset,如下图所示:
上图中:
关键词“EXTENDS”表明"typeAnalogSensor"是"typeSensor"的扩展(或者理解为面向对象编程的子类);
offset的默认值为0;
创建一个功能块test,在其中定义变量sensor1为typeAnalogSensor结构体类型,为其赋值,如下图所示:
可以看到,由于typeAnalogSensor继承自typeSensor,子类自动具有父类的属性,所以可以给变量sensor1的name属性赋值。
结构体变量可以在定义的同时进行初始化,比如:
sensor2:typeAnalogSensor:=(name:="hello",offset:=1);
上述代码对变量“sensor2”在定义的同时对其属性中的名称(name)和偏移量(offset)进行了初始化。
好了,关于数组和结构体先介绍到这里,后面的文章继续介绍其它复杂数据类型。
我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以扫描下面的二维码查看:
发表评论