Time in DB ändern

Simon B.

Level-1
Beiträge
5
Reaktionspunkte
0
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];
 
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;            [COLOR="Red"]// DB 86 wird geöffnet[/COLOR]
      L     DB82.DBD   10;       [COLOR="Red"]// DB 82 wird geöffnet[/COLOR]
      T     DBD [AR1,P#0.0];     [COLOR="Red"]// es wird auf den geöffneten DB 82 geschrieben[/COLOR]

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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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ß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
Zurück
Oben