Programmieren mit Variablen

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Kellomein
Beiträge: 101
Registriert: 11.08.2009, 19:03

Re: Programmieren mit Variablen

Beitrag von Kellomein » 11.09.2009, 20:07

Hallo Bümpi
Ich möchte mich mal wieder zu dem leidigen Thema melden. Erstmal wie immer vielen DANK. Also ich denke ich habe das ja denn alles einigermaßen richtig vertsanden , wollte es ja auch nur noch mit meinen gedankengängen zu papier bringen :lol:
Allerdings eine Sache möchte ich nochmal verinnerlichen , für mich so und zwar betrifft es folgene Zeilen nochmal:

wenn Uhrzeit = "00:00:00" dann
wenn Aktor eingeschaltet dann
// 24:00:00 geht nicht!
Laufzeit := Laufzeit + "23:59:59" - Startzeit + "00:00:01"
endewenn
LaufzeitGestern := Laufzeit
LaufzeitHeute := "00:00:00"
Laufzeit := "00:00:00"
Startzeit := "00:00:00"
endewenn

Ich weis nicht ob da richtig bin? sehe ich das richtig das der zweite wenn-Block wenn Aktor eingeschaltet dann Laufzeit..... nur ausgeführt wird wenn der Aktor auch eingeschaltet ist?
Und wenn er nicht eingeschaltet wird , wird dann der zweite wenn Block gar nicht ausgeführt.
Würde bedeuten das das Makro aber den ersten wenn Block durcharbeitet. Also könnte man eine wenn Bedingung in ein wenn Makro laufen lassen , welche aber nicht ausgeführt , wenn sie nicht erfüllt wird aber der rest läuft trotzdem weiter !?
Ich hoffe ich habe das verständlich rübergebracht , jeder denk ja anders.

Also bis dann

Gruss Jörg

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

Re: Programmieren mit Variablen

Beitrag von buempi » 11.09.2009, 20:38

Hallo Jörg

Ich glaube, du hast es richtig verstanden: Ein WENN und das ENDEWENN "auf gleicher Ebene" gehören immer zusammen. Falls das, was in einer WENN-Bedingung steht, zutrifft, wird alles bis zum zugehörenden ENDEWENN ausgeführt. Um das für sich und andere verständlich zu machen, macht man auch diese Einrückungen. Trifft das WENN nicht zu, springt das Makro bei der Ausführung sofort zum ENDEWENN, welches auch gleicher Höhe steht und führt die Zeile nach diesem ENDEWENN aus.

Mehrere solche WENN-Bedingungen, die selber wieder innerhalb einer WENN-Bedingung stehen, nennt man deshalb auch "verschachtelt". Steht auf dem Deckel einer Schachtel "Du darfst sie öffnen", wird sie geöffnet und der Inhalt angeschaut. Ist da wieder einer Schachtel drin, auf der steht "Du darfst sie nicht öffnen", wird sie geschlossen beiseite gelegt (selbst wenn da nochmals eine oder mehrere Schachteln drin sein sollten) und geschaut, was darunter liegt. Vielleicht wieder einer Schachtel, oder irgend eine "Überraschung" = Anweisung, die man dann an sich nimmt bzw. ausführt...

Das WENN ist der Deckel, das ENDEWENN der Boden der Schachtel. Das ganze kann geschichtet sein. Zuerst ein paar Anweisungen, dann eine Schachtel, wieder ein paar Anweisungen und dann der Schachtelboden. Die Anweisungen vor und nach der inneren Schachtel werden ausgeführt. Das was in der inneren Schachtel drin ist, nur, wenn auf dem Deckel steht "Du darfst sie öffnen".

Viele Grüsse
Bümpi

PS: In Homeputer für die FHZ hat übrigens Thomas mal festgestellt, dass die Verschachtelungstiefe maximal 19 verschachtelte WENN beträgt: http://homematic-forum.de/forum/viewtop ... f=2&t=1258

Ob diese Begrenzung immer noch und auch für Homeputer CL zutrifft, weiss ich nicht. Ist auch nicht von Bedeutung, weil eine derartige Konstruktion von einem Normalsterblichen eh nicht mehr nachvollzogen werden kann...

Antworten

Zurück zu „homeputer CL“