TwinCat 3 Programmcode an Logout bzw Stop binden

BenWolf

Level-1
Beiträge
36
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe folgendes Problem: Ich muss sicherstellen, dass einige Abläufe beendet werden bevor die SPS gestoppt wird. Da gibt es sonst einige Bugs.

Kann ich irgendwie einen Programmcode an den Stop verlinken, der dann ausgeführt werden muss bevor die Steuerung in den Stopmodus kommt?

Ich Danke schon mal im Voraus. Wenn ich etwas zu undeutlich formuliert habe bitte einfach nochmal nachfragen.

MfG Ben
 
Wird die SPS aktiv von deinem PLC Programm oder vom TwinCAT System gestoppt und du willst vorher noch einige Programmabläufe durchführen :confused:
 
Kann dir gerade nicht ganz folgen :confused: Stoppst DU das PLC Programm in der Entwicklungumgebung und möchtest das nach Betätigen der Stop-Taste erst noch ein paar Programmabläufe durchgeführt werden?

Was sind den die Bugs die ansonsten entstehen?
 
Ja genau. Ich stoppe über den Reiter PLC (in Visual Studio) mein Programm.
Und ich möchte das nach dem betätigen der Stoptaste noch einige Befehle ausgeführt werden.

Ich kann das Visual Studio oft nicht mehr neu starten. Es schirmt komplett ab. Ich bekomme Errormeldungen. Es hängt sich teils beim Neustart direkt wieder auf.
Ich weiß noch nicht ob das wirklich nur an meinem Programm liegt, aber auch so will ich externen teilnehmern Mitteilen, dass sie mir nichts mehr senden brauchen (Was sie sonst nicht mitbekommen)
 
Fb_exit()
Ob das für dich ausreicht wäre ich aber zu bezweifeln da ich dich so verstehe das du zeitlich lange Post-operationen willst.

Guga
 
Welche Version vom TwinCAT3 verwendest Du, welches VS, 2010, 2013, 2018, welches Betriebssystem? So ein Verhalten kann ich nicht nachvollziehen. Welche PLC Hardware verwendest Du?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FB_Exit() wird soweit ich weiß nur einmal ausgeführt (nicht mehrere Zyklen). Einen Ablauf beenden der mehrere Zyklen dauert wird so nicht funktionieren. Falls du das nicht brauchst, wäre das aber die richtige Funktion. Das Problem beim Stop ist, dass wenn du eine Exception hast oder einen Nullpointer-Zugriff, die SPS immer über Stop in den Exception Zustand (gelbes Symbol) geht und da kann nicht noch ein Zyklus ausgeführt werden.
 
FB_Exit() wird soweit ich weiß nur einmal ausgeführt (nicht mehrere Zyklen). Einen Ablauf beenden der mehrere Zyklen dauert wird so nicht funktionieren. Falls du das nicht brauchst, wäre das aber die richtige Funktion. Das Problem beim Stop ist, dass wenn du eine Exception hast oder einen Nullpointer-Zugriff, die SPS immer über Stop in den Exception Zustand (gelbes Symbol) geht und da kann nicht noch ein Zyklus ausgeführt werden.

Ich werde das mal ausprobieren, danke. Allerdings werde ich wohl schon mehr als einen Zyklus brauchen. Ich möchte einen Port schließen und dem externen Teilnehmer mitteilen, dass ich die Verbindung unterbreche. Über TCP sind das mehrere Nachrichten, ich warte ja noch auf sein ACK und muss ihm dann auch noch mal antworten.

Ich dachte es gäbe vllt eine Funktion, mit der ich ein kontrolliertes Abschalten durchführen könnte. (Ähnlich wie bei Betriebssystemen, da werden ja auch erst offene Verbindungen getrennt und dann Heruntergefahren)



Welche Version vom TwinCAT3 verwendest Du, welches VS, 2010, 2013, 2018, welches Betriebssystem? So ein Verhalten kann ich nicht nachvollziehen. Welche PLC Hardware verwendest Du?

TwinCat 3.1.4022.28
Visual Studio 2017
Windows 10
Es läuft alles über den Rechner

Ich nahm an, wenn ich mit einem Port interagiere wird dessen Buffer vllt in mein VS TC Projekt geladen. Wenn ich jetzt den Port nicht ordnungsgemäß schließe bleibt der Buffer gespeichert und VS TC erwartet, dass dieser Buffer leer ist.
Das ist aber auch nur eine Vermutung. Ich habe auch schon Fehlermeldungen bekommen als der Port vorher normal geschlossen wurde.
Die Fehler treten aber erst beim öffnen der TC Dateien auf, nicht wenn ich normal VS öffne.
Dazu sind es nicht immer die gleichen Fehler, die auftreten und sie kommen nicht immer vor ( Ich kann leider erst ab Mittwoch wieder mit dem externen Teilnehmer sprechen sonst würde ich mal Bilder von den Fehlermeldungen machen).
 
Eine SPS wird üblicherweise NIE gestoppt, nur im Fall von schweren Programmfehlern, und dann soll sie auch nicht noch ..zig "intelligente" Aufräumarbeiten machen, sondern sofort ohne Verzögerung in STOP gehen und alle Ausgänge abschalten. Wer weiß ob die SPS überhaupt noch was Kontrolliertes hinkriegt, wenn sie eh' schon spinnt und nur über das rabiat erzwungene STOP unter Kontrolle zu kriegen ist.

Kontrolliert aufräumen hat man nur eine Chance, wenn man die SPS eben nicht panisch in STOP schickt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So richtig habe ich noch nicht verstanden, warum das SPS-Programm gestoppt werden soll. Bist Du beim Debuggen?
Sehe ich das richtig: Die PLC läuft auf dem gleichen Rechner wie die Entwicklungsumgebung?
Externe Teilnehmer: Du bzw. die PLC kommuniziert mit anderen Ethernet-geräten und empfängt fortwährend Nachrichten. Im Falle eines PLC-Stop stürzt VisualStudio ab?.
Nun ich würde grundsätzlich sagen: Ein Fall für den Beckhoff-Support.
 
Ich nahm an, wenn ich mit einem Port interagiere wird dessen Buffer vllt in mein VS TC Projekt geladen. Wenn ich jetzt den Port nicht ordnungsgemäß schließe bleibt der Buffer gespeichert und VS TC erwartet, dass dieser Buffer leer ist.

Du kannst den Buffer doch bei jedem Start aufräumen/leeren. Beispielsweise mit einem FB_Init().



Gesendet von iPhone mit Tapatalk
 
Zurück
Oben