1

是否可以使用 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 中数组的大小。

有人可以帮助我吗?

这是我第一次使用 plc 并且我在结构化文本中编写代码......

4

1 回答 1

0

您可以使用该方法分配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)方法释放内存!
  • 请注意,如果您像在答案中那样静态声明它们,则无法更改数组的大小。
于 2021-02-05T17:14:31.943 回答