Datum und Uhrzeit der CPU am TP177A ausgeben.

Tigerkroete

Level-1
Beiträge
245
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe wirklich so ziemlich alle Beiträge durchgeforstet und auch viele hilfreiche Dinge gefunden, aber ich verstehe alles leider nur halb und kriege es nicht hin.

Ich haben eine S7-315-2DP und möchte, dass die Zeit der CPU am TP-177A augegeben wird. Ich habe schon gelesen, dass ich vielleicht mit SFCs mir die Teilbereiche auslesen muss, doch da fängt es schon an, da ich nicht weiß, was nun genau in den SFC reinmuss und was rauskommt.

Wer kann es mir für Dumme oder besser für kleine Tigerkroeten erklären?

Viele Grüße,
Tigerkroete
 
benutze sfc1 zum lesen der zeit. am ausgang cdt eine temp-variable vom typ date_and_time (8byte) anlegen.

diese variable mit sfc20 in einen datenbereich eines db schieben.
oder über die lokaldaten als 2 dword

in flex ein datumuhrzeitfeld anlegen. variable verwenden typ date and time. anfangsadresse der variablen auf das datenfeld setzen wo du die im db abgelegt hast.

EDIT: code eingefügt
Code:
      CALL  SFC    1
       RET_VAL:=MW200
       CDT    :=#datetime
      NOP   0
      CALL  SFC   20
       SRCBLK :=#datetime
       RET_VAL:=MW200
       DSTBLK :=P#DB10.DBX 10.0 BYTE 8
      NOP   0
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun, du erstellst dir einen DB mit einem Eintrag des Formats "DATE-AND-TIME"

Anschließend liest du mit der Funktion READ_CLK (ist irgendwo in der Bibliothek zu finden, wo genau weiß ich nicht" im OB1 die Zeit von der CPU.

Diese kannst du in den zuvor angelegten DB speichern.

Anschließend am Panel ein Ausgabefeld anlegen und die Anzeige auf Datum und Uhrzeit stellen.
 
im ob1 liegt die zeit schon im tempbereich

dort reicht es einen blockmove zu machen
im ob1

CALL SFC 20
SRCBLK :=#OB1_DATE_TIME
RET_VAL:=MW200
DSTBLK :=P#DB10.DBX 10.0 BYTE 8
 
Auch wieder wahr.

Funktioniert aber auch mit READ_CLK.

Ist reine Geschmackssache, wenn man den SFC20 sowieso schon im Programm verwendet kann man sich einen SFC sparen.
 
Erstmal 1000 Dank, es funktioniert. Leider habe ich noch nicht so ganz die Funktion des MW200 verstanden.
Die anderen Sachen verstehe ich so, dass der SFC1-Aufruf am Ausgang CDT mein Datum und meine Uhrzeit ablegt, also in meine temporäre Variable. Diese muss nun in meinem DB abgespeichert werden, wozu ich den SFC20 benötige.
Aber wozu ist nun der MW200? Und ist es ein besonderes, vordefiniertes Merkerwort oder könnte ich auch ein x-beliebiges nehmen?

Nochmal vielen Dank,
Tigerkroete
 
Ret_val

Tigerkroete schrieb:
Aber wozu ist nun der MW200? Und ist es ein besonderes, vordefiniertes Merkerwort oder könnte ich auch ein x-beliebiges nehmen?
@Tigerkroete,
MW200 ist frei fabuliert und kann durch alles ersetzt werden, was das richtige Format hat, also auch durch eine eigene Temp-Variable. Gebraucht wird es nur zur Fehleranalyse, und Fehler machen wir sowieso niemals.
 
volker schrieb:
??
den scf20 braucht man sowieso.

am sfc1 kann man keinen pointer anlegen

Man kann keinen Pointer, aber mit Symbolischer Adressierung funktioniert es.
Wenn der DB10 z.B. das Symbol "Uhr" hat und das DATE_AND_TIME Feld "Aktuell" heisst, dann funktioniert das Ganze auch so.

CALL SFC 1
RET_VAL:=MW200
CDT :="Uhr".Aktuell
 
carstenh schrieb:
Man kann keinen Pointer, aber mit Symbolischer Adressierung funktioniert es.
Wenn der DB10 z.B. das Symbol "Uhr" hat und das DATE_AND_TIME Feld "Aktuell" heisst, dann funktioniert das Ganze auch so.

CALL SFC 1
RET_VAL:=MW200
CDT :="Uhr".Aktuell

Stimmt,
aber ich glaube, dass geht mit älteren S7 - Versionen (Vor 5.1 oder so) nicht...
 
Zurück
Oben