【问题标题】:Change Size of Array in PLC在 PLC 中更改数组的大小
【发布时间】:2021-01-28 09:08:34
【问题描述】:

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

【问题讨论】:

  • 您不能在运行时更改数组大小,因为它是在编译时定义的。所以你总是需要保留最坏情况下的内存(数组大小)。但是,您可以将数组作为参数传递给功能块或方法,并在不知道其大小的情况下对其进行处理,请参阅以下说明:infosys.beckhoff.com/english.php?content=../content/1033/…

标签: arrays ads plc st twincat-ads


【解决方案1】:

您可以使用__NEW(type, size) 方法分配特定类型和大小的arrays,然后使用__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)方法!
  • 请注意,如果您像在答案中一样静态声明数组,则无法更改数组的大小。

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 2017-07-03
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多