Codesys auf dem Raspberry und Fhem

Begonnen von leibi, 23 Januar 2014, 06:48:37

Vorheriges Thema - Nächstes Thema

leibi

Hallo,

es gibt ja seit Weihnachten die Möglichkeit das Codesys-Runtime(wie auf Wago/Beckhoff)zu installieren, habe ich schon auf der SPS-Drives in Nürnberg gesehen.
Der Raspberry läuft dann als SPS, momentan auf 2h begrentzt.
Gibt es eine möglichkeit, von Fhem aus, auf die Daten des Codesys-Systems zuzugreifen?
Interessant ist sicherlich die "neue" Visualisierung von Codesys V3.

Hat da jemand schon was gebastelt?

Gruß
Markus

Puschel74

Hallo,

einige im Forum greifen wohl schon fleissig auf eine reale Wago über FHEM zu.

Ich hab meine Wago noch verstaubt in der Ecke liegen und verfolge den Beitrag nur sporadisch aber ich meien gelesen zu haben das es klappt.
Also der Zugriff auf die echte Wago.

Wenn du CodeSys aber auf dem RasPi am laufen hast sollte doch ein Zugriff auf die Werte das kleinere Problem darstellen.
Wobei - wozu willst du auf CodeSys zugreifen?

MWn - das ist aber schon älter was Wago betrifft - brauchst du CodeSys ja nur als Programmierumgebung.
Das fertige Programm wird ja dann auf die CPU geladen und dort ausgeführt also sollte es ja reichen wenn du per Netzwerk auf die Wago-CPU und deren Peripherie zugreifen kannst.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

ChrisD

Hallo,

Du kannst über ModbusTCP auf die Daten zugreifen. Eine Möglichkeit über SymArti direkt auf die Variablen der SPS zuzugreifen gibt es leider nicht.

Die V3 von CoDeSys unterscheidet sich in verschiedenen Punkten stark von der V2, dies ist wohl neben den Hardwareanforderungen auch einer der Gründe wieso die meisten großen Hersteller noch immer die V2 verwenden.

Laut Aussage von 3S soll es übrigens im 2. Quartal 2014 eine kostenpflichtige Version geben die nicht zeitlich begrenzt ist.

Grüße,

ChrisD



leibi

Hallo,

ja das mit der kostenpflichtigen Version hat mir der freundliche Herr auf der Messe auch schon gesagt, es soll moderat im Preis sein.

Puschel74: Ich gaube du hast mich falsch verstanden, es wird nicht die Codesys Programmieranwendung auf den Raspi installiert, es gibt eine Runtime für diesen, der Raspi fungiert als SPS mit Visu, die wurde hauptsächlich für Schulen/FH's gemacht( billiger gibts halt keine SPS, daher die 2h Laufzeitbeschränkung).

Ich bin an der Visu interessiert, und möchte auf die Daten von meinen realen SPS'en von Wago und B&R zugreifen, geht ja über Modbus, Super währe es halt wenn mann noch auf Fhem zugreifen kann(visualisieren), wenn es schon auf einen gemeinsamen Raspi läuft.

Mfg

ChrisD

Hallo,

Den Zugriff auf FHEM musst du auch über ModbusTCP machen.

Grüße,

ChrisD

leibi

Hallo,

kann ich Fhem eine andere IP vergeben, da ja beide Modbus-Teilnehmer (Fhem und SPS Runtime) auf einem Raspi laufen?

MFG
Markus

John

Wieso soll das notwendig sein ?

Codesys wird einen festen Listener-Port belegen.

Zu diesen können sich sowohl externe, wie interne Anwendungen konnektieren.

Codesys ist der listener/server, FHEM der Modubus-Client.

Wenn beides am selben Rechner läuft kannst du dich auch über den localhost verbinden (127.0.0.1)

Eine 2. IP Adresse ist nicht nötig.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

NetFritz

Hallo
Es gibt ja inzwischen eine unbeschränkte Laufzeit Version Codesys für RPi.

Ich habe nun versucht mit einem Perl-Script das auch auf den Pi läuft wo auch Codesys läuft,
Netzwerkvariablen zu empfangen und zu senden.

Das senden der Netvar zu Codesys geht per UDP Broadcast Port:1203.
Das empfangen der Netvars von Codesys per UDP Broadcast Port:1202 geht nicht.
Es kommt folgende Fehlermeldung : "Address already in use" ("Adresse wird bereits verwendet" ) .

Wenn ich aber von einem anderen Debian PC die beiden Scripte aufrufen gehen sie beide.

Woran kann das liegen?
Es muss doch gehen von einem Pi die NetVars Daten zu senden und zu empfangen?

Kann es ewtl. sein das es sich um einem BUG in Codesys für RPi handelt?

Gruß NetFritz

John

Hallo NetFritz,

kannst du folgendes auf dem Raspi ausführen und das Ergebnis zeigen:
sudo netstat -utnap

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

NetFritz

Hallo
root@raspberrypi:~# netstat -utnap
Aktive Internetverbindungen (Server und stehende Verbindungen)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2266/sshd
tcp        0      0 0.0.0.0:11740           0.0.0.0:*               LISTEN      2190/codesyscontrol
tcp        0      0 0.0.0.0:1217            0.0.0.0:*               LISTEN      2190/codesyscontrol
tcp        0      0 0.0.0.0:4840            0.0.0.0:*               LISTEN      2190/codesyscontrol
tcp        0      0 192.168.2.50:11740      192.168.2.41:50430      VERBUNDEN   2190/codesyscontrol
tcp        0      0 127.0.0.1:4966          127.0.0.1:57259         VERBUNDEN   2190/codesyscontrol
tcp        0      0 127.0.0.1:57259         127.0.0.1:4966          VERBUNDEN   2190/codesyscontrol
tcp        0    352 192.168.2.50:22         192.168.2.41:50464      VERBUNDEN   10992/0
udp        0      0 0.0.0.0:55854           0.0.0.0:*                           2190/codesyscontrol
udp        0      0 0.0.0.0:68              0.0.0.0:*                           2221/dhclient
udp        0      0 0.0.0.0:25171           0.0.0.0:*                           2218/ntpd
udp        0      0 192.168.2.50:123        0.0.0.0:*                           2218/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           2218/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2218/ntpd
udp        0      0 0.0.0.0:1202            0.0.0.0:*                           2190/codesyscontrol
udp        0      0 0.0.0.0:1203            0.0.0.0:*                           2190/codesyscontrol
udp        0      0 192.168.2.255:1740      0.0.0.0:*                           2190/codesyscontrol
udp        0      0 192.168.2.50:1740       0.0.0.0:*                           2190/codesyscontrol
root@raspberrypi:~#

Gruß NetFritz

John

wenn ich das richtig sehe, nimmt codesys beide Ports für sich in Anspruch.
Zitat
udp        0      0 0.0.0.0:1202            0.0.0.0:*                           2190/codesyscontrol
udp        0      0 0.0.0.0:1203            0.0.0.0:*                           2190/codesyscontrol

Damit kann Perl natürlich Port 1202 nicht ein 2-tes Mal öffnen.

Ich denke du musst nochmals die Grundlagen der Kommunikation von Codesys klären.

Kannst du Codesys dazu überreden einen anderen Port für ausgehende UDP-Telegramme zu verwenden ?


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

NetFritz

Hallo
ZitatKannst du Codesys dazu überreden einen anderen Port für ausgehende UDP-Telegramme zu verwenden ?
Ja das geht.
Aber ich befürchte das sich daran nichts ändern wird.
Im normal Fall ist es so das auf Port:1202 gesendet und auch gehört wird.
Ich habe schon den hörenden Port von 1202 auf 1203 gelegt.
Sonst konnte ich auf diesen Port auch nicht mit meinen Script senden.
Morgen werde ich mal den Port 1202 ändern.
Gruß NetFritz 

NetFritz

Hallo
Habe den Codesys send Port von 1202 auf 1205 geändert.
Gleiches Ergebnis.
udp        0      0 0.0.0.0:1203            0.0.0.0:*                           2190/codesyscontrol
udp        0      0 0.0.0.0:1205            0.0.0.0:*                           2190/codesyscontrol

Ich habe erst mal eine Lösung gefunden.
Ich habe noch einen anderen RPi der dauernd Online ist.
Dort habe ich eine Portweiterleitung eingerichtet .
socat UDP4-RECV:1202 UDP4-SENDTO:192.168.2.50:1205
Der Codesys RPI hat die Adresse "192.168.2.50:1205"
Mit "socat -u -x udp-recv:1205 -" kann ich auf den Codesys RPi die Netvars auslesen.
-S3▒ 00 2d 53 33 00 00 00 00 02 00 01 00 01 00 15 00 b3 02 00 00 01
-S3▒ 00 2d 53 33 00 00 00 00 02 00 02 00 01 00 15 00 b3 02 00 00 00
-S3▒ 00 2d 53 33 00 00 00 00 02 00 01 00 01 00 15 00 b4 02 00 00 00
-S3▒ 00 2d 53 33 00 00 00 00 02 00 00 00 01 00 16 00 5b 01 00 00 5b 01

Gruß NetFritz

THerrmann

Gibt es inzwischen schon eine Lösung, ob das funktioniert? (FHEM und Codesys parallel inkl. Variablen-Austausch)

Hat das schon jemand im Einsatz? Damit würde man sich die relativ teuere SPS sparen und könnte für die ganzen IOs ModBusTcp-Slaves verwenden.