Auf S7-1200 via Modbus von CODESYS RaspberryPi zugreifen, Teil 1

Damit man auf die Siemens S7-1200 PLC via Modbus drauf zugreifen kann muss man erstmal die 1200 etwas konfigurieren und die Bausteine für den MB_SERVER erstellen.

Bei der S7-1200 folgendes einstellen:

1200 IP-Adresse einstellen
IP-Adresse einstellen

 

1200 Takt- & Systemmerker
Takt- & Systemmerker einstellen

 

Danach denn den Datenbaustein erstellen der als Holding Register für den Modbus-Server der 1200 dient, wobei der DB keinen optimierten Bausteinzugriff nutzen darf:

Datenbaustein
Datenbaustein anlegen

 

Optimierter Bausteinzugriff
Optimierter Bausteinzugriff AUS

 

Nun entweder einen FC anlegen in den die Netzwerke für den Modbus-Server hinein kommen und diesen FC dann in OB1 aufrufen, oder alles in OB1 direkt einfügen:

Testwerte
Ein paar Testwerte um später die Übertragung zu testen.

 

Modbus-Server
MB_SERVER

Am besten ersteinmal folgende Werte wählen:
CONNECT_ID = 1 (man kann auch mehrere MB_SERVER starten, dann muss jeder eine einzigartige ID haben, z.B. indem sie fortlaufend nummeriert werden)
IP_PORT = 502
MB_HOLD_REG = P#DB1.DBx0.0 WORD 25 (bedeutet das Holding-Register hat als Quelle DB1 und beginnt bei DBX0.0 und hat eine Länge von 25 WORD)

Danach Programm übersetzen und übertragen. Falls ein Fehler auftritt kann die Fehlermeldung mit Hilfe des STATUS und der Hilfe-Funktion nachgesehen werden, da dort alle Statusmeldungen aufgeschlüsselt sind.

Timer mit Verlängerung

var Timer FlurBewegungsmelder_timer = null

rule "Flur-Licht Bewegungsmelder"
when
Item Flur_Bewegungsmelder changed
then
if(Flur_Bewegungsmelder.state == OPEN && FlurBewegungsmelder_timer == null) {
sendCommand(Schalter_Flur, ON)
FlurBewegungsmelder_timer = createTimer(now.plusMinutes(2)) [|
sendCommand(Schalter_Flur,OFF)
FlurBewegungsmelder_timer = null
]
}
else if (Flur_Bewegungsmelder.state == OPEN) {
FlurBewegungsmelder_timer.reschedule(now.plusMinutes(2))
}
end

OpenHAB auf Raspberry installieren

Raspian auf Raspberry installieren

Nun muss man den PG-Key von OpenHAB unserem hinzufügen, das geht mit folgendem Konsolenbefehl:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
Nun mit nano folgende Datei bearbeiten/anlegen:
sudo nano /etc/apt/sources.list.d/openhab.list
Und folgende Zeile in die Datei schreiben:
deb http://dl.bintray.com/openhab/apt-repo stable main
In der Konsole nun folgende zwei Befehle ausführen um den Index zu aktualisieren, und das System auf den neuesten Stand zu bringen:
sudo apt-get update
sudo apt-get upgrade

Wenn das erledigt ist kann man OpenHAB installieren:
sudo apt-get install openhab-runtime
Die Installation erfolgt in /usr/share/openhab

Verfügbare addons kann man nun ebenfalls per apt-get installieren, welche verfügbar sind sieht man per:
sudo apt-cache search openhab

Damit man per FTP Dateien auf den raspberry überspielen kann, müssen noch Verzeichnisrechte geändert werden:
cd /usr/share
sudo chmod -R 777 openhab/

Mehr zu Dateirechten ist z.B. nachzulesen unter: http://www.schmager.de/chmod.shtml

Nun das „Demo Setup“ herunterladen von http://www.openhab.org/getting-started/downloads.html und auf dem Windows-Rechner entpacken.
Nun das Demo-Projekt auf den Rechner übertragen per FTP-Client, ich benutze in diesem Fall filezilla. IP des raspberry und als Port 22.
Das Verzeichnis sollte sein:
/usr/share/openhab

OpenHAB kann nun gestartet oder gestopt werden mit:
sudo systemctl start openhab
sudo systemctl stop openhab
sudo systemctl status openhab

Damit OpenHAB auch nach einem reboot wieder automatisch startet gibt man folgendes ein:
sudo systemctl daemon-reload
sudo systemctl enable openhab

Mehr dazu unter: openhab Wiki

Ob der Demo-Server nun läuft sieht man unter:
http://:8080/openhab.app?sitemap=demo