FIELDBUS_DWORD_TO_SIGNAL_SCALED¶
Einleitung¶
Der Funktionsblock FIELDBUS_DWORD_TO_SIGNAL_SCALED dient der Konvertierung eines Feldbus-DWORD-Signals in einen skalierten LREAL-Wert. Er prüft die Gültigkeit des Eingangssignals anhand eines vordefinierten Bereichs und berechnet bei gültigem Signal den Ausgangswert durch Multiplikation mit einem Skalierungsfaktor und Addition eines Offsets. Bei ungültigem Signal wird der Ausgang auf 0 gesetzt und die Gültigkeitsflagge auf FALSE gesetzt.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Typ | Beschreibung |
|---|---|---|
| INIT | EInit | Initialisierungsanforderung; übergibt Skalierungsparameter |
| REQ | Event | Normale Ausführungsanforderung zur Verarbeitung des Eingangs |
Ereignis-Ausgänge¶
| Ereignis | Typ | Beschreibung |
|---|---|---|
| INITO | EInit | Bestätigung der Initialisierung |
| CNF | Event | Bestätigung der Ausführung; liefert skalierten Ausgang und Gültigkeitsflagge |
Daten-Eingänge¶
| Name | Typ | Initialwert | Beschreibung |
|---|---|---|---|
| IN | DWORD | NOT_AVAILABLE_DWM | Eingangswert vom Feldbus |
| SCALE | LREAL | LREAL#1.0 | Skalierungsfaktor (Multiplikator) |
| OFFSET | DINT | DINT#0 | Offset, der nach der Skalierung addiert wird |
Daten-Ausgänge¶
| Name | Typ | Initialwert | Beschreibung |
|---|---|---|---|
| OUT | LREAL | LREAL#0.0 | Skalierter Ausgangswert |
| VALID | BOOL | FALSE | TRUE, wenn das Eingangssignal gültig ist |
Adapter¶
Keine Adapter vorhanden.
Funktionsweise¶
Der Funktionsblock besitzt zwei Zustände: INIT und REQ.
- INIT-Zustand: Wird durch das Ereignis INIT ausgelöst. Der zugehörige Algorithmus ist leer, d.h. es werden keine weiteren Aktionen durchgeführt. Der Ausgang INITO bestätigt den Abschluss der Initialisierung.
- REQ-Zustand: Wird durch das Ereignis REQ ausgelöst. Der Algorithmus REQ führt folgende Schritte aus:
- Prüfung, ob der als UDINT interpretierte Eingangswert IN kleiner oder gleich der Konstanten
VALID_SIGNAL_DWist. - Ist diese Bedingung erfüllt, gilt das Signal als gültig:
OUTwird berechnet als:UDINT_TO_LREAL(DWORD_TO_UDINT(IN)) * SCALE + DINT_TO_LREAL(OFFSET)VALIDwird aufTRUEgesetzt.
- Andernfalls (Signal ungültig):
OUTwird auf0.0gesetzt.VALIDwird aufFALSEgesetzt.
- Anschließend wird das Ereignis CNF ausgelöst, das die Ergebnisse (OUT, VALID) bereitstellt.
Die Konstanten NOT_AVAILABLE_DWM und VALID_SIGNAL_DW stammen aus importierten Bibliotheken und legen fest, welche DWORD-Werte als „nicht verfügbar“ bzw. als „gültig“ betrachtet werden.
Technische Besonderheiten¶
- Der Funktionsblock verwendet eine Bereichsprüfung mittels Vergleich von
DWORD_TO_UDINT(IN)mitVALID_SIGNAL_DW. Dabei wird vorausgesetzt, dass gültige Feldbussignale innerhalb eines bestimmten Zahlenbereichs liegen. - Die Konvertierung erfolgt ohne Gleitkommafehleranfälligkeit, da zuerst die Umwandlung von DWORD in UDINT und dann in LREAL erfolgt.
- Der Skalierungsfaktor
SCALEund der OffsetOFFSETkönnen während der Initialisierung oder Laufzeit gesetzt werden, werden aber nur im REQ-Algorithmus verwendet. - Der Baustein ist als SimpleFB implementiert und eignet sich für zyklische Verarbeitung.
Zustandsübersicht¶
| Zustand | Auslöser | Aktion | Ausgang |
|---|---|---|---|
| INIT | INIT-Ereignis | Algorithmus INIT (leer) | INITO |
| REQ | REQ-Ereignis | Algorithmus REQ (Berechnung und Gültigkeitsprüfung) | CNF |
Der Funktionsblock benötigt keine Zustandsübergänge zwischen INIT und REQ – beide Zustände werden direkt durch ihre jeweiligen Ereignisse gestartet.
Anwendungsszenarien¶
- Landwirtschaftliche Feldbus-Steuerungen: Umwandlung von rohen DWORD-Sensorwerten (z.B. Drehzahlen, Drücke) in physikalische Einheiten unter Berücksichtigung von Sensorcharakteristiken.
- Skalierung von analogen Werten: Wenn ein Feldbusgerät einen 32-Bit-Rohwert liefert, der erst mit einem Faktor und Offset in eine normierte Größe (z.B. 0-100%) umgerechnet werden muss.
- Signalvalidierung: Nur gültige Signale (innerhalb eines definierten Bereichs) werden weiterverarbeitet; bei ungültigen Werten wird ein definierter Nullwert ausgegeben.
Vergleich mit ähnlichen Bausteinen¶
- FIELDBUS_DWORD_TO_SIGNAL: Ein ähnlicher Baustein ohne Skalierungsmöglichkeit, der den Rohwert direkt als LREAL ausgibt.
- FIELDBUS_DWORD_TO_SIGNAL_SCALED bietet zusätzlich die Parameter
SCALEundOFFSETfür flexible Umrechnung. - Ereignisgesteuerte Konverter: Andere Bausteine nutzen möglicherweise eine andere Validierungslogik (z.B. Bitmasken) oder unterstützen unterschiedliche Feldbustypen.
Der vorliegende Baustein kombiniert Signalvalidierung mit einer einfachen linearen Transformation, was ihn für viele Anwendungen geeignet macht.
Fazit¶
Der FIELDBUS_DWORD_TO_SIGNAL_SCALED ist ein kompakter und wiederverwendbarer Funktionsblock zur Verarbeitung von Feldbussignalen. Er ermöglicht eine zuverlässige Gültigkeitsprüfung und gleichzeitige Skalierung in einem Schritt. Durch die klare Trennung von Initialisierung und Verarbeitung eignet er sich sowohl für Einmal- als auch für zyklische Aufrufe in Automatisierungssystemen, insbesondere in der Landtechnik.