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

Ergebnis 1 bis 6 von 6

Thema: zwei DB-S vergleichen

  1. #1
    Registriert seit
    02.12.2005
    Ort
    Laakirchen
    Beiträge
    44
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich hab folgendes Problem. Ich habe in einem Projekt wiederkehrend zwei DBs die in ihrer Struktur irgendwo gleiche Datensätze enthalten
    zb: DB300 ab Byte 50 -- 10 Byte
    Vergleichs-DB: DB450 ab Byte 70 -- 10 Byte


    ich hätte mir für die Suchfunktion einen schönen FC mit Pointern und allen drum herum gemalt.

    Jetzt habe ich ein Problem. wie kann ich in der indirketen Adressierung zwei DBs aufschlagen und vergleichen. Oder muss ich den Inhalt eines DBs erst zwischenspeichern und dann vergleichen.
    Es ist halt so das dieser Vergleichsbaustein in alle Richtungen universell sein muss.

    Vielleicht hat irgendwer eine Idee wie das am chnellsten zu lösen ist.

    Dankeschön im voraus

    Andy
    Zitieren Zitieren zwei DB-S vergleichen  

  2. #2
    Anonymous Gast

    Standard

    Hallo,

    speichere doch die Werte temporär zwischen und vergleiche dann

    Wie:

    AUF #DB_1
    L DBB [AR1,P#0.0]
    T #VAL1

    AUF #DB_2
    L DBB [AR1,P#0.0]
    T #VAL2

    L #VAL1
    L #VAL2
    ==I
    SPBN M001

  3. #3
    Registriert seit
    15.11.2005
    Beiträge
    89
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Man kann auch über die Instanz-DB's arbeiten.
    Z.B. an eine FB/FC die beiden zu vergleichendnen Bausteine
    als Block-DB Parameter angeben, Start-Adresse der jeweiligen
    DB's und die zu vergleichende Länge sichern.
    Wichtig ist nur, zuvor den Global und den Instanz-DB zu sichern und am Ende des FB/FC wiederherzustellen

    Code:
    //sichern des aufgeschlagenen DB's
    L DBNO
    T tSAV_DB
    L DINO
    T tSAV_DI
    
    AUF DB[#BLOCK_DB1]
    AUF DI[#BLOCK_DB2]
    
    L DBB[#START_DB1]
    L DIB[#START_DB2]
    ==I
    
    ...//weitere Anweisungen zum Vergleichen Schleife o.ä.
    
    
    //wiederherstellen der vor Aufruf aufgeschlagenen DB's
    AUF DB[tSAV_DB]
    AUF DI[tSAV_DI]
    Funktioniert ohne Zwischenpuffern !
    _________________________________________
    Solls funktionieren, oder darfs auch Siemens sein?

  4. #4
    Registriert seit
    05.01.2006
    Beiträge
    46
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo puehri,

    hier ein kleines AWL-Programm das du dir für deine Zwecke anpassen kannst.



    Code:
    // Schleifen Voreinstellung
    
          AUF   DB     1                    // Erster DB zum vergleichen
          AUF   DI     2                    // Zeiter DB zum vergleichen als Instanz geöffnet
    
          L     L#0                         // Schleifen anfangswert laden
          T     #DIT_Schleifenwert          // Schleifenanfangswert laden
    
          L     L#1234                      // Letzte Adresse zum bearbeiten
          T     #DIT_Schleifenende          // Schleifenende speichern
    
    
    
    // Schleifenausführung
    
    RS50: SET                               // VKE-1 laden
          L     DBB [#DIT_Schleifenwert]    // DB-Bytewert laden
          L     DIB [#DIT_Schleifenwert]    // DB-Bytewert laden
          ==D                               // Wenn Werte gleich, dann
          SPB   RS60                        // Überspringe Aktion
    
    // --- Aktion wenn Wert ungleich ---
    
    
    
    
    // --- Ende ---
    
    
    
    // Kontrolle auf Schleifenende
    
    RS60: SET                               // VKE-1 laden
          L     #DIT_Schleifenwert          // Schleifenanfangswert laden
          L     L#32                        // Wert für Adressanpassung laden
          +D                                // Adresse anpassen
          T     #DIT_Schleifenwert          // Schleifenanfangswert speichern
          SRD   3                           // Adresse für Schleifenende Kontrolle anpassen
          L     #DIT_Schleifenende          // Schleifenende laden
          <D                                // Wenn noch nicht alle Werte bearbeitet, dann
          SPB   RS50                        // Sprung für erneuten Schleifendurchlauf
    Wenn du noch fragen haben solltest, melde dich einfach.
    Viele Grüße
    Matthias
    SPS .bz
    -----------------
    Rechtschreibfehler wurden absichtlich zur allgemeinen Belustigung hinzugefügt, wer einen findet, darf ihn natürlich behalten ...
    Zitieren Zitieren Schleife für Vergleich DB-Bausteine  

  5. #5
    Registriert seit
    15.11.2005
    Beiträge
    89
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    @matthias

    wenn die zu vergleichenden DB's allerdings nicht fest im FB
    programmiert werden, kannst du den Baustein immer wieder
    verwenden. Allerdings nicht vergessen Instanz- und Global DB sichern
    und wiederherstellen, sonst kann man den Baustein nicht in Alarm oder Weck-OB's verwenden

    cu, nairolf
    _________________________________________
    Solls funktionieren, oder darfs auch Siemens sein?

  6. #6
    puehri ist offline Benutzer
    Themenstarter
    Registriert seit
    02.12.2005
    Ort
    Laakirchen
    Beiträge
    44
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dankeschön für die hilfreichen Tipps. Funktioniert alles Prima und ist super universell

    Danke

    mfg

    Andy

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 16.08.2011, 16:31
  2. zwei Zahlenwerte Vergleichen (Komparator?)
    Von berc im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 24.06.2011, 23:01
  3. Zwei Wörter vergleichen?
    Von Küffel im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 31.12.2010, 16:47
  4. Programm zum Vergleichen von zwei Projekten
    Von Gransi im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 10.06.2010, 20:07
  5. zwei DB´s direkt vergleichen
    Von Grimsey im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.12.2007, 15:21

Lesezeichen

Berechtigungen

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