Nachfolgende Beispiele eignen sich für die aktuelle Betriebssystemversion 1.5 und vorhergehende. Bei Betriebssystem 1.5 kann die Einschaltzeit als Zeichenkette dargestellt werden, was bei vorhergehenden Betriebssystemen noch nicht möglich ist. Der Unterschied besteht in der Darstellung der Einschaltzeit und ist nicht relevant für die Betriebsstundenzählung.
Inhalt:
1. Version für Betriebssystem 1.5
1.1 Systemvariable
1.2 Basisprogramm
1.3 Erweiterung zur Aktualisierung der Betriebsstunden in 'Echtzeit'
2. Version für vorhergehende Betriebssysteme
2.1 Systemvariable
2.2 Basisprogramm
2.3 Erweiterung zur Aktualisierung der Betriebsstunden in 'Echtzeit'
3. Reset des Betriebsstundenzählers
1. Darstellung mit Betriebssystemversion 1.5 und Zeichenketten 1.1 Systemvariable erstellen 1.2 Programm erstellen 1.2.1 Script Wenn dann ..
Code: Alles auswählen
var EinZeit= dom.GetObject("BZ_02_Einschaltzeit");
EinZeit.State(system.Date("%F %T")); !Speichern der Einschaltzeit
Code: Alles auswählen
!Die Systemvariablen einbinden
var EinZeit= dom.GetObject("BZ_02_Einschaltzeit");
var KumZeit= dom.GetObject("BZ_02_Betriebsstunden");
! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
time t = EinZeit.Variable().ToTime();
! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();
! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
var x = t.ToInteger();
! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
var x1 = t1.ToInteger();
!Die Differnz ist die Einschaltdauer in Stunden umgerechnet
var x0 = 0.01*(x1-x)/36;
! Die Einschaltdauer kumulieren = Betriebsstunden
var kumuliert = x0 + KumZeit.Variable();
!Die Betriebsstunden in die Systemvariable einstellen
KumZeit.State (kumuliert);
1.3 Zusätzliches Timerprogramm um die Betriebsstunden regelmäßig zu aktualisieren 1.3.1 Script Wenn Bedingung erfüllt
Code: Alles auswählen
!Die Systemvariablen einbinden
var EinZeit= dom.GetObject("BZ_02_Einschaltzeit");
var KumZeit= dom.GetObject("BZ_02_Betriebsstunden");
! Den Einschaltzeit String aus der Systemvariablen in ein Zeitobjekt umwandeln
time t = EinZeit.Variable().ToTime();
! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();
! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
var x = t.ToInteger();
! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
var x1 = t1.ToInteger();
!Die Differnz ist die Einschaltdauer in Stunden umgerechnet
var x0 = 0.01*(x1-x)/36;
! Die Einschaltdauer kumulieren = Betriebsstunden
var kumuliert = x0 + KumZeit.Variable();
!Die Betriebsstunden in die Systemvariable einstellen
KumZeit.State (kumuliert);
EinZeit.State(system.Date("%F %T")); !Speichern der simulierten Einschaltzeit
Code: Alles auswählen
var EinZeit= dom.GetObject("BZ_03_Einschaltzeit");
time t = system.Date("%F %T").ToTime();
! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
EinZeit.State (t.ToInteger());
Code: Alles auswählen
!Die Systemvariablen einbinden
var EinZeit= dom.GetObject("BZ_03_Einschaltzeit");
var KumZeit= dom.GetObject("BZ_03_Betriebsstunden");
! Das Einschaltzeit in Sekunden seit 1.1.1970 aus der Systemvariablen einlesen
var x = EinZeit.Variable().ToInteger();
! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();
! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
var x1 = t1.ToInteger();
!Die Differnz ist die Einschaltdauer in Stunden umgerechnet
var x0 = 0.01*(x1-x)/36;
! Die Einschaltdauer kumulieren = Betriebsstunden
var kumuliert = x0 + KumZeit.Variable();
!Die Betriebsstunden in die Systemvariable einstellen
KumZeit.State (kumuliert);
2.3 Zusätzliches Timerprogramm um die Betriebsstunden regelmäßig zu aktualisieren 2.3.1 Script Wenn Bedingung erfüllt:
Code: Alles auswählen
!Die Systemvariablen einbinden
var EinZeit= dom.GetObject("BZ_03_Einschaltzeit");
var KumZeit= dom.GetObject("BZ_03_Betriebsstunden");
! Das Einschaltzeit in Sekunden seit 1.1.1970 aus der Systemvariablen einlesen
var x = EinZeit.Variable().ToInteger();
! Die aktuelle (Ausschalt)Zeit String erzeugen und in ein Zeitobjekt umwandeln
time t1 = system.Date("%F %T").ToTime();
! Das Zeitobjekt aktuelle Zeit in Sekunden seit 1.1.1970 umwandeln
var x1 = t1.ToInteger();
!Die Differnz ist die Einschaltdauer in Stunden umgerechnet
var x0 = 0.01*(x1-x)/36;
! Die Einschaltdauer kumulieren = Betriebsstunden
var kumuliert = x0 + KumZeit.Variable();
!Die Betriebsstunden in die Systemvariable einstellen
KumZeit.State (kumuliert);
!Neue Einschaltzeit
time t = system.Date("%F %T").ToTime();
! Das Zeitobjekt Einschaltzeit in Sekunden seit 1.1.1970 umwandeln
EinZeit.State (t.ToInteger());
Hier wird am Beispiel BZ_03 gezeigt, wie der Betriebsstundenzähler zurückgesetzt werden kann:
3.1 Abbildung in den Favoriten 3.2 Das dahinter liegende Programm sieht wie folgt aus: Das Programm hat keine WENN-Bedingung und wird deshalb beim Neustart der CCU einmal ausgeführt!
Der Zähler ist gelöscht. Andererseits sind die Zählerstände beim reboot sowieso weg, also was solls....