Step 7 Koppelung SAP EWM mit S7

sm0d

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

vorweg, ich versuche gerade meine BA über die Schnittstellen von SAP EWM und SPSen, vorwiegend für die S7, zu schreiben. Die S7 steuert dabei ein Lager mit Fördertechnik und Regalbediengeräten in einem Hochregallager. Allerdings habe ich derzeit noch Probleme beim Verständnis auf Protokollebene, da ich mich bisher lediglich mit SAP EWM beschäftigt habe und darüber hinaus noch keine Erfahrungen sammeln konnte.
Allgemein gefragt, das SAP EWM sendet mir aus dem Standard heraus ein abgespecktes Telegramm mit den folgenden Feldern:

[TABLE="width: 667"]
[TR]
[TD="colspan: 5"]ZTR_S_TELE_CORE[/TD]
[/TR]
[TR]
[TD]Komponente[/TD]
[TD]Komponententyp[/TD]
[TD]Typ[/TD]
[TD]Länge[/TD]
[TD]Beschreibung[/TD]
[/TR]
[TR]
[TD]SENDER[/TD]
[TD]/SCWM/DE_MFSSENDER[/TD]
[TD]CHAR[/TD]
[TD="align: right"]8[/TD]
[TD]Sender[/TD]
[/TR]
[TR]
[TD]RECEIVER[/TD]
[TD]/SCWM/DE_MFSRECEIVER[/TD]
[TD]CHAR[/TD]
[TD="align: right"]8[/TD]
[TD]Empfänger
[/TD]
[/TR]
[TR]
[TD]CP[/TD]
[TD]/SCWM/DE_MFSCP[/TD]
[TD]CHAR[/TD]
[TD="align: right"]18[/TD]
[TD]Meldepunkt für Fördertechnik
[/TD]
[/TR]
[TR]
[TD]HANDSHAKE[/TD]
[TD]/SCWM/DE_MFSHNDSHK[/TD]
[TD]CHAR[/TD]
[TD="align: right"]2[/TD]
[TD]Handshake des Telegramms[/TD]
[/TR]
[TR]
[TD]SEQU_NO[/TD]
[TD]/SCWM/DE_MFSSN[/TD]
[TD]NUMC[/TD]
[TD="align: right"]20[/TD]
[TD]Laufnummer des Telegramms[/TD]
[/TR]
[TR]
[TD]COMM_ERROR[/TD]
[TD]/SCWM/DE_MFS_COMM_ERROR[/TD]
[TD]CHAR[/TD]
[TD="align: right"]4[/TD]
[TD]Fehler bei der Telegrammkommunikation[/TD]
[/TR]
[TR]
[TD]TELETYPE[/TD]
[TD]/SCWM/DE_MFSTELETYPE[/TD]
[TD]CHAR[/TD]
[TD="align: right"]4[/TD]
[TD]Telegrammart[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[TR]
[TD="colspan: 5"]ZTR_S_TELE_TASK[/TD]
[/TR]
[TR]
[TD]Komponente[/TD]
[TD]Komponententyp[/TD]
[TD]Typ[/TD]
[TD]Länge[/TD]
[TD]Beschreibung[/TD]
[/TR]
[TR]
[TD].INCLUDE[/TD]
[TD]ZTR_S_TELE_HEADER[/TD]
[TD]Struktur[/TD]
[TD][/TD]
[TD]Kopfdaten Mapping -Struktur für SPS Telegramme[/TD]
[/TR]
[TR]
[TD]HUIDENT[/TD]
[TD]/SCWM/DE_HUIDENT[/TD]
[TD]CHAR[/TD]
[TD="align: right"]20[/TD]
[TD]Handling-Unit-Identifikation[/TD]
[/TR]
[TR]
[TD]HUTYP[/TD]
[TD]/SCWM/DE_HUTYP[/TD]
[TD]CHAR[/TD]
[TD="align: right"]4[/TD]
[TD]Handling Unit-Typ[/TD]
[/TR]
[TR]
[TD]SOURCE[/TD]
[TD]/SCWM/DE_MFSSOURCE[/TD]
[TD]CHAR[/TD]
[TD="align: right"]18[/TD]
[TD]Quelllokation für Bewegungen im MFS-Umfeld
[/TD]
[/TR]
[TR]
[TD]DEST[/TD]
[TD]/SCWM/DE_MFSDEST[/TD]
[TD]CHAR[/TD]
[TD="align: right"]18[/TD]
[TD]Ziellokation für Bewegungen im MFS-Umfeld
[/TD]
[/TR]
[TR]
[TD]MFS_ERROR[/TD]
[TD]/SCWM/DE_MFS_ERROR[/TD]
[TD]CHAR[/TD]
[TD="align: right"]4[/TD]
[TD]Fehler im Telegramm[/TD]
[/TR]
[TR]
[TD]RSRC[/TD]
[TD]/SCWM/DE_RSRC[/TD]
[TD]CHAR[/TD]
[TD="align: right"]18[/TD]
[TD]Ressource (Transportmittel oder Benutzer)[/TD]
[/TR]
[TR]
[TD]FINAL_DEST[/TD]
[TD]/SCWM/DE_MFSFINALDEST[/TD]
[TD]CHAR[/TD]
[TD="align: right"]18[/TD]
[TD]Finales Ziel[/TD]
[/TR]
[/TABLE]

Soweit sogut, als Gegenstück habe ich eine Lagersimulation, die das Telegramm entgegennimmt und verarbeiten soll.
Das Telegramm wird als einfacher String mit einer fixen Zeichenlänge übertragen. Nun sind mir folgende Fragen aufgekommen:

- Wie verarbeitet nun eine SPS dieses Telegramm? Nimmt die S7 durch einen TCP/IP Socketstream Zeichen für Zeichen entgegen, wandelt es in ein Klassenobjekt um und verarbeitet es mir anschließend?
- Derzeit wird zur Kommunikation ein proprietäres Protokoll verwendet, das auf TCP/IP basiert. Benötigt man immer ein "erweitertes" Kommunikationsprotokoll oder ist es auch möglich, ausschließlich TCP/IP zu verwenden? Decken die Funktionen und Dienstleistungen von Schicht 3 und 4 im OSI-Modell nicht alles ab, um die Integrität der Telegramme zu gewährleisten?
- Gibt es bei der Verarbeitung große Unterschiede, wenn andere SPSen verwendet werden?

Vielen Dank schon einmal im Voraus!

Viele Grüße
Max
 
Den TCP-Funktionsblöcken der mir bekannten SPS ist es völlig egal, was da für Daten kommen, für die ist jedes Paket erstmal nur eine Bytefolge von z.B. insgesamt 40 Byte. Der Programmierer der SPS muß dann die entsprechende Zerlegung dieser Bytefolge in die richtigen Bestandteile (das Parsen) und deren eventuell notwendigen Umwandlungen (z.B. Bytefolge!) programmieren. Die entsprechenden Infos hast Du ja oben zusammengestellt. Es müßte dann eben z.B. programmiert werden, daß die ersten 8 Byte in einen String kopiert werden, dazu kämen noch die Erzeugung der Stringlängeninformation (S7) oder des Stringendes (bei z.B. B&R).
Die Schichten 3 und 4 decken nur ab, daß die übermittelte Bytefolge komplett und in gewissen Grenzen richtig übertragen wurde. Darüber hinausgehende Plausibilitätsprüfungen müssen noch dazu erstellt werden.

Erweiterte Protokolle packen meist um die eigentliche Information noch weiteres drumherum, z.B. die laufende Nummer des Packets oder könnten die Information auch verschlüsseln. Die sind nicht zwingend notwendig, können aber die Zuverlässigkeit der Übertragung erhöhen.
 
Zurück
Oben