Befehl 3-5 mal pro Sekunde senden

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

Moderator: Co-Administratoren

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

Re: Befehl 3-5 mal pro Sekunde senden

Beitrag von mfreye » 05.02.2010, 22:05

Hallo Bümpi,

also in der INI Datei habe ich den folgenden Eintrag:

Code: Alles auswählen

[Beleuchtung-07:00]
   BeleuchtungStufe     = "2"
   BeleuchtungWarteZeit = "1440"
In dem Makro lese ich disen Wert aus und weise ihn zu:
(BeleuchtungWarteZeit = Zahl = 0,0)

Code: Alles auswählen

** Jetzt Werte zuweisen - Beleuchtung
wenn nicht BeleuchtungStufe = "leer"  oder nicht BeleuchtungWarteZeit = "leer" dann
	EM_DI_AQ_Licht_3111.Stufe := BeleuchtungStufe
	EM_DI_AQ_Licht_3111.WarteZeit := 1/BeleuchtungWarteZeit
	starte(EM_DI_AQ_Licht_3111)
endewenn
Im Makro vom DImmer lese ich dann den Wert wieder aus:
(WarteZeit = Zahl = 0,0)

Code: Alles auswählen

warte(EM_DI_AQ_Licht_3111.WarteZeit)
Solange ich nicht über eine Minute komme geht alles, aber einer Minute passier nichts mehr?!

Hoffe das ich genug Infos geben habe ;)

Gruß
Maik

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

Re: Befehl 3-5 mal pro Sekunde senden

Beitrag von buempi » 06.02.2010, 07:37

Hallo Maik

Ich habe deine Makros (mit Ausnahme der Werte-Übernahme aus der INI) nachgestellt, und bei mir funktioniert es - habe einfach den Wert 1440 am Anfang des Makros direkt zugewiesen.

Der Fehler muss also woanders liegen:

BeleuchtungWarteZeit ist vom Typ Zahl mit Startwert 0,0 (0 würde wohl genügen); kann also nie "leer" sein, wie in der WENN-Bedingung abgefragt. Vielleicht liegt da der Fehler, denn das Makro wird so ja bei jedem Durchgang ausgeführt (Intervall 1 Minute :idea: :?: )

Du siehst: Mit ein Bisschen mehr Infos wäre das Problem vielleicht schon im ersten Durchgang gelöst gewesen...

Viele Grüsse
Bümpi

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

Re: Befehl 3-5 mal pro Sekunde senden

Beitrag von mfreye » 06.02.2010, 08:22

Hallo Bümpi,

danke für die Hilfe!
Du siehst: Mit ein Bisschen mehr Infos wäre das Problem vielleicht schon im ersten Durchgang gelöst gewesen...
Ja, ich werde versuchen mich zu bessern. Versprochen!

Also ja, der Grund war die Ausführungszeit jede Minute.

Ich habe der Variabel den Wert "leer" zugewiesen, richtig ist es aber so:

Code: Alles auswählen

$V_INI_Aquarium_BeleuchtungWarteZeit = "0";
Da ja BeleuchtungWarteZeit = Zahl = 0 ist.

Weiter unten im Makro habe ich dann folgenden Code gehabt:

Code: Alles auswählen

** Jetzt Werte zuweisen - Beleuchtung
wenn nicht BeleuchtungStufe = "leer"  oder nicht BeleuchtungWarteZeit = "0" dann
	EM_DI_AQ_Licht_3111.Stufe := BeleuchtungStufe
	EM_DI_AQ_Licht_3111.WarteZeit := 1/BeleuchtungWarteZeit
	starte(EM_DI_AQ_Licht_3111)
endewenn
Da durch die Zuweisung "leer" ein Fehler verursacht wurde, wurde der starte(EM_DI_AQ_Licht_3111) jede Minute ausgeführt.

Gruß
Maik

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

Re: Befehl 3-5 mal pro Sekunde senden

Beitrag von buempi » 06.02.2010, 09:19

Hallo Maik

Freut mich, dass der Fehler gefunden ist. - Könnte es aber nicht mit der Variablen "BeleuchtungStufe" genau das gleiche Problem geben? Ist die nicht auch vom Typ Zahl? Allerdings wird da der Wert 0 wohl benötigt, sodass du also statt "leer" -1 oder dgl. verwenden müsstest.

Ist ODER in der WENN-Bedingung überhaupt richtig? Da werden die Anweisungen ja immer ausgeführt, auch wenn nur in einer der beiden Variablen was drin steht. Dimmerstufe X ohne Wartezeit kann ich mir noch vorstellen - aber Wartezeit ohne Dimmerstufe...??? Wahrscheinlich müsste es doch sogar genügen, nur die Dimmerstufe abzufragen.

Viele Grüsse
Bümpi

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

Re: Befehl 3-5 mal pro Sekunde senden

Beitrag von mfreye » 06.02.2010, 19:34

Hallo Bümpi!

Code: Alles auswählen

Freut mich, dass der Fehler gefunden ist. - Könnte es aber nicht mit der Variablen "BeleuchtungStufe" genau das gleiche Problem geben? Ist die nicht auch vom Typ Zahl? Allerdings wird da der Wert 0 wohl benötigt, sodass du also statt "leer" -1 oder dgl. verwenden müsstest.
Ne, das wäre auch nicht bei der WarteZeit passiert. Ich weise immer Werte zu:

Code: Alles auswählen

$V_INI_Aquarium_BeleuchtungWarteZeit = "0";
Ich habe halt nur dort dieses zugewiesen:

Code: Alles auswählen

$V_INI_Aquarium_BeleuchtungWarteZeit = "leer";
Da diese nicht "leer" war, wurde das Makro gestartet.
Ist ODER in der WENN-Bedingung überhaupt richtig? Da werden die Anweisungen ja immer ausgeführt, auch wenn nur in einer der beiden Variablen was drin steht. Dimmerstufe X ohne Wartezeit kann ich mir noch vorstellen - aber Wartezeit ohne Dimmerstufe...??? Wahrscheinlich müsste es doch sogar genügen, nur die Dimmerstufe abzufragen.
Ja, da ich wie Du schon geschrieben hast, auch nur die Stufe übergebe. Klar wäre es richtig gewesen eine UND und ODER Kombination zu machen, aber sah da keine Sinn drin.

Nochmal vielen Dank!

Schönen Abend
Maik

Antworten

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