Step 7 Datenübertragung mit Get&Put

KlausMue

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

Ich hoffe, dass es dieses Thema auf diese Art noch nicht gibt. Ich habe wirklich sehr viel ausprobiert und auch viel gesucht und gelesen. Leider komme ich trotzdem nicht weiter.

Ich versuche aktuell von der S7-400 aus, Daten auf 300/400 zu übertragen und zu lesen.

Soweit klappt dies auch, jedoch werden es immer mehr Steuerungen und irgendwas wird träge.

Insgesamt werden pro Steuerung 30 Bytes gelesen und 30 Bytes geschrieben. In Summe 60 Bytes.


Im OB1 rufe ich verschiedene Bausteine auf, die dann die andere Steuerung auslesen. Jeder Put & Get Baustein hat seinen eigenen DB.

Problem was ich habe:
Wenn ich über das Netzwerk Online gehen möchte, dauert das richtig lange. Teilweise 20 Sekunden und mehr. Jedes neue Netzwerk was beobachtet wird braucht wieder 10 Sekunden um grün zu werden.

Deaktiviere ich Put&Get, rennt alles.


Sehe ich es richtig, dass sich die Bytes auf die Zyklus-Zeit addieren und somit quasi mehrmals pro Sekunde geladen wird und dadurch mehrere Megabytes geladen werden?

Wie ist die Best-Practice dabei? Hat jemand einen Tipp für mich, wie sowas gehandhabt wird?


Oder ist die Handhabung so schon richtig und ich habe ein anderes Problem?


Vielen Dank!
 
Redest du von MPI Verbindungen? Wenn ja, dann ist es schon so wenn du einige Verbindungen
hast, das alles langsamer wird. Ich habe bei einer Molkerei mal vor 15 Jahren 12 Anlagen
vernetzt, das lief schon einigermaßen ok, nur wenn ich dann noch Online gegangen bin,
ging es nicht mehr vernünftig. Ich bin dann über die zweite Schnittstelle Online gegangen.

Das ist natürlich nicht mehr zeitgemäß, damals war es halt eine günstige / schnelle Lösung die
bis heute funktioniert.
 
Zuletzt bearbeitet:
Hallo,

Sorry, dass habe ich nicht bedacht.
Es sind Ethernet Verbindungen. Über Gigabit-Switches.

Karten sind CP443 bzw. CP343.

Die Put&Get bekommen dann die Verbindungs-ID die unter Netze eingetragen sind. Dort sind die Verbindungen auch alle aufgebaut und Grün hinterlegt.

Edit: das mit der Schrittkette klingt nicht schlecht. Hatte zuvor mal eine Sprungliste gemacht auf Sekunden-Basis. Das war aber nicht so wirklich schön.
Und ich war mir nicht sicher, ob dann überhaupt wirklich x-mal pro Sekunde geladen wird. Also ob ich das wirklich begrenzen muss.
 
Zuletzt bearbeitet:
Die PUT/Get werden aus einer 400er aus angestossen?
rufst PUT/GET im OB1 Zyklus auf?
Wie aktivierst du Req? Gehst du über einen CP (belastet den Rückwandbus zusätzlich)?
Grundsätzlich kannst du natürlich die Datenmenge massiv senken wenn du einen mindesttakt für GET/PUT aktivierst. Also Done und mindestens 1sek nichts mehr gegettet geputtet. Das kommt schwer drauf an wie schnell deine Daten rüber müssen.
Aber ja wenn du PUT/GET über Done direkt wieder anschiesst geht da schon was übers netzwerk, bei einer schnellen CPU jeden Zyklus ein Datenpaket, vor allem wenn die CPU sonst nix zu tun hat.

Edit: Eine 400er kann eine 300er vor allem wenn die Verbindung über einen CP geht durchaus so zuballern das du mit dem PG kaum noch was beobachten kannst.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Danke für diese Antwort! Dann lag ich ja mit meiner Vermutung richtig.

Ja die 400er liest und schreibt.

Und genau, ich habe das req über done verriegelt.

Auch allen anderen vielen Dank für die Antworten. Alle zusammen haben mir die Ideen gegeben die ich brauche.

Entweder einen Baustein der einen anderen Zyklus hat oder eine Schrittkette. Das muss ich dann nochmal genau überlegen.

Noch eine Frage: muss das REQ solang auf 1 bleiben, bis done oder Error kommt, oder reicht ein Impuls? Oder ist das vollkommen egal?
Laut Doku wird die Flanke genommen, somit wäre es egal?
 
Zuletzt bearbeitet:
Um wieviele Steuerungen bzw. Verbindungen geht es bei Dir?

Warum machst Du alle Kommunikation über PUT/GET? Das erzeugt sehr viel Protokoll-Overhead und ist langsam und ist in der "angezielten" Steuerung nicht nachzuvollziehen.
Besser:
- die Steuerungen per Profinet-IO vernetzen (1x Profinet Controller (Master) zu mehreren Profinet-I-Devices (Slaves))
- oder SEND/RECEIVE-Verbindungen projektieren, z.B. ISO-on-TCP-Verbindung oder TCP-Verbindung, und senden/empfangen mit AG_SEND/AG_RECV

Beispiele siehe die Linkliste in meiner Signatur

Harald
 
Hallo

Put/Get dürfen nicht gleichzeitig angestossen werden (je Verbindung) soweit ich das weiss. Da gibts auch ein Beispiel bei Siemens.
Hab aber den Link nicht bereit. Ist auf jeden Fall eine Schrittkette.

Was ich hier aber zusätzlich anmerken will aus eigener Erfahrung
Ich habe eine Verbindung von einer 315er (aber auch 1512er/1516er) zu einer 1518er.
Verbindung ist eine ISO on TCP
Als Trigger für den Send habe ich den DONE verwendet.
Normalerweise sollte man denken das der Done erst dann kommt wenn der Empfangsbaustein das bestätigt.
Das scheint aber nicht so zu sein.
Siehe hier https://www.sps-forum.de/simatic/99453-tsend-trcv-sehr-langsam.html?highlight=trcv

Ob sich sowas auch auf PUT/Get anwenden lässt kann ich jetzt nicht sagen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Danke für eure Antworten. Ich habe das jetzt mit der Schrittkette gemacht. Das klappt ganz gut. Und es wird nicht so oft ausgelesen.

Ich habe jedoch mit einer Steuerung echt Probleme.

An einem Switch hängen 2 Steuerungen. Der Aufbau und die Konfiguration ist ziemlich identisch. Die CP443 ist jedoch unterschiedlich. Eine ist EX11, eine ist GX11.

Wenn ich vom PG aus einen PING ausführe, erhalte ich von einer Steuerung sofort und immer eine Antwort. In unter 1ms.

Bei der anderen Steuerung erhalte ich immer das erste mal eine Antwort, gefolgt von 10-15x „Zeitüberschreitung“. Dann wieder eine Antwort. Dann 10-15x Überschreitung.

Die Kabel sind gleich lang. Die Kabel sind alle in Ordnung.

Wie finde ich raus, woran das liegen kann?


Zum Thema wieso ich es so mache:
Es war für mich das Verständlichste. Ich lese mich aber in die anderen Möglichkeiten nochmal ein.
Ich denke aber das PING-Problem sollte in jedem Fall klappen oder?


DANKE
 
Bei der anderen Steuerung erhalte ich immer das erste mal eine Antwort, gefolgt von 10-15x „Zeitüberschreitung“. Dann wieder eine Antwort. Dann 10-15x Überschreitung. (...)
Wie finde ich raus, woran das liegen kann?
Wird es besser, wenn Du die PUT/GET mal anhältst oder nur jede Sekunde einmal ausführst? Hat der CP 443-1 noch weitere evtl. zu massive Kommunikation?

Speziell bei den ersten Generationen der IE-CPs liegt sowas oft an der Firmwareversion, und erst die letzten Versionen funktionieren relativ gut. Da lohnt sich fast immer ein Firmware-Update wenn man nicht die neueste Fw hat.

Gehe zum SIOS (Siemens Industry Online Support) und suche mit der Bestellnummer nach der Firmware, also z.B. Suchbegriff '6GK7443-1GX11-0XE0 firmware'

Dummerweise sind die Firmwareversion(en) für den 1GX11 im öffentlichen Bereich des SIOS nicht mehr verfügbar - bei Bedarf den Siemens Support anfragen. Für den 1EX11 ist die neueste Firmware noch zum Download verfügbar.

Wenn wie hier beim 1GX11 die Suche nichts bringt, dann schau mal in dieses Nachschlagewerk:
Versionshistorie / aktuelle Downloads für S7-CPs Industrial Ethernet (von 2013, ob das noch gepflegt wird weiß ich nicht)
welche Version aktuell wäre, und ob da evtl. Dein Problem erwähnt wird.
Das Nachschlagewerk nennt folgende Firmwareversionen:

6GK7443-1EX11-0XE0 V2.7.3 http://support.automation.siemens.com/ww/view/de/26685345
6GK7443-1GX11-0XE0 V2.1.21 http://support.automation.siemens.com/ww/view/de/30841319

Welcher CP ist Dein Problem-CP und welche Firmwareversion hat er?

Harald
 
Hallo,

Nein in dem Fall wurde das leider nicht besser..

Aber das Firmware Update für die 1EX11 war die Lösung. Habe das mittels direkt Verbindung PG <> CP434 eingespielt.

Seitdem bekomme ich durchgehend Antworten auf den PING.

Und die Datenübertragung ist auch zuverlässig.



VIELEN DANK!!!
 
Zurück
Oben