Rechenoperationen mit Simatic in SCL

Zagatho

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Habe gestern einen kleinen Rechner in Simatic programmiert und wollte in austesten!
Doch leider weiß ich nicht wie ich Rechenzeichen (+,-,*,/) in die Variablentabelle schreiben kann!
Bin mit SCL noch nicht ganz vertraut darum nur ein kleines Programm! :p

1.zu meinem Programm FB1:

FUNCTION_BLOCK FB1
VAR_INPUT
//Eingangsvariablen
Operant1: INT;
Operant2: INT;
Operator: CHAR;
END_VAR
VAR_OUTPUT
//Ausgangsvariablen
Ergebnis: INT;
END_VAR
VAR_TEMP
// temporäre Variablen

END_VAR
VAR
// statische Variablen

END_VAR

// Anweisungsteil
BEGIN
IF Operator= '+' THEN Ergebnis:= Operant1 + Operant2;
ELSIF Operator= '-' THEN Ergebnis:= Operant1 - Operant2;
ELSIF Operator= '*' THEN Ergebnis:= Operant1 * Operant2;
ELSIF Operator= '/' THEN Ergebnis:= Operant1 / Operant2;
ELSE Ergebnis:=0;
END_IF;
END_FUNCTION_BLOCK

Wie ich das Programm im OB1 aufrufe, ist kein Problem.

Danke im Voraus
 
Du gibst in der Variablentabelle in der Spalte "Operand" die Adresse ein, die du an deinem Eingangsparameter für den FB1 eingetragen hast, z.B. MB 100.
Es muss auf jeden Fall ein Byte sein, bei einer Adresse im DB müsstest du dann beispielsweise DB1.DBB0 schreiben.

Das Anzeigeformat stellst du dann auf den Typ "ZEICHEN" um. Dann kannst du als Steuerwert direkt das Zeichen eingeben. Wenn du dann die Steuerwerte aktivierst (F9), wird das Zeichen auf den eingestellen Operanden geschrieben.
 
Hängt davon ab in welchem Zusammenhang du die Frage stellst.

Bei der Ansicht:
Macht technisch keinen Unterschied, lediglich Unterschied in der Darstellung. Die Adresse ist meistens kürzer, man sieht mehr auf dem Bildschirm. Symbolische Darstellung ist in der Regel selbsterklärend, wenn man die Symbole richtig benennt z.B. "KF01".LS_Belegt (Kettenförderer 01, Lichtschranke belegt). Dafür benötigt diese Darstellung mehr Platz.

Beim Operandenvorrang:
Absolut: Es wird immer die Adresse als Referenz verwendet. Wenn man das Symbol ändert passiert nichts ausser dass der Operand jetzt anders heißt. Einfügen von Operanden in DB´s ist in der Regel mit viel Arbeit verbunden.
Symbolisch: Es wird immer das Symbol als Referenz verwendet. Wenn man das Symbol ändert wird der Operand nicht mehr gefunden. Dafür kann man DB´s spreitzen wie man will, solange das Symbol nicht geändert wird findet S7 immer wieder die passenden Referenzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Absolut = E1.0

Symbolisch = TasteLichtAn (E1.0)

Was lässt sich leichter merken? Symbolauswahl und Suche ist einfacher.
Änderungen an E1.0 müssen nicht im Programm geändert werden, da das Symbol ja dafür steht. vorher E1.0 (TasteLichtAn) , nacher E2.0 (TasteLichtAn).
Bei absoluter Programmierung würde an den E1.0 Abfragen (vorher), nacher E1.0 bleiben und nicht wie gewünscht E2.0 . ( Software-Umverdrahten ist angesagt).
 
Zurück
Oben