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

Ergebnis 1 bis 7 von 7

Thema: Strukturinhalte vergleichen unter TwinCAT

  1. #1
    Registriert seit
    16.01.2009
    Beiträge
    45
    Danke
    16
    Erhielt 1 Danke für 1 Beitrag

    Standard


    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
    Zitieren Zitieren Strukturinhalte vergleichen unter TwinCAT  

  2. #2
    Registriert seit
    22.12.2007
    Beiträge
    17
    Danke
    1
    Erhielt 6 Danke für 6 Beiträge

    Standard

    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
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

  4. #4
    Registriert seit
    16.01.2009
    Beiträge
    45
    Danke
    16
    Erhielt 1 Danke für 1 Beitrag

    Standard

    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
    Zitieren Zitieren Strukturen vergleichen unter TwinCAT  

  5. #5
    Registriert seit
    12.01.2009
    Ort
    brandenburg
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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
    Registriert seit
    22.12.2007
    Beiträge
    17
    Danke
    1
    Erhielt 6 Danke für 6 Beiträge

    Standard

    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
    Registriert seit
    30.08.2005
    Beiträge
    280
    Danke
    41
    Erhielt 96 Danke für 66 Beiträge

    Standard


    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

Ähnliche Themen

  1. TwinCAT V2.11: Vergleichen von Strukturen
    Von Chräshe im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 10.08.2011, 15:28
  2. Twincat/PLC-Server unter Win7 64bit
    Von cas im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 11.04.2011, 14:09
  3. Visualisierung für TwinCAT unter WinCE
    Von nekron im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 16.06.2010, 17:44
  4. Installation von TwinCAT unter Win7
    Von jensi-7910 im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 01.12.2009, 20:29
  5. Mit Visualisierung booten unter Twincat
    Von Hitschkock im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 26.08.2009, 22:04

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •