mit Wago Daten von Siemens abgreifen

Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zuletzt bearbeitet:
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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ß

Unbenannt.JPGUnbenannt1.JPG
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zuletzt bearbeitet:
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
 
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:

Code:
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]. ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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ß
 
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.
 
Zurück
Oben