1. Einführung
Die folgenden Abschnitte zeigen die Pins, Parameter und Funktionen, die von "kanonischen Geräten" bereitgestellt werden. Alle HAL-Gerätetreiber sollten die gleichen Pins und Parameter bereitstellen und das gleiche Verhalten implementieren.
Beachten Sie, dass nur die Felder <io-type> und <specific-name> für ein kanonisches Gerät definiert sind. Die Felder <device-name>, <device-num> und <chan-num> werden auf der Grundlage der Eigenschaften des realen Geräts festgelegt.
2. Digital Input
Der kanonische Digitaleingang (E/A-Typfeld: "digin") ist recht einfach.
2.1. Pins
- (bit) in
-
Zustand des Hardware-Eingangs.
- (bit) in-not
-
Invertierter Zustand des Eingangs.
2.2. Parameter
Keine
2.3. Funktionen
- (funct) read
-
Lesen der Hardware und Setzen der HAL-Pins "in" und "in-not".
3. Digital Output
Der kanonische digitale Ausgang (engl. output) (E/A-Typfeld: digout
) ist ebenfalls sehr einfach.
3.1. Pins
- (bit) out
-
Wert, der (eventuell invertiert) an den Hardware-Ausgang geschrieben werden soll.
3.2. Parameter
- (bit) invert
-
Wenn TRUE, wird out vor dem Schreiben in die Hardware invertiert.
3.3. Funktionen
- (funct) write
-
Lesen Sie out und invert und stellen Sie die Hardwareausgabe entsprechend ein.
4. Analog Input
Der kanonische Analogeingang (E/A-Typ: adcin
). Dieser wird voraussichtlich für Analog-Digital-Wandler verwendet, die z. B. Spannung in einen kontinuierlichen Wertebereich umwandeln.
4.1. Pins
- (float) Wert
-
Der Hardware-Messwert, skaliert gemäß den Parametern Skala und Offset.
Wert = ((Eingangsmesswert, in hardwareabhängigen Einheiten) * Skala) - Offset
4.2. Parameter
- (Float) Skala (engl. scale)
-
Die Eingangsspannung (oder der Strom) wird mit Skala multipliziert, bevor sie als Wert ausgegeben wird.
- (float) Offset
-
Dieser Wert wird nach Anwendung des Skalenmultiplikators von der Hardware-Eingangsspannung (oder dem Strom) subtrahiert.
- (float) bit_weight
-
Der Wert eines niederwertigen Bits (LSB). Dies ist effektiv die Granularität des Eingangswertes.
- (float) hw_offset
-
Der Wert, der am Eingang anliegt, wenn 0 Volt an den Eingangspin(s) angelegt wird.
4.3. Funktionen
- (funct) read
-
Lesen Sie die Werte dieses analogen Eingangskanals. Dies kann zum Lesen einzelner Kanäle verwendet werden, oder es können alle Kanäle gelesen werden.
5. Analog Output
Der kanonische Analogausgang (E/A-Typ: adcout). Dieser ist für jede Art von Hardware gedacht, die einen mehr oder weniger kontinuierlichen Wertebereich ausgeben kann. Beispiele sind Digital-Analog-Wandler oder PWM-Generatoren.
5.1. Pins
- (float) Wert
-
Der zu schreibende Wert. Der tatsächliche Wert, der an die Hardware ausgegeben wird, hängt von den Parametern Skala und Offset ab.
- (bit) aktivieren (engl. enable)
-
Wenn false, dann wird 0 an die Hardware ausgegeben, unabhängig vom value Pin.
5.2. Parameter
- (float) Offset
-
Dies wird zu dem Wert (engl. value) hinzugefügt, bevor die Hardware aktualisiert wird.
- (Float) Skala (engl. scale)
-
Dies sollte so eingestellt werden, dass eine Eingabe von 1 am value-Pin dazu führt, dass der Analogausgangspin 1 Volt anzeigt.
- (float) high_limit (optional)
-
Wenn bei der Berechnung des an die Hardware auszugebenden Wertes value
offset größer ist als high_limit, wird stattdessen high_limit verwendet. - (float) low_limit (optional)
-
Wenn bei der Berechnung des an die Hardware auszugebenden Wertes value
offset kleiner als low_limit ist, wird stattdessen low_limit verwendet. - (float) bit_weight (optional)
-
Der Wert des niedrigstwertigen Bits (LSB) in Volt (oder mA bei Stromausgängen).
- (float) hw_offset (optional)
-
Die tatsächliche Spannung (oder Stromstärke), die ausgegeben wird, wenn 0 in die Hardware geschrieben wird.
5.3. Funktionen
- (funct) write
-
Dies bewirkt, dass der berechnete Wert an die Hardware ausgegeben wird. Wenn enable false ist, wird 0 ausgegeben, unabhängig von value, scale und offset. Die Bedeutung von "0" ist von der Hardware abhängig. Bei einem bipolaren 12-Bit-A/D kann es z. B. erforderlich sein, 0x1FF (mittlere Skala) an den D/A zu schreiben, um 0 Volt vom Hardware-Pin zu erhalten. Wenn enable true ist, werden Skala, Offset und Wert gelesen und an den ADC ausgegeben (scale (Skala) * value (Wert)) + offset. Wenn enable false ist, dann wird 0 ausgegeben.