SCL-Mathematik: Arithmetik, Vergleich, Logik und Konvertierung
Komplette SCL-Operatoren-Referenz: Arithmetik (+, -, *, /, MOD, **), Vergleich (<, >, =, <>), Logik (AND, OR, XOR, NOT), Typkonvertierung (INT_TO_REAL, DINT_TO_REAL) und numerische Funktionen (ABS, SQRT, SIN, COS). Mit Rangfolge und Datentyp-Regeln.
SCL-Mathematik: Arithmetik, Vergleich, Logik und Konvertierung
Komplette Referenz aller mathematischen und logischen Operatoren in Siemens SCL, einschließlich Operator-Rangfolge, Datentyp-Regeln und Konvertierungsfunktionen.
Arithmetische Operatoren
| Operator | Bedeutung | Beispiel | Ergebnistyp |
|---|---|---|---|
+ | Addition | a + b | Größerer der beiden Operandentypen |
- | Subtraktion | a - b | Größerer der beiden Operandentypen |
* | Multiplikation | a * b | Größerer der beiden Operandentypen |
/ | Division | a / b | Größerer Typ; INT / INT = INT (abgeschnitten) |
MOD | Modulo (Rest) | 17 MOD 5 → 2 | INT oder DINT |
DIV | Ganzzahldivision | 17 DIV 5 → 3 | INT oder DINT |
** | Potenz | 2.0 ** 3.0 → 8.0 | REAL |
Datentyp-Regeln:
- INT + INT = INT
- INT + DINT = DINT (Ergebnis nimmt den größeren Typ)
- REAL + INT = REAL (Fließkomma gewinnt)
- INT / INT = INT (abgeschnitten, nicht gerundet: 7 / 2 = 3, nicht 3,5)
- Für REAL-Ergebnis: zuerst konvertieren, dann dividieren
Beispiel — Integer- vs. REAL-Division:
// FALSCH: Ganzzahldivision schneidet ab
ergebnis_int := 7 / 2; // ergebnis_int = 3
// RICHTIG: erst nach REAL konvertieren
ergebnis_real := INT_TO_REAL(7) / INT_TO_REAL(2); // ergebnis_real = 3.5
Vergleichsoperatoren
Alle Vergleichsoperatoren liefern BOOL (TRUE oder FALSE).
| Operator | Bedeutung | Beispiel |
|---|---|---|
= | Gleich | IF a = 10 THEN |
<> | Ungleich | IF a <> 0 THEN |
< | Kleiner als | IF temp < 100.0 THEN |
> | Größer als | IF druck > 5.0 THEN |
<= | Kleiner oder gleich | IF fuellstand <= max_stand THEN |
>= | Größer oder gleich | IF zaehler >= vorgabe THEN |
Fließkomma-Vergleich mit Toleranz:
// FALSCH: exakte Gleichheit bei REAL unzuverlässig
IF temperatur = 100.0 THEN ... // wird evtl. nie exakt 100.0
// RICHTIG: Toleranzband verwenden
IF ABS(temperatur - 100.0) < 0.1 THEN ...
Logische Operatoren
| Operator | Bedeutung | Beispiel | Priorität |
|---|---|---|---|
NOT | Negation | NOT a | Höchste |
AND / & | Logisches UND | a AND b | Mittel |
XOR | Exklusiv-ODER | a XOR b | Mittel |
OR | Logisches ODER | a OR b | Niedrigste |
BOOL-Beispiele:
// Motor läuft wenn Start UND keine Störung UND nicht gestoppt
Motor := Start AND NOT Stoerung AND NOT Stopp;
// Alarm wenn Temperatur zu hoch ODER Druck zu hoch
Alarm := (Temp > 80.0) OR (Druck > 6.0);
Bitweise Beispiele (WORD):
// Bits 0-3 maskieren
maskiert := eingabe_wort AND W#16#000F;
// Bit 7 setzen
ausgabe_wort := eingabe_wort OR W#16#0080;
Operator-Rangfolge (Höchste → Niedrigste)
| Priorität | Operator | Kategorie |
|---|---|---|
| 1 | ( ) | Klammern |
| 2 | + - (unär) | Vorzeichen |
| 3 | NOT | Negation |
| 4 | ** | Potenz |
| 5 | * / MOD DIV | Multiplikativ |
| 6 | + - | Additiv |
| 7 | < > <= >= | Relational |
| 8 | = <> | Gleichheit |
| 9 | AND & | Logisches UND |
| 10 | XOR | Exklusiv-ODER |
| 11 | OR | Logisches ODER |
| 12 | := | Zuweisung |
Faustregel: Arithmetik zuerst, dann Vergleich, dann Logik. Im Zweifel: Klammern setzen.
Typkonvertierungsfunktionen
Numerische Konvertierungen
| Funktion | Von → Nach | Beispiel |
|---|---|---|
INT_TO_REAL | INT → REAL | r := INT_TO_REAL(i); |
INT_TO_DINT | INT → DINT | d := INT_TO_DINT(i); |
DINT_TO_REAL | DINT → REAL | r := DINT_TO_REAL(d); |
REAL_TO_INT | REAL → INT | i := REAL_TO_INT(r); (gerundet) |
REAL_TO_DINT | REAL → DINT | d := REAL_TO_DINT(r); (gerundet) |
BCD-Konvertierungen (Legacy-Kompatibilität)
| Funktion | Von → Nach | Verwendung |
|---|---|---|
BCD_TO_INT | BCD WORD → INT | S5-Zähler/Timer-Werte lesen |
INT_TO_BCD | INT → BCD WORD | BCD-Anzeigen beschreiben |
Numerische Funktionen (Mathematik-Bibliothek)
| Funktion | Beschreibung | Beispiel | Ergebnis |
|---|---|---|---|
ABS(x) | Betrag | ABS(-5) | 5 |
SQR(x) | Quadrat (x²) | SQR(4.0) | 16.0 |
SQRT(x) | Quadratwurzel | SQRT(16.0) | 4.0 |
EXP(x) | e^x | EXP(1.0) | 2.7183 |
LN(x) | Natürlicher Logarithmus | LN(2.7183) | ~1.0 |
LOG(x) | Dekadischer Logarithmus | LOG(100.0) | 2.0 |
SIN(x) | Sinus (x in Radiant) | SIN(1.5708) | ~1.0 |
COS(x) | Kosinus (x in Radiant) | COS(0.0) | 1.0 |
TAN(x) | Tangens (x in Radiant) | TAN(0.7854) | ~1.0 |
ASIN(x) | Arkussinus | ASIN(1.0) | ~1.5708 |
ACOS(x) | Arkuskosinus | ACOS(0.0) | ~1.5708 |
ATAN(x) | Arkustangens | ATAN(1.0) | ~0.7854 |
Alle trigonometrischen Funktionen verwenden Radiant, nicht Grad. Umrechnung: radiant := grad * 3.14159 / 180.0;
Praxisbeispiel: Analogwert-Skalierung
// Rohwert Analogeingang (0–27648) auf technische Einheiten (0.0–100.0 bar)
VAR
rohwert : INT; // Vom Analogeingangsmodul
druck : REAL; // Technische Einheiten
hoch_alarm : BOOL;
END_VAR
druck := INT_TO_REAL(rohwert) * 100.0 / 27648.0;
hoch_alarm := druck > 85.0; // Alarm bei 85 bar
S5-Arithmetik automatisch konvertieren
PLCcheck Pro konvertiert S5-Rechenoperationen (+F, -F, ×F, :F) in sauberes SCL mit korrekter Typbehandlung.
Code zur Konvertierung hochladen → | S5→S7 Migrationsleitfaden →
Teil der SCL-Referenz. Gepflegt von PLCcheck.ai. Keine Verbindung zu Siemens AG.
Verwandte Artikel
SPS-Programmierung: AWL vs. KOP vs. FUP vs. SCL – Welche Sprache wofür?
Vergleich der vier SPS-Programmiersprachen AWL, KOP, FUP und SCL nach IEC 61131-3. Stärken, Schwächen, Einsatzbereiche und welche Sprache für welche Aufgabe die richtige ist.
12 Min. Lesezeit
migration-guideAWL-Abkündigung bei S7-1500: Warum SCL Pflicht wird
Warum AWL auf S7-1500 nur im Emulationsmodus läuft, was das für Performance und Wartbarkeit bedeutet, und wie Sie Ihren AWL-Code nach SCL konvertieren.
10 Min. Lesezeit
thought-leadershipTIA Portal vs. STEP 7 Classic: Die wichtigsten Unterschiede
Direktvergleich Siemens TIA Portal und STEP 7 Classic. Oberfläche, Programmierung, Hardwareunterstützung, Lizenzierung und Migrationspfad.
10 Min. Lesezeit
SPS-Code mit KI analysieren
PLCcheck Pro erklärt, dokumentiert, optimiert und migriert SPS-Code — automatisch.
PLCcheck Pro testen →Nicht verbunden mit Siemens AG. S5, S7, STEP 5, STEP 7 und TIA Portal sind Marken der Siemens AG.