Technical Forum

Kommunikation / Netzwerke

TCP/IP mit CP343-1

Erstellt von ARX am 28.07.2006 08:27 (7 Antworten)

« Vorheriges Thema Nächstes Thema »
Seite 1 von 1 (8 Objekte)
  28.07.2006, 08:27
Beigetreten am: 28.07.2006
Letzter Besuch: 31.07.2006
Beiträge: 5
Bewertung:
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 

Hallo!

Ich habe ein großes Problem bei einer TCP/IP Verbinbdung 317DP2 mit 343-1 1EX11 mit eine Sun. Ich kann Nachrichten senden, diese werden dort auch verarbeitet. Senden funktioniert also. Jedoch von den Nachrichten, die an die SPS gesendet werden kommt nur jede Hundertste durch. 10% kommen verstümmelt, beim überwiegendem Teil tut sich gar nichts. Die Nachrichten sind aber mit Etherreal auf dem Netz sichtbar. Falls doch einmal ein Paket erkannt wird so ist dies bereits eine Minute alt. Könnte dies an einem Hardwaredefekt am CP liegen?

mfg

Alois Steingreß

Top
  28.07.2006, 11:26
Beigetreten am: 14.02.2006
Letzter Besuch: 06.05.2013
Beiträge: 5798
Bewertung:
Bewertung: Herausragend [3,96 von 5 / 358 mal bewertet]. (358) 
Benutzer mit speziellen Fachkenntnissen, die einzelne Konferenzen betreuen
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo Alois Steingreß,

ich fürchte ich weiß woran das liegt. Der S7 CP bekommt durch das Programm einen Empfangspuffer zugewiesen. Der Empfangspuffer wird aber, durch eine Systemeigenschaft bedingt, erst dann an das Programm übertragen wenn dieser voll ist. cool

Sprich wenn Sie 10 Byte Senden und einen Empfangspuffer von 100 Byte im AG_RECV angegeben haben bekommen Sie erst alle 10 Telegramme das Paket, dann aber mit allen 10 Telegrammen darin, an die Applikation übertragen. Um das zu umgeben ist es dringend erforderlich das Sie nur feste Telegrammlängen verwenden und den Empfangspuffer genau auf diese Telegrammlänge einstellen. zwinkern

Ich hoffe ich habe es verständlich rüber bringen können.

Viele Grüße
J_Bell



=== Bearbeitet von J_Bell @ 28.07.2006 12:38 [GMT ] ===
Empfangspuffer... natürlich. ;)

Top
  28.07.2006, 12:24
Beigetreten am: 24.07.2006
Letzter Besuch: 26.09.2008
Beiträge: 48
Bewertung:
Bewertung: Herausragend [3,75 von 5 / 4 mal bewertet]. (4) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Wenn es nicht moeglich ist um mit dem Antwort von J_Bell das Problem zu loesen, moechte ich gerne Firmwarestand und hardware-ausgabestand der CP 343-1 wissen.
Die Firmwarestand kann man am Besten online aus dem CP 343-1 lesen. Dazu geht man zum HW Konfig und dann einfach die hw konfig online oeffnen und online die Eigenschaeften der CP 343-1 anwaehlen.

Welche CPU mit FW Stand wird benutzt? Diese info kann man auf die gleiche Weise nachschauen.

Und kannst du eventuell die Ethereal Traces zukommen lassen?


Mechanic. 
Top
  28.07.2006, 17:44
Beigetreten am: 28.07.2006
Letzter Besuch: 31.07.2006
Beiträge: 5
Bewertung:
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Danke!

Das duerfte das Problem sein, somit ist dieses Protokoll zum Übertragen von Telegrammen nicht sonderlich geeignet, doch leider ist dies Altbestand und ich habe keine Möglichkeit zur Änderung. Die Telegramme haben verschiedene Länge, jedoch ist das erste Wort die Gesamtlänge des Paketes.

Ich habe nun meine Empfangsroutine so abgeändert daß ich immer nur 2 Bytes auslese, beginnend mit der Länge. Jedoch ist es schon ziemlich fatal wenn die Übertragung außer Triit kommt.

Gibt es eine Möglichkeit den Verbindungszustand
1. zu erkennen
2. zu ändern
FC10 AG_CTRL geht ja anscheinendn nicht bei diesem CP


Die Versionen:
FC5 V4.2
FC6 V4.7
CP343-1 1EX11 V2.0


Ciao


Top
  29.07.2006, 09:59
Beigetreten am: 07.01.2006
Letzter Besuch: 30.04.2013
Beiträge: 2667
Bewertung:
Bewertung: Exzellent [4,06 von 5 / 253 mal bewertet]. (253) 
Benutzer mit speziellen Fachkenntnissen, die einzelne Konferenzen betreuen
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hi ARX,

ist es fuer die SUN moeglich mit "ISO on TCP" zu arbeiten... überrascht

Wenn ja, dann ist Ihre Poblem beseitigt, da durch RFC 1006 das Tekegramm verarbeitet wird wie eine ISO Telegramm. Dieses ist Normalweise wenn er Anwesend ist ganz Einfach Ein zu Schalten. Oft ist dieses RFC 1006 anwesend beim Rechners.

RFC 1006 - ISO Transport Service on top of the TCP Version: 3

Weitere Changen sind nicht zu Verwenden, wenn die Telegramm Laengen Unterschiedlich sind ist es vielleicht noch moeglich die Unterschiedliche Laengen ueber verschiedene Verbindungen zu Versenden und zu Empfangen. Zunge

Auch ist es noch moeglich an zu sehen welche Gemeinschaftliche Teiler die Verschiedene Telegrammen haben so das die Empfangst nach ein groeseres Anzahl koennte. Dieses Entlastet die CPU welche die kleine Telegrammen wieder zu einen Telegram Bauen muess. Da die Kleine Telegrammen alle in die CPU eingelesen werden muessen ist es beim groessere Telegrammen von die SUN Rechner ein Zeitfressende Situation. weinen

Um die Synchronization richtig zu Behaelten muess in die Data etwas Anwesend sein was Normalweise nicht vorkommt, zum Beispiel FA FB FC FD FE FF, so das auf dieses Hexadezimale Zeichen Einfach wieder Synchronisiert werden koennte, dieses Zeichen mues die SUN dann mitschicken. cool

Das Einfachste wenn die SUN Rechner kein RFC 1006 unterstuetzt ist das die SUN die Telegrammen immer die Gleiche Laenge macht. erröten


I hope that the answer will help, if you have still questions, don't hesitate to ask me.

All the best, Late
Never say never, think in solutions, not in trouble......
Top
  30.07.2006, 14:22
Beigetreten am: 28.07.2006
Letzter Besuch: 31.07.2006
Beiträge: 5
Bewertung:
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo!

Leider ist dies eine bestehende Anlage, am Telegrammverkehr kann nicht geruettelt werden.
Bisher war ein PC für die Konvertierung der Daten zuständig, der ist nun weggekommen.
Natuerlich "kann" die SUN ISO over TCPIP, sie macht es halt leider nicht.
Die Telegramme sind unterschiedlich lang, es wird im ersten Wort die Länge mitgeschickt. Ich hab es mittlerweile im Griff, auch die Synchronisation wenn es ausser Tritt geraet. Leider habe ich keine Startzeichen an denen ich mich orientieren kann, es ist jedoch zwischen den Telegrammen doch soviel Zeitabstand daß ich eine Zeichenverzugszeit implentieren konnte.

Danke an alle die geantwortet haben.


ARX

Top
  01.08.2006, 10:12
Beigetreten am: 14.02.2006
Letzter Besuch: 06.05.2013
Beiträge: 5798
Bewertung:
Bewertung: Herausragend [3,96 von 5 / 358 mal bewertet]. (358) 
Benutzer mit speziellen Fachkenntnissen, die einzelne Konferenzen betreuen
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo ARX,

zur Ehrenrettung des Systems muß man sagen das es sich beim Speicher auf dem CP um einen Ringpuffer handelt. Also kann man, gerade wenn man einen Header am Telegramm hat, da sehr geschickt vorgehen.

Zuerst liest man den Header des Telegramms aus. Mit dieser Information, sprich der Telegrammlänge, kann man dann die Anzahl der "restlichen" Bytes errechnen und diese mit einem Receive Aufruf auslesen. Damit spart man sich einiges an Arbeit.

Wichtig ist hier nur darauf zu achten das die jeweiligen Empfangsaufrufe nur solange ausgeführt werden bis die Daten vollständig in der Applikation sind. werden sie ein weiteres mal aufgerufen läuft ein weiterer Auftrag.

Damit lässt sich geschickt eine Lösung für diese Art der Kommunikation erzielen.

Viele Grüße

J_Bell
Top
  01.08.2006, 11:12
Beigetreten am: 31.07.2006
Letzter Besuch: 08.05.2013
Beiträge: 11
Bewertung:
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo!

Ich habe es folgendermassen geloest:

AG_recive wurde fix auf 2 byte empfang konfiguriert

das erste eingelesene wort ist die laenge
plausibilitaetskontrolle, wenn nicht plausibel dann verwerfen
die folgenden woerter werden zu einem telegramm zusammengebaut
nach abschluss dieser sequenz wird das fertige telegramm der uebergeordneten routine uebergeben.

leider hat das verwendete telegramm keine startzeichen mit denen ich synchronisieren koennte falls aus irgendwelchen gruenden ein versatz auftritt. aber zwischen den telegrammen ist ausreichend verzugszeit die ich dafuer nutzen konnte. 

Zusammenfassend: reines TCP/IP ist nicht empfehlenswert, mit  ISO over TCP/IP ging immer sooo problemlos....

Ich bedanke mich für die Hilfe und Tipps die mir die Lösdung des Problems ermnöglicht haben.

Leider hab ich mittlerweile ein größeres Problem, die Kommunikation mit S5 CP143. Ich komm da zu keinem Ergebnis.


lg

ARX


Top
Seite 1 von 1 (8 Objekte)
Aktionen