更改 PLC 中数组的大小

问题描述

是否可以使用 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 并以结构化文本编写代码...

解决方法

您可以使用 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) 方法!
  • 请注意,如果您像在答案中一样静态声明数组,则无法更改数组的大小。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...