HPCL: Stoppuhr / Schaltdauer und .CT

Bugreports und Updatewünsche an die Firma contronics
Keine allgemeinen Fragen!

Moderator: Co-Administratoren

Antworten
Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

HPCL: Stoppuhr / Schaltdauer und .CT

Beitrag von Familienvater » 14.06.2013, 00:01

Moin,

ich mal wieder...

Bin gerade am Lesen der Anleitung zu HPCL und habe da einen Widerspruch entdeckt:
STOPPUHR(Zeitvariable)

Diese Funktion gibt die Zeitdauerdifferenz zwischen der aktuellen Uhrzeit und der in der Zeitvariablen hinterlegten Zeit im Format HH:MM:SS zurück. Es wird die reine Uhrzeitdifferenz ermittelt, Tage werden nicht berücksichtigt, d.h. als Ergebnis kann es keinen Wert grösser als 23:59:59 geben.
Das deckt sich nicht mit meiner Erfahrung, da stoppuhr(ZeitVariable) sehr wohl Zeiten größer als 24h liefern kann, allerdings nur sinnvoll/lesbar, wenn man das Ergebnis einer Zeichenkette zuweist, dann ist der maximale Wert "9999:99:99" (RICHTIG: da hat sich jemand mal Bümpis Wünschen angenommen und das ganze auf Neu-Minuten und Neu-Sekunden gebracht :-), aber wohl nur Überlauf-Fall)
Annahme: Evtl. ist der Wert bei der Zuweisung zu einer Zahl (0) nicht möglich, einer Zahl (0,0...) müsste aber gehen.

Nächstes Thema:
Hat SchaltDauer eine andere Wirkung als Stoppuhr(Objekt.CT)?

Hintergrund:
Nachdem das Aktor einschalten mit vorgegebener Laufzeit, und das Verlängern der Laufzeit bei bereits eingeschaltetem Aktor bei mir jetzt funktioniert, funktioniert meine Laufzeitsummierung der An-Zeiten des Aktors nicht mehr, weil bei jedem Verlängern (im eingeschalteten Zustand) das Objektmakro des Aktors (Ausführen bei Änderung!) auch ausgeführt wird, wenn die Einschaltdauer im eingeschalteten Zustand verlängert wird.

Und leider wird .CT des Aktors dabei ebenfalls geändert, wenn die Laufzeit verlängert wird, obwohl sich ja strenggenommen der Zustand des Aktors gar nicht ändert, er bleibt eingeschaltet.

Mein Code ist wie folgt:

Code: Alles auswählen

// dieses Makro wird alle 5 Minuten ausgeführt (300 Sekunden!)
// lngLaufzeit ist Zahl, Startwert 0 und wird im Makro bei jedem Aufruf berechnet und kann theoretisch auch über 300 Sekunden gehen

//...

wenn lngLaufzeit > 300 dann
  lngLaufzeit:=305 // Extra 5 Sekunden länger, damit der Aktor durchlaufen kann!
endewenn
wenn lngLaufzeit>0 dann
  setzewert(AktorName,"EINSCHALTDAUER",lngLaufzeit)
  // KEIN Sende(), KEIN setzewert(AktorName,"ZUSTAND",1)
  // Nur einschalten für Laufzeit funktioniert, damit sowohl der Timer im Aktor läuft, als auch die 'Selbstheilung' in HPCL
  AktorName einschalten für lngLaufzeit
endewenn
Also muss ich wohl mal wieder eine neue Variable für den Aktor selbst, der seinen letzten Status cached, und eine weitere mit dem selbst gepflegten Einschaltzeitpunkt pflegen, dann sollte auch wieder meine Laufzeitsummierung passen..

Der Familienvater

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: HPCL: Stoppuhr / Schaltdauer und .CT

Beitrag von buempi » 14.06.2013, 09:32

Familienvater hat geschrieben:Das deckt sich nicht mit meiner Erfahrung, da stoppuhr(ZeitVariable) sehr wohl Zeiten größer als 24h liefern kann, allerdings nur sinnvoll/lesbar, wenn man das Ergebnis einer Zeichenkette zuweist, dann ist der maximale Wert "9999:99:99"
... du vermutest richtig. Das ist der Überlauf-Fall. Wo der genau stattfindet, weiss ich nicht. Jedenfalls bis zu etwas mehr als einem Jahr geht's. Dann ist fertig, wie folgendes Makro zeigt:

Code: Alles auswählen

AlteZeit := Zeit - 86400
Anzeige  := Stoppuhr(AlteZeit)

warte("00:00:02")
AlteZeit := AlteZeit - 86400
Anzeige  := Stoppuhr(AlteZeit)

warte("00:00:02")
// 31363200 Sekunden = 363 Tage
AlteZeit := AlteZeit - 31363200
Anzeige  := Stoppuhr(AlteZeit)

warte("00:00:02")
AlteZeit := "14.06.2012 12:00:00"
Anzeige  := Stoppuhr(AlteZeit)

warte("00:00:02")
AlteZeit := "13.06.2012 12:00:00"
Anzeige  := Stoppuhr(AlteZeit)

warte("00:00:02")
AlteZeit := "01.01.2012 12:00:00"
Anzeige  := Stoppuhr(AlteZeit)
Familienvater hat geschrieben:Evtl. ist der Wert bei der Zuweisung zu einer Zahl (0) nicht möglich, einer Zahl (0,0...) müsste aber gehen.
... genau umgekehrt. Die Zahl muss ein Integer sein (0,0 geht nicht) und dann werden Sekunden zurückgegeben. Da gibt's auch keine Einschränkung, bzw. irgendwo viel weiter "hinten". Du kannst das einfach testen, indem du beim obigen Makro die letzte Jahrzahl auf 2000 abänderst und das Objekt "Anzeige" in den Typ Zahl umwandelst.
Familienvater hat geschrieben:weil bei jedem Verlängern (im eingeschalteten Zustand) das Objektmakro des Aktors (Ausführen bei Änderung!) auch ausgeführt wird, wenn die Einschaltdauer im eingeschalteten Zustand verlängert wird.
Familienvater hat geschrieben:Und leider wird .CT des Aktors dabei ebenfalls geändert, wenn die Laufzeit verlängert wird
... beides ist richtig: EINSCHALTEN FÜR im eingeschalteten Zustand des Aktors aktualisiert dessen CT-Variable und lässt dessen Makro "bei Änderung" ausführen, obwohl ja keine Änderung erfolgt ist!

Das ist ein eindeutiger Bug. Soll ich den Thread in die Bugs verschieben, oder willst du - der besseren Übersicht wegen - lieber dort einen Beitrag mit nur diesem Inhalt aufmachen?

Viele Grüsse
Bümpi

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: HPCL: Stoppuhr / Schaltdauer und .CT

Beitrag von Familienvater » 14.06.2013, 10:25

Moin,

ja, verschieb den Beitrag, obwohl ich beim ersten Thema hoffe, das da nur die Hilfe angepasst wird und die Funktion weiter so funktioniert...

Beim .CT habe ich jetzt mit wenig Aufwand drumrumprogrammiert, das kann aber gerne in Zukunft gefixt werden, wobei ich mir nicht sicher bin, ob das Verhalten eben nicht doch so gewollt ist.

Der Familienvater

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: HPCL: Stoppuhr / Schaltdauer und .CT

Beitrag von buempi » 14.06.2013, 10:32

Familienvater hat geschrieben:wobei ich mir nicht sicher bin, ob das Verhalten eben nicht doch so gewollt ist.
... dann müsste die Variable aber umgetauft werden :twisted:

Viele Grüsse
Bümpi

Antworten

Zurück zu „homeputer CL - Bugs & Updatewünsche“