asys
asys

Reputation: 731

Multi-variable assignment to an array in TwinCAT

How can assign a new variable to an array in TwinCAT?

in TwinCAT you can initialize all your array's argument directly for example for array a we can use:

a : ARRAY [1..3] OF INT := [3(0)];

or

a : ARRAY [1..3] OF INT := [0,0,0];

but if you want to assign the array in the main program(not initializing part) for example

a:=[2,8,5];

you will face this error tip: Unexpected array initialisation.

enter image description here

any help would be appreciated.

Upvotes: 2

Views: 2530

Answers (1)

Felix
Felix

Reputation: 1189

You cannot directly initialize arrays inside the program part.

That beeing said, the best option is porbably to define a constant containing the desired initialization values and then assigning the value of that constant to your array:

VAR 
    aiMyArray : ARRAY [1..2] OF INT;
END_VAR
VAR CONSTANT
    aiInitializerMyArrayOptionA : ARRAY [1..2] OF INT := [1,2];
    aiInitializerMyArrayOptionB : ARRAY [1..2] OF INT := [3,4];
END_VAR
IF bCondition THEN
    aiMyArray := aiInitializerMyArrayOptionA;
ELSE
    aiMyArray := aiInitializerMyArrayOptionB;
END_IF

The other option would be to manually initialize each index one by one which easily gets impracticale with decent array sizes:

IF bCondition THEN
    aiMyArray[1] := 1;
    aiMyArray[2] := 2;
ELSE
    aiMyArray[1] := 3;
    aiMyArray[2] := 4;
END_IF

Looping thorugh all elements and assigning values might be an option too. But that would only be usefull when the values are no arbitrary constatns but you are able to calculate the values from some formula.

Upvotes: 1

Related Questions