F_PHYS_TO_RAW¶
Einleitung¶
Der Funktionsblock F_PHYS_TO_RAW wandelt einen physikalischen REAL-Wert in einen ISOBUS-Rohwert (UDINT) um. Dabei werden Sättigungsgrenzen beachtet und Über- bzw. Unterlaufalarme ausgegeben. Die Umrechnung basiert auf der ISOBUS-Formel: Anzeige = (Rohwert + Offset) * Skalierung. Die inverse Berechnung lautet: Rohwert = UDINT(DINT(physikalischer Wert / Skalierung) - Offset).
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Beschreibung |
|---|---|
| REQ | Anforderung zur Umrechnung des physikalischen Wertes. Wird mit den Parametern rPhys und stObj ausgeführt. |
Ereignis-Ausgänge¶
| Ereignis | Beschreibung |
|---|---|
| CNF | Bestätigung, dass die Umrechnung abgeschlossen ist. Liefert den berechneten Rohwert sowie die Alarmflags xOver und xUnder. |
Daten-Eingänge¶
| Variable | Typ | Beschreibung |
|---|---|---|
| rPhys | REAL | Der physikalische Wert, der umgerechnet werden soll. |
| stObj | NumericObjectPool_S | Struktur mit den Parametern i32Offset (DINT) und r32Scale (REAL) für die ISOBUS-Formel. |
Daten-Ausgänge¶
| Variable | Typ | Beschreibung |
|---|---|---|
| * | UDINT | Der berechnete ISOBUS-Rohwert (Rückgabewert der Funktion). Gesättigt auf den Bereich 0 bis 4294967295. |
| xOver | BOOL | TRUE, wenn der physikalische Wert den oberen Grenzwert überschreitet. |
| xUnder | BOOL | TRUE, wenn der physikalische Wert den unteren Grenzwert unterschreitet. |
Adapter¶
Keine.
Funktionsweise¶
Der FB berechnet zunächst die untere und obere Grenze:
- Untere Grenze: lrLower = Offset * Skalierung
- Obere Grenze: lrUpper = (Offset + 4294967295) * Skalierung
Anschließend wird der physikalische Wert mit diesen Grenzen verglichen:
1. Überlauf (xOver = TRUE): Wenn rPhys > lrUpper, wird der Rohwert auf den maximalen UDINT-Wert (4294967295) gesetzt.
2. Unterlauf (xUnder = TRUE): Wenn rPhys < lrLower, wird der Rohwert auf 0 gesetzt.
3. Normalbereich: Im gültigen Bereich wird der Rohwert nach der Formel UDINT(DINT(rPhys / Skalierung) - Offset) berechnet.
Die Berechnung erfolgt innerhalb des Structured-Text-Codes bei jedem REQ-Ereignis.
Technische Besonderheiten¶
- Der Rückgabetyp ist UDINT, die Sättigung erfolgt auf den vollen Wertebereich von 0 bis 4294967295.
- Die Offset- und Skalierungsdaten werden aus einer externen Struktur (
NumericObjectPool_S) gelesen, die typischerweise vom ISOBUS-Objektpool bereitgestellt wird. - Der Baustein verwendet keine internen Zustände; die Berechnung ist rein kombinatorisch und wird bei jedem REQ komplett neu durchgeführt.
- Die Konvertierung von REAL zu DINT erfolgt mit
REAL_TO_DINT, was bei großen Werten zu Rundungsfehlern führen kann.
Zustandsübersicht¶
Der FB besitzt keine explizite Zustandsmaschine. Er arbeitet zustandslos auf Basis der aktuellen Eingänge. Bei jedem REQ-Ereignis wird die Ausgabe neu berechnet.
Anwendungsszenarien¶
- ISOBUS-Steuergeräte: Umrechnung von Sensormesswerten (z. B. Temperatur, Druck) in den ISOBUS-konformen Rohdatenwert für die Anzeige in einem Terminal.
- Landwirtschaftliche Maschinensteuerung: Konvertierung von physikalischen Größen, die mit einer spezifischen Skalierung und Offset im ISOBUS-Diagnoseprotokoll dargestellt werden.
- Test- und Simulationsumgebungen: Erzeugung von ISOBUS-Rohwerten aus simulierten physikalischen Werten.
Vergleich mit ähnlichen Bausteinen¶
Bausteine wie F_RAW_TO_PHYS führen die inverse Umrechnung durch (Rohwert → physikalischer Wert). Während dieser Baustein die physikalische Größe in den Rohwert wandelt, bietet F_PHYS_TO_RAW zusätzlich die Sättigung und Alarmsignalisierung für Über- und Unterlauf. Im Gegensatz zu allgemeinen Arithmetikbausteinen ist er speziell auf die ISOBUS-Konvention mit Offset und Skalierung ausgelegt.
Fazit¶
Der Funktionsblock F_PHYS_TO_RAW ist ein spezialisierter Baustein für die ISOBUS-Konvertierung mit integrierter Bereichsüberwachung. Er bietet eine einfache und robuste Schnittstelle, um physikalische Messwerte in das ISOBUS-Protokoll einzubinden, und stellt sicher, dass der Rohwert immer innerhalb des gültigen Bereichs liegt. Die Alarmausgänge ermöglichen eine sofortige Fehlererkennung bei Grenzwertüberschreitungen.