Update vom 10.05.15

Dependencies:   FreescaleIAP MODSERIAL mbed monitor timer0

Fork of 18_PT1000 by Temp27

Files at this revision

API Documentation at this revision

Comitter:
rs27
Date:
Sun Aug 23 10:18:54 2015 +0000
Parent:
20:b85406f52de3
Commit message:
Version 1

Changed in this revision

info.txt Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
--- a/info.txt	Mon May 11 17:32:06 2015 +0000
+++ b/info.txt	Sun Aug 23 10:18:54 2015 +0000
@@ -1,15 +1,22 @@
-1.  Nottaster NICHT gedrückt = Öffner (Klemmen,2,3,4) geschlossen / Summer und Alarm-LED inaktiv
-2.  Nottaster gedrückt = Öffner (Klemmen1,2,3,4) offen / Summer und Alarm-ELD aktiv (bis der Nottaster zurückgestellt wird)
-3.  KABA AML OUT1 NICHT aktiv = Öffner geschlossen / rote LED (Verriegelt) EIN / grüne LED (Entriegelt) AUS
-4.  KABA AML OUT1 aktiv = Öffner offen / rote LED (Verriegelt) AUS / grüne LED (Entriegelt) EIN
+Anpassung der Software für das NTB1880-IX Board
+
+I/O Belegung
+•   IN1: Ext. Öffnugsbefehl (Taster)
+•   OUT5: Türöffner
+•   OUT:6 (Relais): Tür-/Torsteuerung
+
+Funktion: 
+•   IN1 auf 0 = OUT5+6 AUS
+•   IN1 auf 1 = OUT5+6 EIN plus 5 Sekunden Ausschaltverzögerung
 
-IN1 Sabotageschaltet
-IN2 Nottaster
-IN3 Schlüsselschalter S1    LABA ALM OUT1
-IN4 Schlüsselachalter S2
+
+IN1 Taster Befehl für Türöffner
+IN2 nicht belegt
+IN3 nicht belegt
+IN4 nicht belegt
 
-OUT1  Summer
-OUT2  LED rot
-OUT3  LED grün
-OUT4  LED gelb
-OUT5  Relais    KABA ALM  
\ No newline at end of file
+OUT1  nicht belegt
+OUT2  nicht belegt
+OUT3  nicht belegt
+OUT4  Türöffner
+OUT5  Relais: Tür / Torsteuerung
\ No newline at end of file
--- a/main.cpp	Mon May 11 17:32:06 2015 +0000
+++ b/main.cpp	Sun Aug 23 10:18:54 2015 +0000
@@ -1,6 +1,7 @@
-// Version 1.0   erstellt am 25.04.2015
-// 01.05.15 den Eingäng 4 auf 2 verlegt
-//          den Eingang 5 auf 1 verlegt
+// Version 1.0   erstellt am 22.08.2015
+//
+// IN1 auf 0 = OUT5+6 AUS
+// IN1 auf 1 = OUT5+6 EIN plus 5 Sekunden Ausschaltverzögerung
 
 #include "mbed.h"
 #include "main.h"
@@ -8,14 +9,6 @@
 #include "monitor.h"
 #include "MODSERIAL.h"
 
-// timer 2 => optischer Alarm Periode = 500 entspricht Blinkfrequnz von 1 Selunde
-#define OA_PERIODE 500
-// timer 3 => Minimale Zeit für den akustischen Alarm in ms >> soll 10000 entspricht 10 Sekunden
-#define AA_NIN 10000
-// timer 4 => Verzögerung für des Entriegeln des Tasters. In dieser Zeit wird dann kein neuer
-// akustischer Alarm ausgelöst
-#define AA_DELAY 10000
-
 #define NEED_CONSOLE_OUTPUT 1   // Set this if you need debug messages on the console
                                 // mit Debug wird die Programmgröße von 32,8k um ca. 300 Byte vergrößert
                                 // dies ist nicht bedeutend, aber auch die Ausführungszeit der Ausgabebefehle
@@ -42,15 +35,15 @@
 DigitalOut LED(PTE30);
 
 DigitalOut OUT1(PTC6);      // nicht belegt
-DigitalOut OUT2(PTC5);      // LED Rot
-DigitalOut OUT3(PTC4);      // LED Grün
-DigitalOut OUT4(PTC3);      // LED Gelb
-DigitalOut OUT5(PTC2);      // Summer
-DigitalOut OUT6(PTC1);      // Relais
+DigitalOut OUT2(PTC5);      // nicht belegt
+DigitalOut OUT3(PTC4);      // nicht belegt
+DigitalOut OUT4(PTC3);      // Türöffner                                schaltet gegen GND max. 500mA
+DigitalOut OUT5(PTC2);      // nicht belegt (Summer)
+DigitalOut OUT6(PTC1);      // Relais: Tür / Torsteuerung               Relais Kontakt als Ausgang
 
-DigitalIn IN1(PTC7);        // Notaus, schaltet gegen 24V =>            24V oder 1 ist der Ruhezustand
-DigitalIn IN2(PTD4);        // Sabotageschalter, schaltet gegen 24V =>  24V oder 1 ist Ruhezustand
-DigitalIn IN3(PTD5);        // KABA Türöffner Signal =>                 24V oder 1 ist Ruheezustand
+DigitalIn IN1(PTC7);        // Taster Türöffnersignal                   24V oder 1 ist der Ruhezustand
+DigitalIn IN2(PTD4);        // nicht belegt  
+DigitalIn IN3(PTD5);        // nicht belegt                  
 DigitalIn IN4(PTD6);        // nicht belegt                             
 DigitalIn IN5(PTD7);        // nicht belegt 
 
@@ -62,8 +55,7 @@
 bool in;
 
 struct di_struct in1;      // Eingang 1
-struct di_struct in2;      // Eingang 2
-struct di_struct in3;      // Eingang 3
+
 
 //------------------------------------------------------------------------------
 //
@@ -82,30 +74,15 @@
     //--------------------------------------------------------------------
     //  Anfangswerte setzen
 
-    in1.old = 1;        // 1 im Ruhezustand
-    in1.aktiv = 0;      
-    in1.filter = 0;
-    in1.optischer_alarm = 0;
-    in1.summer = 0;
-    
-    in2.old = 1;        // 1 im Ruhezustand
-    in2.aktiv = 0;      
-    in2.filter = 0;
-    in2.optischer_alarm = 0;
-    in2.summer = 0;
-
-    in3.old = 1;        // 1 im Ruhezustand
-    in3.aktiv = 0;      
-    in3.filter = 0;
-    
+    in1.old = 1;        // 1 im Ruhezustand      
+    OUT4 = 0;
+    OUT6 = 0; 
+      
     //--------------------------------------------------------------------
     // Softwaretimer für die Zeitsteuerung anlegen
 
-    down_timer.SetCountdownTimer(0,1,500);      // 1 ms Timer * 500 => ergibt 500 ms
-    down_timer.SetCountdownTimer(1,1,100);      // 1 ms Timer * 10 => ergibt 10 ms, 100 ms für Einschaltverzögerung
-    down_timer.SetCountdownTimer(2,1,0);        // 1 ms Timer => reserviert für optischen Alarm
-    down_timer.SetCountdownTimer(3,1,0);        // 1 ms Timer => reserviert für akustischen Alarm
-    down_timer.SetCountdownTimer(4,1,0);        // 1 ms Timer => reserviert für nach Entriegelung
+    down_timer.SetCountdownTimer(0,1,500);      // 1 ms Timer * 500 => ergibt 500 ms für die LED
+    down_timer.SetCountdownTimer(1,1,10);       // 1 ms Timer * 10  => ergibt 10 ms für die Tasterabfrage
     
     //--------------------------------------------------------------------
     // Schleife fuer die Datenerfassung
@@ -121,7 +98,8 @@
         //-------------------------------------------
         // timer 0 steuert die LED auf dem Board mit der Takrate 0,5 Sekunden
 
-        if (down_timer.GetTimerStatus(0) == 0) {
+        if (down_timer.GetTimerStatus(0) == 0) 
+        {
             down_timer.SetCountdownTimer(0,1,500);
             LED = !LED;
             
@@ -143,157 +121,43 @@
         
             in = IN1;
             
-            
             if(!in && in1.old)       // Öffner im Ruhezustand 24 V >> durch Drücken wird eine neg. Flanke erzeugt
-            {
+            {                        
                 in1.old = 0;
-                in1.aktiv = 1;       // Taster ist betätigt
-                in1.optischer_alarm = 1;
-                in1.summer = 1;
-                down_timer.SetCountdownTimer(3,1,AA_NIN);  // Zeit für Softtimer auf 10 Sekunden setzen
                 DEBUG("\n negative Flanke IN1 \n");
             }
 
-            if (in && !in1.old) {     // Öffner im Ruhenzustand 24 V >> durch Rückstellen enteht eine pos. Flanke
-                in1.old = 1;
-                in1.aktiv = 0;        // Taster ist zurückgesetzt
-                
-                in1.summer = 0;
-                down_timer.SetCountdownTimer(4,1,AA_DELAY);  // Zeit für Entriegelung, Haube innerhalb von 10 Sekunden schließen
-                DEBUG("\n positve Flanke IN1 \n");
-            }
-            
-            // optischer Alarm ausschalten, wenn IN3 wieder 0 bekommt ==> Quittierung
-
-            if (in1.optischer_alarm && in3.aktiv && !in1.aktiv) 
+            if (in && !in1.old)      // Öffner im Ruhenzustand 24 V >> durch Rückstellen enteht eine pos. Flanke
             {
-                in1.optischer_alarm = 0;
-                DEBUG("\n IN1 mit IN3 quittiert \n");
-            }
-
-
-            //------------------------------------------------
-            // IN2 Sabotageschalter, 24V ist Ruhezustand
-            // wird mit der negativen Flanke aktiviert
-            // das Signal muss mindestens 10ms anliegen, damit es akzeptiert wird
-            
-            in = IN2;
-            
-            
-            if(!in && in2.old)          // Eingang neg. Flanke
-            {    
-                in2.old = 0;            // 0 im aktivierten Modus
-                in2.aktiv = 1;          // Eingang ist aktiv
-                //in2.optischer_alarm = 1;
-                in2.summer = 1;      // am 11.05.15 entfernt, da Summer weiter untern aktiviert wird
-                //down_timer.SetCountdownTimer(3,1,AA_NIN);  // Zeit für Softtimer auf 10 Sekunden setzen
-                DEBUG("\n negative Flanke IN2 \n");
+                in1.old = 1;
+                down_timer.SetCountdownTimer(3,1,5000);  // Zeit für Abschaltverzögerung auf 5 Sekunden setzen
+                DEBUG("\n positve Flanke IN1 \n");
             }
 
-            if (in && !in2.old)         // Eingang mit pos. Flanke
-            {    
-                in2.old = 1;            // 1 im Ruhezustand   
-                in2.aktiv = 0;          // Eingang ist inaktiv
-                in2.summer = 0;
-                DEBUG("\n positve Flanke IN2 \n");
-            }
-/*
-            if (in2.aktiv && !in2.summer && !in1.summer && (down_timer.GetTimerStatus(4) == 0))
-            {
-                in2.summer = 1; 
-                down_timer.SetCountdownTimer(3,1,AA_NIN);  // Zeit für Softtimer auf 10 Sekunden setzen ( zum Testen auf 2 Sek. gesetzt )  
-                DEBUG("\n IN2 Summer aktiviert \n");
-            }
-            
-            // nur zurückschalten, wenn IN3 wieder 1 ==> Quittierung
-
-            if (in2.optischer_alarm && in3.aktiv) {
-                in2.optischer_alarm = 0;
-                DEBUG("\n IN2 mit IN3 quittiert \n");
-            }
-*/
-            //------------------------------------------------
-            // IN3 Signalstation, Öffner => 1 ist Ruheezustand
-
-            in = IN3;
-
-            if(in && !in3.old)        // Eingang pos. Flanke
-            {   
-                in3.old = 1;
-                in3.aktiv = 0;        // Eingang ist Ruhezustand
-                
-            }
-
-            if (!in && in3.old)       // Eingang mit neg Flanke
-            {
-                in3.old = 0;
-                in3.aktiv = 1;        // Eingang ist aktiv    
-            }
-
-
             //---------------------------------------------------------------------------------------------------------------------------------------
-            // Die Eingänge sind nun gelesen, jetzt kommt das Steuern der Ausgaänge
+            // Die Eingänge sind nun gelesen, jetzt kommt das Steuern der Ausgänge
             //
             
             //------------------------------------------------
-            // Rot/Grüne LED (verriegelt/entriegelt):
-            // rot      Tor ist verriegelt
-            // grün     Tor ist entriegelt
-            
-            //  2. IN3 auf 0 = OUT2 aus und OUT3 ein   Rot aus / Grün an   (entriegelt)
-            //  3. IN1 auf 1 = OUT2 aus und OUT3 ein   Rot aus / Grün an   (entriegelt)
+            // IN1 auf 0 = OUT4+6 AUS
+            // Nach Ablauf der Ausschaltverzögerung wird der Ausgang wieder auf 0 geschaltet
             
-            if (in3.aktiv || in1.aktiv) {          
-                OUT2 = LED_AUS;
-                OUT3 = LED_EIN;
-            }
-            else 
-            //  1. IN3 auf 1 = OUT2 ein und OUT3 aus   Rot an / Grün aus   (verriegelt)
-            {   
-                OUT2 = LED_EIN;
-                OUT3 = LED_AUS;
-            }            
-            
-            //------------------------------------------------
-            //  Gelbe LED (optischer Alarm):
-
-            if (in1.optischer_alarm)  // sobald der optische Alarm aus Eingang 1 akiviert wurde, diesen in Blinkmode schalten
-            {    
-                if (down_timer.GetTimerStatus(2) == 0) 
-                {
-                    down_timer.SetCountdownTimer(2,1,OA_PERIODE);  // Zeit für Softtimer auf eine Sekunde setzen
-                    OUT4 = !OUT4;
-                }
-            } 
-            else 
-            {
-                OUT4 = LED_AUS;
+            if (!in1.old && (down_timer.GetTimerStatus(3) == 0)) 
+            {          
+                OUT4 = 0;
+                OUT6 = 0;
             }
 
             //------------------------------------------------
-            // Summer (OUT5 +24V)
-
-
-            if (in1.summer || in2.summer || (down_timer.GetTimerStatus(3) != 0))  // sobald der Eingang 1 oder Eingang 2 akiviert ist oder der Timer
-            {                                                                     // noch aktiv ist, den Summer aktivieren
-               DEBUG("\n Summer 1 = %d Summer 2 = %d \n",(uint8_t)in1.summer,(uint8_t)in2.summer);
-               OUT5 = 1;
-            } 
-            else 
-            {
-                OUT5 = 0;
-            }
+            // IN1 auf 1 = OUT4+6 EIN plus 5 Sekunden Ausschaltverzögerung 
+            // Die Ausschaltverögerung wirkt auf das Ausschalten nicht auf das Einschalten
+                       
+            if (in1.old)
+            {   
+                OUT4 = 1;
+                OUT6 = 1;
+            }            
             
-            //------------------------------------------------
-            // Relais K1:
-            // Der Kontakt des Nottasters wird weitergegeben
-
-            if (in1.aktiv) {  // 1.  IN1 auf 0 = OUT6 (K1) ein
-                OUT6 = 1;
-            } else {          // 2.  IN1 auf 1 = OUT6 aus
-                OUT6 = 0;
-            }
-
         } // end if (downtimer ...
         
     } // end while
--- a/main.h	Mon May 11 17:32:06 2015 +0000
+++ b/main.h	Sun Aug 23 10:18:54 2015 +0000
@@ -9,10 +9,7 @@
 
 struct di_struct {
     bool  aktiv;                                // Flag zur Steuerung
-    bool  old;                                  // alter Wert vom Eingang für Flankenerkennung
-    bool  filter;                               // ein Flankengetriggertes Signal muss mindestens 10ms anliegen
-    bool  optischer_alarm;                      // für die Bestätigung von IN3
-    bool  summer;                               // Flag für Zeitsteuerung des Summers
+    bool  old;                                  // alter Wert vom Eingang für Flankenerkennung                              // Flag für Zeitsteuerung des Summers
 };
 
 #endif