gpt4 book ai didi

plc - 如何将初始化数组分配给 TwinCAT 中的数组数组

转载 作者:行者123 更新时间:2023-12-05 01:06:06 26 4
gpt4 key购买 nike

我正在尝试将两个初始化数组 evenNumbersoddNumbers 分配给数组数组 integers:

PROGRAM ArrayInit
VAR
evenNumbers : ARRAY[1..3] OF INT := [2, 4, 6];
oddNumbers: ARRAY[1..3] OF INT := [1, 3, 5];

integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers, oddNumbers];
END_VAR

这段代码给了我一个编译器错误

Array initialisation expected

当然我可以直接用我想要的数字初始化整数:

PROGRAM ArrayInit
VAR
integers: ARRAY[1..2] OF ARRAY[1..3] OF INT := [
[2, 4, 6], [1, 3, 5]
];
END_VAR

或者像谢尔盖提到的那样

PROGRAM ArrayInit
VAR
integers: ARRAY[1..2, 1..3] OF INT := [
2, 4, 6, 1, 3, 5
];
END_VAR

但是,如果原始数组非常大和/或我想记录这些不同的数组是什么,一个描述性的名称会很好。 IE。 integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers,oddNumbers]; 很好地表明 integers 有两个列表,一个是偶数,一个是奇数。

我还尝试将 integers 初始化为 integers: ARRAY[1..2] OF ARRAY[1..3] OF INT := [[evenNumbers], [oddNumbers ]];,但这给了我编译器错误:

Cannot convert type 'ARRAY [1..3] OF INT' to type 'INT'

现在我想知道这是否可能?如果是这样,有人知道我该怎么做吗?

最佳答案

要分配多级数组,您可以在一行中完成。

combinedSet : ARRAY[1..2, 1..2] OF INT := [1,2,3,4];

将产生数组

[
1 => [
1 => 1,
2 => 2
],
2 => [
1 => 2,
2 => 4
]
]

首先它分配第一个元素的所有元素 [1, 1], [1, 2], [1, 3] ...然后嵌套一个 [2, 1], [2, 2], [2, 3] ...

其他信息

将 2 个数组合并为一个多维的最简单方法是:

PROGRAM PLC_PRG
VAR
arr1 : ARRAY[1..3] OF INT := [1,3,5];
arr2 : ARRAY[1..3] OF INT := [2,4,6];
combinedSet : ARRAY[1..2] OF ARRAY[1..3] OF INT;
END_VAR

combinedSet[1] := arr1;
combinedSet[2] := arr2;
END_PROGRAM

这不起作用的原因

integers : ARRAY[1..2] OF ARRAY[1..3] OF INT := [evenNumbers, oddNumbers];

因为 evenNumbersoddNumbers 在使用的​​时候没有初始化。如果您在 VAR CONSTANT 中声明它们,它可能会起作用,但您将无法在程序中更改这些数组的内容。

关于plc - 如何将初始化数组分配给 TwinCAT 中的数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69853619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com