Funktionsbaustein: Skalierung
Der Skalierungsbaustein dient zur Umrechnung numerischer Eingangswerte auf eine neue Skala.
Er unterstützt zwei Verfahren: min/max-Normalisierung und lineare Skalierung nach einer Geradengleichung.
Funktionsweise
Der Baustein verarbeitet numerische Eingangswerte (FLOAT oder INT) sowie Listen von numerischen Werten (Liste aus FLOAT und/oder INT) und gibt entsprechend skalierte Werte zurück.
Der Baustein arbeitet dabei elementweise:
- Bei einem Einzelwert wird ein einzelner skalierter Wert erzeugt.
- Bei einer Liste wird jedes Element einzeln skaliert, und das Ergebnis als Liste gleicher Länge zurückgegeben.
- Die Reihenfolge der Werte bleibt erhalten.
1. Min/Max-Skalierung (procedure = min_max)
- Der Eingabewert wird auf einen Bereich zwischen
minundmaxbegrenzt. - Anschließend erfolgt eine Skalierung auf einen Integer-Wertbereich von 0 bis 65535.
- Werte außerhalb des definierten Bereichs werden automatisch auf
minbzw.maxbegrenzt. - Bei Listen wird diese Operation auf jedes Element angewendet.
Formel:
output = (input - min) * (65535 / (max - min))
2. Lineare Skalierung (procedure = linear)
- Der Eingangswert wird gemäß der linearen Gleichung
y = m·x + bskaliert. - Diese Methode eignet sich zur Umrechnung in beliebige Einheiten oder Bereiche.
- Bei Listen wird die lineare Funktion auf jedes Element angewendet.
Formel:
output = m * input + b
Parameter
| Parameter | Beschreibung | Gilt für |
|---|---|---|
procedure |
Skaliermethode: min_max oder linear |
beide |
min |
Minimalwert für Skalierung (untere Grenze) | nur min_max |
max |
Maximalwert für Skalierung (obere Grenze) | nur min_max |
m |
Steigung für lineare Funktion | nur linear |
b |
Achsenabschnitt der linearen Funktion | nur linear |
Eingabe / Ausgabe
Eingang
Unterstützte Eingabetypen:
- Einzelwert:
INT-
FLOAT -
Liste von Werten:
LIST[INT]LIST[FLOAT]- gemischte Listen (
INTundFLOAT)
Beispiele:
12
12.17
[12.17, 11.03, 7.93, 3.97]
[10, 20, 30]
[10, 12.5, 15]
Ausgang
Der Ausgabetyp entspricht der Struktur der Eingabe:
| Eingabe | procedure | Ausgabe |
|---|---|---|
| INT | min_max | INT |
| FLOAT | min_max | INT |
| LIST | min_max | LIST[INT] |
| INT | linear | FLOAT |
| FLOAT | linear | FLOAT |
| LIST | linear | LIST[FLOAT] |
Beispiele:
input: 12.17
output: 65535
input: [12.17, 11.03, 7.93]
output: [65535, 59378, 42687]
Fehlerverhalten
Ein Fehler wird ausgelöst, wenn:
- der Eingang kein numerischer Wert oder keine Liste numerischer Werte ist
- eine Liste nicht-numerische Elemente enthält
- erforderliche Parameter fehlen
- eine ungültige Skaliermethode angegeben wurde
Anwendungsbeispiele
- Normierung von Messwerten (z. B. Temperatur 0–100 °C → 0–65535)
- Verarbeitung von Messwertreihen (z. B. ADC-Samples)
- Umrechnung von physikalischen Einheiten (z. B. Spannung → Prozent)
- Skalierung von Sensordatenlisten
- Anpassung von Steuergrößen für externe Systeme
- Batch-Verarbeitung mehrerer Messwerte
Der Skalierungsbaustein ist ideal für alle Anwendungen, bei denen Eingangsdaten
in eine gewünschte Zielgröße transformiert werden müssen – sowohl für Einzelwerte als auch für Wertelisten, z. B. zur Weiterverarbeitung, Speicherung oder Anzeige.