Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Probleme bei Steuerung mit M-Unit 1.1 Kategorie: Programmierung Basic (von Uwe - 9.02.2008 12:15)
Uwe nutzt:  CC1-M-Unit V1.1
Hallo,

Ich habe seit einigen Jahren eine M-Unit 1.1 zur Steuerung von Licht und Lüfter in der Toilette und Notlicht im Eingangsbereich genutzt. Die Ausgänge steuern über einen IC ULN 2803 Relais an und die Eingänge werden über PIR, durch Optokoppler PC847 getrennt, angesteuert.
Bisher funktionierte es gut. Beim Bau der Schaltung und bei der Software habe ich Erweiterungen zur Steuerung des Notlichtes im Flur und zur Steuerung des Außenlichtes vorgesehen.
Das Notlicht im Flur habe ich nun angeschlossen und die Probleme gehen los! (Aussenlicht und Netzwerk ist noch nicht installiert)
Wenn 2 der Bewegungsmelder auslösen, schalten sich die entsprechenden Verbraucher ein. Löst ein Bewegungsmelder nochmals aus (manchmal auch schon beim ersten Impuls des 2. Bewegungsmelders), wird der 3. Verbraucher auch eingeschaltet!
Nun habe ich den Bewegungsmelder im Flur wieder entfernt, wenn der Bewegungsmelder im Eingangsbereich und der der Toilette ausgelöst werden, geht das Licht im Flur unten mit an!
Da ich in der Schaltung insgesamt 8 Optokoppler vorgesehen habe, habe ich die Eingänge schon hin und hergetauscht - das selbe Ergebnis!
Wenn ich ein Hilfsprogramm schreibe, welches jeweils nur einen Verbraucher über einen PIR schalte, funktioniert es.
Da ich kein Profi bin, wäre ich dankbar, wenn sich jemand das beigefügte Programm ansehen könnte, ob dort ein für mich nicht auffindbarer Fehler steckt. Die Anzahl der Variablen habe ich meiner Meinung nach auch nicht überschritten.

Uwe





'****************************** Steuerung Vorflur *****************************
'
'
'
'
'******************************************************************************

'----- Netzwerk initialisieren -----
network self = 100                     'Netzwerkadressse 100 zuweisen

'----- Sensoren -----
define ds_au port[7]                   'Dämmerungssensor aussen
define pir_au port[6]                  'Bewegungssensor aussen
define pir_fu port[1]                  'Bewegungssensor Flur unten
define pir_vf port[2]                  'Bewegungssensor Vorflur
define pir_tu port[4]                  'Bewegungssensor Toilette unten

'----- Relais -----
define led_vf port[11]                 'Relais LED Vorflur
define led_fu port[12]                 'Relais LED Flur unten
define licht_tu port[13]               'Licht Toilette unten
define trafo port[14]                  'Netzspannung Halogen-Trafo 12V
define luefter port[15]                'Lüfter Toilette
define licht_au port[16]               'Licht aussen

'----- Konstanten -----
define zeit_licht_tu 90                'Zeit Licht Toilette unten
define zeit_licht_led 60               'Zeit LED-Licht Vorflur und Flur unten
define zeit_licht_au 30                'Zeit Licht außen
define zeit_luefter_tot 60             'Zeit bis Einschalten des Lüfters
define zeit_luefter 180                'Zeit Lüfter

'----- Variablen -----
define timer_led_vf word[1]            ')
define timer_led_fu word[2]            ')
define timer_licht_tu word[3]          ')Timer-Variablen
define timer_luefter word[4]           ')
define timer_licht_au word[5]          ')

define last_sec byte[11]               ')Sekunde aus letzter Schleife

define led_vf_aktiv bit[187]           ')
define led_fu_aktiv bit[188]           ')
define licht_tu_aktiv bit[189]         ')sind Timer aktiv?
define luefter_aktiv bit[190]          ')
define luefter_tot_aktiv bit[191]      ')
define licht_au_aktiv bit[192]         ')



'----- Start Programm -----
pause 500
gosub init
#loop
 'Sensoren abfragen bis eine Sekunde vergangen
 gosub abfrage_sensoren
 if second = last_sec then goto loop
 'eine Sekunde vergangen
 last_sec = second
 'Steuerung Licht Toilette unten ----------------------------------------------
 if (licht_tu_aktiv = on) then timer_licht_tu = timer_licht_tu - 1
 if ((licht_tu_aktiv = on) and (timer_licht_tu = 0)) then gosub tu_off
 'Steuerung Lüfter Toilette unten ---------------------------------------------
 if ((licht_tu_aktiv = on) and (luefter_tot_aktiv = off) and (luefter_aktiv = off)) then gosub start_luefter_tot
 if ((luefter_tot_aktiv = on) or (luefter_aktiv = on)) then timer_luefter = timer_luefter -1
 if ((timer_luefter = 0) and (luefter_tot_aktiv = on)) then gosub luefter_on
 if ((timer_luefter = 0) and (luefter_aktiv = on)) then gosub luefter_off
 'Steuerung LED-Licht Vorflur -------------------------------------------------
 if (led_vf_aktiv = on) then timer_led_vf = timer_led_vf - 1
 if ((led_vf_aktiv = on) and (timer_led_vf = 0)) then gosub vf_off
 'Steuerung LED-Licht Flur unten ----------------------------------------------
 if (led_fu_aktiv = on) then timer_led_fu = timer_led_fu - 1
 if ((led_fu_aktiv = on) and (timer_led_fu = 0)) then gosub fu_off
 'Steuerung Außenlicht --- zur Zeit deaktiviert -------------------------------
 'if (licht_au_aktiv = on) then timer_licht_au = timer_licht_au - 1
 'if ((licht_au_aktiv = on) and (timer_licht_au =0)) then licht_au = off
goto loop

#init
'Initialisierung
 if initmodem then gosub modem_ok else gosub modem_fehler 'Modeminitialisierung
 led_vf            = off                                  'alle Relais ausschalten
 led_fu            = off
 licht_tu          = off
 trafo             = off
 luefter           = off
 licht_au          = off
 timer_led_vf      = 0                                    'alle Timer Null setzen
 timer_led_fu      = 0
 timer_licht_tu    = 0
 timer_luefter     = 0
 timer_licht_au    = 0
 led_vf_aktiv      = off                                  'alle Abfragebits ausschalten
 led_fu_aktiv      = off
 licht_tu_aktiv    = off
 luefter_aktiv     = off
 luefter_tot_aktiv = off
 licht_au_aktiv    = off
 last_sec          = second                               'Variable last_sec initialisieren
return

#abfrage_sensoren
'Abfrage der Bewegungsmelder und des Dämmerungssensors
 if (pir_tu = off) then gosub tu_on                       'Bewegungssensor Toilette unten
 if (pir_vf = off) then gosub vf_on                       'Bewegungssensor Vorflur
 if (pir_fu = off) then gosub fu_on                       'Bewegungssensor Flur unten
 'if ((pir_au = off) and (ds_au = off)) then gosub au_on   'Bewegungssensor außen und Dämmerungssensor - deaktiviert
return

#tu_on
'Bewegungsmeldersignal Toilette unten
 timer_licht_tu = zeit_licht_tu        'Timervariable für Licht setzen
 trafo          = on                   'Netzspannung Halogen-Trafo ein
 licht_tu       = on                   'Licht Toilette ein
 licht_tu_aktiv = on                   'Abfragebit Licht Toilette unten
 if luefter_aktiv = on then timer_luefter = zeit_luefter
return

#tu_off
'Licht Toilette unten ausschalten
 licht_tu_aktiv = off                'Abfragebit Licht Toilette unten aus
 licht_tu       = off                'Licht Toilette unten aus
 if ((led_vf_aktiv = off) and (led_fu_aktiv = off)) then trafo = off   'Netzspannung Halogen-Trafo aus
return

#start_luefter_tot
'Beginn Totzeit Lüfter
 luefter_tot_aktiv = on                'Abfragebit Totzeit Lüfter
 timer_luefter     = zeit_luefter_tot  'Startzeit für Timer/Lüfter Totzeit
return

#luefter_on
'Lüfter einschalten
 luefter_tot_aktiv = off               'Abfragebit Totzeit Lüfter
 luefter_aktiv     = on                'Abfragebit Lüfter
 timer_luefter     = zeit_luefter      'Startzeit für Timer/Lüfter
 luefter = on                          'Lüfter einschalen
return

#luefter_off
'Lüfter ausschalten
 luefter_aktiv = off                   'Abfragebit Lüfter
 luefter       = off                   'Lüfter ausschalten
return

#vf_on
'Bewegungsmeldersignal Vorflur
 timer_led_vf   = zeit_licht_led       'Timervariable für LED-Licht Vorflur setzen
 trafo          = on                   'Netzspannung Halogen-Trafo ein
 led_vf         = on                   'LED-Licht Vorflur ein
 led_vf_aktiv   = on                   'Abfragebit LED-Licht Vorflur
return

#vf_off
'Licht Vorflur aus
 led_vf_aktiv   = off                  'Abfragebit LED-Licht Vorflur aus
 led_vf         = off                  'LED-Licht Vorflur aus
 if ((licht_tu_aktiv = off) and (led_fu_aktiv = off)) then trafo = off   'Netzspannung Halogen-Trafo aus
return

#fu_on
'Bewegungsmeldersignal Flur unten
 timer_led_fu   = zeit_licht_led       'Timervariable für LED-Licht Flur unten setzen
 trafo          = on                   'Netzspannung Halogen-Trafo ein
 led_fu         = on                   'LED-Licht Flur unten ein
 led_fu_aktiv   = on                   'Abfragebit LED-Licht Flur unten
return

#fu_off
'Licht Flur unten aus
 led_fu_aktiv   = off                  'Abfragebit LED-Licht Flur unten aus
 led_fu         = off                  'LED-Licht Flur unten aus
 if ((licht_tu_aktiv = off) and (led_vf_aktiv = off)) then trafo = off   'Netzspannung Halogen-Trafo aus
return

#au_on
'Bewegungsmeldersignal außen und Dämmerungssensor
 timer_licht_au = zeit_licht_au        'Timervariable für Außenlicht setzen
 licht_au       = on                   'Außenlicht ein
return

#au_off
'Außenlicht ausschalten
 licht_au_aktiv = off                   'Abfragebit Außenlicht aus
 licht_au =off                          'Außenlicht aus
return

#modem_ok
'Signal Modem erfolgreich initialisiert
 trafo = on
 led_vf = on
 pause 100
 led_vf = off
 trafo = off
 pause 25
return

#modem_fehler
'Signal Modeminitialisierung fehlgeschlagen
 trafo = on
 led_vf = on
 pause 25
 led_vf = off
 pause 25
 led_vf = on
 pause 25
 led_vf = off
 pause 25
 led_vf = on
 pause 25
 led_vf = off
 trafo = off
 pause 25
return

 Antwort schreiben

Bisherige Antworten:

Re: Probleme bei Steuerung mit M-Unit 1.1 (von ogoianer - 11.02.2008 18:13)
    Re: Probleme bei Steuerung mit M-Unit 1.1 (von Uwe - 12.02.2008 20:38)