数组内存分配

数组使用的内存大小取决于创建数组时使用的数据类型。在控制器中,最小分配单位为四个字节,等同于 4 个 SINT、2 个 INT 或 1 个 DINT。
下例所示为各种数组的内存分配:
small_values as SINT[8]
此示例为具有 8 个元素的数组,每个元素的数据类型均为 SINT(每个元素占 1 字节)。
31 24
23 16
15 8
7 0
数据分配 1
small_values[3]
small_values[2]
small_values[1]
small_values[0]
数据分配 2
small_values[7]
small_values[6]
small_values[5]
small_values[4]
small_values as SINT[3]
此示例为具有 3 个元素的数组,每个元素的数据类型均为 SINT(每个元素占 1 字节)。由于数据分配至少为 4 字节,因此最后一个字节为零。
31 24
23 16
15 8
7 0
数据分配 1
0
small_values[2]
small_values[1]
small_values[0]
values as INT[4]
此示例为具有 4 个元素的数组,每个元素的数据类型均为 INT(每个元素占 2 字节)。
31 16
15 0
数据分配 1
values[1]
values[0]
数据分配 2
values[3]
values[2]
big_values as DINT[2]
此示例为具有 2 个元素的数组,每个元素的数据类型均为 DINT(每个元素占 4 字节)。
31 0
数据分配 1
big_values[0]
数据分配 2
big_values[1]
timer_list as TIMER[2]
此示例为具有 2 个元素的数组,每个元素均为 TIMER 结构(每个结构占 12 字节)。
31 0
数据分配 1
timer_list[0] 状态位
数据分配 2
timer_list[0].pre
数据分配 3
timer_list[0].acc
数据分配 4
timer_list[1] 状态位
数据分配 5
timer_list[1].pre
数据分配 6
timer_list[1].acc
small_values as SINT[2,2,2]
此例为具有 8 个元素的三维数组,每个元素的数据类型均为 SINT。
31 24
23 16
15 8
7 0
数据分配 1
small_values[0,1, 1]
small_values[0,1, 0]
small_values[0,0, 1]
small_values[0,0, 0]
数据分配 2
small_values[1,1, 1]
small_values[1,1, 0]
small_values[1,0, 1]
small_values[1,0, 0]
big_values as DINT[2,2,2]
此例为具有 8 个元素的三维数组,每个元素的数据类型均为 DINT。
31 0
数据分配 1
big_values[0,0,0]
数据分配 2
big_values[0,0,1]
数据分配 3
big_values[0,1,0]
数据分配 4
big_values[0,1,1]
数据分配 5
big_values[1,0,0]
数据分配 6
big_values[1,0,1]
数据分配 7
big_values[1,1,0]
数据分配 8
big_values[1,1,1]
在进行脱机编程时,用户能够修改数组维数而不会损失标签数据。在进行联机编程时,用户不能修改数组维数。
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal