Arithmetische Funktionen
Mit arithmetischen Funktionen werden die 4 Grundrechenarten Addieren, Subtrahieren, Multiplizieren sowie Dividieren ausgeführt. So kann eine SPS auch rechnen.
Arithmetische Funktionen werden ebenfalls unabhängig vom VKE ausgeführt. Während des Rechenvorgangs können Sie das Ergebnis über die Statusbits einsehen. Der Vorgang ist dabei wie folgt:
- Der erste Operand wird in Akku 1 geladen
- Der Inhalt von Akku 1 wird in Akku 2 verschoben
- Der zweite Operand wird in Akku 1 geladen
- Die Rechenoperation wird mit dem Inhalt von Akku 1 und 2 durchgeführt
- Das Ergebnis wird in Akku 1 geschrieben
Für fast alle Rechenoperationen werden daher zwei Akkus gebraucht. Für die Addition von Konstanten mit bestimmten Datentypen wird nur ein Akku gebraucht. Beim Dividieren dient Akku 2 als Dividend und Akku 1 als Divisor. Akku 2 wird also durch Akku 1 dividiert.
Generell müssen beide Operanden den gleichen Datentyp haben. Das Ergebnis hat ebenfalls den Datentyp der Operanden. Wenn Sie arithmetische Funktionen in der Darstellungsart FUP erstellen, werden Sie auf fehlerhafte Datentypen aufmerksam gemacht. Das ist in AWL leider nicht so. In AWL wird der Datentyp nicht geprüft. So können sich Fehler einschleichen.
Arithmetische Funktion in FUP
Auf dem Bild sehen Sie die arithmetische Funktion Addieren von Integerwerten in der Darstellungsart FUP. Die beiden Operanden AW10 und AW20 wurden addiert und das Ergebnis wurde in AW30 geschrieben. Die arithmetischen Boxen haben neben den beiden Operandeneingängen IN1, IN2 und dem Ausgang OUT zusätzlich die Freigabeein- und -ausgänge EN und ENO.
Arithmetische Funktionen in Step7
In Step7 befinden sich die arithmetischen Funktionen unterhalb des Knotens Festpunktfunktionen sowie unter Gleitpunktfunktionen. Der Knoten Festpunktfunktionen beinhaltet alle Boxen zum Berechnen von Integer- und Doppelintegerwerten. Unter Gleitpunktfunktionen befinden sich alle arithmetischen Funktionen für den Datentyp REAL. Hier sind zusätzlich weitere Funktionen wie z.B. ABS, SQRT etc. Diese zählen jedoch zu den numerischen Funktionen.
Bei vielen Operationen kann es passieren, dass der zulässige Zahlenbereich verlassen wird. Diese werden durch die Statusbits OS und OV gemeldet. Bei einer Division durch 0 ergibt als Ergebnis beim Quotienten und Rest jeweils eine 0 und die Statusbits OV und OS werden ebenfalls auf 1 gesetzt. Außer bei Integerwerten werden alle Ergebnisse der Rechenoperation im gesamten Akku 1 gespeichert.
Besonderheiten beim Berechnen von Integerwerten:
- Die Operanden werden rechtsbündig in Akku 1 und Akku 2 geladen
- Beim Addieren/Subtrahieren wird das Ergebnis wird rechtsbündig im Datenformat INT in Akku 1 gespeichert
- Beim Multiplizieren wird das Ergebnis wird im Datenformat DINT im gesamten Akku 1 gespeichert
- Beim Dividieren wird der ganzzahlige Quotient im rechten Wort von Akku 1 geschrieben, der Rest im linken Wort
Besonderheit beim Dividieren von Doppelintegerzahlen:
Beim Rechnen mit Doppelintegerwerten wird der gesamte Akku 1 gebraucht. Daher gibt es für die Division zwei Anweisungen. DIV und MOD. Mit DIV wird der ganzzahlige Quotient und mit MOD der Rest in Akku 1 gespeichert.