Aus Raspberry Pi Geek 12/2020

Freie SPS-Software für den Raspberry Pi (Seite 2)

Testaufbau

Für die ersten Schritte mit OpenPLC verwenden wir ein einfaches Testboard (Abbildung 3). Das Platinenlayout (Abbildung 4) für das Testboard finden Sie auf der Homepage von Josef Bernhardt [5].

Abbildung 3: Komplett aufgebautes Modul.

Abbildung 3: Komplett aufgebautes Modul.

Abbildung 4: Schaltplan des IO-Moduls.

Abbildung 4: Schaltplan des IO-Moduls.

Auf der OpenPLC-Homepage gibt es eine wirklich gute Schritt-für-Schritt-Anleitung [6], die zeigt, wie Sie ein einfaches Projekt mit OpenPLC aufbauen. Als Beispiel bauen wir ein Förderband mit Sequenzsteuerung (Listing 2). Es stammt von Tom Mejer Antonsen, dem Autor des Buchs “PLC Controls with Structured Text”, der es uns freundlicherweise zur Verfügung gestellt und für das OpenPLC-Projekt angepasst hat.

Den logischen Aufbau der Schaltung zeigt Abbildung 5. Als Startpunkt dient eine Anordnung aus einem Startkontakt (S1) und einem von einem Motor (M1) gesteuerten Förderband sowie je einem Sensor an beiden Enden des Bands. Das Band beginnt sich nach rechts zu bewegen, wenn sich ein Werkstück an B1 befindet und Sie den Startschalter S1 drücken. Erreicht der Gegenstand B2, stoppt das Band für zehn Sekunden; danach bewegt es sich wieder in die andere Richtung. Es stoppt erneut, sobald das Teil wieder B1 erreicht.

Abbildung 5: Schematische Darstellung des Förderbands.

Abbildung 5: Schematische Darstellung des Förderbands.

Den Motor steuern die beiden digitalen Signale K1 für Start und K2 für Rechts/Links. Das Sequenzdiagramm (Abbildung 6) deklariert dazu die vier Zustände 0, 10, 20 und 30 für die Steuerung. Sie startet bei 0.

Abbildung 6: Sequenzdiagramm des Programms.

Abbildung 6: Sequenzdiagramm des Programms.

Befinden sich S1 und B1 im Zustand TRUE, wechselt das Programm von Zustand 0 in den Zustand 10. Von dort aus schaltet es auf 20 um, sobald das Objekt den Sensor B2 aktiviert. Nun wartet das Programm zehn Sekunden und wechselt dann in den Zustand 30, was das Objekt an seinen Startplatz zurückbefördert. Die gesamte Sequenz stoppt, sobald das Bauteil den Sensor B1 aktiviert.

Das Programm besteht aus einem Hauptprogramm und zwei Programmmodulen. Eine CASE-Struktur dient zur Sequenzsteuerung. Die Variable Seq bestimmt, in welchem Zustand sich das Programm befindet. Das Programmmodul ConveyorSeq setzt sie in den richtigen Zustand. Das geschieht abhängig von dem aktuellen Zustand sowie den Eingangssignalen S1, B1 und B2. Das Programmmodul ConveyorSetOutPut stellt sicher, dass die beiden digitalen Ausgänge K1 und K2 den Motor basierend auf dem Programmstatus korrekt ansteuern.

An den Ausgang QX0.7 lässt sich eine LED anschließen, die durch Blinken signalisiert, dass sich das Programm in der Ausführung befindet. Das komplette Projekt finden Sie in der zu diesem Artikel gehörenden Download-Sektion (siehe QR-Code).

Listing 2

PROGRAM PRG_Transportband_1
 VAR
    MOT1RUN AT %QX0.0 : BOOL;
    MOT1DIR AT %QX0.1 : BOOL;
    BLINKLED AT %QX0.7 : BOOL;
    START AT %IX0.0 : BOOL;
    SENSORLINKS AT %IX0.1 : BOOL;
    SENSORRECHTS AT %IX0.2 : BOOL;
  END_VAR
  VAR
    STATE : INT := 0;
    TMR_MOTOR : TON;
    TMR_BLINK : TON;
    TMR_READY : BOOL := FALSE;
    TMR_BLINK_ET : TIME;
    TMR_MOTOR_ET : TIME;
  END_VAR
  TMR_BLINK(IN:= NOT TMR_BLINK.Q,PT:=T#200ms,Q=>TMR_READY,ET=>TMR_BLINK_ET);
  IF TMR_READY THEN
    BLINKLED:=NOT BLINKLED;
  END_IF;
  CASE STATE OF
     0: IF (START AND SENSORLINKS) THEN
          STATE:=10;
        END_IF;
    10: IF SENSORRECHTS THEN
          STATE:=20;
        END_IF;
    20: TMR_MOTOR(IN:= NOT TMR_MOTOR.Q,PT:=T#5S,ET=>TMR_MOTOR_ET);
        IF TMR_MOTOR.Q THEN
          STATE:=30;
        END_IF;
    30: IF SENSORLINKS THEN
          STATE:=0;
        END_IF;
    END_CASE;
  CASE STATE OF
     0:MOT1RUN:=FALSE;
    10:MOT1RUN:=TRUE; MOT1DIR:=TRUE;
    20:MOT1RUN:=FALSE;
    30:MOT1RUN:=TRUE; MOT1DIR:=FALSE;
  END_CASE;

Fazit

Mit OpenPLC und dem Raspberry Pi lässt sich für wenig Geld eine zum Standard IEC 61131-3 konforme Programmierumgebung aufbauen – der optimale Weg, um in das Thema PLC einzusteigen. Da alle Hersteller IEC 61131-3 unterstützen, lässt sich das Erlernte auf jede andere Industriesteuerung anwenden. Auch für die Aus- und Weiterbildung eignet sich OpenPLC hervorragend. Die Installation erfordert vergleichsweise wenig Aufwand. Mit den hier gezeigten Schritten bauen Sie schnell eine eigene kleine SPS auf. (tle)

Die Autoren

Josef Bernhardt baute mit zwölf Jahren seinen ersten Detektorempfänger, die ersten Programmiererfahrungen sammelte er mit einer 8080-CPU. Mittlerweile blickt er auf eine über 30-jährige Karriere an der Universität Regensburg in der Elektronik- und Software-Entwicklung zurück.

Martin Mohr hegt seit früher Jugend eine Vorliebe für alles, was blinkt. Eine Ausbildung zum Elektroniker verstärkte das noch. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte die alte Liebe zur Elektronik wieder.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben