TIA MB_Client mehrfach aufrufen

GerhardPtl

Level-1
Beiträge
77
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich kämpfe gerade mit einem Problem beim Aufruf des Baustein MB_Client und bitte um HIIIIILFE(!). In einem FB, in dem die Verbindungsdaten im "Static" als "TCON_IP_V4" hinterlegt sind, rufe ich den MB_Client 2x auf.
Leider funzt immer nur einer der beiden, der andere meldet im Status "80A3". Welcher nun arbeitet, ist dem Zufall unterlegen.

Die Fehlermeldung meckert die ID an, die was ja so auch stimmt, schon verwendet wird.

Nun habe ich versucht, die Bausteine zu separieren (in Abhängigkeit vom "Done und Busy"), leider ohne Erfolg.

Mache etwas grundsätztliches falsch?

Bit für jeden Tipp dankbar!


Gruß
Gerhard
 
Ich denke nicht dass du zwei MB_CLIENT auf der selben Verbindung betreiben kannst.
Beide MB_CLIENTS verwenden intern TCON-Bausteine, und nur ein Satz kann eine Verbindung managen.

Du wirst wohl eher basierend auf dem Busy/Done die Registeranfrage am Eingang "MB_DATA_ADDR" umschalten müssen und dann den Puffer je nach Telegramm auswerten.

Damit du weißt welches Telegramm du nach einem DONE in den Puffer gelegt bekommen hast, musst du den Transaction-Identifier vorgeben.
Hilfe-MB_CLIENT schrieb:
MB_Transaction_ID WORD 1


Transaktions-ID des Modbus-TCP-Protokolls. Der Startwert von "1" sollte nur geändert werden, wenn der Modbus-TCP Server einen anderen Wert benötigt.
Ich weiß nicht wie der MB_CLIENT die Antworten prüft.Ich denke du wirst aber beim Wechsel der Anfrage auf die MB_Transaction_ID ändern müssen damit du nicht eventuell mal die Falsche Antwort, z.B. verspätete Antwort des Servers auf vorige Anfrage, in den Puffer bekommst. Eine direkte Rückmeldung welcher Identifier empfangen wurde bekommst du nicht, du musst also darauf vertrauen dass der MB_CLIENT die empfangene T-ID mit der Vorgabe in seinen Stat-Daten vergleicht und Fehler schreit wenn's nicht passt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ronin,
vielen Dank für deine Rückmeldung.

Wenn ich es richtig verstanden habe, soll ein mehrfacher Aufruf möglich sein, unter der Prämisse, dass die Bausteine sequentiell aufgerufen werden.

Das habe ich zwar versucht, aber leider ohne Erfolg. Entweder war meine Programmierung falsch oder ich habe noch ein anderes Problem.
 
Wenn ich es richtig verstanden habe, soll ein mehrfacher Aufruf möglich sein, unter der Prämisse, dass die Bausteine sequentiell aufgerufen werden.
Woher kommt die Info? Wenn du dich auf meinen Beitrag beziehst dann hast du mich missverstanden.

Ich würde es eher ausschließen dass es so direkt geht.
Die Bausteine für die TCP-Kommunikation im MB_CLIENT speichern in ihren Instanzdaten Information zur Verbindung und deren aktuellen Status.
Wenn du in der Sequenz dann den zweiten MB_CLIENT aufrufst, wissen dessen TCP-Bausteine erstmal von gar nix. Die sind frisch und meinen sie müssten erstmal Verbindung aufbauen, etc...

Eine, die m.M.n. elegantere, Variante habe ich oben beschrieben.
Was gehen kann, Betonung liegt auf "kann", ist den zweiten MB_CLIENT die selben Instanzdaten zu geben damit beide die selbe Information bzw. Info über den Zustand der Verbindung haben.
Auch in dem Fall würde ich aber empfehlen beim Wechsel zwischen den Aufrufen die "MB_Transaction_ID" umzuschreiben.
Im Endeffekt entspricht diese Vorgehensweise eigentlich dem gleichen wie oben - "Gleiche MB_CLIENT-Instanz mit anderen Eingangsparametern aufrufen".
 
Zuletzt bearbeitet:
Zurück
Oben