TIA S7 1200 - MQTT Libary

tomlei

Level-2
Beiträge
72
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
S7 1200 / TIA Version 18

Ich habe versucht mit der LMQTT Bibliothek V 3.0 eine Verbindung zu meinem MQTT Broker herzustellen.
Wenn ich am LMQTT Client den "enable" Eingang auf TRUE setze wird eine Verbindung aufgebaut (ich sehe im Broker das willTopic) aber sofort gibt mir der Baustein den Fehler 8720 aus. Im Broker steht dann hinter dem Topic "offline".

In der Beschreibung steht zum Fehler 8720: " Existing session at the MQTT broker. New connection required."
Hat jemand Erfahrung damit und weiß was das bedeutet? im Internet habe ich nicht wirklich einen Hinweis gefunden.

PS:
Die Bibliothek gibt es für TIA18 und beinhaltet dann den Client Baustein in der Version 4.0 Allerdings bekomme ich diese Version nicht fehlerfrei übersetzt. Die dort mitgelieferten PLC-Datentypen passen nicht zum Client.
Wenn ich die Client Version 3.0 nutze, dann passen auch die Datentypen zum Client.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie sehen denn deine Verbindungsparameter aus?

Welche Meldungen bekommst du denn bei der aktuellsten Library?
siehe Anhang...
Die aktuelle Library kann ich nicht übersetzen, weil sie eine andere Struktur der Datentypen erwartet. Wenn ich diese Datentypen nutze, dann kommen im Code des aktuellen LMQTT_Clients Fehlermeldungen - weil dort die alten Namen und die alte Struktur der Datentypen verwendet werden. Ich habe keine Ahnung was das soll...? Ich gebe zu, dass sich das etwas konfus anhört.
Neue Version: 109780503_Libraries_Comm_Controller_LIB_V2_0_1_TIAv18.zip

In der Beschreibung zu dieser Version steht auf Seite 55 unter Punkt 5.5 Integration into the User Project:
You will find a detailed application example for the integration of the library into your user project in the Siemens Industry
Online Support: https://support.industry.siemens.com/cs/ww/en/view/109748872

Dieses Beispielprojekt ist aber für TIA16. Nach Hochrüstung auf TIA18 findet man dann dort die Version 3.0 mit der anderen Typenstruktur vor (siehe Bild). Dieses Demoprojekt habe ich versucht zum Laufen zu bekommen, was aber daran scheiterte, dass ich das mit PLCSim versucht habe und der IP Adressraum mit dem MQTT Broker ein anderer ist (was ich aber nicht ändern kann, da der Broker in einem bestehenden System läuft und weiter laufen muss).

Wie gesagt, in meinem Projekt wird eine Verbindung wird hergestellt, läuft aber auch gleich wieder in einen Fehler auf der S7 Seite. Der Broker arbeitet einwandfrei und ich sehe dort auch den Eintrag der S7 vom Moment des Verbindungsaufbaus.
 

Anhänge

  • MqttDb.png
    MqttDb.png
    291,4 KB · Aufrufe: 10
Hast du eventuell noch einen Client mit der ID 1 welcher mit dem Broker verbunden ist?
Jeder Client braucht eine eigene ID

Welchen Broker verwendest du denn?
Schau mal auf dem Broker nach, welche Clients mit welcher ID verbunden sind

Natürlich funktioniert die MQTT Funktion der Library Comm nicht mit den UDTs und Bausteinen des anderen Beispiels, da musst du unterscheiden.

Generell würde ich auch nicht das Applikationsbeispiel hochrüsten und dort herumwerkeln, sondern mir ein zur Hardware passendes Projekt erstellen und dann dort die Libraries implementieren, über die Bibliotheksverwaltung. Sonst hast du irgendwelche komischen Versionierung welche nicht zueinander passen.

Deswegen: Neues Projekt erstellen > LibCom MQTT Funktion über die Bibliotheksverwaltung ins Projekt importieren > MQTT im OB1 aufrufen

Via Plcsim hab ich das ganze noch nie getestet, immer mit realer Hardware

Dieses Demoprojekt habe ich versucht zum Laufen zu bekommen, was aber daran scheiterte, dass ich das mit PLCSim versucht habe und der IP Adressraum mit dem MQTT Broker ein anderer ist (was ich aber nicht ändern kann, da der Broker in einem bestehenden System läuft und weiter laufen muss).

Liegen denn beide Teilnehmer im 192er Netz? Dann musst du ja nur das Subnetz anpassen auf 255.0.0.0, dann sollte das ja funktionieren.
 
Zuletzt bearbeitet:
Hast du eventuell noch einen Client mit der ID 1 welcher mit dem Broker verbunden ist?
Jeder Client braucht eine eigene ID

Welchen Broker verwendest du denn?
Schau mal auf dem Broker nach, welche Clients mit welcher ID verbunden sind
Ich nutze den MQTT Broker vom IOBroker. Dort steht im Log:

mqtt.0 2024-01-19 12:54:37.514 info Client [SiemensClient] connection closed: Error: read ECONNRESET
mqtt.0 2024-01-19 12:54:37.459 info Client [SiemensClient] connected with secret 1705665277366_6902

mqtt.0 ist die Instanz im IOBroker


Da ich vorhin auch nicht verstanden habe was dieses Durcheinander mit der aktuellen Library Version sollte, habe ich inzwischen alles auf Anfang gestellt und die Library neu eingebunden. Jetzt habe ich auch keine Namenskonflickte mehr! UFF...

Ich kann das Projekt übersetzen und hochladen. Ich erhalte aber immer noch die gleiche Fehlermeldung 7820. Allerdings mit einem Unterschied - im MQTT Explorer (habe ich zwischenzeitlich auch installiert, um besser zu sehen was da läuft) steht jetzt hinter dem Topic "TestNeu1" nicht mehr offline sondern ein "o". Woher auch immer das herkommt...
1705666316255.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ECONNRESET ist die Fehlermeldung vom TCP Protokoll, das hatten wohl einige Nutzer von ioBroker so um 2019.. ich würde hier mal schauen, dass ich alles an Software und Hardware auf dem aktuellsten Firmwarestand habe.


Wir arbeiten immer mit Mosquitto.

Ansonsten würde ich auch mal versuchen, das ganze ohne Login zu betreiben. und auch mal eine Client ID zu vergeben, welche nicht 1 ist, nimm mal die 10 oder irgendwas..

Die Library von Siemens benötigt MQTT 3.1.1
 
ECONNRESET ist die Fehlermeldung vom TCP Protokoll, das hatten wohl einige Nutzer von ioBroker so um 2019.. ich würde hier mal schauen, dass ich alles an Software und Hardware auf dem aktuellsten Firmwarestand habe.


Wir arbeiten immer mit Mosquitto.

Ansonsten würde ich auch mal versuchen, das ganze ohne Login zu betreiben. und auch mal eine Client ID zu vergeben, welche nicht 1 ist, nimm mal die 10 oder irgendwas..

Die Library von Siemens benötigt MQTT 3.1.1

Bei clientId war "Siemens" vorgegebener Standard. Also ein String. Scheinbar erwartet der MQTT Broker eine Zahl. Nachdem ich dort eine "99" eingegeben habe, steht die Verbindung! Danke für den Denkanstoß.
 
clientIdentifier ist aber als Wstring deklariert und sollte so auch funktionieren, ich bezweifle auch irgendwie dass ioBroker nicht mit Zeichen umgehen kann bei diesem Parameter, da der MQTT Standard eingehalten werden muss. Der clientIdentifier und die Connection ID sind zwei unterschiedliche Sachen (ich hatte eigentlich Connection ID gemeint, aber Client ID geschrieben)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
clientIdentifier ist aber als Wstring deklariert und sollte so auch funktionieren, ich bezweifle auch irgendwie dass ioBroker nicht mit Zeichen umgehen kann bei diesem Parameter, da der MQTT Standard eingehalten werden muss. Der clientIdentifier und die Connection ID sind zwei unterschiedliche Sachen (ich hatte eigentlich Connection ID gemeint, aber Client ID geschrieben)
Ich hatte mich zu früh gefreut.
Nachdem ich die ClientID auf 99 geändert hatte stand die Verbindung. Nach dem Trennen und Wiederherstellen der Verbindung hatte ich die gleiche Fehlermeldung wie vorher. Wenn ich aus der 99 eine 98 mache geht es wieder genau einmal.

Mit der connID hatte ich vorher auch schon Verschiedenes ausprobiert. Ohne Erfolg.

Irgendwie komme ich heute nicht weiter. Möglicherweise muss ich tatsächlich einen anderen Broker installieren. Allerdings scheue ich mich bisher davor, weil ich dann alle anderen Verbindungen auch ändern muss. Mist...
 
Wie oben geschrieben ECONNRESET-Fehler hatten viele im Bezug auf ioBroker, ich würde da ansetzen und die ganze Plattform mal updaten. Der MQTT Broker muss auf 3.1 stehen und nicht auf 5. An Siemens liegt es nicht und an MQTT auch nicht. Ich sehe hier nur ioBroker als mögliche Ursache.. deswegen würde ich da mal alles auf die neueste Version ziehen und parallel mal mit Mosquitto arbeiten.
 
Wie oben geschrieben ECONNRESET-Fehler hatten viele im Bezug auf ioBroker, ich würde da ansetzen und die ganze Plattform mal updaten. Der MQTT Broker muss auf 3.1 stehen und nicht auf 5. An Siemens liegt es nicht und an MQTT auch nicht. Ich sehe hier nur ioBroker als mögliche Ursache.. deswegen würde ich da mal alles auf die neueste Version ziehen und parallel mal mit Mosquitto arbeiten.
Hallo, sorry - war ein paar Tage offline...

Ich habe die als aktuell angezeigte Version 5.1.0 im Broker installiert. Das ist die Falsche? Wie installiere ich die Version 3.1, und ist das dann eine alte Version oder eine ganz andere Software?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
MQTT 5 und MQTT 3.1(.1) sind verschiedene definierte Standards.

Soweit ich weiß kann die Library nur 3.1(.1).

Wie das mit ioBroker funktioniert, keine Ahnung.

Testweise einfach einen zweiten aufsetzen evtl?
 
Zurück
Oben