/******************************************************************** USV.c2 C2 programming language Erstellt am : 20.02.2004 Aenderung am : 14.03.2005 Version 1.0 ab 20.02.2004 Autor : © Michael Gierschner WWW.CC2-Haussteuerung.de Beschreibung : Menue- und Anzeigeroutinen fuer Haus- und Heizungssteuerung Belegung des Pfostensteckers des USV-Netzteils: -------------------------------------------------- +-----------+ E=1: Netzspannung aus (P1H) | 1 o o 2 | (P1H) E=1: Akku laden, bzw. Akkubetrieb | | Akkuspannung (0-4V)(AnaEin6) | 3 o o 4 | (P1H) A=1: Netzspannung vorhanden entspricht 0-20V | | GND 4 o--o 6 | GND | | Ub | 7 o--o 8 | Ub: Betriebsspannung CC2 | | Achtung: Spannung ohne Sicherung +5V | 9 o--o 10 | +5V für Externe Geräte +-----------+ ********************************************************************/ //------------ Funktionen -------------------- // function akkuspannung () // function akkupufferungEnde () // thread netzueberwachung const ANA_AKKU_SPG = 6; // Analog-Eingang fuer Ueberwachung Akkuspannung const DIG_NETZ_SPG = 10; // P1H: Eingang Netzspannung Ein const DIG_PUFFERUNG_EIN = 13; // P1H: Ausgang Pufferung aktiv (Betrieb = EIN) const DIG_AKKU_TEST = 14; // P1H: Ausgang Netzspannung AUS (Betrieb = AUS) const U_AKKU_MIN = 11.5; // Entladeschlussspannung des Akkus im gepufferten // Betrieb const U_AKKU_GRENZ = 10.5; // Diese Spannung des Akkus sollte nicht unter- // schritten werden byte Flag_NetzAus; // Flag signalisiert Netzspannungsausfall int Flag_U_Akku_Min; float Batteriespannung; function akkuspannung () //------------------------------------------------------------------------------ // Messen und ueberwachen der Akkuspannung. // Bei Unterschreitung der Mindestspannung des Akkus wird das Flag // "Flag_U_Akku_Min" gesetzt. Die nun noch verbleibende Zeit sollte zur // Speicherung wichtiger Daten im EEProm und zum einstellen eines sicheren // Anlagenzustandes genutzt werden. // // Bei Unterschreitung des unteren Grenzwertes wird die Pufferung automatisch // beendet. // //------------------------------------------------------------------------------ { Batteriespannung = ports.adc (6); Batteriespannung = Batteriespannung/1024 * 4.096 * 133/33; } function akkupufferungEnde () { ports.set ( DIG_PUFFERUNG_EIN, 0); // Relais Akku ausschalten } thread netzueberwachung //------------------------------------------------------------------------------ // Ueberwachen der Akkuspannung bei Netzspannungsausfall. // Bei Unterschreitung der Mindestspannung des Akkus wird das Flag // "Flag_U_Akku_Min" gesetzt. Die nun noch verbleibende Zeit sollte zur // Speicherung wichtiger Daten im EEProm und zum einstellen eines sicheren // Anlagenzustandes genutzt werden. // // Bei Unterschreitung des unteren Grenzwertes wird die Pufferung automatisch // beendet. // //------------------------------------------------------------------------------ { if (ports.get (DIG_NETZ_SPG) != 0) { sleep 5; if (ports.get (DIG_NETZ_SPG) != 0) { sleep 2; if (ports.get (DIG_NETZ_SPG) != 0) { // Netzspannung ausgefallen Flag_NetzAus = Flag_NetzAus +1; if (Flag_NetzAus > 5) { plm.beep (plm.TONE_A); sleep 2000; plm.beep (plm.TONE_OFF); } akkuspannung (); if ( Batteriespannung < U_AKKU_GRENZ ) { // Pufferung beenden weil Batteriespannung zu klein akkupufferungEnde (); // Wenn die Netzspannung wieder vorhanden ist, wird die CC2 mit // Spannung versorgt und startet neu. } if ( Batteriespannung < U_AKKU_MIN ) Flag_U_Akku_Min = constant.TRUE; else Flag_U_Akku_Min = constant.FALSE; sleep 5000; } else Flag_NetzAus = 0; } else Flag_NetzAus = 0; } else Flag_NetzAus = 0; } function init (byte aktiviereNetzueberwachung) { Flag_U_Akku_Min = constant.FALSE; ports.set ( DIG_PUFFERUNG_EIN, 1); // Relais Akku Einschalten ports.set ( DIG_AKKU_TEST, 0 ); // Relais Netzspannung Aus, Kontakt geschlossen ports.deact (DIG_NETZ_SPG); // Port vor Benutzung als Eingang deaktivieren if ( aktiviereNetzueberwachung==1) run netzueberwachung; }