Formeln (Formula) anwenden
Im Englischen wird dies auch als Formula bezeichnet.
Wird verwendet, wenn die vom PLC gelieferten Rohwerte nicht unverändert übernommen, sondern Einheitenumrechnung / Nullpunktkorrektur / Skalierung durchgeführt werden sollen.
Häufige Fälle:
- Ein Drucksensor sendet den Ganzzahlwert
1638, tatsächlich sind es aber163.8 kPa→${VALUE}*0.1 - Celsius → Fahrenheit umrechnen →
${VALUE}*1.8+32 - mV → V umrechnen →
${VALUE}/1000
Wo wird die Formel eingegeben?
Die Formel wird im Feld [Formel] des Formulars zum Anlegen/Bearbeiten eines Tags eingetragen. Unmittelbar nach dem Speichern erscheint beim nächsten Erfassungszyklus der umgerechnete Wert auf dem Bildschirm.
- Bleibt das Feld leer, wird der Rohwert unverändert verwendet.
- Einmal eingetragen, wird die Formel bei jeder weiteren Erfassung automatisch angewendet.
Grundlegende Verwendung
${VALUE} bezeichnet den soeben aus dem PLC gelesenen Rohwert.
| Ziel | Formel | Eingabe → Ausgabe |
|---|---|---|
| Unverändert übernehmen | (leer) | 100 → 100 |
| Um Faktor 10 vergrößern | ${VALUE}*10 | 5 → 50 |
| Auf ein Zehntel verkleinern (Ganzzahl→Dezimal) | ${VALUE}*0.1 | 1638 → 163.8 |
| Durch 1000 teilen (mV → V) | ${VALUE}/1000 | 3300 → 3.3 |
| Addition (Celsius → Kelvin) | ${VALUE}+273.15 | 25 → 298.15 |
| Subtraktion (Nullpunktkorrektur) | ${VALUE}-100 | 1024 → 924 |
| Fahrenheit-Umrechnung | ${VALUE}*1.8+32 | 25 → 77.0 |
| Quadrat | ${VALUE}*${VALUE} oder ${VALUE}^2 | 5 → 25 |
| Quadratwurzel | sqrt(${VALUE}) | 144 → 12.0 |
| Umdrehungen pro Minute → Hz | ${VALUE}/60 | 1800 → 30.0 |
Werte anderer Tags referenzieren
Der letzte Wert eines anderen Tags lässt sich im Format ${태그ID} heranziehen. Praktisch, wenn der Nullpunktwert als eigener Tag geführt wird oder Korrekturfaktoren separat abgelegt sind.
| Ziel | Formel |
|---|---|
| Anderen Tag als Nullpunkt abziehen | ${VALUE}-${TAG_ZERO} |
| Zwei Tags summieren | ${VALUE}+${TAG_OFFSET} |
| Korrektur (gain × x + offset) | ${VALUE}*${TAG_GAIN}+${TAG_OFFSET} |
Dabei sind TAG_ZERO, TAG_OFFSET und TAG_GAIN die Tag-IDs anderer Tags. Diese müssen zuvor als Tags angelegt worden sein.
Steht dort ${TAG_ZERO}, der betreffende Tag wurde aber noch nie erfasst, schlägt die Berechnung fehl (im Status des Tags erscheint ein Fehler der Art „Kein Wert für Formelvariable“). Nach einem Durchlauf des Gateways normalisiert sich das automatisch — einen Moment abwarten genügt.
Verfügbare Funktionen
Neben Grundrechenarten stehen auch gängige mathematische Funktionen zur Verfügung.
| Art | Schreibweise | Beispiel |
|---|---|---|
| Grundrechenarten | +, -, *, / | ${VALUE}+1 |
| Potenz | ^ | ${VALUE}^2 (= Quadrat) |
| Klammern | (, ) | (${VALUE}+10)*2 |
| Quadratwurzel | sqrt(...) | sqrt(${VALUE}) |
| Kubikwurzel | cbrt(...) | cbrt(${VALUE}) |
| Natürlicher Logarithmus | ln(...) | ln(${VALUE}) |
| Dekadischer Logarithmus (Basis 10) | log(...) | log(${VALUE}) |
| Sinus/Kosinus/Tangens (Radiant) | sin, cos, tan | sin(${VALUE}) |
| Arkusfunktionen | asin, acos, atan | atan(${VALUE}) |
| Hyperbelfunktionen | sinh, cosh, tanh | tanh(${VALUE}) |
| Konstanten | pi, e | ${VALUE}*pi/180 (Grad → Radiant) |
Um eine Gradeingabe (degree) in Radiant umzurechnen, mit *pi/180 multiplizieren. Beispiel: sin(${VALUE}*pi/180).
Anwendbare Datentypen
Formeln werden nur auf numerische Tags (Float, Double, Integer, Long) angewendet.
- Bei
String- undBoolean-Tags wird die Formel ignoriert und der Rohwert unverändert ausgegeben. - Überschreitet das Korrekturergebnis den Ganzzahlbereich, ändern Sie den Datentyp auf
FloatoderDouble.
Häufige Fehler
| Falsches Muster | Warum problematisch | Richtiges Muster |
|---|---|---|
VALUE * 0.1 | Schreibweise ${...} fehlt | ${VALUE}*0.1 |
${VALUE}*0,1 | Komma verwendet (Tippfehler) | ${VALUE}*0.1 (Punkt verwenden) |
if(${VALUE}>0, ...) | Bedingungen werden nicht unterstützt | Bedingungen ggf. in einem separaten System verarbeiten |
${VALUE} & 0xFF | Bitoperationen werden nicht unterstützt | In eine arithmetisch darstellbare Form umschreiben |
Häufig gestellte Fragen
F. Wie prüfe ich, ob die Formel angewendet wurde?
Der im Feld [Aktueller Wert] des Tags angezeigte Wert ist der umgerechnete Wert. Wenn Sie den Rohwert sehen möchten, legen Sie dieselbe Adresse als zusätzlichen Tag ohne Formel an und vergleichen Sie.
F. Ich möchte zwei Einheiten gleichzeitig senden (z. B. Celsius und Fahrenheit)
Legen Sie zwei Tags auf dieselbe PLC-Adresse an: einen unverändert, den anderen mit einer Umrechnungsformel wie ${VALUE}*1.8+32.
F. Das Ergebnis lautet NaN / Infinity
- Division durch 0 →
Infinity - Quadratwurzel einer negativen Zahl →
NaN
Sehr wahrscheinlich weicht der Rohwertbereich des PLC von Ihrer Erwartung ab. Prüfen Sie zunächst den Rohwert ohne Formel.
F. Ich benötige eine komplexere Verarbeitung (Verzweigungen / mehrere Variablen / externe Daten)
Mit Formeln allein ist das kaum möglich. Empfohlen wird der ergänzende Einsatz der Nachverarbeitungsstufe der PlantPulse-Plattform oder eines separaten Datenverarbeitungswerkzeugs (z. B. Node-RED). Siehe den Abschnitt Node-RED auf der Seite Anwendungsverwaltung.
Wenn Sie eine vollständige Funktions- und Variablenreferenz benötigen, lesen Sie die Seite Erweitert — Formula-Referenz.