1 Frage)
Also ganz neu ist das Thema ja nicht, ich möchte zur Sicherheit mehrmals den Befehl senden.
Code: Alles auswählen
wenn EM_SC_AQ_Luft_3112.Zustand = "00:00:00" dann
EM_SC_AQ_Luft_3112 ausschalten
sonst
wenn EM_SC_AQ_Luft_3112.Zustand = "1" dann
EM_SC_AQ_Luft_3112 einschalten
sonst
EM_SC_AQ_Luft_3112 einschalten für EM_SC_AQ_Luft_3112.Zustand
endewenn
endewenn
Code: Alles auswählen
wenn EM_SC_AQ_Luft_3112.Zustand = "00:00:00" dann
EM_SC_AQ_Luft_3112 ausschalten
warte("00:00:00")
EM_SC_AQ_Luft_3112 ausschalten
sonst
wenn EM_SC_AQ_Luft_3112.Zustand = "1" dann
EM_SC_AQ_Luft_3112 einschalten
warte("00:00:00")
EM_SC_AQ_Luft_3112 einschalten
sonst
EM_SC_AQ_Luft_3112 einschalten für EM_SC_AQ_Luft_3112.Zustand
warte("00:00:00")
EM_SC_AQ_Luft_3112 einschalten für EM_SC_AQ_Luft_3112.Zustand
endewenn
endewenn
2 Frage)
Code: Alles auswählen
**Meldung ob makro aktiv ist oder inaktiv
EM_DI_AQ_Licht_3111_Zusatnd := "Makro aktiv"
**Helligkeit erhöhen bzw. reduzieren stoppen
wenn EM_DI_AQ_Licht_3111.Stop = "an" dann
gehezu ende
endewenn
**Keine Zeit übermittelt, Lichtstufe direkt setzen
wenn EM_DI_AQ_Licht_3111.WarteZeit = "00:00:00" dann
EM_DI_AQ_Licht_3111 setzen auf stufe EM_DI_AQ_Licht_3111.Stufe
endewenn
**Zeit wurde mit übermittelt, Lichtstufe schrittweise anpassen und setzen
wenn nicht EM_DI_AQ_Licht_3111.WarteZeit = "00:00:00" dann
**Nichts machen, wenn der alte Wert gleich dem neuen Wert ist
wenn EM_DI_AQ_Licht_3111 = EM_DI_AQ_Licht_3111.Stufe dann
gehezu ende
endewenn
**Neue Stufe ist größer als die eingestellte Stufe
wenn EM_DI_AQ_Licht_3111 < EM_DI_AQ_Licht_3111.Stufe dann
**Wenn die Stufe 0 ist, dann erst auf Stufe 1 setzen und kurz warten (damit die Neonröhren erst starten können)
wenn EM_DI_AQ_Licht_3111 = 0 dann
EM_DI_AQ_Licht_3111 := 1
warte("00:00:03")
endewenn
SchleifePlus:
**Wenn die Stufe 16 erreicht wurde, Makro beenden
wenn EM_DI_AQ_Licht_3111 = 16 dann
gehezu ende
endewenn
EM_DI_AQ_Licht_3111.MerkerStufe := EM_DI_AQ_Licht_3111
warte(EM_DI_AQ_Licht_3111.WarteZeit)
EM_DI_AQ_Licht_3111 := EM_DI_AQ_Licht_3111.MerkerStufe + 1
**Wenn die eingestellte Stufe erreicht wurde, Makro beenden
wenn EM_DI_AQ_Licht_3111 = EM_DI_AQ_Licht_3111.Stufe dann
gehezu ende
endewenn
gehezu SchleifePlus
**Neue Stufe ist kleiner als die eingestellte Stufe
sonst
SchleifeMinus:
**Wenn die Stufe 1 erreicht wurde, Makro beenden (Neonröhre nicht direkt ausschalten, sondern verzögert!)
wenn EM_DI_AQ_Licht_3111 = 1 dann
warte("00:00:05")
EM_DI_AQ_Licht_3111 := 0
gehezu ende
endewenn
EM_DI_AQ_Licht_3111.MerkerStufe := EM_DI_AQ_Licht_3111
warte(EM_DI_AQ_Licht_3111.WarteZeit)
EM_DI_AQ_Licht_3111 := EM_DI_AQ_Licht_3111.MerkerStufe - 1
**Wenn die eingestellte Stufe erreicht wurde, Makro beenden
wenn EM_DI_AQ_Licht_3111 = EM_DI_AQ_Licht_3111.Stufe dann
gehezu ende
endewenn
gehezu SchleifeMinus
endewenn
endewenn
**Programm beenden und Werte zurücksetzen
ende:
**Befehle nochmal senden
warte("00:00:00")
EM_DI_AQ_Licht_3111 := EM_DI_AQ_Licht_3111
warte("00:00:00")
EM_DI_AQ_Licht_3111 := EM_DI_AQ_Licht_3111
**Werte zurücksetzen
EM_DI_AQ_Licht_3111.Stop := "aus"
EM_DI_AQ_Licht_3111.Stufe := ""
EM_DI_AQ_Licht_3111.WarteZeit := "00:00:00"
EM_DI_AQ_Licht_3111_Zusatnd := "Makro inaktiv"
**ggf. Schalter zurücksetzen
SE_DI_AQ_Licht_3111_ra ausschalten
SE_DI_AQ_Licht_3111_ru ausschalten
Jetzt möchte ich damit rechen, geht das?
Also z.B.:" 00:30:00" / 2 = "00:15:00"
Es wird damit ein Dimmer angesteuert, der in x Zeit auf die eingestellte Helligkeit dimmt. Ich möchte aber nicht die Zeit angeben die er braucht von einer zur nächsten Stufe, so wie jetzt. Sondern die gesamt Zeit und anhand von den Stufen habe ich ja meinen Teiler.
MfG
Maik Freye
PS Guten Rutsch Euch allen!