Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

PYTHON – Automatisierung mit der „Monty-Sprache”: Teil 1

Diese 11 Zeilen Python-Code sind alles, was Sie für den Aufbau eines PID-gesteuerten Heizsystems mit der Revolution Pi-Plattform benötigen:

from simple_pid import PID
import revpimodio2
import time

TempController = PID(5.0, 0.13, 10.5, setpoint=400, output_limits=(0,100))
rpi = revpimodio2.RevPiModIO(autorefresh=True)
while True:
    Temp = rpi.io.Temp10.value
    PWMvalue = TempController(Temp)
    rpi.io.PWM_heater1.value = int(PWMvalue)
    rpi.io.PWM_heater2.value = int(PWMvalue)
    time.sleep(0.05)

Was werden wir steuern? Es handelt sich um eine Mischanwendung mit klassischer PID-Regelung und meldungsbasiertem IoT. Ich verwende einen analogen Temperatureingang (mit angeschlossenem PT100-Sensor) und einen Digitalausgang mit zwei PWM-gesteuerten 10-W-Glühlampen, um eine Heizung zu simulieren. Die aktuelle Temperatur wird einem MQTT-Broker gemeldet, der die Daten für eine Node-Red-GUI bereitstellt. Die eingestellten Werte können über diese GUI angepasst werden und werden vom MQTT an die Python-PID-Regelungssoftware übertragen. Wenn das Ihr Interesse weckt, lesen Sie die schrittweise Erklärung, wie Sie Python effizient für Automatisierungsaufgaben einsetzen können.

Python ist eine in der IT-Welt häufig verwendete Programmiersprache. Obwohl sie fast 30 Jahre alt ist, wurde sie in der Automatisierungsindustrie und bei eingebetteten Systemen selten eingesetzt. C und C++ haben ihre führende Position auch im Jahr 2017 weiterhin behauptet. Doch mit dem Raspberry Pi und IoT-orientierten Systemen wie MicroPython begann sich alles zu ändern. Im Jahr 2018 wurde Python zum zweiten Mal in Folge von IEEE Spectrum als die Nummer 1 der Programmiersprachen vor C++ und C eingestuft. Doch während Python in der Rangliste 2017 für Embedded-Programmierung nicht einmal unter den zehn wichtigsten Sprachen aufgelistet war, belegte sie 2018 bei den eingebetteten Sprachen Platz 1.

image0041_85675cad528a4372c99c8f45fc1ab5d0b2ad39a1.jpg

Quelle: Rangliste 2018 für Embedded-Programmierung von IEEE Spectrum

Python (der Name wurde als Hommage, nicht an eine Schlange, sondern an Monty Python gewählt) ist seit einigen Jahren ein Shootingstar, was ihre große Beliebtheit widerspiegelt. In diesem Beitrag möchte ich weder über die Gründe dafür sprechen, noch die Vorteile der Verwendung von Python gegenüber C in eingebetteten Systemen vergleichen. Wenn Sie sich einen solchen Beitrag wünschen, hinterlassen Sie bitte einen entsprechenden Kommentar als Einsteiger.

In der Automatisierungsindustrie verwenden viele Ingenieure zur Programmierung von SPS nicht einmal C, sondern IEC61131-Sprachen. Ich werde versuchen, Ihr Interesse für Python zu wecken, indem ich Ihnen zeige, wie einfach sie zur Steuerung von industriellen E/A mit einem Revolution Pi verwendet werden kann. Verpassen Sie nicht die ausgezeichneten Beiträge von Peter Oakes und Andrew Back über den Revolution Pi; Dave Ives hat uns gezeigt, wie die Sprache „Strukturierter Text“ nach EN61131 mit einem Revolution Pi verwendet wird.

Hier ist die Ausrüstung, die ich für die Demonstration verwende:

  • Revolution Pi Core 3 (181-1142)
  • RevPi DIO (181-1143)
  • RevPi AIO (181-1146)
  • Ein 24-V-Labornetzteil, das mindestens 1 A Strom liefert (Sie können auch ein DIN-Schienen-Netzteil wie dieses 36-W-Gerät von Mean Well verwenden: (145-7868)
  • Zwei Kfz-Leuchten, 24 V 10 W (z. B. (017-0913) )
  • Ein PT100-Sensor (ich verwende einen 4-adrigen Typ wie (123-5602) , aber Sie könnten auch einen 3-adrigen Typ wie (896-8395) verwenden
  • Ein Windows-PC mit Internetverbindung und Switch mit zusätzlichem Netzwerkkabel für den RevPi Core 3
  • Ein Oszilloskop zur Überprüfung des PWM-Ausgangs (optional)

Lesen Sie die Beiträge von Andrew und Peter, wenn Sie noch nicht mit dem Revolution Pi vertraut sind, um eine solide Einführung in diese Hard- und Software-Plattform zu erhalten. Sie erfahren, wie das Core 3-Modul mit dem E/A-Modul verbunden wird, wie das Netzteil angeschlossen wird und wie das zentrale Prozessabbild für den Zugriff auf alle E/A verwendet wird. Auf der Webseite des Herstellers finden Sie außerdem zahlreiche Text-Tutorials und Video-Tutorials. So sieht meine Konfiguration aus:

image006_3da4f6c3bc631840ea50925283ed6b097126ba2d.jpgimage007_41380d5ea97dcdd12a057cf23cdd68b3fced28dc.jpgimage008_d762aebe3410888152275353b3c3ba7e172b2c6e.jpgimage0111_b059147a00ca2458cb86af8239255666cdae0d76.jpg

Bitte beachten Sie zwei Details:

  • Ich habe oft gesehen, dass eine DIN-Schiene auf einer Platte befestigen wird, die auf einem Tisch liegt. Dadurch wird der RevPi Core jedoch in einer Position betrieben, in der die laminare Luftströmung blockiert wird, die für die Kühlung des Raspberry-Comput-Modules unbedingt erforderlich ist. Bitte tun Sie das nicht! Verwenden Sie den RevPi immer aufrecht, damit ausreichend Luft in die unteren Schlitze und aus den oberen Schlitzen strömen kann!

Sehen Sie sich die Abbildung auf der Seite des AIO-Moduls an, um zu sehen, wie Sie einen 4-Draht- oder 3-Draht-RTD-Sensor richtig anschließen. Ich verwende die RTD1-Eingangsklemmen für diese Konfiguration sowie Out1 und Out2 zum Anschließen der Glühlampen. Bitte beachten Sie, dass zwei 10-W-Glühbirnen fast 1 A von 24 V Leistung verbrauchen. Verwenden Sie dicke Drähte für den E/A-Stromversorgungsanschluss und verwenden Sie die Ausgänge nur im High-Side-Modus (dies liefert maximal 500 mA pro Ausgang, während Push-Pull nur 100 mA liefert).

In ein paar Tagen wird Teil 2 veröffentlicht, in dem ich Schritt für Schritt die Installation der Bibliotheken und Tools beschreibe, die wir verwenden werden. Verpassen Sie nichts und abonnieren Sie den Newsletter, um direkt informiert zu werden, sobald er online ist.

Volker de Haas started electronics and computing with a KIM1 and machine language in the 70s. Then FORTRAN, PASCAL, BASIC, C, MUMPS. Developed complex digital circuits and analogue electronics for neuroscience labs (and his MD grade). Later: database engineering, C++, C#, industrial hard- and software developer (transport, automotive, automation). Designed and constructed the open-source PLC / IPC "Revolution Pi". Now offering advanced development and exceptional exhibits.
DesignSpark Electrical Logolinkedin