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

Ergebnis 1 bis 4 von 4

Thema: 2 Arrays aus 2 DBs vergleichen

  1. #1
    Registriert seit
    29.07.2008
    Ort
    Stuttgart
    Beiträge
    232
    Danke
    64
    Erhielt 25 Danke für 25 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte folgendes realisieren. Ich habe 2 DBs (z.B. DB1, DB2) mit jeweils einigen Arrays(Byte) drin. Nun will ich einen Baustein schreiben, der ein Array mit Länge X aus DB1 mit einem Array mit Länge X aus DB2 vergleicht und Gleichheit oder Ungleichheit rückmeldet. Wahrscheinlich geht das über Pointer, aber das habe ich noch nicht gemacht. Ich will halt nur einen allgemeinen Baustein für solch einen Array-Vergleich haben.

    Danke schonmal
    Zitieren Zitieren 2 Arrays aus 2 DBs vergleichen  

  2. #2
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Günni,

    ich hab' mal auf die schnelle eine AWL-Quelle erstellt:

    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      DB_Nr1 : BLOCK_DB ;    
      DB_Nr2 : BLOCK_DB ;    
      Start_DB_Nr1 : INT ;    
      Start_DB_Nr2 : INT ;    
      Laenge : INT ;    
    END_VAR
    VAR_OUTPUT
      Vergleich_OK : BOOL ;    
    END_VAR
    VAR_TEMP
      LoopCounter : INT ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          AUF   #DB_Nr1; // 1. DB öffnen
          TDB   ; // als DI aufmachen
          AUF   #DB_Nr2; // 2. DB öffnen
    
          L     #Start_DB_Nr1; // 1. zu vergleichendes Byte vom 1.DB laden
          SLD   3; // => ins Pointerformat
          LAR1  ; // und ins Adressregister 1 schieben
    
          L     #Start_DB_Nr2; // 1. zu vergleichendes Byte vom 1.DB laden
          SLD   3; // => ins Pointerformat
          LAR2  ; // und ins Adressregister 1 schieben
    
          L     #Laenge; // zu vergleichende Länge laden
    LOOP: T     #LoopCounter; // Schleifenzähler
    
          L     DIB [AR1,P#0.0]; // Byte vom 1.DB laden
          L     DBB [AR2,P#0.0]; // Byte vom 2.DB laden
          <>I   ; 
          SPB   Ungl; // Wenn ungleich, dann raus aus der Schleife
    
          L     P#1.0; // Beide Adressregister um 1 Byte erhöhen
          +AR1  ; 
          +AR2  ; 
    
          L     #LoopCounter; // Schleifenzähler
          LOOP  LOOP; // Schleife fortsetzen
    
          SET   ; // Wenn beim Vergleich keine Unterschiede aufgetreten sind
          =     #Vergleich_OK; // dann ist Vergleich in Ordnung
    
    Ungl: NOP   0; 
    END_FUNCTION
    
    FUNCTION FC 2 : VOID
    TITLE =
    VERSION : 0.1
    
    BEGIN
    NETWORK
    TITLE =
    
          CALL FC     1 (
               DB_Nr1                   := DB     1,
               DB_Nr2                   := DB     2,
               Start_DB_Nr1             := 0,// Vergleich ab Byte 0
               Start_DB_Nr2             := 4,// Vergleich ab Byte 4
               Laenge                   := 10,// 10 Bytes vergleichen
               Vergleich_OK             := M      0.0);// Wenn M 0.0 = 1 => keine Unterschiede
    
    END_FUNCTION
    Das sollte für einen einfachen Vergleich reichen.

    Grüße
    Gebs

  3. Folgender Benutzer sagt Danke zu Gebs für den nützlichen Beitrag:

    Günni1977 (03.12.2008)

  4. #3
    Avatar von Günni1977
    Günni1977 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.07.2008
    Ort
    Stuttgart
    Beiträge
    232
    Danke
    64
    Erhielt 25 Danke für 25 Beiträge

    Standard

    Werd's mal probieren und mich wieder melden!

  5. #4
    Avatar von Günni1977
    Günni1977 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.07.2008
    Ort
    Stuttgart
    Beiträge
    232
    Danke
    64
    Erhielt 25 Danke für 25 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hat prima geklappt, danke nochmal!

Ähnliche Themen

  1. Arrays in S7 schreiben
    Von CrazyCat im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 29.06.2012, 15:19
  2. Arrays in DB anlegen
    Von litlegerman im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 31.10.2011, 18:32
  3. SCL -Arrays mit einander vergleichen
    Von MatthiasH24 im Forum Simatic
    Antworten: 89
    Letzter Beitrag: 09.09.2008, 19:54
  4. Pointer und Arrays
    Von SolSna im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 26.02.2008, 20:16
  5. arrays mit udt...
    Von Jochen Kühner im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 01.12.2005, 14:27

Lesezeichen

Berechtigungen

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