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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: 2 Datenbausteine miteinander vergleichen

  1. #1
    Registriert seit
    22.04.2007
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    schonmal vorab, mein Name ist NICHT Programm!
    Ich hab folgendes Problem:

    Ich will mit einer S7-414 2 Datenbausteine ständig miteinander vergleichen.
    Die Datenbausteine haben eine Länge von ca. 5kB. Da der Vergleich immer stattfindet, komme ich mit meiner programmierten Schleifenfunktion in Zykluszeitprobleme.

    Gibt es eine Möglichkeit nur den "Kopf" der beiden Datenbausteine miteinander zu vergleichen.
    Ich muss nur wissen ob die DB's ungleich sind. Welche Daten genau interessieren eigentlich nicht.
    Bin für jede Hilfe dankbar.
    Zitieren Zitieren 2 Datenbausteine miteinander vergleichen  

  2. #2
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.746
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    musst du denn in einem zyklus immer den kompletten baustein vergleichen, oder langt es auch wenn der vergleich z.b. 20 zyklen dauert und dann von vorne beginnt???
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren zykluszeit...  

  3. #3
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo SPS-Fuchs,

    anbei eine AWL Quelle zum vergleichen von Datenbausteinen.
    Unter PLC-Sim funktioniert es in einem Zyklus.

    MfG
    Daniel
    Angehängte Dateien Angehängte Dateien

  4. #4
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 183 Danke für 168 Beiträge

    Standard

    Zitat Zitat von D. Albinus Beitrag anzeigen
    Hallo SPS-Fuchs,

    anbei eine AWL Quelle zum vergleichen von Datenbausteinen.
    Unter PLC-Sim funktioniert es in einem Zyklus.

    MfG
    Daniel
    Ich glaube nicht das SPS Fuchs es nicht gewußt hat wie man die einzelnen Werte vergleicht sondern er hat eher das Problem das es ziemlich viel Zeit braucht 5kb einzeln zu vergleichen und das jeden Zyklus!

    Ich glaube er brächte da eher eine Art Quersumme die er miteinander Vergleichen kann.
    Allerdings weiß er dann nicht ob nur die Summe gleich ist oder ob die einzelnen Werte auch gleich sind.

    Für was brauchst du das eigentlich?
    Genügt da nicht der Vorschlag von Jochen Kühner das du es auf mehrere Zyklen aufteilst?

    godi

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

    Standard

    Zitat Zitat von D. Albinus Beitrag anzeigen
    anbei eine AWL Quelle zum vergleichen von Datenbausteinen.
    Unter PLC-Sim funktioniert es in einem Zyklus.
    Deine AWL-Quelle stammt aus dieser FAQ von Siemens:

    Programmbeispiel Vergleich zweier beliebiger Datenbausteine

    Das Problem bei diesem Programmcode ist aber, das hier genauso mit einer Programmschleife gearbeitet wird, wie SPS-Fuchs es schon selber macht. Man bekommt also auch hier Probleme mit der Zykluszeit bei großen Datenmengen. Daher auch der Vorschlag, den Vergleich auf mehrere Programmzyklen zu verteilen.

    Gruß Kai

  6. #6
    SPS-Fuchs ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.04.2007
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von godi Beitrag anzeigen
    Ich glaube nicht das SPS Fuchs es nicht gewußt hat wie man die einzelnen Werte vergleicht sondern er hat eher das Problem das es ziemlich viel Zeit braucht 5kb einzeln zu vergleichen und das jeden Zyklus!

    Ich glaube er brächte da eher eine Art Quersumme die er miteinander Vergleichen kann.
    Allerdings weiß er dann nicht ob nur die Summe gleich ist oder ob die einzelnen Werte auch gleich sind.

    godi
    Genau das ist es. Ich will mir nicht die Zykluszeit unnötig verlängern, gibt es eine Möglichkeit anhand einer Quersumme oder Sonstiges einen DB zu vergleichen?

    zur Not könnte ich den Vergleich auch auf mehrere Zyklen verteilen.

    mfg SPS-Fuchs

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Ich würde den Vergleich über mehrere Zyklen verteilen.
    Dazu brauchst du 2 Variablen.

    1. Zeiger auf nächstes Datenpaket
    2. Loopvariable

    In einem Zyklus läßt du beispielsweise 100 Variablen vergleichen.

    Die Loopvariable zählt von 100 runter, du vergleichst damit die

    Datenwortnummer: Zeiger + 100 - Loop (Loop zählt immer rückwärts, sonst vergeleiht er auch rückwärts, was aber auch geht)

    Am Ende, wenn du nach 100 "Loops" die Schleife verläßt, erhöhst du den Zeiger um 100 und speicherst ihn wieder ab. Außerdem mußt du vergleichen ob der Zeiger das Ende des DB erreicht hat, dann setzt du ihn wieder auf 0.
    Prüf mal, ob die Loopvariable auf 99 oder 100 gesetzt werden muß, damit du 100 Durchläufe hast, ich weiß grad nicht, ob bei Null noch einmal der Code in der Schleife abgearbeitet wird.
    Es ist sinnvoll, eine Loopgröße zu wählen, die genau mit der Datenbausteingröße aufgeht.

    PS: Außerdem kann man DBD vergleichen, das sind 4 Byte.
    Also wären 50 Loops ganz gut, das macht 25 Durchläufe je 50 DBD (200 Byte) bei 5K Datenbaustein.
    Geändert von Ralle (20.09.2007 um 20:08 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #8
    Registriert seit
    28.10.2005
    Ort
    Ottweiler, Saar
    Beiträge
    940
    Danke
    259
    Erhielt 124 Danke für 109 Beiträge

    Standard

    Irgendwer (ein Programmteil etwa) ändert doch an einem der DB rum.
    Warum kann da nicht einfach ein "Geändert"-Bit gesetzt werden ?

  9. #9
    SPS-Fuchs ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    22.04.2007
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von argv_user Beitrag anzeigen
    Irgendwer (ein Programmteil etwa) ändert doch an einem der DB rum.
    Warum kann da nicht einfach ein "Geändert"-Bit gesetzt werden ?
    So einfach ist das nicht mit einem "Geändert-Bit" da ich eine 192-zeilige Tabelle habe und jede Zeile ist änderbar.

  10. #10
    Registriert seit
    06.10.2003
    Beiträge
    3.412
    Danke
    451
    Erhielt 506 Danke für 408 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Ralle Beitrag anzeigen
    Ich würde den Vergleich über mehrere Zyklen verteilen...
    Eine andere Möglichkeit sehe ich auch nicht. Man muss sich jedoch im Klaren sein dass dabei gewissermaßen eine Inkonsistenz entsteht! Je nach dem, was mit den Daten bei Änderung geschieht, könnte das von Bedeutung sein.

    Warum muss überhaupt eine Änderung erkannt werden? Wieviel Zykluszeit geht eigentlich bei 5kB in einer Schleife drauf (viel zu viel ist schon klar)? Hat das mal jemand probiert?


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. 3 Datenbausteine vergleichen ??
    Von Techniker1907 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 11.10.2011, 17:48
  2. UDTs miteinander vergleichen
    Von Freakazoid im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.03.2011, 10:08
  3. 3 Char miteinander vergleichen
    Von MK_Auto im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 13.11.2010, 09:42
  4. 2 Datenbausteine vergleichen
    Von Anaconda55 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 17.09.2008, 12:18
  5. S7-200+TD200+PC miteinander vernetzen
    Von Unreal im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.06.2005, 19:43

Lesezeichen

Berechtigungen

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