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

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

Thema: DB-Änderung melden

  1. #1
    ghost Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe folgendes Problem:
    ich möchte gerne einen alt-neu-Vergleich eines DB´s machen um somit festellen zu können, ob sich die Daten im DB geändert haben.Weiter wäre es nicht schlecht, wenn ich irgenwie ein Signal bekommen würde, welches ich zum Triggern der Send/Resive-Schnittstelle verwenden könnte, damit die Daten aus dem DB nicht zyklisch gesendet werden, sondern nur bei Datenänderung.
    Kann mir da einer einen Tip geben wie ich das realisieren kann???

    Danke schon mal
    Zitieren Zitieren Gelöst: DB-Änderung melden  

  2. "Soweit so gut. Die Strings werden angezeigt, allerdings erhalte ich immer nur die Anfangswerte, obwohl ich die Strings mit diesem Block in den DB speichere.

    CALL "BLKMOV"
    SRCBLK :=#s_datum
    RET_VAL:=MW8
    DSTBLK :="dfx_data".date1

    Das MW8 ist 0 d.h. es wird gemeldet das der String erfolgreich geschrieben wurde.

    "dfx_data".date1 ist ebenfalls ein String der im DB liegt. Warum sehe ich keine Aktualwerte bzw. werden keine Strings in den DB geschrieben?"


  3. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    dazu kannst du den fc10 aus iec nehmen.
    den datenbereich deiner dbs mit dem sfc20 in je eine temp-variable vom typ string kopieren. der fc10 vegleicht die nun auf =


    Code:
          CALL  SFC   20
           SRCBLK :=P#DB48.DBX0.0 BYTE 20
           RET_VAL:=MW40
           DSTBLK :=#st1
          NOP   0
    
          CALL  SFC   20
           SRCBLK :=P#DB49.DBX0.0 BYTE 20
           RET_VAL:=MW40
           DSTBLK :=#st2
          NOP   0
    
          CALL  FC    10
           S1     :=#st1
           S2     :=#st2
           RET_VAL:=M33.0
          NOP   0
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  4. #3
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Voraussetzung: In dem DB werden alle Werte als Null gespeichert (bei mir is das nen Fehler-DB, der bei eins nen Fehler am OP anzeigt dann).

    Von dem DB ne 1:1 kopie im gleichen Projekt machen. Bei mir immer DB 100 (FehlerDB) DB 101 (SpiegelDB).

    Um eine Änderung (also Fehler) festzustellen:

    Code:
          U     #NICHT_NULL
          R     #NICHT_NULL
    
          L     #START_ADR
          T     MW   200
          L     #ANZAHL
          +I    
          T     #LAENGE
    
    // SCHLEIFEN DURCHLAUF
    LOOP: NOP   0
          AUF   #QUELL_DB                   // WERT AUS QUELL_DB EINLESEN
          L     MB   201
          SLW   3
          LAR1  
          L     DBB [AR1,P#0.0]
          L     0                           // WERT MIT NULL VERGLEICHEN
          ==I   
          SPB   same
          UN    #NICHT_NULL                 //ERGEBNISBIT SETZEN
          S     #NICHT_NULL
          BEA   
    same: NOP   0
          L     MW   200
          INC   1
          T     MW   200
          L     #ANZAHL
          <=I   
          SPB   LOOP
    IN:
    QUELL_DB
    START_ADR
    ANZAHL
    OUT:
    NICHT_NULL // 1 bei min. einer Änderung
    TEMP:
    LAENGE

    Wenn du dann den Fehler oder die Änderung ausgewertet hast, musst du
    deinen Spiegel-DB wieder reseten:

    Code:
          L     #START_ADR
          T     MW   200
          L     #ANZAHL
          +I    
          T     #LAENGE
    
    // SCHLEIFEN DURCHLAUF
    LOOP&#58; NOP   0
          AUF   #QUELL_DB                   // WERT AUS QUELL_DB EINLESEN
          L     MB   201
          SLW   3
          LAR1  
          L     0
          T     DBB &#91;AR1,P#0.0&#93;
    
    
          NOP   0
          L     MW   200
          INC   1
          T     MW   200
          L     #ANZAHL
          <=I   
          SPB   LOOP
    IN:
    QUELL_DB
    START_ADR
    ANZAHL
    TEMP:
    LAENGE

    Gruß
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  5. #4
    ghost Gast

    Standard

    Danke!!!

    Hab es hinbekommen


    Gruß
    ghost

  6. #5
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Gibt es keine Möglichkeit Strings in DBs direkt zu beobachten?

    Ich möchte/muß die Werte sehen die im String stehen.

  7. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    meines wissens nein.
    nur in einer vat
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. #7
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Wie trage ich einen String in einer VAT ein? Mit DBxxx.xxx geht es nicht.

  9. #8
    ghost Gast

    Standard

    @CrazyCat:

    Du musst den DB, in dem du deinen String hast, in die VAT eintragen!

    Z.B. Hast du einen String als statische Variable mit der Startadresse 256.0 im FB6 / DB6 eingetragen, musst du anschließend diese Startadresse in deiner VAT eintragen


    VAT:

    Operand------------Symbole---------Anzeige--------Satuswert

    DB6.DBB 256----------s1-------------Zeichen
    DB6.DBB 257----------s2-------------Zeichen
    DB6.DBB 258----------s3-------------Zeichen
    . -------------------------------------------- .
    . -------------------------------------------- .
    . -------------------------------------------- .
    DB6.DBB 511---------s511------------Zeichen

    Die Anzeige auf "Zeichen" stellen und dann kannst du den String beobachten.

    Gruß
    ghost

  10. #9
    Anonymous Gast

    Standard

    Soweit so gut. Die Strings werden angezeigt, allerdings erhalte ich immer nur die Anfangswerte, obwohl ich die Strings mit diesem Block in den DB speichere.

    CALL "BLKMOV"
    SRCBLK :=#s_datum
    RET_VAL:=MW8
    DSTBLK :="dfx_data".date1

    Das MW8 ist 0 d.h. es wird gemeldet das der String erfolgreich geschrieben wurde.

    "dfx_data".date1 ist ebenfalls ein String der im DB liegt. Warum sehe ich keine Aktualwerte bzw. werden keine Strings in den DB geschrieben?

  11. #10
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    woher bekommst du #s_datum

    poste mal den code

    und wie sieht das ziel absolut adressiert aus?
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

Ähnliche Themen

  1. Batteriefehler bei S5 Melden
    Von 4nD1 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 05.07.2012, 14:41
  2. Jetter-Programmierer melden
    Von Drain im Forum Sonstige Steuerungen
    Antworten: 17
    Letzter Beitrag: 09.01.2011, 20:53
  3. Systemfehler melden
    Von snowbda im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 07.10.2008, 08:50
  4. Antworten: 15
    Letzter Beitrag: 09.12.2007, 14:21
  5. Antworten: 0
    Letzter Beitrag: 25.08.2007, 13:34

Lesezeichen

Berechtigungen

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