RMA
Level-1
- Beiträge
- 400
- Reaktionspunkte
- 24
-> Hier kostenlos registrieren
Zur Zeit mache ich meine erste Erfahrungen mit CoDeSys und im großen und ganzen geht's ganz gut aber jetzt habe ich ein Problem wozu ich keine Lösung finde.
Es geht um ein Mobilbedienpanel das eine Heizung hat um Kontrast- und andere typische LCD Probleme bei niedrigen Temperaturen zu vermeiden. Es ist auch möglich die Heizung manuel ein- bzw. auszuschalten (für Testzwecke) und das Program dazu ist denkbar einfach: die Funktionstaste F5 wird überwacht und bei positver Flanke wird die Variable "Manuell_heizen_aktiv" umgeschaltet. Die ist eine Lokalvariable die in der Deklaration auf FALSCH gesetzt wird. Wenn "Manuell_heizen_aktiv" TRUE ist wird die Heizung eingeschaltet. Hier ein Ausschnitt aus dem code:
Das Problem ist, wenn das Bedienpanel eingeschaltet wird, wird "Manuell_heizen_aktiv " irgendwie auf TRUE gesetzt und die Heizung wird eingeschaltet obwohl es nicht nötig ist.
Wenn ich beide Variablen mit Forcen auf FALSE setze und dann das Forcen wieder ausschalte, bleiben beide Variablen auf FALSE bis ich entweder F5 drucke oder das Panel aus- und wieder einschalte, dann sind beide wieder auf TRUE gesetzt.
Wenn jemand ein Vorschlag hat was hier los ist, wäre ich sehr dankbar.
Es geht um ein Mobilbedienpanel das eine Heizung hat um Kontrast- und andere typische LCD Probleme bei niedrigen Temperaturen zu vermeiden. Es ist auch möglich die Heizung manuel ein- bzw. auszuschalten (für Testzwecke) und das Program dazu ist denkbar einfach: die Funktionstaste F5 wird überwacht und bei positver Flanke wird die Variable "Manuell_heizen_aktiv" umgeschaltet. Die ist eine Lokalvariable die in der Deklaration auf FALSCH gesetzt wird. Wenn "Manuell_heizen_aktiv" TRUE ist wird die Heizung eingeschaltet. Hier ein Ausschnitt aus dem code:
Code:
PROGRAM Display_Heizung
VAR
TEMP_DISPLAY AT%MB400 :INT;
TEMP_EIN AT%MB302 :INT;
TEMP_AUS AT%MB300 :INT;
TEMP_ICON AT%MX410.1 :BOOL := FALSE;
Manuell_heizen_aktiv :BOOL := FALSE;
END_VAR
....
IF F5_pos.q AND NOT Manuell_heizen_aktiv THEN
Manuell_heizen_aktiv := TRUE;
ELSIF F5_pos.q AND Manuell_heizen_aktiv THEN
Manuell_heizen_aktiv := FALSE;
END_IF
IF Manuell_heizen_aktiv THEN
HEIZUNG_AN_AUS := TRUE;
END_IF
Das Problem ist, wenn das Bedienpanel eingeschaltet wird, wird "Manuell_heizen_aktiv " irgendwie auf TRUE gesetzt und die Heizung wird eingeschaltet obwohl es nicht nötig ist.
Wenn ich beide Variablen mit Forcen auf FALSE setze und dann das Forcen wieder ausschalte, bleiben beide Variablen auf FALSE bis ich entweder F5 drucke oder das Panel aus- und wieder einschalte, dann sind beide wieder auf TRUE gesetzt.
Wenn jemand ein Vorschlag hat was hier los ist, wäre ich sehr dankbar.