Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Results 1 to 7 of 7

Thread: Strukturinhalte vergleichen unter TwinCAT

  1. #1
    Join Date
    16.01.2009
    Posts
    45
    Danke
    16
    Erhielt 1 Danke für 1 Beitrag

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen,

    hat irgendjemand eine gute Idee, wie man die Inhalte zweier identischer Strukturen vergleichen kann. Wobei ich mit Struktur nicht nur einfache Arrays meine.
    Also z.B. definiere ich einen Strukturtyp wie folgt:
    TYPE Struktur
    STRUCT
    Variable1: Andere_Struktur; (*sozusagen eine Struktur in der Struktur*)
    Variable2: INT;
    Variable3: INT;
    Variable4: BOOL;
    Variable5: BOOL;
    Variable6: Andere_Struktur;
    END_STRUCT
    END_TYPE

    Von diesem Strukturtyp leite ich zwei Objekte ab:
    Struktur1: Struktur;
    Struktur2: Struktur;

    Und jetzt will ich die INHALTE der beiden Strukturen (Struktur1 und Struktur2) auf Gleich oder Ungleich überprüfen.

    Mit einfachem Vergleich Struktur1 EQ Struktur2 oder Struktur1 NE Struktur2 geht es jedenfalls nicht, da meckert TwinCAT beim Übersetzen.
    Man könnte auch jedes Element der ersten mit dem entsprechenden Element der zweiten Struktur vergleichen, aber das wäre bei größeren Strukturen enorm aufwendig.

    Ich habe schon überlegt, Zeiger auf die Strukturanfänge zu definieren, und die Strukturen über eine Laufveriable dann byteweise zu vergleichen, aber ich finde keinen programmtechnischen Ansatz dafür.

    Hat irgendjemand eine Idee oder so was schon mal gemacht?

    Viele Grüße
    grosser_marco
    Reply With Quote Reply With Quote Strukturinhalte vergleichen unter TwinCAT  

  2. #2
    Join Date
    22.12.2007
    Posts
    20
    Danke
    1
    Erhielt 7 Danke für 6 Beiträge

    Default

    Schreib dir ne Funktion in ST

    FUNCTION CompareStruct : BOOL
    VAR_INPUT
    adrS1: POINTER TO BYTE; (* Bekommt mit dem ADR Operator die Adresse von der 1. Struktur*)
    adrS2: POINTER TO BYTE; (* Bekommt mit dem ADR Operator die Adresse von der 2. Struktur*)
    uiSize: UINT; (* Bekommt die mit SIZEOF ermittelte Größe einer der beiden Strukturen*)
    END_VAR
    VAR
    i: UINT;
    END_VAR


    CompareStruct := TRUE;
    FOR i:= 1 TO uiSize DO
    IF adrS1^ <> adrS2^ THEN
    CompareStruct:= FALSE;
    EXIT;
    END_IF
    adrS1:= adrS1 + 1;
    adrS2:= adrS2 + 1;
    END_FOR

    Die Funktion rufst du mit den Adressen und Größe der Strukturen auf und erhälst als Rückgabewert ein True wenn sie gleich sind.
    Wenn du nicht weißt wie man die Function aufruft mache ich dir noch ein Beispiel. Dafür brauche ich aber dann die Sprache in der du die Funktion aufrufst

    Gruß vom Prof

  3. #3
    Join Date
    19.11.2006
    Posts
    1,364
    Danke
    6
    Erhielt 255 Danke für 231 Beiträge

  4. #4
    Join Date
    16.01.2009
    Posts
    45
    Danke
    16
    Erhielt 1 Danke für 1 Beitrag

    Default

    Danke euch beiden!
    Der selbst geschriebene Baustein funktioniert, das hab ich getestet.
    Ich wusste noch gar nicht, daß es dafür auch eine Standardfunktion in der Lib gibt. Nochmal danke für eure Hilfe! Nichtmal die Hotline von Beckhoff konnte mir da helfen, die waren der Meinung daß der Vergleich mit EQ oder NE gehen müsste...
    Könntet ihr mir noch ein Buch (evtl. kostenloses eBook) zur Programmierung unter IEC 1131 empfehlen, damit ich mich besser mit den Sprachstrukturen vertraut machen kann?
    Danke
    grosser_marco
    Reply With Quote Reply With Quote Strukturen vergleichen unter TwinCAT  

  5. #5
    Join Date
    12.01.2009
    Location
    brandenburg
    Posts
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo
    für IEC61131-3 (CoDeSys)soll das hier nicht schlecht sein:
    http://www.amazon.de/SPS-Programmier...sr=8-1....habe es mir auch Bestellt...

  6. #6
    Join Date
    22.12.2007
    Posts
    20
    Danke
    1
    Erhielt 7 Danke für 6 Beiträge

    Default

    Habe mir die Beschreibung vom dem Buch mal angesehen ist ein IEC Buch und scheint recht ausführlich zu sein aber geht bestimmt nicht auf CoDeSys bzw. TwinCat ein. Es wird mit dem Buch OpenOCS und Step7 mitgeliefert. Gerade von Step7 ist aber bekannt, dass die IEC nicht voll umgesetzt wurde.

  7. #7
    Join Date
    30.08.2005
    Posts
    294
    Danke
    42
    Erhielt 111 Danke für 70 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nein, Karl-Heinz John hat mit CoDeSys garantiert nichts am Hut...
    Der ist Geschäftsführer bei der Konkurrenz. Für Fachbücher mit CoDeSys-Beispielen haben wir eine Liste auf unserer Homepage:

    http://www.3s-software.com/index.shtml?de_lit

Similar Threads

  1. Replies: 5
    Last Post: 28.02.2019, 19:58
  2. TwinCat 3 unter Windows 10
    By Exilim in forum CODESYS und IEC61131
    Replies: 31
    Last Post: 17.04.2018, 13:59
  3. FirstNciSample unter TwinCat 3
    By Gegy in forum CODESYS und IEC61131
    Replies: 0
    Last Post: 22.07.2015, 11:57
  4. Twincat 3 Anfangsprobleme.......Vergleichen, Springen
    By TomTom01 in forum CODESYS und IEC61131
    Replies: 5
    Last Post: 12.03.2015, 08:48
  5. TwinCAT V2.11: Vergleichen von Strukturen
    By Chräshe in forum CODESYS und IEC61131
    Replies: 8
    Last Post: 10.08.2011, 15:28

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •