Beckhoff TwinCAT3 - Erneuter Aufruf einer .exe-Datei durch den Baustein NT_StartProcess

Clueless

Level-2
Beiträge
17
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,
momentan versuche ich durch den Baustein NT_StartProcess eine .EXE-Datei aufzurufen. Nach dem ersten Aufruf und der Abarbeitung des Exe-Files (C++ Code) kann ich dieses jedoch nicht erneut aufrufen. Der Aufruf erfolgt durch einen Button in einer HMI. Im Beckhoff-Code also durch die IF-Abfrage einer Variable.
Meine Frage ist nun, ob ich den Baustein falsch parametriert habe oder es aus einen anderen Grund nicht möglich ist. Zum besseren Verständnis habe ich den Code als Bild angehängt.Beckhoff-ADSKommunikation.pngÜber ein paar Antworten oder Anregungen würde ich mich freuen.
VG
 
Warum nutzt Du das seltsame Konstrukt mit der Variablen bStartMessung? Hier solltest Du für NT_StartProcess einen Flanke (R_TRIG) nutzen. Wenn intToWrite schon gesetzt wird während der Button noch betätigt ist dürfte das Zurücksetzen der Variablen GVL.bParamBestaetigt nicht funktionieren und damit erhält NT_StartProcess nie ein FALSE, weil im nächsten Durchlauf bStartMessung wieder auf TRUE gesetzt wird. Die Variable, die vom Button gesetzt wird im SPS-Programm zurückzusetzen ist übrigens ein schlechter Stil, da solltest Du im HMI stattdessen einen Button nutzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für deine Antwort. Der Tipp mit dem Button in der HMI ist ein guter Einwand. Das habe ich bereits geändert.
Um den R_TRIG zu verstehen habe ich mir ein kleines Testprogramm geschrieben, angelehnt an mein "Problemprogramm". Komischerweise erhalte ich das selbe Ergebnis. Das Counter zählt lediglich beim ersten Betätigen des HMI-Buttons hoch.
Ist es in ST nicht möglich eine steigende Flanke durch Setzen und Rücksetzen von "bStartMessung" zu erzeugen ? Denn der Clock-Eingang des R_TRIG bleibt dauerhaft auf TRUE.
Setze ich meinen HMI Button (GVL.bParamBestaetigt) direkt auf den Eingang, so funktioniert der R_TRIG und auch der Zähler korrekt.
R_TRIG.png
 
Ist es in ST nicht möglich eine steigende Flanke durch Setzen und Rücksetzen von "bStartMessung" zu erzeugen ?

Doch schon, aber dein Problem ist vermutlich ein anderes. Dein FB "StartMessung" erwartet wahrscheinlich eine Flanke am Eingang "bStartMessung", bekommt davon aber nichts mit weil du den FB nur bedingt aufrufst (IF GVL.bParamBestaetigt)

Denn der Clock-Eingang des R_TRIG bleibt dauerhaft auf TRUE.
Siehe oben, auch der R_TRIG bekommt vom "FALSE" nichts mit.
 
Denn FB ausserhalb des IF immer aufrufen. startMessung();
Der Input start erwartet einen Wechsel von FALSE auf TRUE, und muss während mindestens 1 Zyklus True sein.

Ob mit R_Trig oder bStartMessung ist egal.

Leider ist die Doku nicht sehr klar geschrieben. Der FB wird aber immer aufgerufen.

NT_Start
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
letztendlich lag es wirklich an der Bedingung, dass ich das Programm nicht erneut aufrufen konnte. Nun habe ich dies ausgelagert und mit dem Trigger realisiert, um sicher zu gehen, dass wirklich nur das High-Signal für einen Zyklus anliegt.
Vielen Dank für die Antworten und dir @oliver.tonn für die Verbesserungsvorschläge in meiner Programmlogik/-struktur.
 
Zurück
Oben