Frage nach der ARRAY- Struktur in Twincat

PhuongTran1983

Level-1
Beiträge
67
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle Forumsmitglieder,

ich habe folgendes Problem und könntet Ihr vielleicht mir weiterhelfen.

Ich kann eine Array von Struct in Twincat wie folgt deklarieren.

TYPE Test
STRUCT

p1:int;
p2:int;

END_STRUCT

Dann habe ich einen ARRAY von dieser Struct

Druck : ARRAY[0..3] OF Test;


Ich kann so Werte für Variablen (z.B. p1) in Array of Struct geben.

Druck.Test[0].P1:=0;
Druck.Test[1].P1:=0;
Druck.Test[2].P1:=2;
Druck.Test[3].P1:=2;

ich möchte etwas einfacher und kurzer wie folgt schreiben

z.B.
Druck.Test[0]..[1].P1 :=0;
Druck.Test[2]..[3].P1 :=2;


Wie kann ich so realisieren? Könntet jemand von Euch mir ein Tipp geben.

Vielen Dank im Voraus

Phuong
 
Zuletzt bearbeitet:
Hey hierfür kannst du eine FOR-Schleife nehmen

Code:
FOR i:= 0 to 3 by 1 do
    Druck[i].P1 := 0;
    Druck[i].P2 := 2;
END_FOR;

Mit der Schleife erreichst du jetzt, dass alle P1 und P2 Werte in dem Strukt gleich beschrieben werden.

Ich hoffe ich habe dein Anliegen richtig verstanden.

MfG Hendrik
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Hendrik,

vielen Dank für die schnelle Antwort.

Was ich machen möchte ist ein bisschen anders. Es geht nur um die Variable p1 in der Struct. Ich habe gerade mein obigen Schreiben korrigiert.

Viele Grüße,

Phuong
 
Trotzdem ist eine Schleife die einzige Möglichkeit.
Code:
FOR I:=0 TO 1 DO
   Druck[I].P1:=0;
END_FOR
FOR I:=2 TO 3 DO
   Druck[I].P1:=2;
END_FOR
(* oder so *)
FOR I:=0 TO 1 DO
   Druck[I].P1:=0;
   Druck[I+2].P1:=2;
END_FOR
 
Hallo StructuredTrash,

Deine 1. Variante habe ich bereits verwendet. Es klingt vielleicht besser mit 2. Variant.

Nochmals vielen Dank für Deine Tipps.

Freundliche Grüße,

Phuong
 
Hallo,
ich komme nicht von der Twincat-Seite.
Hast du denn schon mal das hier versucht:

Druck.Test[0..1].P1 :=0;
Druck.Test[2..3].P1 :=2;
 
wenn es initialisieren ist gibt es die moglichkeit um im declaration die werte zu geben (mache ich immer , sogar bei 0 werte.
es geht mit pointer auch sehe oscat.lib
und naturlich wie oben genannt.
 
Zurück
Oben