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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: 40Byte vergleichen

  1. #11
    Registriert seit
    06.09.2008
    Beiträge
    45
    Danke
    8
    Erhielt 5 Danke für 5 Beiträge

    Rotes Gesicht


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du hast natürlich recht.
    Ich habe micht total Verzettelt.

    Sorry

    mfg Erick

  2. #12
    skyvan ist offline Benutzer
    Themenstarter
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi

    Danke euch allen und vor allem dir Gebs hat geklappt musste nur noch den Schleifendurchlauf anpassen.

    Danke dir

    Gruß skyvan

  3. #13
    Registriert seit
    11.10.2006
    Ort
    Verden (Aller)
    Beiträge
    532
    Danke
    31
    Erhielt 58 Danke für 49 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich nehme bloß noch den EQ_ANY aus der Oscat-Bibliothek.
    Der funzt einwandfrei und man kann den alles durchsuchen lassen.

    Code:
    FUNCTION EQ_ANY : BOOL
    TITLE = 'EQ_ANY'
    //version 1.0 
    //programmer  dalbi
    //tested by   dalbi
    //
    VERSION : '1.0'
    AUTHOR  : dalbi
    NAME    : EQ_ANY
    FAMILY  : xS7
    VAR_INPUT
      IN1 : ANY;
      IN2 : ANY;
    END_VAR
    VAR_TEMP
      tANY1 : ANY;
        _ANY1 AT tANY1 : STRUCT
          id: BYTE;
          DataType: BYTE;
          Lenght: WORD;
          DBNr: WORD;
          Byte_Pointer: DWORD;
        END_STRUCT;
      tANY2 : ANY;
        _ANY2 AT tANY2 : STRUCT
          id: BYTE;
          DataType: BYTE;
          Lenght: WORD;
          DBNr: WORD;
          Byte_Pointer: DWORD;
        END_STRUCT;
      tAdr1 : INT;
      tAdr2 : INT;
      i : INT;
    END_VAR
      
    BEGIN
      tANY1 := IN1;
      tANY2 := IN2;
      
      tAdr1 := WORD_TO_INT(DWORD_TO_WORD(SHR(IN:=SHL(IN:=_ANY1.Byte_Pointer,N:=8),N:=11)));
      tAdr2 := WORD_TO_INT(DWORD_TO_WORD(SHR(IN:=SHL(IN:=_ANY2.Byte_Pointer,N:=8),N:=11)));
      EQ_ANY := FALSE;
      IF _ANY1.Lenght <> _ANY2.Lenght THEN
        EQ_ANY := TRUE;
      ELSE
        FOR i := 0 TO WORD_TO_INT(_ANY1.Lenght)-1 DO
          IF WORD_TO_BLOCK_DB(_ANY1.DBNr).DB[tAdr1+i] <> WORD_TO_BLOCK_DB(_ANY2.DBNr).DB[tAdr2+i] THEN
            EQ_ANY := TRUE;
            EXIT;
          END_IF;
        END_FOR;
      END_IF;
      
    END_FUNCTION
    "Ein lahmer Drecksplanet ist das, ich habe nicht das geringste Mitleid" (Prostetnik Vogon Jeltz)

Ähnliche Themen

  1. 2 DBs vergleichen?
    Von SebastianSPS im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 26.11.2010, 10:30
  2. Bausteine vergleichen
    Von Reto im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 07.10.2008, 15:24
  3. SCL Timerwerte vergleichen
    Von dinner4one im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.06.2008, 01:09
  4. Datenwörter vergleichen?
    Von online im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.03.2008, 14:23
  5. MW Vergleichen
    Von bigannang im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 23.11.2007, 09:44

Lesezeichen

Berechtigungen

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