Übung 6.1
Funktionsbaustein zum Einlesen der Achssensorik
Die Position einer Linearachse wird durch optische Inkrementalgeber (Encoder) gemessen. Die Encoder sind an der sich bewegenden Achse befestigt und senden Imulssignale an die Eingangskarte der SPS. Die Frequenz der Impulse ist so hoch, dass die SPS sie durch einen Softwarezähler (TYP_PULSE, s. Beispiel 4.4) nicht alle erfassen würde. Deshalb wird eine schnelle Zählerkarte (Encoderkarte) eingesetzt, die die Impulse durch Hardwarezähler zählt. Die Encoderkarte legt den aktuellen Zählwert als DINT im Arbeitsspeicher ab.
- a) Entwickeln Sie den Funktionsbaustein TYP_CIN, der die aktuelle Position der Achse ermittelt! Die Auflösung des Encoders bestimmt die Anzahl der Impulse pro cm oder pro Umdrehung.
- b) Ergänzen Sie den Funktionsbaustein TYP_CIN um den Funktionsbaustein TYP_Speed, der die Geschwindigkeit der Achse als numerische Ableitung der ermittelten Position berechnet!
- c) Nun soll ein kreisförmiger Encoder mit 20000 Strichen an der Motorwelle angebracht werden, um die Winkelstellung der Achse und die Anzahl der Umdrehungen zu messen. Können die Funktionsbausteine aus b) und c) für diesen Drehgeber eingesetzt werden?
Lösung:
a)
b)
FUNCTION_BLOCK TYP_SPEED
VAR_INPUT
Start:BOOL;
Position: REAL;
N: INT;
END_VAR
VAR_OUTPUT
SPEED: REAL;
END_VAR
VAR
Distance: REAL;
Gedaechtnis: REAL;
i: INT;
END_VAR
IF Start THEN
IF i>=N AND Start THEN
IF Position>=Gedaechtnis THEN
Speed:=LIMIT(0,100*(Position-Gedaechtnis)/i,100);
ELSE
Speed:=LIMIT(-100,100*(Position-Gedaechtnis)/i,0);
END_IF
i:=0;
Gedaechtnis:=Position;
END_IF
i:=i+1;
ELSE
Speed:=0;
END_IF
c) Ja, ein kreisförmiger Encoder mit 20000 Strichen erzeugt 20000 Impulse pro Umdrehung. Am Eingang des Funktionsbausteins TYP_CIN muss die entsprechende Auflösung eingetragen werden, hier also 0.018 (= 360°/20000 Impulse).
Speicherprogrammierbare Steuerungen für die Fabrik- und Prozessautomation
4. Auflage erschienen im Hanser Verlag, 2015