
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, das ist ein schönes Projekt. Anregungen und Hinweise habe ich unten eingefügt. Weitere Hinweise findest Du auf meiner homepage. MfG ManfrdW > Hallo, > > ich habe ein Problem mit der C-Control Station. > > Mein Programm ist ein Wassersteuerungssystem mit dem 2 Pumpen und ein Magnetventil gesteuert werden. Es gibt 5 Schalter für 3 Tanks. 2x Tank oben und 3x Tank unten. > Zusätzlich zu den Led´s K1 und K2 steuere ich die Led´s über den F-Tasten F1 und F2 an. > Hier liegt scheinbar der Fehler. > Wenn ich die Led´s über F1 und F2 nicht ansteuere, läuft alles perfekt. Dann läuft die Steuerung nur in Automatik. > Steuere ich sie aber an und es werden beide Pumpen gleichzeitig eingeschaltet oder es läuft die Eine und die Andere wird dazugeschaltet, resettet die C-Control station. > Was kann das sein ? Bei Hand schaltest Du ein ohne den Automatikbetrieb zu unterbrechen. Dadurch schaltet die Pumpe ein und aus und verursacht heftige Störungen. > > Die Station läuft im Test ohne Pumpen und ohne Magnetventil Das deutet darauf hin, dass bei Test Störeinstreuung der Pumpen entfällt. > > Hier das Programm > > '====================== > 'Pumpensteuerungssystem > '====================== > > 'Wasserbedarfssteuerung für mein Haus in Sri Lanka > '1. Es gibt kein Wasserleitungssystem in der Gegend ! > '2. Das System ist als überdruckloses Schwerkraftsystem ausgelegt, da es immer wieder Stromausfälle gibt. > '3. Es gibt einen Brunnen, zwei 1000 Liter Tanks auf dem Dach(Brunnen- und Regenwasser) und einen 5000 Liter Tank in der Erde (Sisterne). > '4. Auf dem Dach wird Regenwasser aufgefangen und in der Sisterne gespeichert. > ' > 'Wassernutzung: Brunnenwasser --- zum waschen und duschen. > ' Regenwasser --- zur Toilettenspülung und Gartenbewässerung > ' Trinkwasser --- wird in 20 Liter Flaschen gekauft > '====================== > 'Die Aufgabe: > '1. Zwei Arten von Wasser müssen in zwei verschiedene Tanks auf dem Dach gepumpt werden, sobald die Sensoren "leer" melden. > '2. Ein überlaufen muß verhindert werden. Pumpe "aus" wenn die Sensoren "voll" melden. > '3. Falls inder Sisterne kein Regenwasser mehr vorhanden ist, muß der Regenwassertank mit Brunnenwasser gefüllt werden. > '4. Dazu gibt es eine Verbindung zwischen dem Brunnenwassertank und dem Regenwassertank mit steuerbarem Magnetventil. > ' Davor sitzt ein Rückschlagventil, das verhindert daß das Brunnenwasser verunreinigt wird. > > 'Definitionen > define BWToben port[1] 'Schalter im Brunnenwassertank (oben) > define BWTunten port[2] 'Schalter im Brunnenwassertank (unten) > define RWToben port[3] 'Schalter im Regenwassertank (oben) > define RWTunten port[4] 'Schalter im Regenwassertank (unten) > define Sisterne port[5] 'Schalter in der Sisterne (unten) > define Ventil port[6] 'Relais zum Schalten eines Ventils zwischen Brunnenwassertank und Regenwassertank (Falls die Sisterne leer ist) > define PumpeB port[7] 'Relais zum Schalten der Brunnenwasserpumpe > define PumpeR port[8] 'Relais zum Schalten der Regenwasserpumpe > define F1 port[9] > define F2 port[10] 'F1..F3 Tasten zur Handsteuerung der Relais > define F3 port[11] > define LEDB port[13] 'Led zur Anzeige "Brunnenwasserpumpe angeschaltet" (läuft paralel zur Led K1) > define LEDR port[14] 'Led zur Anzeige "Regenwasserpumpe angeschaltet" (läuft paralel zur Led K2) > define LEDV port[15] 'Led zur Anzeige "Speisung des Regenwassertank aus dem Brunnenwassertank angeschaltet" (Ventil offen falls Sisterne leer) > define TAKT port[16] 'Blinken der Led über Taste F4. Kontrolle: Programm läuft. > > 'INITIALISIERUNG ----------------- > Ventil = on > PumpeB = off > PumpeR = off 'alle Relais und Led´s ausgeschalten > LEDB = off > LEDR = off > LEDV = off > TAKT = off > > 'PROGRAMM HAUPTSCHLEIFE --------- > #loop > if F1 = off then gosub BWTfuellen 'Handsteuerung des Relais "PumpeB" Hier springst Du mit gosub, nach Rückkehr wird der folgende Automatik-Betrieb Sisterne auch bearbeitet. Besser ist goto zu verwenden, um bei Hand den Automatik-Betrieb zu unterbinden. > if F2 = off then gosub RWTfuellen 'Handsteuerung des Relais "PumpeR" > if F3 = off then gosub Ventiloeffnen 'Handsteuerung des Relais "Ventil" Automatik-Betrieb evt. besser if Sisterne = ON then gosub RW else KeinRW > if Sisterne = on then gosub RW 'Regenwasser in der Sisterne vorhanden > if Sisterne = off then gosub keinRW 'kein Regenwasser in der Sisterne vorhanden > TAKT = on ' > pause 5 ' > TAKT = off 'Blinken bei jedem Schleifendurchlauf zur Kontrolle: Programm läuft. > pause 50 ' > goto loop > > 'UNTERPROGRAMME -------------------- > > #RW 'Regenwasser in der Sisterne vorhanden > Ventil = on 'Ventil ausschalten > LEDV = off 'Anzeige Ventil ausschalten > if BWToben = off and BWTunten = off then PumpeB=on 'Brunnenwassertank leer, PumpeB anschalten Ist es sinnvoll beide Schalter abzufragen? Ich empfehle, für die Pumpe nur den einen Schalter abzufragen. Vorweg aber die Plausibilität der Schalter auszuwerten, also nicht einzuschalten, wenn ein Schalter festhängt. > if PumpeB=on then LEDB=on 'zugehörige Led anschalten Kürzer wäre LEDB = PumpeB > if BWToben = on and BWTunten = on then PumpeB=off 'Brunnenwassertank voll, PumpeB ausschalten > if PumpeB=off then LEDB=off 'zugehörige Led anschalten > if RWToben = off and RWTunten = off then PumpeR=on 'Regenenwassertank leer, PumpeR anschalten > if PumpeR=on then LEDR=on 'zugehörige Led anschalten > if RWToben = on and RWTunten = on then PumpeR=off 'Regenenwassertank voll, PumpeR ausschalten > if PumpeR=off then LEDR=off 'zugehörige Led anschalten > return > > #keinRW 'Kein Regenwasser in der Sisterne vorhanden > Ventil = off 'Tankausgleichsventil öffnen > LedV = on 'zugehörige Led anschalten > PumpeR = off 'Falls noch eingeschaltet: Regenwasserpumpe ausschalten > LEDR =off 'zugehörige Led ausschalten > if BWToben = off and BWTunten = off then PumpeB=on 'Brunnenwassertank leer, PumpeB anschalten > if PumpeB=on then LEDB=on 'zugehörige Led anschalten > if BWToben = on and BWTunten = on then PumpeB=off 'Brunnenwassertank voll, PumpeB ausschalten > if PumpeB=off then LEDB=off 'zugehörige Led ausschalten > return > > #BWTfuellen 'Handsteuerung Brunnenwasserpumpe > PumpeB = on 'Brunnenwasserpumpe einschalten > LEDB = on 'zugehörige Led anschalten > if F1 = off then goto BWTfuellen 'solange die Taste gedrückt ist weiterpumpen Das Unterprogramm wird angesprungen, wenn F1 = OFF Der Zustand F1 = ON ist hier also nicht möglich und die folgenden Befehle werden nicht bearbeitet. > PumpeB = off 'Brunnenwasserpumpe ausschalten > LEDB = off 'zugehörige Led ausschalten > return > > #RWTfuellen 'Handsteuerung Regenwasserpumpe > if sisterne = off then return 'Wenn Sisterne leer kein pumpen erlauben > PumpeR = on 'Regenwasserpumpe einschalten > LEDR = on 'zugehörige Led anschalten > if F2 = off then goto RWTfuellen 'solange die Taste gedrückt ist weiterpumpen > PumpeR = off 'Regenwasserpumpe ausschalten > LEDR = off 'zugehörige Led ausschalten > return > > #Ventiloeffnen 'Handsteuerung Ventil > Ventil = off 'Ventil öffnen > LEDV = on 'zugehörige Led anschalten > if F3 = off then goto Ventiloeffnen 'solange die Taste gedrückt ist das Ventil geöffnet lassen. > Ventil = on 'Ventil schließen > LEDV = off 'zugehörige Led ausschalten > return > Meine Homepage: http://manfred.wilzeck.de |
| Antwort schreiben |