UE1 im Stundentakt

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

Moderator: Co-Administratoren

fiffi
Beiträge: 25
Registriert: 27.12.2009, 22:27

UE1 im Stundentakt

Beitrag von fiffi » 01.11.2010, 20:03

Moin liebe Fs20 Fans.
Ich möchte ein UE1 so programmieren das es mit der Uhrzeit jede volle Stunde taktet.
Das heißt zum Beispiel:
5:00 Uhr = 5 X takten eine Sekunde lang mit zwei Sekunden Abstand.
20:00 Uhr = 20 X takten eine Sekunde lang mit zwei Sekunden Abstand.
Praktisch wie eine Kirchturmuhr.
Kann mir einer helfen ?

Gruß
Rainer

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

Re: UE1 im Stundentakt

Beitrag von buempi » 01.11.2010, 20:59

Hallo Rainer

Das hast du doch da schon gefragt: http://homematic-forum.de/forum/viewtop ... =17&t=3997 . Gab's da Probleme?

Viele Grüsse
Bümpi

fiffi
Beiträge: 25
Registriert: 27.12.2009, 22:27

Re: UE1 im Stundentakt

Beitrag von fiffi » 01.11.2010, 21:28

Jo, das stimmt.
Das Makro ist aber für drei UE1 geschrieben.
Ich wollte nur eins verwenden.
Das wäre dann das Makro des dritten UE1.
Oder?
Wie gesagt benötige ich nur die Simulation einer Kirchenuhr.
Über das Relais schalte ich einen Laser an.
Der mir jede volle Stunde die Uhrzeit anzeigt.
Einen Gong könnte ich über das Soundmodul anschalten.
Der Laser arbeitet über das Dämmerungsmodul nur bei Dunkelheit.
Habe es letztes Jahr nicht so richtig hin bekommen.
Jetzt ist der Sommer vorbei (andere Hobbys) und ich will es nochmal versuchen.

Gruß
Rainer

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

Re: UE1 im Stundentakt

Beitrag von buempi » 02.11.2010, 07:59

Hallo Rainer

Im anderen Thread hattest du ja auch den Westminsterschlag verlangt; und der setzt sich aus verschiedenen Tonfolgen zusammen, sodass es für die Viertelstunden eben separate Schaltungen brauchte.

Allein die vollen Stunden ist natürlich einfacher. Es braucht auch keine komplizierte WENN-Abfrage, mit =# und *. Man lässt da Makro einfach jede volle Stunde ausführen:

Code: Alles auswählen

** Variablen:
** Stunde          Typ Zahl       Startwert 0
** Anfang          Typ Zeichen
** Ende            Typ Zeichen

Stunde := 0

Nochmals:

wenn Stunde < 10 dann
   Anfang  := "0" + Stunde + ":00:00"
   Ende    := "0" + Stunde + ":59:59"
sonst
   Anfang  := Stunde + ":00:00"
   Ende    := Stunde + ":59:59"
endewenn

wenn nicht Uhrzeit zwischen Anfang und Ende dann

   Stunde  := Stunde + 1

   ** Sicherheitshalber, damit keine Endlosschleife entstehen kann:
   wenn Stunde > 23 dann
      verlassen
   endewenn

   gehezu Nochmals

endewenn

wenn Stunde = 0 dann
   ** Hier ev. 24 einsetzen, wenn du um Mitternacht 24x willst!
   Stunde  := 12
endewenn

** Diesen Block löschen, wenn du um 20 Uhr 20x und nicht 8x willst!
wenn Stunde > 12 dann
   Stunde  := Stunde - 12
endewenn

Wiederholen:

UE1 einschalten für "00:00:01"

Stunde := Stunde - 1

wenn Stunde > 0 dann
   warte("00:00:02")
   gehezu Wiederholen
endewenn
Viele Grüsse
Bümpi

fiffi
Beiträge: 25
Registriert: 27.12.2009, 22:27

Re: UE1 im Stundentakt

Beitrag von fiffi » 08.11.2010, 19:42

Danke buempi, das funktioniert ja prima.

Es hat zwar etwas gedauert, aber jetzt ist alles OK.
Ich mußte in den Makro Einstellungen Allgemein auf "SCHALTER" stellen und
den Makrointervall auf "JEDE VOLLE STUNDE".
Die Taktzeit steht auf : eine Sekunde an, dann drei Sekunden Pause.
Jetzt schafft es auch das Relais.

Also nochmals vielen Dank
Gruß
Rainer

fiffi
Beiträge: 25
Registriert: 27.12.2009, 22:27

Re: UE1 im Stundentakt

Beitrag von fiffi » 08.06.2015, 23:13

Guten Abend,
Der Stundentakt funktioniert nicht mehr so richtig.
Die einzelnen Takte kommen meist unregelmäßig oder verzögert.
Es liegt warscheinlich an zu vielen Sendungen bei voller Stunde.
Habe jetzt eine CCU2 mit im Spiel.
Kann man das Macro für Homematic umschreiben.
Vielleicht läuft es dann zuverlässiger.
Es soll einen Homematic Schaltaktor im Stundentakt steuern.
Danke für eine Antwort

Gruß
Rainer
Zuletzt geändert von fiffi am 09.06.2015, 09:22, insgesamt 1-mal geändert.

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

Re: UE1 im Stundentakt

Beitrag von buempi » 09.06.2015, 06:18

Hallo Rainer

"Einschalten für" sendet bei HomeMatic einen EIN- und nach Ablauf der vorgegebenen Dauer einen AUS-Befehl. Weil der Aktor die Signale auch noch quittiert, führt dieses Vorgehen beim Senden in so kurzen Zeitabständen unweigerlich zu gegenseitigen Störungen.

Über "Setzewert" kann man aber erreichen, dass es wie bei FS20 abläuft und ein "Einschalten für Timerzeit" gesendet wird:

Code: Alles auswählen

Setzewert(Aktorname,"EINSCHALTZEIT",1) 
Aktorname einschalten
Das sollte eine Besserung bringen!

Viele Grüsse
Bümpi

fiffi
Beiträge: 25
Registriert: 27.12.2009, 22:27

Re: UE1 im Stundentakt

Beitrag von fiffi » 11.06.2015, 21:42

Danke Bümpi für die schnelle Antwort aber es taktet nix mehr.
Der Laser geht einmal an.
Das wars dann.
Wo liegt der Fehler?
Kannst du mir nochmal helfen?
Geht dieser Stundentakt nicht ohne Homeputer CL und nur auf der
Homematic CCU2 WebUi zu programmieren?

// Variablen:
// AktStunde Typ Zahl Startwert 0
// Anfang Typ Zeichen
// Ende Typ Zeichen

AktStunde := 0

Nochmals:

wenn AktStunde < 10 dann
Anfang := "0" + AktStunde + ":00:00"
Ende := "0" + AktStunde + ":59:59"
sonst
Anfang := AktStunde + ":00:00"
Ende := AktStunde + ":59:59"
endewenn

wenn nicht Uhrzeit zwischen Anfang und Ende dann

AktStunde := AktStunde + 1

// Sicherheitshalber, damit keine Endlosschleife entstehen kann:
wenn AktStunde > 23 dann
verlassen
endewenn

gehezu Nochmals

endewenn

wenn AktStunde = 0 dann
AktStunde := 12
endewenn



Wiederholen:

Setzewert(LASER,"EINSCHALTZEIT",1)
LASER einschalten

AktStunde := AktStunde - 1

wenn AktStunde > 0 dann
warte("00:00:03")
gehezu Wiederholen
endewenn


Danke für eine Antwort
Gruß
Rainer

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

Re: UE1 im Stundentakt

Beitrag von buempi » 12.06.2015, 07:15

Hallo Rainer
fiffi hat geschrieben:Geht dieser Stundentakt nicht ohne Homeputer CL und nur auf der
Homematic CCU2 WebUi zu programmieren?
... mit Homeputer geht das viel einfacher, als es über das WebUI mit der unzulänglichen Skript-Sprache möglich wäre!

In CL könnte man die Bestimmung der Anzahl Stundenschläge sogar noch einfacher durchführen, als es in Homeputer für die FHZ möglich war. Daran liegt es aber nicht. Bei mir funktioniert es nämlich exakt so, wie du es jetzt eingestellt hast. - Geht der Laser nur 1x für 1 Sekunde an, oder bleibt er an? Wenn letzteres der Fall ist, hast du einen Aktor, der das Setzen einer Einschaltdauer nicht unterstützt! Dann ist es rein funktechnisch schwierig, weil sich bei mehrfachem Senden in kurzen Intervallen unweigerlich Funkkollisionen zwischen Anweisung und Quittung ergeben.

Beim Startwert von AktStunde hast du wirklich 0 drin und nicht etwa 0,0? Wenn nicht, lösche die Variable mal ganz und lege sie mit 0 neu an.

Beim Ausführungsintervall ist jede Stunde gewählt?

Versuche es auch mal mit einem WARTE von 2 oder 4 Sekunden.

Viele Grüsse
Bümpi

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

Re: UE1 im Stundentakt

Beitrag von buempi » 12.06.2015, 08:47

Hallo Rainer

Hier noch das durch die Textbearbeitungsmöglichkeiten von CL vereinfachte Makro:

Code: Alles auswählen

// Variablen:
// StringStunde Typ Zeichen
// AktStunde    Typ Zahl     Startwert 0

StringStunde := Uhrzeit
AktStunde    := LinkerTeil(StringStunde,2)

wenn AktStunde = 0 dann
   AktStunde := 12
endewenn

Wiederholen:

Setzewert(LASER,"EINSCHALTZEIT",1)
LASER einschalten

AktStunde := AktStunde - 1

wenn AktStunde > 0 dann
   warte("00:00:03")
   gehezu Wiederholen
endewenn
Aber wie gesagt: Das Bestimmen der aktuellen Stunde funktioniert auch mit der "alten" Version. Der Fehler muss also woanders liegen.

Viele Grüsse
Bümpi

PS: Beide Makros funktionieren übrigens auch richtig, wenn du zum Testen aus deinem Makro-Objekt ein Objekt vom Typ Knopf machst. Dann sollte beim Klick auf den Knopf die aktuelle Stundenzahl "gelasert" werden!

Antworten

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