Mach4 Werkzeugwechsel mit Messung

Steuerungssoftware, CAM, 2D/3D CAD, G-Code Editoren
Antworten
Benutzeravatar
HeadyCS
Beiträge: 37
Registriert: 16.07.2017, 12:12

Mach4 Werkzeugwechsel mit Messung

Beitrag von HeadyCS » 07.01.2018, 14:42

Aktuell bin ich dabei in Mach4 einen Werkzeugwechsel mit Längenmessung des Werkzeugs zu implementieren.

Ich stelle es mir folgend vor:

T2 M06 -- Werkzeugwechsel wird angefordert
- Das Werkzeug wird manuell gewechselt
- es wird mit einem Button zur Werkzeug-Mess-Position gefahren, die Z-Achse fährt dabei zuerst ganz nach oben, dann wird mit X,Y gefahren
- über die Jog Tasten wird die Z-Achse knapp über dem Werkzeuglängensensor gefahren
- Die Messfahrt (G31.1 Zxxx F80) wird gestartet (Button, Script)
- Der Werkzeuglängensensor löst aus, die Werkzeuglänge wird entsprechend errechnet und im Werkzeugtable abgespeichert. Die Z-Achse fährt zurück oberhalb des Werkzeuglängensensors.
- über Jog Tasten oder evtl. Button / Script wird die Z-Achse auf eine sichere Höhe gefahren
- mit einem Button wird die Gcode G43 Werkzeug-Höhen-Korrektur eingeschalten
- Gcode Programm wird mit Cycle Start Button weiter abgearbeitet



Für die Messung mit dem Werkzeuglängensensor habe ich ein Script geschrieben das auch funktioniert.
2018-01-07 14_04_03-Mach 4 - Demo.png
2018-01-07 14_04_03-Mach 4 - Demo.png (3.95 KiB) 970 mal betrachtet
Der Ablauf ist folgender:
- Mit dem Button "Go to Measure Pos" wird zur Messposition gefahren, die Z-Achse fährt zuerst ganz nach oben, dann X und Y.
- über die Jog Tasten wird die Z-Achse knapp über dem Werkzeuglängensensor gefahren
- Die Messfahrt (G31.1 Zxxx F80) wird mit dem Button "Touch Z-" gestartet
- Der Werkzeuglängensensor löst aus, die Werkzeuglänge wird entsprechend errechnet und im Werkzeugtable abgespeichert. Die Z-Achse fährt zurück oberhalb des Werkzeuglängensensors.

Jetzt ist das Problem, dass im Gcode Programmablauf bei Werkzeugwechsel M06 keine Werkzeugvermessung durchführen kann. Keine manuellen Vewegungen oder Aktionen werden zugelassen.
- Die Jog-Buttons sind ausgegraut
- die Lua Funktion MDI ausführen mc.mcCntlMdiExecute(...) wird nicht zugelassen
- über den Button zur Mess-Position zu fahren mit dem Lua Code hängt sich Mach4 auf

Code: Alles auswählen

	local rc = mc.mcCntlGcodeExecuteWait(inst, "G59 G00 Z0\n G00 X0" Y0");
	mm.ReturnCode(rc);


Mit folgenden Gcode wurde es probiert:

Code: Alles auswählen

(1001)
(T1  D=62. CR=0. TAPER=45DEG - ZMIN=0. - PLANFRSER)
N1 G90 G94 G91.1 G40 G49 G17
N2 G21

(PLANEN2)
N3 M5
N4 M9
N5 T1 M6
N6 S1027 M3
N7 G54
N8 M9
N10 G0 X83.944 Y-7.725
N11 G43 Z15. H1
N12 Z5.
N13 G1 Z0. F821.
N14 X55.
N15 X-10.
N16 G2 Y19.75 I0. J13.737
N17 G1 X55.
N18 G0 Z15.

N20 M9
N21 M30
Edit: der Gcode wurde von Fusion 360 ausgegeben. Gerade nach analysieren des Codes habe ich festgestellt dass da der ein oder andere Befehl ausgegeben wird den ich da gar nicht haben will sondern in Mach4 festlege :x:
- N11 G43 Z15. H1- Höhenkorektur für Werkzeug 1 setzen und auf Z15 fahren.
- N7 G54 Kordinatensystem G54 aktivieren
Edit2: Ok nochmal genau nachgeschaut, teilweise missverständnis. Kann vorerst mal so bleiben da ich in der Postprozessor Konfig auf die Schnelle keine Möglichkeit sehe das zu ändern.


Jetzt brauche ich ein Schlupfloch...
Eine automatische Werkzeugmessung aus Z0 mit 100 mm/min bei ca. 200 mm Verfahrweg kommt nicht in Frage.



Steuerung: CSMIO IP-M v3.06 mit Mach4 v4.2.0.3481
Steuerung: CSMIO IP-M mit Mach4

django013
Beiträge: 1332
Registriert: 18.01.2016, 17:12

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von django013 » 07.01.2018, 15:16

Moin moin,
über den Button zur Mess-Position zu fahren mit dem Lua Code hängt sich Mach4 auf
Yo, das ist etwas verwirrend.

In einer Funktion, die über einen Button ausgelöst wird, darf kein ...Wait... verwendet werden.
Im M6-Makro dagegen muss die Funktion rein.

Schau mal unter LuaExamples/Toolchanger - dort gibt es einige Beispiele für m6-Makros.

Gruß Reinhard

Benutzeravatar
HeadyCS
Beiträge: 37
Registriert: 16.07.2017, 12:12

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von HeadyCS » 07.01.2018, 16:38

Hallo,

habe gerade noch ein wenig probiert und denke kann es etwas entwirren.

Das M6 Script im LuaExamples\Toolchanger\StopManualToolchange Ordner ist auch im Profile Macros Ordner.
Es wird ausgeführt sobald der M6 Befehl im Gcode aufgerufen wird.

Bei mir siehts aktuell so aus:

Code: Alles auswählen

function m6()

	local inst = mc.mcGetInstance()
	local selectedtool = mc.mcToolGetSelected(inst)
	local currenttool = mc.mcToolGetCurrent(inst)
	
	mc.mcCntlSetLastError(inst, "M06 Lua makro")
	
	if selectedtool == currenttool then
		mc.mcCntlSetLastError(inst, "Current tool == Selected tool so there is nothing to do")
	else
		--Remove this line if you would not like the Z axis to move
		--mc.mcCntlGcodeExecute(inst, "G90 G53 G0 Z0.0");--Move the Z axis all the way up

		mc.mcCntlGcodeExecute(inst, "G59\nG00 Z0\nG00 X0 Y48");
		--mc.mcCntlFeedHold(inst);
		
		
		mc.mcCntlToolChangeManual(inst, true);
		mc.mcCntlSetLastError(inst, "Current tool == " .. tostring(selectedtool) .. "   Previous Tool == " .. tostring(currenttool))
		mc.mcToolSetCurrent(inst, selectedtool)
	end
end

if (mc.mcInEditor() == 1) then
 m6()
end
Hier wird auch der Befehl zur Messposition fahren ausgeführt.

Sobald die Lua Funktion mc.mcCntlToolChangeManual(inst, true); aufgerufen wird, ist der Maschinenstatus in eine Art Warteschleife bis der Cycle Start button gedrückt wird. Es ist wohl nicht vorgesehen dass währenddessen andere Eingaben oder Gcodes ausgeführt werden. Deshalb der Aufhänger mit dem Button.

Man müsste vor dieser Lua Funktion noch eine Art Programm-Pause o.ä setzen um noch manuelle Eingaben und Bewegungen machen zu können. Es ist aber die Frage ob es so eine Funktion oder Befehl gibt.
Steuerung: CSMIO IP-M mit Mach4

django013
Beiträge: 1332
Registriert: 18.01.2016, 17:12

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von django013 » 07.01.2018, 17:24

Moin moin,
Sobald die Lua Funktion mc.mcCntlToolChangeManual(inst, true); aufgerufen wird, ist der Maschinenstatus in eine Art Warteschleife bis der Cycle Start button gedrückt wird. Es ist wohl nicht vorgesehen dass währenddessen andere Eingaben oder Gcodes ausgeführt werden.
Du solltest Dich wirklich etwas (mehr?) mit der (mitgelieferten) Dokumentation beschäftigen.

Ich zitiere mal aus der Funktionsbeschreibung aus dem Core-API Handbuch:
Mach4 hat geschrieben:mcCntlToolChangeManual ...
Description:
A convenience function used in M6 tool change macros. It will prompt the user to change the tool and wait for a cycle start.
Selbst die Funktion die die Meldung ausgibt, kann man überschreiben.

Wenn Du Dir das Makro genau anschaust, wird dort ein GCode-Befehl ausgeführt

Code: Alles auswählen

G90 G53 G0 Z0.0
Wenn also Deine Z-Achse hochfährt, dann funktioniert das Makro und auch das Fahren aus dem Makro heraus

Gruß Reinhard

RobertD
Beiträge: 63
Registriert: 18.03.2018, 20:00

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von RobertD » 31.10.2018, 17:26

Ich habe heute auch mal versucht das Marco für den Werkzeugwechsel anzupassen, anfangs relativ erfolgreich, zum Schluss am verzweifeln.

Ich habe mich generell gewundert, dass der M6 Befehl nie ausgeführt wurde. Als Beispiel T6 M6 im MDI eingegeben, gestartet, nichts passiert....gar nichts.

Heute dann mal den Editor auf gemacht, das Macro raus gesucht, debuging drüber laufen lassen, keine Fehler gefunden. Dann nach einem Beispiel das ganze Ding auf links gezogen, mit Werkzeugvermessung, debuging drüber, trockenlauf in Lua, alles bereit.

Gespeichert, Rechner neu gestartet, M6 getestet.....nichts passiert. Dann im Config bei Initialisierung einfach mal M6 reingeschrieben. Reset gedrückt und auf einmal war ich im Werkzeugwechsel. Den Befehl in der Ini rausgenommen, dann ging es auf einmal auch im MDI.

Ich stellte fest, dass die neue Werkzeuglänge und das neue Werkzeug nicht überschrieben wurden und er immer noch auf T1 hängen bleibt und auch den Wechsel immer so gestartet hat, als wenn T1 drin ist. Lua auf, Script durchgeschaut und weiter unten fündig geworden. Geschrieben war GetData, richtig wäre SetData. Also geändert, gespeichert, alles neu gestartet, Werkzeugwechsel läuft ,überschreibt die Daten und beendet alles.

Gegenprobe, anderes Werkzeug soll aufgerufen werden. Meldung "Werkzeugwechsel unnötig" erscheint in der Fehlerbox, WZW abgebrochen. Nochmal gestartet, dann lief es, neues Werkzeug übernommen.

Da ich mich noch daran störte, dass ich mehrmals den WZW aufrufen soll, bis die Kiste losfährt habe ich nochmal den Scripeditor aufgemacht und reingeschaut. Beim Durchlauf in Lua hieß es dann, dass irgendein Modul nicht gefunden wird. Die Pfade alle aufgemacht und festgestellt, dass alle DLL vorhanden sind.

Nun weiß ich nicht, ob es an dem angezeigten Pfad lag. Der Sah ungefähr so aus:

C:\Mach4\....\..../ModulX.dll

Von den Scriptänderungen kann das ja schlecht kommen. Der letzte Schrägstrich sah nicht richtig aus vor dem gesuchten Modul. Kann ja auch nicht sein, dass man nach jedem PC Start einen anderen Zustand vorfindet, mal geht's, mal geht's nicht, ein anderes Mal gehts' nur teilweise. :roll:

Irgendwer eine Idee, bevor ich nochmal alles neu installiere :?: :?:
Ich bin mir nicht sicher, ob ich damals alles Installiert habe oder ob ich irgendwo einen Haken weggedrückt habe. Da es aber schon mal funktionierte, gehe ich davon aus, dass alles drin ist. :wf
Gruß,
Robert

django013
Beiträge: 1332
Registriert: 18.01.2016, 17:12

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von django013 » 01.11.2018, 05:35

Moin Robert,

um die *.dll Dateien brauchst Du Dich nicht kümmern. Die sind alle von artsoft und liegen dort, wo sie installiert wurden, bzw. gebraucht werden. Hat mit Lua nix zum tun.

Bei Lua ist es so, dass es übersetzte Dateien (*.mcc) und Quälcode Dateien (*.lua) gibt.
Wenn jetzt der Pfad die mcc-Datei einbindet, dann kannst Du in der lua-Datei machen was Du willst und die Änderung kommt nie ins Spiel.
Du kannst entweder den Pfad duplizieren und anpassen (auf die lua-Datei), oder Du übersetzt jedes Mal vor dem Ausprobieren die lua-Datei in eine mcc-Datei.

Was den Rest vom M6 angeht - schau doch mal im Mach-Support-Forum vorbei. Es gab da ne längere Diskussion zu dem Thema. Ist nicht ganz trivial, da Nebenläufigkeit und unterschiedliche Sichtbarkeit von Variablen mit reinspielt.
Zudem darf man auch nicht alle Systemfunktionen verwenden.

Wenn Du fit im Programmieren bist, dann sagt Dir ja die Multithread-Problematik was. Das spielt hier in dem Thema mit rein.

Gibt auch eine nette Tube von dazTheGaz zu dem Thema.

Hoffe, das hilft Dir weiter.

Gruß Reinhard

RobertD
Beiträge: 63
Registriert: 18.03.2018, 20:00

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von RobertD » 01.11.2018, 09:29

Wenn der mir im debuging schon sagt, dass er was nicht findet, dann denke huch, dass es im Programm deswegen auch nicht läuft. Man kann aus dem Lua heraus, wenn die Antrieb eingeschaltet sind, sein Script ausführen lassen Satz für Satz.

Leider bin ich in der Programmierung nicht so fit, vor langer Zeit konnte ich ein wenig VBA. Verstanden habe ich, denke ich, schon was ich da abgekupfert habe von Aufbau und Funktion her. Ansonsten Scheibe ich halt nur Maschinenprogramme, wo ich mir mit Variablen meine Schleifen oder Berechnungen zusammen bastel. :roll:

Ich werde mich in der Richtung mal schlau machen, danke.

Habe auch schon was gefunden wegen dem M6 im Config, wo man wählen kann “Werkzeug als nächstes“ oder “ Werkzeug verwenden“ oder so ähnlich. Da muss ich mal in die Einstellung schauen. Hinterher liegt es nur an dem Haken, das wäre aber zu einfach.

Nachtrag:

Die Videos von dazTheGaz waren meine Vorlage, habe aber das Programm aus dem 2. übernommen und angepasst. Da er im 3. Video gecrasht war und da bis heute irgendwie keine Lösung von ihm kam, zwecks der e-Zahl, habe ich mich an die einfachere Variante gehalten, welche ja auch 2 mal funktioniert hätte... :D
Gruß,
Robert

django013
Beiträge: 1332
Registriert: 18.01.2016, 17:12

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von django013 » 01.11.2018, 12:06

Moin Robert,

wenn ich mich recht entsinne, war diese Zeile der Punkt, der bei mir am häufigsten für "nicht gefunden" Fehler sorgte

Code: Alles auswählen

local inst = mc.mcGetInstance()
Das mit Lua bei mach4 ist nicht ganz einfach nachzuvollziehen. Je nachdem, was man macht, befindet man sich im Kontext des Aufrufers, oder in einem völlig jungfräulichen Kontext. In letzterem Falle passiert häufig so ein "nicht gefunden" Fehler.
... und das mit dem debugging ist auch nicht einfach. Manches geht garnicht zu debuggen, weil man nicht an die Stelle kommt.

Vielleicht ziehst Du Dir nochmal die Programmierhilfe zu Lua von artsoft rein?

Mir hat auch geholfen, die Hilfe zu den Systemaufrufen von mach4 wie ein Buch zu lesen. Zum einen habe ich so gelernt, was es alles gibt, zum anderen sind manchmal Beispiele dabei, die einen weiter bringen.
Alles in allem ist es nicht einfach, aber zumindest machbar.
... und die Performance entschädigt einen dann wieder für den ganzen Aufwand.

Gruß Reinhard

P.S. ich glaube nicht, dass es an einem fehlenden Haken liegt.
P.P.S. falls Du garnicht weiter kommst, stell doch eine Anfrage im mach4-Forum. Die Jungs dort sind recht hilfsbereit.

RobertD
Beiträge: 63
Registriert: 18.03.2018, 20:00

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von RobertD » 01.11.2018, 12:33

Eben habe ich nochmal an der Maschine gestanden. Erstmal Lua auf und in den Code geschaut. GetInstance ist bei mir als Funktion gar nicht in den Vorschlägen, da hat er mir ein cntlgetinstance hingeschrieben. Geändert auf getinstance, Testlauf in Lua und es geht. Beim Debuggen hat er mich dann endlich mal auf die Zeile aufmerksam gemacht gehabt und der Fehler war schnell gefunden. So weit bin ich gestern nicht mehr gekommen im Programm.

Nach dem Reboot dann noch im Confi “Tool in M6 line to use“ angehakt und schon lief es, wie es soll. Gutes kann so einfach sein.

Der andere Haken dient denke ich mal dem Vorladen im Magazin und wird erst beim nächsten Aufruf ausgeführt. Anders kann ich mir das mit dem zwei mal starten für ein Werkzeug nicht erklären.

Danke für die Anregungen, ich werde mich dann mal weiterhin mit Lua auseinandersetzen. :dh
Gruß,
Robert

django013
Beiträge: 1332
Registriert: 18.01.2016, 17:12

Re: Mach4 Werkzeugwechsel mit Messung

Beitrag von django013 » 01.11.2018, 13:00

Moin Robert,

kennst Du den ftp-Server von mach4?
Immer mal vorbei schauen. Manchmal gibt es überraschenderweise eine neue Version.
In "ChangeLog.txt" lohnt sich auch reinzuschauen.

Gruß Reinhard

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast