admin 发表于 2021-1-27 14:50:35

数组型变量的定义以及应用

数组,是数学上的一个重要概念,也广泛用于高级计算机语言,它是指多个相同数据类型的组合。前文结构体(STRUCT)在PLC 编程中的应用(CoDeSys平台) 介绍过结构体,它是不同数据类型的组合。而数组是指相同数据类型的组合。数组分为一维数组,二维数组和三维数组,当然也可以继续增加,但在PLC 编程中已经没有什么实际意义了。今天就像大家讲一下在CODESYS平台的PLC 中数组型变量的使用。说到底,数组也是一种变量,因此要先定义再使用。
数组的定义数组的定义和普通变量的定义是一样的,只是增加数组的维度和个数,如下图所示
https://i1.kknews.cc/SIG=2d8m4h8/53s800055sp7n3o4q24q.jpg...
数组型变量的定义共定义三个数组型变量,D1 D2 D3 分别是 一维数组,二维数组,三维数组。地址是数组的首地址,定义好后,PLC会为数组自动分配一段连续的地址。我们要 引用数组,使用[ ]符号,注意是英文输入法下的[ ],而不是中文输入法下的【】。如下图所示,
https://i2.kknews.cc/SIG=2cdr4so/53sn00038pqp73nr4481.jpg...
一维数组的地址分配以及读取我 们为一维数组分配的首地址是%MD0,也就是数组中第一个元素D1 的地址,D1的地址是%MD1 也就是%MB4,关于CODESYS平台的内存寻址,可以参考 西门子博途与CoDeSys (IEC61131-3)的异同点(二)寻址方式异同。但是一般不建议给数组分配地址,因为这样会增加程序的复杂程度,一般使用指针或是MOVE指令,比如 D1:=%MD0; 关于指针,将会单独介绍
数组集合的类型数组内的数据类型只要一致,可以指向任何类型,甚至是自定义的类型,比如前面讲过的结构体结构体(STRUCT)在PLC 编程中的应用(CoDeSys平台),也可以定义在数组中。比如,我们先定义一个结构体变量 AXIS
https://i1.kknews.cc/SIG=oe4k9p/53s90005qn3oq72qpso2.jpg...
结构体变量AXIS然后再定义一个数组变量A1,它内部的变量类型就是结构体AXIS
https://i1.kknews.cc/SIG=3f5jdbp/53sq0000396878688nso.jpg...
结构体型数组变量当然,你也可以为他分配一个首地址,但是这个地址必须使用L 型寻址,也就是64位的存储空间。关于数据类型的存储空间请参照跟我学编程之PLC常用数据类型介绍(一)

https://i2.kknews.cc/SIG=luojjd/53sq0001469o9rsqs41n.jpg...
上图可以看出,如果使用%MD 为结构体变量定义存储空间,编译会报错,因为结构体内部的数据类型是不确定的,必须预留足够的存储空间。当我们定义首地址后,系统会自动分配存储空间。定义好的结构体型数组变量,它的内部结构如下
https://i1.kknews.cc/SIG=14vhsia/53s80005s6ss2158818q.jpg...
结构体型数组变量的内部如上图,可以清楚的看到,它有四个结构体类型组成分别是 A1, A1, A1, A1,每个内部又有四个变量。那么我们如何引用呢?对于它的引用,要先数组,后结构体,如下图

https://i2.kknews.cc/SIG=3pr3gli/53sn0004023oo4rr22r5.jpg...
结构体型数组变量的引用关于数组型变量就介绍到这,数组的应用非常广泛,特别时候处理连续的数据,比如通讯和配方,当然,要和指针变量联合使用,等介绍完指针变量后,会举例说明。可以这样说,数组就是为ST 语言而生,梯形图处理数组的工程量是十分庞大的,可读性也差。而ST也是专为数据处理而生。
页: [1]
查看完整版本: 数组型变量的定义以及应用