Raspberry PI als SPS mit CODESYS

CODESYS-LogoJetzt gibt es auch eine Bibliothek und ein Beispielprogramm für die vorgestellten SPS-Baugruppen, um diese mit der Programmierumgebung CODESYS von 3S-Smart Software Solutions GmbH ansprechen zu können.

 

 

 1. Softwarepakete herunterladen

CODESYS Control for Raspberry Pi SL

Die aktuelle Raspberry Runtime kann im CODESYS-Store heruntergeladen werden.
Der Demo-Betrieb läuft zwei Stunden ohne Einschränkungen und schaltet sich danach ab.
Eine Runtime-Lizenz ohne Laufzeitbeschränkung gibt es für 35€ plus MWSt.
http://store.codesys.com/codesys-control-for-raspberry-pi-sl.html

 

CODESYS Development System

Zum Programmieren benötigt man das CODESYS Development System
Dieses findet man im Download-Bereich von CODESYS
http://www.codesys.com/download/download-center.html

 

Horter & Kalb Package für I2C-Baugruppen

Über diese Bibliothek können die Baugruppen angesprochen werden.
Horter_Kalb_Raspi_Support_1.0.0.0

 

2. Rasperry-PI installieren

Die Installation des Raspberry-Image erfolgt mit dem Programm “Win32 Disk Imager”
Die Vorgehensweise ist in der dem PI-Image beigepackten PDF-Datei beschrieben.

Zum ersten Booten am Besten eine Tastatur und einen Monitor anschließen.

Ist der PI hochgefahren kann man sich anmelden.

  • Login: pi
  • Password: raspberry (raspberrz bei einer deutschen Tastatur!)

Mit dem Befehl

ifconfig

oder

ip addr

findet man heraus welche IP-Adresse der PI von Ihrem DHCP-Server zugewiesen bekommen hat.

Von einem anderen PC aus sollte der PI jetzt auch auf einen ping antworten. Dazu mit cmd in der Programm-Ausführungszeile eine Eingabeaufforderung öffnen und den Befehl ping 192.168.xxx.yyy eingeben.

ping 192.168.xxx.yyy

Ping wird ausgeführt für 192.168.xxx.yyy mit 32 Bytes Daten:
Antwort von 192.168.xxx.yyy: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.xxx.yyy: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.xxx.yyy: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.xxx.yyy: Bytes=32 Zeit<1ms TTL=64

Hat man die IP-Adresse vom PI herausgefunden kann man sich in Zukunft auch ohne Monitor und Tastatur von einem anderen PC aus über “Putty” anmelden. Ach hierfür gibt es im Netz zahlreiche Beschreibungen.

 

3. CODESYS Entwicklungsumgebung installieren

Installieren Sie die aktuelle Version des CODESYS Development System auf einem Windows-PC. Das sollte reibungslos ablaufen.

 

4. Packages installieren

Beim ersten Start wird die Entwicklungsumgebung eingerichtet. Anschließend müssen im “Package Manager” zwei Pakete nachinstalliert werden.

  • CODESYS_Control_for_Raspberry_PI.package
    Diese .package-Datei ist im zip-Archiv vom PI-Image enthalten
  • Horter_Kalb_Raspi_Support.package
    Diese .package-Datei ist im Horter_Kalb_Raspi_Support.zip enthalten.
    Das Package kann kostenlos auf unserer Homepage oder im CODESYS Store heruntergeladen werden.

Beide Pakete nacheinander über “Tools – Package Manager” mit dem Button “Installieren” auswählen.

Falls es bei der Installation des Package zu Fehlermeldungen kommt (z.B. Der Zugriff auf den Pfad C:\ProgramData\AP\PluginCaches\… wurde verweigert) bitte Codesys als Administrator starten.

 

5. I2C-Demoprogramm öffnen

Im zip-Archiv sind zwei Programme, in denen die prinzipielle Funktion der Karten beschrieben sind.

  • Horter_Kalb_Raspi_Support_FB_Example.Project
  • Horter_Kalb_Raspi_Support_IO_driver_Example.Project

ALs erstes wollen wir das Projekt “Horter_Kalb_Raspi_Support_IO_driver_Example.Project” öffnen. Hierbei sollten keine Fehlermeldungen mehr im Ausgabefenster erscheinen. Wenn doch fehlt eventuell noch eine Bibliothek, die aus dem Netz geladen und über den Package Manager nachinstalliert werden muss.

 

6. Online mit dem Raspberry-PI verbinden

Jetzt muss das Programm mit “Erstellen – Übersetzten” oder F11 kompiliert werden. Ist dieser Vorgang Fehlerfrei abgeschlossen, verbinden wir uns über “Online – Einloggen” oder Alt+F8 mit dem Raspberry-PI.

Jetzt kommt eine Meldung, dass noch kein aktiver Pfad gesetzt wurde. Drücken Sie den Button “Nein” damit die Seite der Kommunikationseinstellungen geöffnet wird.

Im rechten Fenster wird vermutlich noch kein Verbindungspartner vorgeschlagen werden. Wir legen nun unseren PI als “Gerät” an. Wählen Sie dazu “Gerät – Bevorzugte Geräte verwalten …”

In dem Fenster nun den Knop “Hinzufügen” drücken und die IP-Adresse vom PI eintragen und anschließend auswählen.

Die Verbindung zur Runtime auf dem Raspberry-PI wird aufgebaut und die MAC-Adresse und die Runtime-Version werden angezeigt.

Jetzt mit “Online Einloggen” fortfahren und das Programm zum PI übertragen.

Zum Schluss muss die SPS noch mit “Debug Start” oder F5 in RUN geschaltet werden.

 

7. Webvisualisierung aufrufen

Verbinden Sie sich nun mit einem beliebigen Browser (evtl. auch Smartphone) auf die Adresse http://192.168.xxx.yyy:8080/webvisu.htm

Im Explorer sollte nun folgendes Bild erscheinen.

Webvisualisierung der I2C-SPS Baugruppen

Die LEDs der digitalen Eingabekarte (I2HE) zeigen den aktuellen Zustand der Signale an. Die Ausgänge der digitalen Ausgabekarte (I2HA) können mit den Tasten darunter geschaltet werden. An den fünf Messgeräten werden die Messwerte der analogen Eingangskarte (I2HAE) angezeigt. An den vier Potentiometern kann der Sollwert für die analogen Ausgangskarten (I2HAA) verändert werden.

Viel Spaß beim Entwickeln und Testen eigener CODESYS SPS-Programme.

 

 

24 Kommentare

  1. Hallo Herr Horter,
    seit einem Codesys-Update auf 3.5.12 funktionieren meine I2C-Baugruppen nicht mehr.
    Die Gerätebeschreibung „Codesys Control for RaspberryPi“ wurde ebenfalls auf 3.5.12.10 upgedated.
    Im online Konfigurationsbetrieb werden die Eingänge korrekt verarbeitet (Bus funktioniert also, i2cdetect zeigt auch alles an, rote INT-LED zuckt kurz bei Änderung). Nach dem Laden der Applikation und starten geht leider nichts mehr. Die LEDs der Eingänge zeigen Signal an, die rote Interrupt LED leuchtet dauerhaft – es scheint also nichts „abgeholt“ zu werden. Auch das Demo-Projekt (xxxxxx_support_io_driver_example) verhält sich genauso.
    Ich bin verzweifelt…

  2. Hi Jürgen, we are facing problems with input card. Sometimes all inputs become active with no explanation. It appears to be a problem with library/communication. The eigth ports of the PCF8574 are set to low state and all the leds become active. We need to re-power the card to recover the functionality of the input card.

  3. Hallo, für ein Test Projekt müsste ich 8 Eingänge (Schwimmerschalter) auf Hi/Lo überwachen.
    Das Problem ist das ich die Eingänge jeweils nicht direkt anschließen kann es müsste also per Funk übertragen werden. In einem Kellerraum wäre auch Internet verfügbar. Wenn ein Schwimmerschalter auslöst (Lo) soll ein Alarm per Mail alternativ auch SMS versendet werden.
    Mit CoDeSys kenne ich mich aus (Wago, Beckhoff …) nur mit Respberry noch nicht!
    Welche Komponenten würde ich benötigen? Am besten gleich mit Verlinkung zu ihren Komponenten (bitte inkl. Preise und Lieferzeit).
    Wilfried T.

  4. Hallo Herr Horter,

    ich habe je eine Ihrer digitalen Ein- und Ausgabebaugruppen am Pi. Mittlerweile habe ich mich mit Codesys ganz gut angefreundet. Jetzt möchte ich meine S5-SPS, die seit 20 Jahren ihren Dienst bei mir zuhause tut, durch eben diese Komponenten ersetzen. Dazu brauche ich natürlich noch einige Module aber das sollte ich hinkriegen. Nun hab ich gesehen, daß Sie auch ein 433MHz Modul für den I2C-Bus haben. Ich besitze einige Funksteckdosen von Intertechno. Diese schalte ich zur Zeit über digitale Ausgänge mit der SPS. Dazu habe ich eine „normale“ Fernbedienung umgebaut. Nun endlich meine Fragen: 1. Kann das Modul das Intertechno-Protokoll? und 2. Kann ich das Modul per Codesys ansteuern?

    Für Ihre Mühe Danke ich im Voraus!

    Mit freundlichen Grüßen

    • Hallo Gernold,

      wir arbeiten gerade an einem universellen Protokoll für 433 MHz Funksteckdosen. Damit soll es möglich sein alle Steckdosen anzusprechen wenn man den Sendecode kennt.
      Diesen herauszufinden geht recht einfach mit einem 433 MHz Sniffer. Ein Beispiel findet man auf der Seite alexbloggt.com
      Wir werden Sendecodes hier im Blog veröffentlichen. Sie können Ihren Sender gerne auch zu uns schicken und wir lesen die Sendecodes aus.

      Für Codesys haben wir keinen fertigen FB zum Ansprechen. Es ist aber möglich mit Standard I2C-Befehlen den I2C-Slave anzusteuern. Wenn Sie das ausprobieren möchten, kann ich Ihnen ein fertig aufgebautes Modul und einen Satz Pollin-Funksteckdosen leihweise zur Verfügung stellen.
      Den Code stellen wir dann für alle in diesen Blog.

  5. Hallo,

    ich hab ein kleines Problem bei der Installation der Horter-Packages und zwar wird mir der Zugriff zu PlugInCaches\CODESYS-614171C9.cache verweigert. Hätten sie einen Rat woran das liegen könnte?

    Viele Grüße

  6. Hallo,
    Ich bin Neuanfänger in codesys und versuche jetzt schon seit ca. 2 Wochen mit dem laden Eures I2C Demoprogrammes klar zu kommen. Ich bekomme beim starten immer wieder die MEldung das Bibliotheken nicht geladen werden konnten. Ich hab bisher aber weder herasugefunden welche Bibliotheken das sein sollen noch wi ich die her bekomme. Die Hilfefunktion von codesys ist für einen Anfänger ein absoluter Schrott und nicht hilfreich. Gibt es Tips oder noch besser Literatur die einen wirklich einführen kann. Ansomnsten muss ich wohl alles in den Mistkübel werfen und mir ein anderes Hobby suchen.

  7. Hallo

    gibt es schon Lösungen um den Hub in ein CoDeSys- Projekt zu integrieren?
    Ich mache gerade die Planung und Installation für mein Haus und bin mit den Eingängen schon über die 128 Eingänge hinaus.
    Meine Idee ist es, dass ganze in 2 Stränge (2 Bus-Stränge Reserve) auf zubauen.

    • Sie meinen sicherlich den I2C-Multiplexter.

      Hier der Unterschied zum I2C-Switch:
      – Der Multiplexer hat drei Adresspins, der Switch nur zwei.
      – Es können maximal acht Multiplexer an einem Master angeschlossen werden.
      – Beim Multiplexer ist immer nur ein Kanal durchgeschaltet.

      Der kann ganz einfach als I2HA-Baugruppe z.B. mit der 7-Bit-Adresse 112 bis 119 angesprochen werden.
      Da unsere Ausgabebaugruppen mit negativer Logik arbeiten müssen Sie folgende Werte schicken um auf den richtigen Kanal zu schalten.

      255 – Alle Kanäle AUS
      251 – Kanal 0 aktiv
      250 – Kanal 1 aktiv
      249 – Kanal 2 aktiv
      248 – Kanal 3 aktiv

      Das sollte dann so klappen.

  8. Hallo,

    ich versuche jetzt schon ein paar Tage eine Digitale- und eine Analoge-Ausgangskarte an einem raspberry pi 2 zum laufen zu bringen. Ich verwende den Repeater, die Spannungen liegen an den Karten an, die Busleitung habe ich mithilfe eines Ohmmeters durchgemessen. Trotzdem tut sich nichts. Hätten Sie einen Tipp, was ich noch überprüfen kann?

    Vielen Dank
    Gruß
    Marc Adler

    • Hallo,
      haben Sie 5V an den Karten angeschlossen.
      Der Repeater versorgt die I2C-Baugruppen NICHT mit 5V. Die 5V müssen entweder vom PI oder über ein zweites Netzgerät angeschlossen werden.
      Haben SIe schon einmal versucht mit

      i2cdetect -y 1

      den Bus anzusprechen?

      • Hallo,
        ich habe ein 5V und ein 12V Netzteil. Die beiden Minus-Pole sind miteinander verbunden. Das 5V Netzteil habe ich für den i2c Bus und den Raspberry, das 12V Netzteil für die Ausgangskarten.
        Ich verwende den raspberry pi 2 mit codesys. Gerade habe ich den bus versucht mit
        sudo i2cdetect -y 1
        (mit der Konsole putty über ssh) zu erreichen . Bei den Adressen 1b, 3b, 4c und 4d bekomme ich jeweils ein UU zurück.
        Viele Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.