问题描述
是否可以使用 ADS 更改 TwinCAT-PLC 中数组的大小,在本例中为 pyads?
VAR CONSTANT
min_a : INT := 1;
max_a : INT := 234;
END_VAR
VAR
array_1: ARRAY[min_a..max_a] OF INT;
END_VAR
然后我想用广告更改常量的值,这可行,但它永远不会更改 plc 中数组的大小。
有人可以帮我吗?
解决方法
您可以使用 arrays
方法分配特定类型和大小的 __NEW(type,size)
,然后使用 __DELETE(pointer)
方法释放内存,如下代码所示:
METHOD myCode
VAR_INPUT
myArray : POINTER TO INT;
END_VAR
myArray := __NEW(INT,10); // Create array of type INT with size of 10
__DELETE(myArray); //Free the memory
myArray := __NEW(INT,20); // Allocate new memory now with the size of 20
__DELETE(myArray); //Free the memory
END_METHOD
- 小心这一点,因为您需要使用
__DELETE(pointer)
方法! - 请注意,如果您像在答案中一样静态声明数组,则无法更改数组的大小。