Problem mit Laufzeiten berechnen und ausgeben

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
Breddo
Beiträge: 40
Registriert: 04.02.2008, 22:33

Problem mit Laufzeiten berechnen und ausgeben

Beitrag von Breddo » 29.09.2009, 23:36

Hallo Leute,
ich komme bei einer Makroprogrammierung nicht weiter. Ich steuere meine „Elektrofußbodenspeicherheizung“ (schönes Wort) mit Hutschienenschalter.

Ich möchte nun die Gesamtlaufzeit pro Heizkreislauf und Tag mit der Höchst- und Tiefstemperatur ermitteln. Dieser Werte sollen bei Tageswechsel mit Datum in eine Datei geschrieben werden und die letzen 14 Tage in einem Anzeigefenster dargestellt werden.

Das mit den Höchst- und Tiefstwerten war kein Problem, aber das mit den Laufzeiten bekomme ich nicht rund. Kann mir da jemand helfen?

Danke
Breddo

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

Re: Problem mit Laufzeiten berechnen und ausgeben

Beitrag von buempi » 30.09.2009, 06:44

Hallo Breddo

Erst kürzlich habe ich in Homeputer CL (HomeMatic) ein Beispiel für einen Betriebsstundenzähler gemacht - in verschiedenen Varianten; mit Laufzeit aktueller und letzter Tag und sogar mit sekündlich mitlaufendem Zähler: http://homematic-forum.de/forum/viewtop ... 7&start=10

Ich denke, dass das ziemlich genau deine Bedürfnisse abdeckt. Wenn du den "laufenden Zähler" übernehmen willst, musst du unbedingt bis zum Schluss lesen. Zwischendurch ist ein kleiner Fehler drin, der dann weiter hinten korrigiert wird.

Viele Grüsse
Bümpi

PS: In Homeputer für die FHZ solltest du die Laufzeit-Variablen bei jedem "Aktor AUS" oder spätestens im *END-Makro sichern und im *INIT-Makro wieder laden. - Bei Homeputer CL geht das noch nicht, weshalb es in jenen Makors fehlt.

Breddo
Beiträge: 40
Registriert: 04.02.2008, 22:33

Re: Problem mit Laufzeiten berechnen und ausgeben

Beitrag von Breddo » 30.09.2009, 12:10

Hallo Bümpi,

vielen Dank für die prompte Antwort. Ich habe deine Programmierung gefunden. Ist ja ziemlich umfangreich. Ich werde mich da einlesen und ausprobieren.

Bei deinem Hinweis zu dem *END und *INIT Makro habe ich wieder eine Frage. Wenn ich die genannten Textzeilen sichere kommt beim Neustart die Meldung: "Zeitüberschreitung im Makro *INIT". Irgendwo habe ich mal gelesen das die Zeichenlänge begrenzt ist. Stimmt das?

Viele Grüße
Breddo

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

Re: Problem mit Laufzeiten berechnen und ausgeben

Beitrag von buempi » 30.09.2009, 12:39

Hallo Breddo

Es stimmt, die maximale Anzahl Zeichen, die gesichert werden kann, beträgt 64. Das führt aber niemals zu einer Zeitüberschreitung; schon gar nicht beim Laden im *INIT-Makro. Beim Sichern wird einfach abgeschnitten und beim Laden weiss Homeputer nicht mehr, wie lange die Zeichen-Variable früher mal war, sodass es beim "Suchen der verlorenen Zeichen" irgendwie in einen Loop geraten könnte.

Da müsste ein anderes Problem vorliegen. Vielleicht eine verstümmelte SAVEVAL.CSY (in diese Datei werden alle Objekte und Variablen, die du sicherst, geschrieben). Wenn das wieder auftritt, poste doch mal dein *INIT-Makro und die SAVEVAL.CSY (bevor du Homeputer wieder beendest!).

Der Befehl für das Sichern lautet:

Code: Alles auswählen

** Für Objekte
sichern("NameDesObjektes")
** Für Variablen
sichern("NameDesObjektes.Variable")
Beim Laden dann einfach "laden" statt "sichern". Man kann auch mehrere Objekte/Variablen in einer Zeile sichern/laden. Ich finde es aber übersichtlicher, separate Zeilen zu machen.

Du kannst auch

Code: Alles auswählen

sichern("*ALLV")
(bzw. Laden) verwenden. Dann wird einfach ALLES gesichert und geladen (sogar die Uhr!). Ist sehr bequem; nützt aber bei einem Stromausfall oder Rechnerabsturz nichts.

Ich verwende *ALLV nie. Bei mir werden die für den Programmstart nötigen Sensoren, Aktoren und Variablen jedes Mal sofort gesichert, wenn sich deren Zustand/Wert ändert. Beim Start werden dann auch nur diese geladen und zwar in der Reihenfolge, dich ich so selbst bestimmen kann. Alle Aktoren kriegen dann noch zwei bis drei SENDEWERT(), damit auch nach einem kurzen Stromausfall der alte Zustand weitmöglichst wieder hergestellt ist. Gleichzeitig schreibe ich auch regelmässig eine Zeitvariable. Ist beim Programmstart mehr als eine halbe Stunde vergangen, werden nur meine virtuellen Schalter (z.B. Heizung Sommer-/Winterbetrieb und Anzeige-Objekte) geladen. Der Rest ist historisch; die Schaltungen müssen sich dann aus den eintreffenden Meldungen der Sensoren neu ergeben.

Viele Grüsse
Bümpi

Breddo
Beiträge: 40
Registriert: 04.02.2008, 22:33

Re: Problem mit Laufzeiten berechnen und ausgeben

Beitrag von Breddo » 01.10.2009, 10:21

Hallo Bümpi,

ich sichere nur mit ("*ALL"), also nicht all Variablen pauschal. Die Variablen, die ich laden möchte sichere ich genauso, wie du es beschrieben hast. Die Fehlermeldung tritt sporadisch auf, und nur, wenn ich die Zeichenketten laden will. Wenn das wieder auftritt, poste ich dir die Sachen mal zu.

Sobald ich das Makro mit den "Betriebsstundenzähler" hinbekommen habe, spreche ich dich nochmal auf deine Sicherungsroutinen an.

Viele Grüße
Breddo

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“