MPI-Kommunikation mit SFC65+SFC66

Tigerente1974

Level-3
Beiträge
1.826
Reaktionspunkte
293
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe 3 SPS (S7-300) per MPI miteinander vernetzt. Zum Austausch von Daten werden die SFC65 + SFC66 benutzt. So weit scheint das auch zu funktionieren. Ich habe jedoch den Verdacht, dass hin und wieder eine Information verloren geht. 2 Anlagen fördern von beiden Seiten auf einen T-förmigen Eckumsetzer. Per Bitmaskierung wird das spätere Palettenziel übertragen. Ich habe noch keine gesicherten Erkenntnisse, es sieht jedoch manchmal so aus als würde die Kommunikation nicht immer richtig funktionieren. (Von 400 Paletten wurde 10x das falsche Ziel angefahren,
Ziel A = Bit aus, Ziel B = Bit an.)
Frage zum SFC66: NDA wechselt auf TRUE, wenn Daten ankommen.
So wie ich das verstanden habe sollte der EN_DT nur dann auf TRUE sein, wenn Daten gelesen werden sollen. Daher habe ich den NDA auch gleichzeitig für EN_DT benutzt. Ist das so richtig?

Code:
  U     #NDA_rec
      =     L     40.0
      BLD   103
      CALL  "X_RCV"
       EN_DT  :=L40.0
       RET_VAL:=#RET_VAL_SFC66
       REQ_ID :=#REQ_ID_rec
       NDA    :=#NDA_rec
       RD     :=#pt_rec
      NOP   0
 
Ich nutze diese Art der Kommunikation eigentlich nie, aber wird der Zielbereich #pt_rec nach Übertragung und vor Auswertung in einen anderen Bereich kopiert?
Laut Doku ist der Empfangsbereich erst gültig wenn RETVAL = W#16#00xy meldet.

Mal angenommen es tritt ein Übertragungsfehler auf (also RETVAL negativ) und du prüfst ohne Abfrage dieses eine Bit welches das Ziel signalisiert, und der Sender wollte dir eine 1 schicken, und aufgrund des Übertragungsfehlers wertest du aber eine 0 aus. Dann hättest du dein fehlerhaftes Ziel.
Nur so eine Vermutung...

Aus dem Grunde könnte man zu Diagnosezwecken eine Art Fehlerspeicher für die RETVAL-Werte in einem DB anlegen. Oder wenn noch ein Reserve Wort in der Übertragungstruktur vorhanden ist, dort einen fortlaufenden Telegrammzähler programmieren. Stellt der Empfänger fest dass er keine fortlaufenden Werte empfängt ist ein Telegramm verloren gegangen.
Wobei die Sicherungsschicht eigentlich schon im MPI-Protokoll vorhanden ist, also eigentlich sollte die RETVAL Auswertung ausreichen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
pt_rec ist ein ANY-Zeiger der die Empfangsdaten in einen DB kopiert.

Die RETVAL-Auswertung war mir noch gar nicht in den Sinn gekommen. Es ist ja auch naheliegend, auf das NDA-Bit zu reagieren.

Die Siemens-Hilfe gibt leider nicht so viel her. Ich bin drauf und dran das Ganze in eine Globaldatenkommunikation zu packen...
 
Zurück
Oben