Codesys 2.3 Strukturen in Datentypen?

vollmi

Level-3
Beiträge
5.682
Reaktionspunkte
1.600
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte gerade einen Treiber von TIA nach Codesys 2.3 portieren. Ich nutze hier diverse UDT die auch unterstrukturen oder unterlagerte UDT haben.
Sieht in TIA z.B. So aus. Die Strukturen kann ich aufklappen wenn ich sie brauche. In Step7 war das ja auch so, ausser es waren unterlagerte Datentypen. Die waren nur in der Datensicht dann aufgeklappt.

Aber wie gebe ich das nun in codesys ein?
So mit untertypen gehts ja dann muss ich halt für jeden Struct nochmal einen Datentyp anlegen.
Code:
TYPE Fut_Tel_Koppel :


STRUCT
    Send_Koppel: Send_Koppel;
    Recv_Koppel: Recv_Koppel;
END_STRUCT
END_TYPE

Aber kann ich nicht auch direkt unterstrukturen anlegen?
 
Zuletzt bearbeitet:
Wie meinst Du das mit direkt Unterstrukturen anlegen?
Eine Struktur muss doch erstmal (einzeln) erstellt werden und dann kann eine Instanz von dieser genutzt werden, auch in einer anderen Struktur.

Von irgendwas mit Internetzugang gesendet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Halt so wie in TIA oder Step7

Da kann ich UDTs so zusammenbauen.
UDT TIA.jpg

Code:
TYPE "Fut_Tel_Koppel"
VERSION : 0.1
   STRUCT
      Send_Koppel : Struct
         Req : Bool;
         Len : UDInt;
         Done : Bool;
         busy : Bool;
         Error : Bool;
         Status : Word;
         Tel : Array[0..40] of Byte;
      END_STRUCT;
      Recv_Koppel : Struct
         Recvd_Len : UDInt;
         Done : Bool;
         busy : Bool;
         Error : Bool;
         Status : Word;
         Tel_Buffer : Array[0..1000] of Byte;
      END_STRUCT;
   END_STRUCT;


END_TYPE
 
Sowohl Step 7/TIA als auch Codesys und Derivate haben ihre Stärken und Schwächen.
Diese Funktionalität ist durchaus ein Vorteil auf Siemensseite den es so, meine ich zumindest, nicht in Codesys gibt.
 
Zuletzt bearbeitet:
Was mir noch einfällt, wenn Du mit Strukturen arbeitest musst Du gegebenenfalls auf das Aligment achten, z.B. wenn Daten via MEMCPY in Strukturen geschrieben oder aus diesen gelesen werden sollen. Bei TwinCAT 3 kann man das Alignment über Pragmas anpassen, ich weiß nicht, ob das bei Codesys 2.3 geht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was mir noch einfällt, wenn Du mit Strukturen arbeitest musst Du gegebenenfalls auf das Aligment achten, z.B. wenn Daten via MEMCPY in Strukturen geschrieben oder aus diesen gelesen werden sollen. Bei TwinCAT 3 kann man das Alignment über Pragmas anpassen, ich weiß nicht, ob das bei Codesys 2.3 geht.

Im Extremfall schreibe ich Member für Member.
ich ersetze demfall die Strukturen in den UDTs gegen neue eigene Typen und deklarier die so. Das geht genausogut. Codesys ist halt schon ein bisschen anders :)
 
Zurück
Oben