Ü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.

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