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

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

Thema: 40Byte vergleichen

  1. #1
    Registriert seit
    17.09.2007
    Beiträge
    52
    Danke
    14
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute

    ich hab im Db1.dbd0-dbd16 eine Datenreihe und im DB1.dbd40-dbd56 eine Datenreihe. Nun würde ich gern diese zwei Reihen miteinander vergleichen ob sich irgenein Wert geändert hat und bei Änderung ein Bit kurz setzen.

    vielleicht hat ja jemand so etwas schon einmal verbrochen.

    Gruß skyvan
    Zitieren Zitieren 40Byte 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 skyvan,

    wenn Du eine Schleife über alle Bytes nimmst, in der Du die Bytes vergleichst sollte es gehen.

    Grüße
    Gebs

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

    Standard

    hi Gebs

    hast du vielleicht ein kurzes Bsp. für mich steh grad extrem auf dem Schlauch wie ich es machen soll.

    Danke dir schon einmal im voraus

    Gruß skyvan

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

    Beitrag

    Hallo,
    hier eine Möglichkeit.
    In diesem Beispiel brauchst Du 16 Programmzyklen bis du alles verglichen hast.

    Code:
          L     40
          T     #tmp_Offset
          L     16
          T     #tmp_MaxValues
     
          AUF   DB     3
          L     P#0.0
          L     MW    10
          ITD   
          DTR   
          +R    
          T     #tmp_1
          L     #tmp_Offset
          ITD   
          DTR   
          +R    
          T     #tmp_2
          L     DBB [#tmp_1]
          L     DBB [#tmp_2]
          <>I   
          S     M      0.0
          L     MW    10
          INC   1
          T     MW    10
          L     #tmp_MaxValues
          >I    
          SPBN  m001
          L     0
          T     MW    10
    m001: BE
    tmp_1 und tmp_2 als Real deklarieren.
    Mw10 der Zwischenspeicher für deinen Counter.

    mfg Erick
    Zitieren Zitieren Beispiel  

  5. #5
    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

    Zitat Zitat von erick_wick Beitrag anzeigen
    Hallo,
    hier eine Möglichkeit.
    In diesem Beispiel brauchst Du 16 Programmzyklen bis du alles verglichen hast.

    Code:
          L     40
          T     #tmp_Offset
          L     16
          T     #tmp_MaxValues
     
          AUF   DB     3
          L     P#0.0
          L     MW    10
          ITD   
          DTR   
          +R    
          T     #tmp_1
          L     #tmp_Offset
          ITD   
          DTR   
          +R    
          T     #tmp_2
          L     DBB [#tmp_1]
          L     DBB [#tmp_2]
          <>I   
          S     M      0.0
          L     MW    10
          INC   1
          T     MW    10
          L     #tmp_MaxValues
          >I    
          SPBN  m001
          L     0
          T     MW    10
    m001: BE
    tmp_1 und tmp_2 als Real deklarieren.
    Mw10 der Zwischenspeicher für deinen Counter.

    mfg Erick
    Das geht wirklich mit Real als Pointer und Realarithmetik?
    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

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

    Beitrag

    Habe es getestet und es Funktioniert.
    Es gibt sicher andere Möglichkeiten auch.

    mfg Erick

  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

    Zitat Zitat von erick_wick Beitrag anzeigen
    Habe es getestet und es Funktioniert.
    Es gibt sicher andere Möglichkeiten auch.

    mfg Erick
    Das muß ich mir mal ansehen. Machst du das immer so?
    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
    06.09.2008
    Beiträge
    45
    Danke
    8
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Du machst mich unsicher.
    Ich teste es nochmals durch.

    mfg

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

    Standard

    Ich würde es etwas anders lösen, weil ich den Vergleich in einem Zyklus haben wollte.

    Code:
    // Adressregister retten
    TAR1 #Save_AR1
    
    // Schleife und AR1 initialisieren
    
    L P#0.0
    LAR1
    
    L 4
    WEIT:T #LoopCounter
    
    // Werte vergleichen und bei Unterschied Bit setzen
    L DBD [AR1,P#0.0]
    L DBD [AR1,P#40.0]
    <>D
    S M 0.0
    SPB ENDE
    
    // Adressregister erhöhen
    +AR1 P#4.0
    
    L #LoopCounter
    LOOP WEIT
    
    ENDE: NOP 0
    
    // AR1 wieder herstellen
    LAR1 #Save_AR1
    Grüße
    Gebs
    Geändert von Gebs (30.09.2009 um 11:57 Uhr)

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

    drmicha (30.09.2009)

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    zum Thema Pointer:
    Die Real-Arithmetik steht im direkten Widerspruch zu dem Pointer-Aufbau.
    Ich kann mir beim besten Willen nicht vorstellen, dass dass funktioniert.

    Zur Realisierung an sich würde ich auch etwas auf der Basis der Vorschlags von Gebs hernehmen. Vor Allem hier auch mit DWORD-Vergleichen arbeiten - das spart Durchläufe (und damit Zeit) ...

    Gruß
    LL

Ä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
  •