Applikation zum Einlesen von max. 16 Analogsignalen. Für jedes Analogsignal läßt sich eine Filterzeit konfigurieren. Bei erkannten Ereignissen können vordefinierte Telegramme versendet werden.
Funktionsübersicht
- Ausgabe von gefiltertem und ungefiltertem Analogrohwert
- einstellbare Filterzeit, um ADC-Rauschen oder Sensorrauschen zu unterdrücken.
- Zwei Grenzwerte je für ansteigende und abfallende Signale. So kann z.B. bei Unterschreiten eines Wertes zuerst eine Warnung ausgegeben werden und später dann eine Aktion veranlasst werden.
Hardwarevoraussetzungen
Knotenhardware mit Analogeingang. Der gemessene Rohwert bezieht sich immer auf die AD-Referenzspannung, d.h. etwaige externe Spannungsteiler fliessen nicht in die Messung ein.
Design und Implementationsdetails
Sämtliche Analogkanäle werden alle 10ms eingelesen. Dies erledigt die Appl_AIn (AIn = Analog IN) Komponente indem sie eine von der Appl_AInCfg-Schicht bereitzustellende Callbackfunktion zum Einlesen des AD-Wertes verwendet. Das heisst, der Analogwert kann aus einem internen AD-Wandler, als auch von einem externen AD-Wandler (z.B. über SPI angebunden) kommen.
Analogwertfilterung
Zur Glättung der Analogwerte wird ein PT1-Filter eingesetzt. Die Filterzeit läßt sich über den Filterkoeffizienten einstellen. Die Berechnungsvorschrift lautet:
[yn] = [xn] + (a * ([yn-1] – [xn]))
a = cFilter * (2^16) mit c = [0.0 .. 1.0]
Berechnung der Filterkoeffizienten a = (t/(T+t)) * (2^16) mit T=10ms und t (Filterzteit) in ms.
Filterzeit t(Filter) |
Filterkoeffizient | |
cFilter | a | |
10ms | 0.5 | 32768 |
100ms | 0.9 | 59578 |
200ms | 0.95 | 62415 |
1000ms | 0.990 | 64887 |
15s | 0.999 | 65492 |
Das nachfolgende Diagramm zeigt die Sprungantwort des Filters bei einem cFilter von 0,99 (entspricht einer Filterung von 1s; X-Achse: Anzahl der 10ms-Zyklen)
Liste unterstützter Ereignisse
Ereignis | Ereignis Nr. |
Beschreibung | typ. Verwendung |
Grenzwert S1 überschritten | 16 | gefilterter Analogwert > Grenzwert S1; in aktuellem Zyklus überschritten (nur einmalige Auslösung) | Grenzwertschalter/ Thermostat |
Grenzwert S2 überschritten | 17 | gefilterter Analogwert > Grenzwert S2; in aktuellem Zyklus überschritten (nur einmalige Auslösung) | Grenzwertschalter |
Grenzwert F1 unterschritten | 18 | gefilterter Analogwert < Grenzwert F1; in aktuellem Zyklus unterschritten (nur einmalige Auslösung) | Grenzwertschalter/ Thermostat |
Grenzwert F2 unterschritten | 19 | gefilterter Analogwert < Grenzwert F2; in aktuellem Zyklus unterschritten (nur einmalige Auslösung) | Grenzwertschalter |
(letztes Analogevent) | 31 | (reserviert; noch nicht in Verwendung) |
DoTable AIn (DoType 0x16)
DoSi | Beschreibung | Typ/ Länge |
Ort | Min/Max /Default |
Auflösung /Einheit |
Datenart |
0x00 | ungefilterter Rohwert (left aligned) |
u16 |
RAM |
1/- | Ctl, Br | |
0x01 | Filterzeit |
u16 |
EEP | -/-/100ms |
2^-16/- |
Cfg, Bw, Br |
0x02 | gefilterter Analogwert (left aligned) |
u16 | RAM | 1/- | Ctl, Br | |
0x03 | EingangAktiv |
u8 | EEP | 0/1/0 |
Cfg, Bw, Br | |
0x04 | AnalogGrenzwert S1 |
u16 | EEP | 0/65535/0 |
1/- | Ctl, Bw, Br |
0x05 | AnalogGrenzwert S2 | u16 | EEP | 0/65535/0 | 1/- | Cfg, Bw, Br |
0x06 | AnalogGrenzwert F1 | u16 | EEP | 0/65535/0 | 1/- | Cfg, Bw, Br |
0x07 | AnalogGrenzwert F2 | u16 | EEP | 0/65535/0 | 1/- |
Cfg, Bw, Br |
Der Parameter „EingangAktiv“ hat nur Auswirkung auf den Versand der Bo-Daten.
BoTable AIn (DoType 0x16)
BoIndex: 0x00
Zykluszeit: 1000ms (fest)
Sperrzeit (Inhibittime): –
Datenlänge: 8Byte
Byte |
Beschreibung |
Byte0..1 | Analogwert (gefiltert) von Kanal0 |
Byte2..3 | Analogwert (gefiltert) von Kanal1 |
Byte4..5 | Analogwert (gefiltert) von Kanal2 |
Byte6..7 | Analogwert (gefiltert) von Kanal3 |
BoIndex: 0x01
Byte |
Beschreibung |
Byte0..1 | Analogwert (gefiltert) von Kanal4 |
Byte2..3 | Analogwert (gefiltert) von Kanal5 |
Byte4..5 | Analogwert (gefiltert) von Kanal6 |
Byte6..7 | Analogwert (gefiltert) von Kanal7 |
BoIndex: 0x02
Byte |
Beschreibung |
Byte0..1 | Analogwert (gefiltert) von Kanal8 |
Byte2..3 | Analogwert (gefiltert) von Kanal9 |
Byte4..5 | Analogwert (gefiltert) von Kanal10 |
Byte6..7 | Analogwert (gefiltert) von Kanal11 |
BoIndex: 0x03
Byte |
Beschreibung |
Byte0..1 | Analogwert (gefiltert) von Kanal12 |
Byte2..3 | Analogwert (gefiltert) von Kanal13 |
Byte4..5 | Analogwert (gefiltert) von Kanal14 |
Byte6..7 | Analogwert (gefiltert) von Kanal15 |