TIA Daten inklusive String über Profinet übertragen

SPS_Step

Level-2
Beiträge
101
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich muss von eine Reihe von Daten zwischen einer S7-1500 und einer S7-1200 austauschen.
Die Daten sind so organisiert:

S7-1200 -> S7-1500

1743504454266.png

S7-1500 -> S7-1200

1743504486804.png

Mit den Boolschen Variablen möchte ich ein Handshake realisieren.

Gibt es einen einfachen Weg diese Daten zu übertragen? Müsste bei einem IO-Device der String in Character zerlegt werden? Das wäre ja doch sehr aufwendig.

Danke im Voraus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es einen einfachen Weg diese Daten zu übertragen? Müsste bei einem IO-Device der String in Character zerlegt werden? Das wäre ja doch sehr aufwendig.
Muss zerlegt werden, ist aber kein Aufwand. Gibt einen Baustein dafür:
Strg_TO_Chars: Zeichenkette in Array of CHAR konvertieren
 
Nein geht leider immer noch nicht, habe das auch erst in TIA V19 probiert weil der Kunde eine Schnittstelle mit String vorgelegt hat. String auf EAs wird abgelehnt, da muss man den Umweg über Array of Char gehen. Wie Steffen_13 schon geschrieben hat gibt es unter den Erweiterren Anweisungen die Bausteine "Str_TO_Chars" und "Chars_To_Strg" mit denen man das einfach umwandeln kann
 
Gibt es einen einfachen Weg diese Daten zu übertragen?
am einfachsten ist iDevice (Profinet IO), da müssen einfach nur die Transferbereiche projektiert werden
Wie oft/wie schnell sollen die Daten übertragen werden? (Kann die S7-1200 auch azyklische Kommunikation mit RDREC/WRREC als Server?)

Wenn die Daten per Profinet-IO übertragen werden sollen, dann müssen die immer dieselbe Länge haben. Die Istwerte der Parameter werden einfach in den IO-Transferbereich kopiert. Auch Strings kann man einfach so übertragen, da sollte man aber die maximale Stringlänge auf eine sinnvolle/notwendige Länge begrenzen, also nicht 254 Zeichen, sondern z.B. nur 30 - also String[30], damit nicht sinnfrei immer sehr viel nie vom String belegter Speicherplatz mit übertragen wird. Mit String[30] wäre für die Datenstruktur der Transferbereich ca. 84 Bytes groß.

Müsste bei einem IO-Device der String in Character zerlegt werden? Das wäre ja doch sehr aufwendig.
Nein, da muss nichts zerlegt werden. Einfach nur den String in den Transfer-String kopieren. Es ist sinnvoll, für die Datenstruktur einen UDT zu erstellen und der kann dann auf den Transferbereich gemappt werden. Dann ist das String-kopieren ein Klacks. PS: String geht wohl nicht direkt, siehe nächsten Beitrag
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein geht leider immer noch nicht, habe das auch erst in TIA V19 probiert weil der Kunde eine Schnittstelle mit String vorgelegt hat. String auf EAs wird abgelehnt, da muss man den Umweg über Array of Char gehen.
Ah, ok, String geht also nicht. Dann halt einfach den String als Char-Array kopieren. Von einer AT-View oder mit Strg_TO_Chars. Ist aber nicht wirklich aufwendiger als String kopieren.
 
am einfachsten ist iDevice (Profinet IO), da müssen einfach nur die Transferbereiche projektiert werden
Wie oft/wie schnell sollen die Daten übertragen werden? (Kann die S7-1200 auch azyklische Kommunikation mit RDREC/WRREC als Server?)

Wenn die Daten per Profinet-IO übertragen werden sollen, dann müssen die immer dieselbe Länge haben. Die Istwerte der Parameter werden einfach in den IO-Transferbereich kopiert. Auch Strings kann man einfach so übertragen, da sollte man aber die maximale Stringlänge auf eine sinnvolle/notwendige Länge begrenzen, also nicht 254 Zeichen, sondern z.B. nur 30 - also String[30], damit nicht sinnfrei immer sehr viel nie vom String belegter Speicherplatz mit übertragen wird. Mit String[30] wäre für die Datenstruktur der Transferbereich ca. 84 Bytes groß.


Nein, da muss nichts zerlegt werden. Einfach nur den String in den Transfer-String kopieren. Es ist sinnvoll, für die Datenstruktur einen UDT zu erstellen und der kann dann auf den Transferbereich gemappt werden. Dann ist das String-kopieren ein Klacks. PS: String geht wohl nicht direkt, siehe nächsten Beitrag

Ok, dann werde ich wohl diesen weg gehen. Wie würdest du die Zeiten übertragen?
 
Aha, das ist mir neu.
Das heißt aber vermutlich nicht, dass Serialize nun effizient ist, sondern dass das Strg_TO_Chars noch uneffizienter implementiert ist ;)
Schlagfertig!

Am Ende bei so vielen Unterschiedlichen Datentypen würde ich es dann doch serialisieren und dann auf die Schnittstelle jagen und am anderen Ende wieder de-serialisieren und mit der passenden Udt maskieren..
 
am einfachsten ist iDevice (Profinet IO), da müssen einfach nur die Transferbereiche projektiert werden
Wie oft/wie schnell sollen die Daten übertragen werden? (Kann die S7-1200 auch azyklische Kommunikation mit RDREC/WRREC als Server?)

Wenn die Daten per Profinet-IO übertragen werden sollen, dann müssen die immer dieselbe Länge haben. Die Istwerte der Parameter werden einfach in den IO-Transferbereich kopiert. Auch Strings kann man einfach so übertragen, da sollte man aber die maximale Stringlänge auf eine sinnvolle/notwendige Länge begrenzen, also nicht 254 Zeichen, sondern z.B. nur 30 - also String[30], damit nicht sinnfrei immer sehr viel nie vom String belegter Speicherplatz mit übertragen wird. Mit String[30] wäre für die Datenstruktur der Transferbereich ca. 84 Bytes groß.


Nein, da muss nichts zerlegt werden. Einfach nur den String in den Transfer-String kopieren. Es ist sinnvoll, für die Datenstruktur einen UDT zu erstellen und der kann dann auf den Transferbereich gemappt werden. Dann ist das String-kopieren ein Klacks. PS: String geht wohl nicht direkt, siehe nächsten Beitrag

Hallo Zusammen,

Vielen Dank für die Unterstützung. Ich habe es jetzt genauso lösen können wie oben beschrieben. Durch die UDT hält sich die Arbeit auch tatsächlich in Grenzen.

LG
 
Zurück
Oben