Dämmerungsschalter

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

Moderator: Co-Administratoren

Antworten
mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Dämmerungsschalter

Beitrag von mfreye » 29.12.2008, 08:38

Hallo zusammen.

Ich habe einen Dämmerungsschalter wie folgt programmiert:

erster Kanal:

Code: Alles auswählen

wenn SE_DA_AU_S411_T1 eingeschaltet und SE_DA_AU_S411_T2 ausgeschaltet dann
warte("01:00:00")
wenn SE_DA_AU_S411_T2 ausgeschaltet dann
SE_DA_AU_S411_T2 einschalten
endewenn
endewenn


wenn SE_DA_AU_S411_T1 ausgeschaltet und SE_DA_AU_S411_T2 eingeschaltet dann
SE_DA_AU_S411_T2 ausschalten
endewenn
zweiter Kanal:

Code: Alles auswählen

wenn SE_DA_AU_S411_T2 ausgeschaltet und SE_DA_AU_S411_T1 eingeschaltet dann
warte("00:30:00")
wenn SE_DA_AU_S411_T1 eingeschaltet dann
SE_DA_AU_S411_T1 ausschalten
endewenn
endewenn

wenn SE_DA_AU_S411_T2 eingeschaltet und SE_DA_AU_S411_T1 ausgeschaltet dann
SE_DA_AU_S411_T1 einschalten
endewenn
Jetzt möchte ich das ganze erweitern. Wenn morgens ein Ausschaltbefehl empfangen wurde, dann soll ein erneuter Einschaltbefehl ignoriert werden. Ich dachte daran, dass ganze von der Tageszeit abhängig zu steuern. Gleich nur andersherum Abends genau so.

Mein Problem ist, das de Wartebefehl weiter abgearbeitet werden muss.

MfG
MFreye

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

Re: Dämmerungsschalter

Beitrag von buempi » 29.12.2008, 09:49

Hallo Maik

Ich bin heute schwer von Begriff und verstehe leider überhaupt nicht, welchen Sinn und Zweck deine Makros haben. Schalten sich da die Sensoren gegenseitig ein und aus?

Einen WARTE-Befehl nach einem erneuten Aufruf des Makros (z.B. durch den Sensor) weiterlaufen lassen kann man nicht. Man muss eine eigene Warteschlaufe basteln:

Code: Alles auswählen

** Variablen:  WartenGestartet   Typ Zahl   Startwert 0
**             WartenBis         Typ Zeit

wenn WartenGestartet = 0 dann
   WartenGestartet := 1
   WartenBis := Zeit + "01:00:00"
endewenn

Nochmals:

wenn WartenGestartet = 1 dann
   wenn Zeit >= WartenBis dann
      WartenGestartet := 0
   sonst
      warte("00:01:00")
      Gehezu Nochmals
   endewenn
endewenn

** Hier die Anweisungen, die nach dem Warten ausgeführt werden sollen
Du musst darauf achten, dass das Ganze nicht funktioniert, wenn es innerhalb eines WENN-Blocks steht, der beim nächsten Aufruf des Makros nicht mehr abgearbeitet wird, weil sich die Zustände verändert haben. Auch wird dann die Variable WartenGestartet nie auf 0 zurückgesetzt, sodass beim nächsten Eintreffen der WENN-Bedingung die Anweisungen ohne Wartezeit ausgeführt werden. Das kann man - vielleicht - verhindern, indem man ein separates Warte-Makro erstellt.

Wo das Ganze in deine Makros rein muss, so dass es dann auch abläuft, wie du es wünschst, kann ich leider nicht sagen, weil ich - wie gesagt - gar nicht verstehe, was die Makros eigentlich machen. Aber vielleicht hilft es dir trotzdem weiter...

Viele Grüsse
Bümpi

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Dämmerungsschalter

Beitrag von mfreye » 29.12.2008, 10:11

Hallo Bümpi,

wahrscheinlich ist mein Makro nicht gut programmiert. Aber es funktioniert zuverlässig :oops:

Zu Funktion einmal:

Abends = es wird dunkel = T1 wird eingeschaltet (erste Messung - wenn es anfängt dunkel zu werden)
Abends = es wird dunkel = T2 wird eingeschaltet (zweite Messung - wenn es richtig dunkel ist)

Sollte T2 nach x Minuten nicht auf eingeschaltet werden, wird dieses von T1 gemacht. Ich gehe dann davon aus, dass das Schaltsignal nicht empfangen wurde.
Wenn T2 eingeschaltet wird und T1 noch nicht eingeschaltet ist, wird T1 sofort eingeschaltet, da kein Schaltsignal empfangen wurde.

Am morgen ist es dann halt genau anderes herum.

Somit ist es ziemlich sicher, dass ich einen zuverlässigen Werte bekomme.

Jetzt muss es halt noch so sein, wenn T2 morgens einmal ausgeschaltet wurde, darf es auch nicht wieder eingeschaltet, selbst wenn es noch mal etwas dunkel wird.

Hoffe das man es so besser verstehen kann :roll:

Aber schon mal Danke für die Hilfe!

MfG
MFreye

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

Re: Dämmerungsschalter

Beitrag von buempi » 29.12.2008, 12:03

Hallo Maik

Ja, ich glaube, jetzt habe ich es kapiert. Das gegenseitige Umschalten der Sensoren bezweckt, untergegangene Funksignale "aufzuspüren": Wenn es eine Stunde nachdem es halbdunkel geworden ist noch nicht ganz dunkel ist, ging das Signal vom zweiten Sensor unter. Wenn es ganz dunkel wird, und vorher nicht halbdunkel war, ging das Signal vom ersten Sensor unter.... usw. Die Schaltungen, je nachdem ob einer oder beide Sensoren EIN oder AUS sind, machst du dann wohl in einem separaten Minuten-Makro?

Hier mal mein Vorschlag für Kanal 1. Bei Kanal 2 müsstest du es dann analog lösen:

Code: Alles auswählen

** Variablen:  WartenGestartet   Typ Zahl   Startwert 0
**             WartenBis         Typ Zeit

wenn SE_DA_AU_S411_T1 ausgeschaltet dann

   ** Es ist nur noch halbdunkel, Kanal 2 auf jeden Fall ausgeschalten
   SE_DA_AU_S411_T2 ausschalten

   ** vielleicht ist es abends wieder ein Bisschen heller geworden
   ** dann muss die Wartezeit weiterlaufen
   wenn WartenGestartet = 1 dann
      Gehezu Nochmals
   sonst
      verlassen
   endewenn

endewenn

** Es ist am Morgen nochmals ein Bisschen dunkler geworden

wenn Uhrzeit < "12:00:00" dann
   SE_DA_AU_S411_T1 ausschalten
   ** Eigentlich unmöglich, dass noch auf 1, aber zur Sicherheit
   WartenGestartet := 0
   verlassen
endewenn

** Es ist am Abend halbdunkel geworden

wenn WartenGestartet = 0 dann
   WartenGestartet := 1
   WartenBis := Zeit + "01:00:00"
endewenn

Nochmals:

wenn Zeit >= WartenBis dann
   WartenGestartet := 0
sonst
   warte("00:01:00")
   Gehezu Nochmals
endewenn

** Eine Stunde nach dem ersten "Halbdunkel" kann Kanal 2 auf jeden Fall
** eingeschaltet werden

SE_DA_AU_S411_T2 einschalten

** Aber auch Kanal 1 muss 1 Stunde nach dem ersten Halbdunkel eingeschaltet werden
** falls es zwischendurch etwas heller wurde und dann das nächste EIN unterging
** und auch das EIN von Kanal 2 nicht angekommen ist.

SE_DA_AU_S411_T1 einschalten
Ich hoffe, dass es dem entspricht, was du möchtest.

Viele Grüsse
Bümpi

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Dämmerungsschalter

Beitrag von mfreye » 30.12.2008, 10:10

Hallo Bümpi,
Ja, ich glaube, jetzt habe ich es kapiert.
Ja hast Du :D

danke mal wieder für Deine Hilfe!

Gruß
Maik

Antworten

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