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

Ergebnis 1 bis 6 von 6

Thema: zwei DB´s direkt vergleichen

  1. #1
    Registriert seit
    27.10.2006
    Ort
    Plauen
    Beiträge
    374
    Danke
    107
    Erhielt 13 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich würde gern überprüfen, ob zwei DB´s inhaltlich identisch sind ohne dabei jedoch jedes Wort oder Byte vergleichen zu müssen.

    Gibt es da eventuell eine Möglichkeit? Ich halte das nach meinen bisherigen Recherchen für eher unwahrscheinlich, aber versuchen kann man es ja mal

    Danke schonmal, falls jemand eine Idee hat.
    Zitieren Zitieren zwei DB´s direkt vergleichen  

  2. #2
    Registriert seit
    21.11.2007
    Beiträge
    226
    Danke
    200
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Hallo

    du gehst in deine Bausteinübersicht wo alle von dir erstellten Bausteine angezeigt sind.
    wähle deinen Baustein den du vergleichen möchtest mit rechter maustaste an.
    dann steht da bausteine vergleichen...

    das wählst du aus und stellst dann anstatt online Pfad1 / Pfad 2 aus dann drückst du auswählen und wählst den Baustein mit dem der anderer verglichen werden soll.

    Ist das getan klickst du auf vergleichen.

    Das wars.

    MfG Roos

  3. #3
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.719
    Danke
    729
    Erhielt 1.159 Danke für 970 Beiträge

    Standard

    Wenn du das einmalig tun willst für 2 DBs in verschiedenen Projekten oder online offline dann nimm Roos seinen Vorschlag ansonsten
    könntest du von beiden DBs die Checksumme bilden und diese vergleichen.
    Ob das aber sinnvoll ist, kann bezweifelt werden. Vergleiche lieber doppelwort für Doppelwort. Soviel Arbeit ist das nicht
    Geändert von marlob (30.11.2007 um 12:23 Uhr)

  4. #4
    Avatar von Grimsey
    Grimsey ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.10.2006
    Ort
    Plauen
    Beiträge
    374
    Danke
    107
    Erhielt 13 Danke für 11 Beiträge

    Standard



    Danke für Eure Tipps, aber ich wollt die DB´s eigentlich im Programm vergleichen und nicht im Simatic-Manager. Das war mir schon klar.

  5. #5
    Registriert seit
    01.12.2007
    Ort
    Walsdorf
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Must halt mal probieren ob Du damit klarkommst
    mfg Lesoc



    FUNCTION_BLOCK FB 1
    TITLE =
    VERSION : 0.1

    VAR_INPUT
    DBNr1 : BLOCK_DB ;
    DBNr2 : BLOCK_DB ;
    Laenge : INT ;
    END_VAR
    VAR_OUTPUT
    Gleich : BOOL ;
    Ungleich : BOOL ;
    END_VAR
    VAR_TEMP
    db1Wert : BYTE ;
    db2Wert : BYTE ;
    X : INT ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =Alte Werte Löschen
    SET ;
    R #Gleich;
    R #Ungleich;
    NETWORK
    TITLE =
    L #Laenge;
    Next: T #X;
    AUF #DBNr1;
    L DBB [AR1,P#0.0];
    T #db1Wert;
    AUF #DBNr2;
    L DBB [AR1,P#0.0];
    T #db2Wert;
    L #db1Wert;
    L #db2Wert;
    <>I ;
    SPBB Feh;
    L P#1.0;
    +AR1 ;
    L #X;
    LOOP Next;
    SET ;
    S #Gleich;
    BEA ;
    Feh: S #Ungleich;
    END_FUNCTION_BLOCK
    DATA_BLOCK DB 1
    TITLE =
    VERSION : 0.0
    FB 1
    BEGIN
    DBNr1 := DB 1;
    DBNr2 := DB 1;
    Laenge := 0;
    Gleich := FALSE;
    Ungleich := FALSE;
    END_DATA_BLOCK
    DATA_BLOCK DB 100
    TITLE =
    VERSION : 0.1

    STRUCT
    DB_VAR : ARRAY [0 .. 20 ] OF //vorläufige Platzhaltervariable
    INT ;
    END_STRUCT ;
    BEGIN
    DB_VAR[0] := 0;
    DB_VAR[1] := 0;
    DB_VAR[2] := 0;
    DB_VAR[3] := 0;
    DB_VAR[4] := 0;
    DB_VAR[5] := 0;
    DB_VAR[6] := 0;
    DB_VAR[7] := 0;
    DB_VAR[8] := 0;
    DB_VAR[9] := 0;
    DB_VAR[10] := 0;
    DB_VAR[11] := 0;
    DB_VAR[12] := 0;
    DB_VAR[13] := 0;
    DB_VAR[14] := 0;
    DB_VAR[15] := 0;
    DB_VAR[16] := 0;
    DB_VAR[17] := 0;
    DB_VAR[18] := 0;
    DB_VAR[19] := 0;
    DB_VAR[20] := 0;
    END_DATA_BLOCK
    DATA_BLOCK DB 101
    TITLE =
    VERSION : 0.1

    STRUCT
    DB_VAR : ARRAY [0 .. 20 ] OF //vorläufige Platzhaltervariable
    INT ;
    END_STRUCT ;
    BEGIN
    DB_VAR[0] := 0;
    DB_VAR[1] := 0;
    DB_VAR[2] := 0;
    DB_VAR[3] := 0;
    DB_VAR[4] := 0;
    DB_VAR[5] := 0;
    DB_VAR[6] := 0;
    DB_VAR[7] := 0;
    DB_VAR[8] := 0;
    DB_VAR[9] := 0;
    DB_VAR[10] := 0;
    DB_VAR[11] := 0;
    DB_VAR[12] := 0;
    DB_VAR[13] := 0;
    DB_VAR[14] := 0;
    DB_VAR[15] := 0;
    DB_VAR[16] := 0;
    DB_VAR[17] := 0;
    DB_VAR[18] := 0;
    DB_VAR[19] := 0;
    DB_VAR[20] := 0;
    END_DATA_BLOCK
    ORGANIZATION_BLOCK OB 1
    TITLE = "Main Program Sweep (Cycle)"
    VERSION : 0.1

    VAR_TEMP
    OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
    OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
    OB1_PRIORITY : BYTE ; //Priority of OB Execution
    OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
    OB1_RESERVED_1 : BYTE ; //Reserved for system
    OB1_RESERVED_2 : BYTE ; //Reserved for system
    OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
    OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
    OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
    OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    CALL FB 1 , DB 1 (
    DBNr1 := DB 100,
    DBNr2 := DB 101,
    Laenge := 20,
    Gleich := A 0.0,
    Ungleich := A 0.1);

    END_ORGANIZATION_BLOCK
    Zitieren Zitieren Meine Lösung  

  6. #6
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von lesoc Beitrag anzeigen
    FUNCTION_BLOCK FB 1
    TITLE =
    VERSION : 0.1

    L #Laenge;
    Next: T #X;
    AUF #DBNr1;
    L DBB [AR1,P#0.0];
    T #db1Wert;
    AUF #DBNr2;
    L DBB [AR1,P#0.0];
    T #db2Wert;
    L #db1Wert;
    L #db2Wert;
    <>I ;
    SPBB Feh;
    L P#1.0;
    +AR1 ;
    L #X;
    LOOP Next;
    Grimsey sucht eine Lösung für den Vergleich von zwei DBs, ohne jedes Wort oder Byte vergleichen zu müssen.

    Siehe dazu auch hier:

    http://www.sps-forum.de/showthread.php?t=15519

    Gruß Kai

Ä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 vergleichen
    Von puehri im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.02.2006, 13:00

Lesezeichen

Berechtigungen

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