# mit Wago Daten von Siemens abgreifen



## lawkan (4 Juli 2014)

Hallo,
ich möchte mit meiner Wago Steuerung Daten von einer Siemens/VIPA-Steuerung abgreifen. Ich suche hierfür nach Bibliotheken die die Kommunikation bereitstellen. Wago benutzt den ModbusOnTCP-Protokoll und die Siemens Steuerung den RFC1006-Protokoll.

Es wäre toll wenn jemand mir hier dabei hilft und berät.

Gruß


----------



## Dr.MirakulixX (4 Juli 2014)

Bin leider zzt im Urlaub habe das aber so erledigt wie du das haben willst. Ab dem 16 könnte ich dir weiter helfen oder mal schauen ob ich vorher an die Sachen dran komme. Alternativ sprich mal den Wago Support an (Anruf) die haben mir damals auch weitergeholfen.


----------



## gravieren (4 Juli 2014)

Hi

Auch Siemens kann ModBus TCP.

Bei Siemens kostet das jedoch etwas.



Gruß Karl


----------



## Thomas_v2.1 (4 Juli 2014)

Ich hatte mal bei Oscat einen Baustein für die Network-Library eingereicht, mit dem man aufsetzend auf den TCP-Bausteinen der Oscat-Bibliothek Daten aus einer S7 lesen und schreiben kann, ohne dass dazu bei der S7 etwas projektiert oder programmiert werden muss. Ich habe von Oscat aber keine Rückmeldung erhalten, selber hab ich es nur mit Beckhoff Hardware (BC und PC-Runtime) getestet.


----------



## Mobi (4 Juli 2014)

Du kannst dir auch ein eigenes Protokoll zusammenstellen und dann das ganze über TCP abwickeln.


----------



## lawkan (14 Juli 2014)

vielen Dank für eure Antworten.
ich hab mittlerweile von Wago eine Bib bekommen mit der ich die Kommunikation bereitstellen kann und damit die Daten abhole.


----------



## gravieren (14 Juli 2014)

Hi

Wie heißt den die LIB  ?


----------



## lawkan (20 Juli 2014)

die Lib heißt: WagoLibDB.lib


----------



## orion (22 August 2014)

Thomas_v2.1 schrieb:


> Ich hatte mal bei Oscat einen Baustein für die Network-Library eingereicht, mit dem man aufsetzend auf den TCP-Bausteinen der Oscat-Bibliothek Daten aus einer S7 lesen und schreiben kann, ohne dass dazu bei der S7 etwas projektiert oder programmiert werden muss. Ich habe von Oscat aber keine Rückmeldung erhalten, selber hab ich es nur mit Beckhoff Hardware (BC und PC-Runtime) getestet.


Könntest du deine Bibliothek uns zu Verfügung stellen?


----------



## NeuerSIMATICNutzer (1 Januar 2015)

lawkan schrieb:


> die Lib heißt: WagoLibDB.lib


Hallo,

möchte ebenfalls mit einer 750-880 Daten aus einer VIPA314DPM auslesen. Finde allerdings nicht die WagoLibDB.lib
auf der WAGO Seite??? Läuft das bei dir und hast du die LIb direkt von WAGO bekommen?


Gruß NSN


----------



## Dr.MirakulixX (2 Januar 2015)

Also ich habe die WagoLib seinerzeit direkt von Wago bekommen.


----------



## NeuerSIMATICNutzer (2 Januar 2015)

Hallo,

danke für deine Antwort. Und du holst dir mit der WAGO die Daten aus der Siemens. Die WAGO arbeitet als Server?

Gruß NSN


----------



## Dr.MirakulixX (2 Januar 2015)

Die Wago arbeitet Autark und holt sich die Daten von der S7


----------



## NeuerSIMATICNutzer (3 Januar 2015)

Hast du die Lib noch zur Verfugung bzw. könntest du Sie ir zur Verfügung stellen?


----------



## Dr.MirakulixX (3 Januar 2015)

Aber leider nicht vor Montag.


----------



## orion (3 Januar 2015)

Ich habe dir ein pm geschickt.


----------



## NeuerSIMATICNutzer (5 Januar 2015)

Hallo Leute,

hab die Lib heute von WAGO bekommen. Danke für eure Mühe

VG NSN


----------



## rocKay (14 Januar 2015)

Hallo Kollegen,

die WagoLibDB gibt es nur über den Wago Support. Sie wird nicht zum Download angeboten. Lässt sich aber problemlos anfordern.
Bezüglich der Modbus TCP/UDP Variante, auch dort bietet Wago S7 Modbus Bausteine an. Diese sind ebenfalls kostenfrei beim Support erhältlich.
Auf den neuen Siemens CPU's (1200/1500) sind bereits nativ Modbus Bausteine implementiert.

Gruß rocKay


----------



## Thomas_v2.1 (14 Januar 2015)

Wie funktioniert denn der Baustein aus der Wago Lib, muss man dafür in der S7 etwas programmieren?


----------



## NeuerSIMATICNutzer (14 Januar 2015)

Hallo,

am S7 Programm musst du prinzipiell nichts machen. Man gibt in der WAGO die IP der S7 und den Datenbereich den du beschreiben bzw. lesen möchtest. Ist auch ein Beispiel und ne gute Beschreibung dabei.

VG
NSN


----------



## rocKay (14 Januar 2015)

Das ist so nicht ganz richtig. Zum Einen muss drauf geachtet werden, das die CPU noch freie S7 Verbindungen bereit hat, zum Anderen muss bei den neuen CPU Generationen (1200/1500) bei dem entsprechenden DB der 'optimierte Bausteinzugriff' deaktiviert werden und bei neuen Firmwareversionen der Zugriff auch separat erlaubt werden. Dies ist aber auch in der Dokumentation beschrieben.
Ansonsten ist das ganze relativ Schmerzfrei.

Gruß rocKay


----------



## NeuerSIMATICNutzer (9 Februar 2015)

Ich glaube mit den freien S7 Verbindungen hast du mich erwischt. Habe nun 3 Bausteine in der WAGO konfiguriert mit dem ich Daten aus der VIPA lese bzw. schreibe. Zudem habe ich ein HMI über Ethernet verbunden.
Möchte ich in dieser Konstellation nun über LAN online gehen bekomme ich keine Verbindung. Das liegt dann wohl an den S7 Verbindungen? Wo kann ich hier sehen welche Verfügbar sind. Projektiert habe ich auf so weit ich weiß keine?

Gruß NSN


----------



## rocKay (9 Februar 2015)

Das solltest du in den CPU/CP Spezifikationen finden. Ich würde aber auch empfehlen nicht mehrere Instanzen des Bausteins zu nutzen, sondern die Daten mit einer Instanz nacheinander abzuarbeiten. Dann kommst du in diese Lage erst gar nicht.
Schrittkette/CASE:
Baustein Parameter setzen -> Verbindung aufbauen -> Ausführen -> Verbindung abbauen -> Neue Parameter setzen... usw.
Leg dir für die Parameter nen Datentypen an und mach die Schleife über ein ARRAY dieses Datentyps.

Beste und einfachste Variante.

Gruß rocKay


----------



## NeuerSIMATICNutzer (15 Februar 2015)

rocKay schrieb:


> Beste und einfachste Variante.


Beste wahrscheinlich schon aber einfach??? Bin recht neu in WAGO und tue mich dann auch recht schwer. Mit den Case Anweisungen muss ich wohl oder über auseinander setzen
aber ne Datenstruktur anlegen und auch ansprechen... Glaube das wird heavy für mich

Gruß NSN


----------



## NeuerSIMATICNutzer (8 März 2015)

Hallo,
habe es versucht nun mit CASE zu realisieren. Hierzu lasse ich einen Zähler von 0-5 hochzählen. Mit dem Zählwert _ schreibe ich den Datenbaustein mit den zugehörigen Parametern. In der Zeit in der die CASE Anweisung ausgeführt wird beschreibt er mir die Werte mit 0. 
Danach übernimmt er die Werte korrekt. Nur in der Zeit in der die Ausführung erfolgt schreibt er immer alles mit 0, ist das normal?
Gruß



_


----------



## .:WAGO::015844:. (9 März 2015)

Hallo NeuerSIMATICNutzer,

deine Abarbeitung ist auch so noch nicht ganz richtig. Bitte ändere Folgendes:

Den xOpen und xExecute kannst du aus deinem Datentypen entfernen und Lokal anlegen, diese Variablen werden nur einmal benötigt.
Dann nimmst du die Initialisierung deiner 'Liste' aus der Caseanweisung und führst diese zyklisch durch (Natürlich nicht die Empfangspuffer). Dafür ist keine Caseanweisung notwendig.
Nun kannst du dir eine Caseanweisung (Schrittkette) programmieren, die der Reihe nach die Bausteinabarbeitung organisiert.
Verbindung öffnen (xOpen) >> Datenübertragung starten (xExecute) >> Verbindung trennen (xOpen) usw.
Nach jedem Durchlauf (Case Ende) zählst du eine Iterationsvariable für die Liste (Arrayfelder) hoch um beim nächsten Durchlauf die neuen Parameter zu verwenden. Die geänderten Parameter werden vom ReadWrite Baustein nur übernommen, während die Verbindung geschlossen ist.


----------



## NeuerSIMATICNutzer (9 März 2015)

Hallo,

den xopen und xexecute war auch ursprünglich lokal angelegt, hatte zum testen diesen mit in die Struktur rein genommen.
Die CASE Anweisungen im Thread#25 sind also so nicht korrekt? Ich soll die Abarbeitung in AS (Schritkette) programmieren. Habe ich das so richtig verstanden?

Gruß NSN


----------



## .:WAGO::015844:. (9 März 2015)

Hallo NSN,

in welcher Sprache du die Schrittkette schreibst, bleibt dir überlassen.
Anhängend nur mal Beispielhaft, wie ich mir den Code vorstellen würde:


```
CASE iSchrittnummer OF[INDENT]10:[/INDENT]
[INDENT=2]xOpen:= TRUE;
[/INDENT]
[INDENT=2]iSchrittnummer:= 20;
[/INDENT]
[INDENT]
20:
[/INDENT]
[INDENT=2]IF xConnected THEN
[/INDENT]
[INDENT=3]xExecute:= TRUE;
iSchrittnummer:= 30;[/INDENT]
[INDENT=2]END_IF;
[/INDENT]
[INDENT]
30:[/INDENT]
[INDENT=2]IF xDone THEN
[/INDENT]
[INDENT=3]xOpen:= FALSE;
[/INDENT]
[INDENT=3]iSchrittnummer:= 40;[/INDENT]
[INDENT=2]END_IF;
[/INDENT]
[INDENT]
40:
[/INDENT]
[INDENT=2]ggf. noch Daten verarbeiten?
[/INDENT]
[INDENT=2]iListennummer:= iListennummer + 1;
iSchrittnummer:= 10;
[/INDENT]

END_CASE;


// Bausteinaufruf dann mit deiner Liste[iListennummer]. ...
```


----------



## NeuerSIMATICNutzer (11 März 2015)

Danke für deine Hilfestellung. Es läuft jetzt alles wunderbar. Eine Sache habe ich noch richtig sauber gelöst. Ich möchte Real und Word schreiben. Jetzt habe ich das WriteDataWord als DWORD deklariert und dementsprechend muß
mein Real in DWORD wandeln. In der Siemens kann ich zwar wieder in Real wandeln, allerdings fehlt mit der Teil hinter dem Komma. Könnte zwar jetzt die Daten in der Wago und Siemens zurecht ordnen aber würde es gern eleganter haben .
Kann ich den DWORD Deklarierung auch flexibel gestalten?

Gruß


----------



## .:WAGO::015844:. (13 März 2015)

Hallo NSN,

schön das der Datenaustausch soweit geklappt hat.
Anstatt deine Real-Daten in DWORD zu konvertieren, kannst du die in der WagoLibDB mitgelieferten Konvertierungsbausteine benutzen.
Der für dich entsprechende wäre der 'DB_REAL_WRITE_CoDeSys_TO_S7'.
Damit sollte die Datenübertragung Typkonform funktionieren.
Solltest du eine ältere Version der WagoLibDB benutzen, der diese Funktionen fehlen, würde ich dich bitten, dich nochmal per Mail bei uns zu melden.


----------

