数组内存分配
数组使用的内存大小取决于创建数组时使用的数据类型。在控制器中,最小分配单位为四个字节,等同于 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] |
在进行脱机编程时,用户能够修改数组维数而不会损失标签数据。在进行联机编程时,用户不能修改数组维数。
提供反馈