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

Ergebnis 1 bis 9 von 9

Thema: Time in DB ändern

  1. #1
    Registriert seit
    01.12.2009
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Ich arbeite mit WinCC flexible 2008, Step7 5.4 und einer 315 CPU.

    Ich möchte Laufzeiten von mehreren Plätzen zur Laufzeitüberwachung in einen DB schreiben. Die neue Zeit ist vom Typ Time und wird von einem E/A Feld abgefragt. Ein zweites E/A Feld fragt die Nummer des Platzes (Int) ab.
    Die neue Zeit soll an der richtigen Stelle in den DB geschrieben werden, wo 120 Variablen vom Typ Time abgelegt sind. Jeder Platz hat also seine eigene Laufzeit

    Mein Problem ist, dass der neu eingetragene Zeitwert nicht in den DB geschrieben wird. Es bleint immer der Anfangswert im DBD stehen.
    Für Hilfe bin ich sehr dankbar.

    Code:
    VAR
      Platz_Nr : INT ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          L     DB82.DBW    8;  // Nummer des Platzes vom E/A Feld
          L     4;                  
          *I    ; 
          T     #Platz_Nr; 
          NOP   0; 
    NETWORK
    TITLE =
    
    
          LAR1  P##Platz_Nr; 
          AUF   DB    86; 
          L     DB82.DBD   10;   //Zeitwert vom E/A Feld
          T     DBD [AR1,P#0.0];
    Zitieren Zitieren Time in DB ändern  

  2. #2
    Registriert seit
    27.03.2007
    Beiträge
    59
    Danke
    28
    Erhielt 34 Danke für 28 Beiträge

    Standard

    Hallo Simon,

    du hast im zweiten Netzwerk den falschen DB offen. Du musst die Zeile mit "AUF DB86" direkt vor den Transferieren-Befehl schreiben.

    Code:
     
    NETWORK
    TITLE =
    
    
          LAR1  P##Platz_Nr; 
          AUF   DB    86;            // DB 86 wird geöffnet
          L     DB82.DBD   10;       // DB 82 wird geöffnet
          T     DBD [AR1,P#0.0];     // es wird auf den geöffneten DB 82 geschrieben
    Code:
    NETWORK
    TITLE =
    
          LAR1  P##Platz_Nr; 
          L     DB82.DBD   10;   //Zeitwert vom E/A Feld
          AUF   DB    86; 
          T     DBD [AR1,P#0.0];
    Gruß puzzlefreak

  3. Folgender Benutzer sagt Danke zu puzzlefreak für den nützlichen Beitrag:

    Simon B. (28.12.2009)

  4. #3
    Simon B. ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.12.2009
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke, das schreiben in den DB funktioniert jetzt. Aber er schreibt jetzt immer in das 1. Doppelwort im DB und nicht an die Adresse wo ich im AR1 stehen habe. Hab nicht so viel Erfahrung mit indirekter Adressierung

  5. #4
    Registriert seit
    27.03.2007
    Beiträge
    59
    Danke
    28
    Erhielt 34 Danke für 28 Beiträge

    Standard

    Hi Simon,

    was hast du denn in deinem

    Code:
    L     DB82.DBW    8;  // Nummer des Platzes vom E/A Feld
    drinstehen?

    Gruß puzzlefreak

  6. #5
    Simon B. ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.12.2009
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    der Wert ist Variabel und kommt vom E/A Feld. Im Moment hab ich 4 eingetragen also muss am Ende an die Adresse 16 vom DB 86 geschrieben werden, was aber nicht passiert es wird immer an Adresse 0 geschrieben.

    Gruß

  7. #6
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Code:
          L     DB82.DBW    8;  // Nummer des Platzes vom E/A Feld
          L     4;                  
          *I    ; 
          SLW3    // Fürs Pointerformat
          T     #Platz_Nr;
    dann sollte es funktionieren
    Geändert von Gerhard K (28.12.2009 um 13:47 Uhr)
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  8. #7
    Simon B. ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.12.2009
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sorry versteh ich nicht, wieso hochzählen??

  9. #8
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    hab ich schon geändert.du mußt deine Platznummer fürs pointerformat aufbereiten mit SLW 3
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

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

    Simon B. (28.12.2009)

  11. #9
    Simon B. ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.12.2009
    Beiträge
    5
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Top, Danke
    Habs jetzt umgeschrieben, so funktionierts:

    Code:
          L     DB82.DBW    8
          L     4
          *I    
          SLW   3
          LAR1  
          L     DB82.DBD   10
          AUF   DB    86
          T     DBD [AR1,P#0.0]

Ähnliche Themen

  1. TIME Variable über Twincat Visualisierung/ HMI ändern
    Von Debugger im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 19.11.2010, 13:53
  2. Umwandler für TIME/S5-TIME
    Von Andy_Scheck im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 19.10.2009, 22:56
  3. INT zu TIME?
    Von Codesys_123 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 27.05.2009, 07:12
  4. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50
  5. Time of Day
    Von enter im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.09.2007, 20:27

Lesezeichen

Berechtigungen

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