Zeitdauer SPS abschalten

Wie kann man den Zeitdauer des abschaltens der SPS bestimmen?
Kann mir jemanden helfen

Hallo,

ich würde während des Betriebes die Uhrzeit z.B. jede Sekunde in einen DB schreiben -> Uhrzeit des Abschaltens ist gesichert.

Beim Einschalten wird mittels des Anlauf-OB 100 die Uhrzeit beim "Wiedereinschalten" ermittelt -> Die Differenz zwischen Abschaltzeit und "Wiedereinschaltzeit" ist die "Zeitdauer des Abschaltens".

MfG

Koslovski
 
Abschaltjahr mit Wiedereinschaltjahr vergleichen -> Anzahl Jahre
Abschaltmonat mit Wiedereinschaltmonat vergleichen -> Anzahl Monate
Abschalttag mit Wiedereinschalttag vergleichen -> Anzahl Tage
Abschaltstunde mit Wiedereinschaltstunde vergleichen -> Anzahl Stunden
Abschaltminute mit Wiedereinschaltminute vergleichen -> Anzahl Minuten
Abschaltsekunde mit Wiedereinschaltsekunde vergleichen -> Anzahl Sekunden

=> Alles Zusammmenfügen => Abschaltdauer :ROFLMAO:

Einen fertig programmierten Baustein dafür habe ich aber nicht, vielleicht gibt es ja sogar eine fertige Funktion für die Bildung einer Zeitdifferenz.

MfG
Koslovski
 
Mit dem SFC1 holst du die Zeit im DT-Format (8 Byte).
Mit dem FC34 der IEC-Functions aus der Standard-Library kannst du DT-Variablen voneinander abziehen, Ergebnis ist die Differenz im Format Time.
 
Zieh bitte zuerst die Hilfe von Step7 zu rate.

Für den SFC1 ist ein Beispiel dabei, zum FC34 gibt es nichts weiter zu sagen.

Vorgehen:
Bau dir einen DB mit 3 Werten.
1. SPS_LAST Format DT
2. SPS_START Format DT
3. Zeitdifferenz Format TIME

In jedem Zyklus oder zum Zykluszeit sparen auch über einen Timer jede Sekunde (oder im OB35) rufst du SFC1

CDT ist der Output vom SFC1 und wird mit SPS_LAST belegt.

Bei einem Neustart der SPS wird OB 100 einmalig durchlaufen.
Darin 1 mal SFC1 aufrufen, Ergebnis in SPS_START und FC34
DT1 SPS_START
DT2 SPS_LAST

RET_VAL belegst du mit Zeitdifferenz, die steht dann darin, fertig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In jedem Zyklus oder zum Zykluszeit sparen auch über einen Timer jede Sekunde (oder im OB35) rufst du SFC1

Warum SFC1 aufrufen?

Man kann ja direkt die Startzeit des OB1 nehmen und in einem DB speichern. Dann erspart man sich den SFC1.
Die Wiederanlaufzeiten kannst du ebenfalls aus den Lokaldaten der OB 100, OB 101 und OB 102 (je nach CPU) auslesen.

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du mußt in KOP/FUP/AWL-Editor unter "Extras/Einstellungen/KOP-FUP" die Typüberprüfung abschalten, wenn du das in KOP oder FUP programmieren willst.

Bitte beachten, Time ist ein DWord, Int ein Word, also ist es besser Time mit DInt zu vergleichen.

L #Zeit (Time)
L #Wert (DInt)
>= D
= M 0.0
 
Du mußt in KOP/FUP/AWL-Editor unter "Extras/Einstellungen/KOP-FUP" die Typüberprüfung abschalten, wenn du das in KOP oder FUP programmieren willst.
...

Alternativ zur Abschalten der Typprüfung könntest Du auch ein Typecast machen oder für den Vergleich die INT Variable mittels MOVE in eine DINT Tempvariable schieben.
 
Zurück
Oben