TIA Modbus Server bricht permanent Verbindung ab

S_Liner

Level-2
Beiträge
427
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich habe eine S71515-1PN (6ES7 511-1AL03-0AB0 V3.1) und einem CM 1542-1 (6GK7 542-1AX00-0XE0 V3.0).
Ich habe nutze den Modbus Server um Daten für unser Scadasystem zur Verfügung zu stellen. Das ging auch alles super, aber jetzt Ändert sich der Status permanent in hoher Geschwindigkeit von 7002 - 7006..

Ich habe das mit TIA V19 projektiert. Könnte mir jemand sagen woran das liegen könnte?

Eigentlich wollte ich nur Bytes weiterleiten. Ich empfange ein Signal (Bool) und und schreibe dann das dazugehörige BYTE auf 1.
Das ging einwandfrei..

Ich habe dann, da die Signale mit unterschiedlicher Länge kommen, für jedes Eingangssignal eine Flankenauswertung angelegt und den Impuls dann für 500ms verlängert.

Danach fing das Problem an..


Könnte mir jemand sagen was ich vielleicht prüfen könnte? Den Server, auf dem die Software installiert ist, habe ich bereits neu gestartet. Während des Neustarts war der Status dann auch 7002. Aber als alles wieder online war, fing er wieder an permanent von 7006 zu 7002 und wieder hoch zu 7006 zu wandern..

Falls jemand ne Idee hat, wäre ich sehr dankbar..

Gruß
 
So aus dem Kopf:
7002 heißt doch - Verbindung aufbauen
7006 steht für - Daten werden empfangen

Wenn nun eine erneute Flanke kommt würde er abbrechen und erneut starten.
Pulst Du den Server damit er immer wieder neu startet?

Ich werde leider nicht ganz schlau aus Deiner Beschreibung, da es ja mal funktionierte, dann hast du die Änderung gemacht, von der Du weißt welche das ist, nun gehts nicht mehr. Änderung rückgängig dann funktioniert es wieder?
Klingt für mich dafür das Du den Server abwürgst.

Kannst Du das vielleicht anders beschreiben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, vielen Dank für deine Antwort.
7002 heißt doch - Verbindung aufbauen
7006 steht für - Daten werden empfangen
Genau

Wenn nun eine erneute Flanke kommt würde er abbrechen und erneut starten.
Pulst Du den Server damit er immer wieder neu startet?
Nein, ich unterbreche die Verbindung nur im Fehlerfall..

Änderung rückgängig dann funktioniert es wieder?
Das werde ich wohl morgen versuchen.

Kannst Du das vielleicht anders beschreiben?

Also als Beispiel..

Ich empfange 48 Signale von 3 Maschinen (Maschine 11, Maschine 12 & Maschine 13) Jede Maschine sendet 12 Signale. Diese schreibe ich erstmal in einen DB...

DB Interne_Signale.Maschine [11].Station[1] := E0.0;
DB Interne_Signale.Maschine [11].Station[2] := E0.1;

DB Interne_Signale.Maschine [12].Station[1] := E1.5;
DB Interne_Signale.Maschine [12].Station[2] := E1.6;

DB Interne_Signale.Maschine [13].Station[1] := E3.1;
DB Interne_Signale.Maschine [13].Station[2] := E3.2;




FOR i := 11 TO 13 BY +1 DO
FOR i2 := 1 TO 12 BY +1 DO
IF DB Interne_Signale.Maschine .Station[i2] THEN
DB Scada_Signale.Maschine .Station[i2] := 1; // DB Scada_Signale.Maschine .Station[i2] ist vom Datentyp BYTE
ELSE
DB Scada_Signale.Maschine .Station[i2] := 0;
END_IF;
END_FOR;
END_FOR;


So bis hierhin hat alles geklappt...


Da die Signale nur zu Visualisierung im Scada gedacht sind und etwas kurz sind, habe ich Sie jetzt etwas verlängert.

Also erstes hab statt beispielsweise DB Interne_Signale.Maschine [11].Station[1] := E0.0; nun folgendes gemacht.

U E0.0
FP FLM
= IMP_MA[11]ST_1

Diesen Impuls habe ich nun an einen TOF gelegt und das Signal um 500ms verlängert. Diese Verlängerte Signal schreibe ich nun wieder in den DB...


DB Interne_Signale.Maschine [11].Station[1] := Verl_E0.0;


Da ich zur Zeit den Code nicht zur Hand habe, hoffe ich das es so besser zu verstehen ist was ich geändert habe.


Gruß
 
Da ich zur Zeit den Code nicht zur Hand habe, hoffe ich das es so besser zu verstehen ist was ich geändert habe.
Jupp, eine Änderung die keine Veränderung an der Kommunikation hervorrufen dürfte.
Daher einmal die Änderung rückgängig machen um zu sehen ob das Problem weiterhin auftritt.

Du schriebst das Du die Verbindung nur im Fehlerfall trennst.
An der Stelle schreibe ich an die Bausteine gerne mal einen simplen Move des Status an ein Merkerwort und stoppe dann den Master, um festzustellen das nicht doch ein ganz kurzer Fehler zum Abbruch geführt hat. Daran schon gedacht bzw. siehst Du zyklisch ob ein Fehler aufgetreten ist (z.B. SR)?
Nicht das ein anderer Fehler auftritt den Du gerade nicht siehst, der Baustein trennt die Verbindung, Fehler ist weg (wird automatisch zurückgesetzt) und der Aufbau erscheint erneut.

Die Zeit zwischen 7006 und 7002 wäre sonst noch interessant, sprich wie lange bleibt er auf 7006. Reicht das für einen Timeout den Du nur nicht siehst?
 
Guten Morgen...

An der Stelle schreibe ich an die Bausteine gerne mal einen simplen Move des Status an ein Merkerwort und stoppe dann den Master, um festzustellen das nicht doch ein ganz kurzer Fehler zum Abbruch geführt hat.
Das habe ich jetzt mal gemacht und du hattest recht. Der Status ist 8383..

1745473223223.png

Aber das verstehe ich nicht.. Ich habe doch daran nichts geändert...

1745473299386.png


Das hier ist der Datenbaustein.. Ich habe nur mal eine Maschine Aufgeklappt, damit man sieht wie es aussieht. Die anderen beiden sind genauso..

1745473403540.png


Beste Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eigentlich wollte ich nur Bytes weiterleiten. Ich empfange ein Signal (Bool) und und schreibe dann das dazugehörige BYTE auf 1.
Das ging einwandfrei..
(...)
Danach fing das Problem an..
Der Status ist 8383..
Deine Änderungen hast du gemacht, weil du weitere Werte für ein Scada bereitstellen wolltest?
Könnte es sein, dass die Scada (oder ein anderer Client) jetzt die neu eingerichteten Werte auslesen will, und dabei eine falsche Registernummer oder Coil/Bitnummer verwendet?

Hast du bei den Änderungen den "DB Modbus Register"-DB erweitert und dann auch in die CPU geladen?

Tipp: in Variablen- und DB-Namen keine Leerzeichen verwenden!
 
Zuletzt bearbeitet:
Hallo zusammen..

Könnte es sein, dass die Scada (oder ein anderer Client) jetzt die neu eingerichteten Werte auslesen will, und dabei eine falsche Registernummer oder Coil/Bitnummer verwendet?
Das war wohl das Problem.. Es wurde von unseren IT's nochmal neu eingerichtet und seit ca. 30 min läuft es wieder..


Besten Dank für den Support
 
Dann dauerhaft dafür sorgen das solche Fehler angezeigt, . . . werden (gleich mit Text IT ist schuld :) )
 
Zurück
Oben