# Codesys 2.3 Master, Codesys 3.5 (Raspberry) Slave



## Deep Blue (17 Mai 2017)

Hallo,

ich habe auf einem Raspi 3 Codesys 3.5 laufen. Nun möchte ich Daten zwischen dem Raspi und meiner Hausautomation Wago 750-881 hin- und her senden. Hat zufällig einer von euch einen Link, wo ich mich einlesen kann? Mir fehlt die Erfahrung beim Einrichten des Slave auf dem Raspi (Codesys 3.5). Den Wago Controller als Modbus Master RTU/TCP kann ich einrichten.

Danke!


----------



## HausSPSler (20 Mai 2017)

Hi,
ich versuchs mal zu beschreiben was du in V3 machen must.
1. Raspi Projekt anlegen
2. Ethernet Knoten im Gerätebaum einhängen (rechtsclick auf die SPS - Gerät anhängen)
3. dann je nachdem ob der Master der Slave oder der Master sein muss eben Modbus TCP Master und darunter den Modbus TCP Slave (falls deine V2.3 der Master eben nur den Modbus Slave)
4. Für den Fall das du Master auf dem Raspi bist... hänge ich dir mal einen Screenshot an wie man die Function Codes einträgt (Add Channel)
5. Variablen Mappen
6. Raspi scannen und auf dem Ethernet Knoten die Netzwerkschnittstelle "browsen" (Klar Netzwerk / IP usw muss eben zu deinem Slave passen sollte klar)

Es ist so das man in V3 so keine FB's aus der BIB aufrufen muss sondern das passiert aller implizit vom System. Nur Variablen Mappen und auch in den POU's verwenden
Hier gibt es ein Beispiel wie man es mit 2 Pi's macht, vielleicht wird dadurch klar wie man es zwischen V2.3 und V3 machen könnte:

http://forum.codesys.com/viewtopic.php?f=23&t=6247&p=17421#p17421

Hoffe diese Beschreibung hilft weiter.
Grüße


----------



## Deep Blue (1 Juni 2018)

Hallo HausSPSler,

nun geht es bei mir so langsam wieder weiter. Der Raspi inkl. CoDeSys 3 steht. Nun bin ich wieder bei meiner ursprünglichen Frage, wie ich Variablen zwischen dem Raspi und dem 2.3 Controller hin- und her schaufel.

Also ich habe auf dem Raspi im Ethernet den Master und Slave eingebunden. Der Master hat die IP des Raspis, der Slave den des 2.3 Controllers. Am Slave habe ich einen Modbus Slave-Kanal mit FC 3 eingerichtet (kein Offset).

Auf dem 2.3 Controller habe ich einfach eine Variable als Int mit der Adresse MW 0 mit dem Wert 100 beschrieben. Das sollte auf dem Slave doch reichen, oder?

Trotzdem sehe ich keine Wertänderung auf dem RPi.

Ist mein MW falsch adressiert?

Ein  Offset im Slave von 12288 brachte auch nichts.

Ich komme einfach nicht drauf...


----------



## holgermaik (2 Juni 2018)

Hallo Deep Blue

unter Device Gerät anhängen - Ethernet Adapter
Reiter allgemein: 
  Schnittstelle zuweisen - eth0
  IP Adresse: RPI Adresse eintragen
  Gateway: Adresse Gateway eintargen
darunter TCP_Master anhängen
Reiter Allgemein:
  TimeOut vergeben
  auto-reconnect anhacken
Reiter TCPMaster E/A Abbild
  den Master einem Task zuweisen z.B. Main_Task
Reiter TCPMaster Parameter:
  Parameter können erstmal so bleiben
darunter TCP_Slave anhängen
Reiter Allgemein:
  IP-Addresse - Addresse des Slave
  Timeout - z.B. 1000
  Port: - bei Modbus - 502
Reiter Slave Kanal:
  Funktionscode auswählen - z.B. 3
  Trigger - z.B. zyklisch
  Zeit - z.B. 100ms
  Offset - z.B. 0x3000 für MW0 beim Slave
  Länge - z.B. 1
  Fehlerbehandlung - z.B. letzten Wert halten
Reiter TCPSlave E/A Abbild
Hier sollte deine Variable aus der Kanaldefinition zu sehen sein
und du kannst sie auf eine Variable der GVL mappen
- rechts unten noch den Task auswählen zur Aktualisierung
übersetzen und laden
Fertig

Gruß Holger


----------



## Deep Blue (4 Juni 2018)

Hallo Holger,

vielen, vielen Dank für Deine Hilfe. Lesen UND Schreiben funktioniert 1A.

Freue mich gerade tierisch darüber.

Nochmals Danke an ALLE die geholfen haben!!!


----------



## saar1and (23 Oktober 2018)

Guten Tag weiß das es schon etwas älter ist der Thread aber passt dazu.
Und zwar habe ich eine Wago 750 889 und leider funktioniert die Visu nicht mehr. Sieht auch nicht schön aus, wird also Zeit für ein Update.
Hab jetzt schon einen RaspberryPi Model 3B+ der mit einem 24 Zoll Touchscreen betrieben wird. 
Jetzt würde ich da gerne die Visu über Codesys V3.5 laufen lassen. Die Codesys Control für Raspberry Pi  und das Development System auf dem Pi installieren. Soweit so verständlich. Aber wie bekomme ich jetzt die Verbind hin. Was muss ich in meiner Wago mit Codesys V2.3 programmieren /parametrieren bzw. brauche ich noch irgend eine Bibliothek. Und was muss ich dann in der Codesys 3.5 auf dem Raspi machen.

Über Hilfe würde ich mich freuen. MFG


----------



## holgermaik (23 Oktober 2018)

Morgen
Vom Prinzip her hast du dann 2 getrennte Systeme.
Alle Variablen die du jetzt anzeigst musst auf den PI übertragen z.B. mit Modbus TCP.
In Codesys 3.5 malst du dir neue Bilder und weist deinen Objekten die Variablen zu.


----------



## saar1and (23 Oktober 2018)

holgermaik schrieb:


> Morgen
> Vom Prinzip her hast du dann 2 getrennte Systeme.
> Alle Variablen die du jetzt anzeigst musst auf den PI übertragen z.B. mit Modbus TCP.
> In Codesys 3.5 malst du dir neue Bilder und weist deinen Objekten die Variablen zu.



Danke soweit ist es auch noch klar Wie mache ich das jetzt mit Modbus TCP. Wie richte ich den auf meiner Wago 750-889 in Codesys V2.3 ein und wie dann auf dem Raspi

MFG


----------



## holgermaik (23 Oktober 2018)

Auf der Wago 889 schreibst du deine Variable z.B. in %MW0. Den Modbus Server stellt der Controller automatisch zur Verfügung, hier brauchst du nichts zu tun.
Auf der PI Seite gehst du wie oben beschrieben vor und liest das Wort wieder ein und dynamisierst deine Bilder.


----------



## saar1and (26 Oktober 2018)

So hab alles hinbekommen auch schon die ersten Bits und Bytes übertragen.
Vielen dank holger für deine Hilfe.
Hätte noch eine Frage: Woher weiß ich welchen Offset ich im READ Register eingeben muss für andere MW zu bekommen. Gibt es da ne Anleitung oder eine Tabelle?
MFG


----------



## holgermaik (26 Oktober 2018)

Hallo
Schön das es geklappt hat. Im Handbuch Kapitel 13.3.4 gibt es eine Tabelle.
Hinweis: Beim Mapping kann weder die Wago noch der Raspi feststellen ob die Verbindung i.o. ist. Da musst du selber was drumrum programmieren.
Holger


----------



## saar1and (26 Oktober 2018)

Welches Handbuch meinst du? Okay hab jetzt auch schon andere MW's angesprochen sowohl lesend als auch schreibend. Umrechnung mit dem Offset Wert ist etwas nervend aber klappt.

Jetzt hab ich aber noch ein Problem mit der Übertragen von REAL zahlen.

Hab dazu in der Codesys 2.3 meine Variable auf %MD2 gelegt.  (VariableX AT %MD2: REAL)
In der 3.5 hab ich einen neuen Modbus Channel  angelegt. ->Funktionscode 3 ->Offset 0x3003 (müsste ja MD2 in der Codesys 2.3 sein)
Dann im Modbus TCP Slave E/A- Abbild dem Kompletten Kanal eine REAL Variable zugeordnet.
Empfange aber leider keinen Wert bzw. nur einen Wert mit dem ich nichts anfangen kann. 

Wie bekomme ich meine REAL Zahl von der Codesys 2.3 auf der Wago in die Codesys 3.5 auf dem PI.

MFG


----------



## holgermaik (26 Oktober 2018)

> Welches Handbuch meinst du?


Das von deinem Controller


> Hab dazu in der Codesys 2.3 meine Variable auf %MD2 gelegt.  (VariableX AT %MD2: REAL)
> In der 3.5 hab ich einen neuen Modbus Channel  angelegt.  ->Funktionscode 3 ->Offset 0x3003 (müsste ja MD2 in der Codesys  2.3 sein)


%MD2 ist aber Offset 0x3004 & 0x3005


> Wie bekomme ich meine REAL Zahl von der Codesys 2.3 auf der Wago in die Codesys 3.5 auf dem PI.


Ich würde auf Real verzichten. Lieber deine Quelldaten Multiplizieren und als DINT übertragen. Anschließend im Pi alles zurück.
Beim Datenformat Real gibt es in der Beschreibung von Codesys2.3 und Codesys 3.5 unterschiede. Könnte auch ein Druckfehler sein.


> Codesys 2.3 - Zulässige Werte für REAL: 1.175494351e-38  bis 3.402823466e+38
> Codesys 3.5 - Zulässige Werte für REAL: -3.402823e+38  bis 3.402823e+38


Holger


----------

