Steuerung mittels G-Code -M-Funktionen in CNC (TwinCAT3)

EF_91

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey Leute,
also ich will mittels M-Funktionen digitale Ausgänge schalten. Ich habe ein CNC-Kanal und hab in der Parameterliste M-Funktionen erstellt. Mir wurde gesagt, dass ich diese Funktionen nun in der SPS nutzen kann. Das TwinCAT-Projekt hat jedoch zwei SPSen, eine Basic von Beckhoff und eine von mir erstellte mit unterschiedlichen GVLs. Nun kann ich in meiner eigenen SPS den Kanal bzw. die dazugehörige M-Funktion nicht ansprechen, vermutlich weil die Kanäle in der anderen GVL definiert sind. Nun sind meine Fragen wie folgt:
1. Muss man die Achsen und Kanäle zwangsläufig in der GVL finden um diese abrufen zu können?
2. Hab ich vlt einen Syntaxfehler? Ich hab immer IF TC_CHANNEL_1.m_synch[25] ... genutzt bzw. auch verschiedene Varianten genutzt. Findet man den exakten Kanalnamen in den Kanal-Einstellungen?
3. Bringt es was, dass Programm in die Basic-SPS zu verschieben? Das würde ich als nächstes probieren, allerdings hätte ich gedacht das eine GVL für das gesamte TC-Projekt gilt und nicht nur für die jeweilige SPS.
Hat da jmd noch ein paar Ideen oder Hinweise? Vg
 
Hallo EF_91,

1. Nein, muss man nicht. Beckhoff stellt das von dir angesprochene SPS-Projekt zur Verfügung, man muss dieses jedoch nicht nutzen.
Denn: Das Vorlageprojekt von Beckhoff greift auf die Variablen einer Bibliothek zu: (Für M-Funktion 25):
Tc2_CncHli muss als Bibliothek dem Projekt hinzugefügt werden
Code:
// Definierte M-Funktion 25 im Kanal 0 (ID)
IF Tc2_CncHli.HLI_Global_Variables.gpCh[0]^.techno_unit_std_sync[25].please_rw THEN
	// CNC signalisiert PLC dass M-Funktion ansteht
	// PLC setzt intenes Bit oder was auch immer ...
	bDoMfunc := TRUE;
	// PLC signalisiert CNC dass es das Kommand erhalten hat
	Tc2_CncHli.HLI_Global_Variables.gpCh[0]^.techno_unit_std_sync[25].please_rw := FALSE;
END_IF

// Nun will die PLC dass es weiter geht ...
IF bDoMfunc AND bMfuncDone THEN
	Tc2_CncHli.HLI_Global_Variables.gpCh[0]^.techno_unit_std_sync[25].done_w := TRUE;
END_IF
Hinweis: Den Namensraum und die GVL muss man nicht angeben, es würde z.B. gpCh[0]^.techno_unit_std_sync[25].please_rw reichen
Siehe infosys:
1635322628913.png

Wenn du 2 SPS-Projekte hast wirst du das Problem haben, dass einerseits Beckhoff die Tc2_CncHli Daten nutzt,
aber du ebenfalls benutzen willst.

Für den Anfang würde ich empfehlen das Vorlageprojekt zu benutzen. Allerdings stimmt dann natürlich mein Code nicht mehr ...

PS: Auch wenn der Thread recht alt ist, hoffe ich, dass ich weiterhelfen konnte.

-Stirni
 
Zurück
Oben