|
KontakttreiberDie Kontaktanschlüsse CON0 bis CON3 enthalten zwei Sensorleitungen, die von den externen Reedkontakten mit Masse verbunden werden. Die Masseleitung ist dafür einmal direkt und einmal über einen Widerstand von einem Kiloohm nach außen geführt. Der fünfte Pin ist mit einer Spannungsquelle von 12 Volt verbunden, die externe Sensoren versorgen kann.
Die eigentliche Ansteuerung eines Reedkontaktes besteht jeweils aus einem Pullup-Widerstand und einem Kondensator. Solange der Kontakt offen ist, lädt der Kondensator sich auf und der nachgeschaltete Mikrocontroller sieht einen High-Pegel an seinem Schmitt-Trigger-Eingang. Ein geschlossener Kontakt überbrückt den Kondensator mit einem deutlich kleineren Widerstand, wodurch er sich entlädt. Hält dies lange genug an, wechselt der Eingang des Mikrocontrollers auf einen Low-Pegel. Durch die relativ großen Widerstände wirken bei den Vorgängen Zeitkonstanten von 13 beziehungsweise 0,33 Millisekunden. Dies ist ausreichend, um auch stärkere Störsignale auf der Leitung wirksam zu unterdrücken. Schutzdioden in der Stufe verhindern, daß von außen angelegte Spannungsquellen die Eingänge des Mikrocontrollers beschädigen können. Um den Aufbau zu vereinfachen, werden statt der 16 nötigen Einzeldioden 4 Brückengleichrichter benutzt, die aber genauso funktionieren. Falls ein massiver Impuls diese Sicherung überwinden sollte, schützen Widerstände von 10 Kiloohm die Eingänge des Mikrocontrollers vor einem Latchup. Es bietet sich an, die Kontakte nicht direkt sondern über die eingebauten Widerstände von RN4 an die Masse anzuschließen. Der Aufbau reduziert die Störungen noch etwas, außerdem liegen alle dafür benötigten Pins im Stecker direkt nebeneinander. Weitere Hinweise zur den Anschlüssen gibt die Pinbelegung, und wie sich an dem Interface noch andere Sensoren betreiben lassen, ist am Beispiel der Schrankensensoren des Bahnüberganges. Aufbereitung der MeßwerteDie Firmware unterdrückt bei der Auswertung zunächst alle Arten von Störungen, die von der Hardware nicht ausgefiltert werden konnten, außerdem verlängert sie Kontaktereignisse zeitlich. Dies ist nötig, damit die beiden Reedkontakte eines Paares auch noch zusammen ausgewertet werden können, wenn der Zug den Kontakt sehr langsam überquert.
Spätestens nach dieser Stufe sollten die Sensordaten frei von Fehlern sein. Richtungen und RedundanzDie Ergebnisse der Filterung werden abschließend von einem Redundanzmanager ausgewertet. Dieser hat die Aufgabe, die Fahrtrichtung des auslösenden Zuges festzustellen. Dabei werden auch nicht funktionierende Reedkontakte erkannt.
Wahl der ZeitkonstantenDie erste Filterstufe der Kontaktauswertung kann über zwei Konstanten gesteuert werden. Sie entsprechen Zeitangaben, wobei 2,55 Sekunden geteilt durch den Wert die korrespondierende Zeit ergibt. Die erste Konstante c1 legt die Zeitspanne fest, die ein Reedkontakt geschlossen sein muß, bevor die Firmware ihn registriert. Der Wert 128 entspricht einer Zeit von 20 Millisekunden, die Reaktion erfolgt damit fast sofort. Die Zeit kann durch eine kleinere Konstante aber auch verlängert werden, um von der Hardware nicht ausgefilterte Störungen besser zu unterdrücken. Entsprechendes gilt für die zweite Konstante c2. Sie gibt die Zeit an, die zwischen dem Auslösen der beiden Reedkontakte eines Paares maximal vergehen darf. Die Einstellung stellt immer einen Kompromiß dar, der aktuelle Wert von 4 setzt die Zeit auf 0,64 Sekunden.
Die Werte der Konstanten orientiert sich an Erfahrungswerten aus dem Betrieb der Anlage. Falls es nötig sein sollte, können sie im Quellcode der Firmware einfach angepaßt werden. |