TIA S7-1200 Put-Get-Funktion

P.k.91

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe folgenden Fehler gehabt.
Systembeschreibung:
Ich habe eine Anlage die über eine zentrale s7-1200 verfügt und 6-dezentrale( ebenfalls S7-1200).

Der Signalaustausch erfolgt über eine Put-Get-Funktion. Die an sich mehrere Jahre ohne Probleme funktioniert hat. Nur hatte ich jetzt folgenden Fall.

Bei der Anlage kam die Meldung „Kommunikation unterbrochen“. D.h. Das lebensbit, welches von der dezentralen CPU kommt, hatte sich nicht mehr gemeldet. Bei der genaueren Betrachtung viel auf, dass bei der put Funktion der Zustand „done“ nicht erreicht wurde. Bei Error stand 0 und bei Statuts 25. Das bedeutet ja, dass der Schreibauftrag noch im Gange ist. Daher gehe ich davon aus, dass sich diese Funktion aufgegangen hat.

Nach ein paar Minuten war dieser Fehler weg.

Hatte jemand dieses oder ein ähnliches Problem ?

Mit freundlichen Grüßen
 
Wie wird denn Request gesetzt oder zurückgesetzt? Könnte eventuell die CPU neu gestartet worden sein, bei gesetztem Request und wenn dieses Bit remanent ist. Ich habe darum einen Notanker drin, wenn der Baustein nach Ablauf einer Maximalzeit von z.B. 60 Sekunden der FB weder Done noch Error meldet, wird die Kommunikation neu initialisiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der REQ wird lediglich über einen Taktmerker gesetzt. Und bei steigender Flanke sollte der Schreibauftrag erneut gestartet werden.

Wahrscheinlich hat sich deswegen die Kommunikation von „selbst“ gefangen.
Jedoch verstehe ich nicht wie sich das aufhängen kann.
Spielt dabei die Firmware eine Rolle? Ich hatte vergessen zu erwähnen, dass die Verbindung über scalance m826 erfolgt.
 
Der REQ wird lediglich über einen Taktmerker gesetzt. Und bei steigender Flanke sollte der Schreibauftrag erneut gestartet werden.
Wenn du mit einem Taktmerker arbeitest (wie schnell taktet der) macht es keinen Sinn beim ersten Error schon einen Kommunikationsfehler zu melden (macht das überhaupt jemals Sinn?).
Wenn du ein Lifebit hast muss das eine andere Taktrate haben als der Kommunikationstakt, sonst kann es sein dass du synchronisiert das Liefebit immer in demselbem Zustand überträgst.
Ein Lebenzeichen in form eines Inkrements ist IMHO zu bevorzugen.

Ich würde entweder auf Ereignis Puten oder wenn Zyklisch halt auf Done und Error achten. Und ich mache ebenfalls immer noch einen Angsttimer rein, der die Kommunikation neu startet wenn Done und Error nicht schnackeln.
 
Also der Taktmerker (Lebensbit) ist 0,625 Hz. Der Put Vorgang wird mit einem Taktmerker von 0,5 Hz angesteuert. Und zur Info: der Get Auftrag wird angesteuert wenn der Schreibauftrag erledigt ist und mit einem Taktmerker 0,5 Hz.
Und weil sich der Put Auftrag nicht abgeschlossen wurde, konnte kein neuer Leseauftrag angestoßen werden.

Ein Neustart der Kommunikation klingt sinnvoll. Ich werde das mal ausprobieren.

Ein Frage noch, die CPU hat eine Zykluszeit von Max. 11ms, Min. 4ms und durchschnittlich von 7ms.
Das hat doch keine Auswirkungen auf die Kommunikation oder?

Vielen Dank für die Tipps. :)
 
Zurück
Oben