Seite 1 von 1

Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 18:51
von jannik
Hi zusammen,

ich baue aktuell eine neue Steuerung für meine bestehende Fräse. Bei der "Gelegenheit" möchte ich auf Mach4 umsteigen. Vorher nutzte ich Mach3 - und zwar genauso wie es ist - ohne dass ich mich je mit der Anpassung beschäftigt habe. Um jetzt bei der neuen Steuerung etwas mehr Bedienkomfort zu erzielen möchte ich die Software etwas anpassen. Die Einarbeitung in Mach3 macht meiner Meinung nach keinen Sinn mehr und ich nehme gleich Mach4.

Soweit bin ich auch schon ganz gut voran gekommen.

Zum Thema:
Da ich eine WZW Spindel verbaue möchte ich über einen Taster das Ventil für den WZW Zylinder schalten.
Natürlich soll dies erst zugelassen werden, wenn die Spindel steht.
Genau hier ist das Problem.
Grundsätzlich läuft es, aber ich finde keine Möglichkeit die Auslaufzeit der Spindel zu berücksichtigen für die Freigabe des Werkzeuglösens.
Alternativ wäre mir auch mit einem Delay geholfen.

Hier mal ein kurzer Code für das Freigabesignal:

Code: Alles auswählen


local hsig = mc.mcSignalGetHandle(inst, mc.OSIG_SPINDLEFWD)
local spinstate_fwd = mc.mcSignalGetState(hsig)

hsig = mc.mcSignalGetHandle(inst, mc.OSIG_SPINDLEREV)
local spinstate_rev = mc.mcSignalGetState(hsig)

hsig = mc.mcSignalGetHandle(inst, mc.OSIG_SPINDLEON)
local spinstate_speed = mc.mcSignalGetState(hsig)

if ((spinstate_fwd == 0) and (spinstate_rev == 0) and (spinstate_speed == 0) ) then
	
	-- Hier soll das Delay rein, bis die Spindel ausgetrudelt ist (DECEL TIME z.B. )
	-- alternativ z.B. 4 Sekunden delay
	WriteRegister("WzwAllowed", 1)

else 
	WriteRegister("WzwAllowed", 0)
end
Aktuell habe ich es im PLC Script integriert.
An einen Counter oder Systemzeitverrechnung habe ich auch schon gedacht, aber vielleicht wisst ihr was Sinnvolleres :)

Gruß
Jannik

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 19:20
von millhouse_
Hi. Gibts irgendwo ne vernünftige Dokumentation bzgl. Variablen und Funktionen? Hab nur ne simple Auflistung gefunden ohne Details.

Speziell klingt folgendes evtl. interessant: ISIG_SPINDLE_AT_SPEED und ISIG_SPINDLE_AT_ZERO

In der kleinen pdf steht allerdings nix weiteres dazu.

Würde dann evtl. einen while Loop nutzen. ( while ! ISIG_SPINDLE_AT_ZERO : etc... )


Je nach Umständen wäre eine Bremse vll. einfacher...


Edit: HIer gibts evtl. noch mehr Infos: https://www.machsupport.com/forum/?topic=37308.20
If you want more control over the spindle waits using signals, and don't want to wait up to 20 seconds for a timeout, then using the mcSignalWait() API function on ISIG_SPINDLE_AT_SPEED and AT_ZERO may be what you need.

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 19:34
von jannik
Hi und danke für die Antwort!
Ich nutze die Doku "Mach4 CNC Controller Lua Scripting Guide" als PDF und dann einfach im scripteditor auf eine Funktion und F1. Dann öffnet sich eigentlich alles was man so gebrauchen kann (siehe Screentshot).

Ja das was du gefunden hast hört sich wirklich gut an, aber leider verstehe ich das als Eingangssiginale. Stichwort ISIG. D.h. ich muss die Signale liefern, z.B. von meinem Umrichter. Sicher kann ich drüber nachdenken dass zu tun, will ich aber eigentlich nicht :)
Eher suche ich ein OSIG welches vom Mach Core kommt. Oder ich nehm es per "dummes" Delay in Angrif.

Ich gucke mir parallel noch den PMC Editor an, da scheint es was mit Delays zu geben. Aber dann ist das schon wieder ein anderes "Abteil".
Garnicht so leicht anfangs durchzublicken, was wo ist, bzw. wo es sinnvollerweise implementiert wird. Naja, für die ersten zwei Tage habe ich schon ein paar Buttons und co am Rennen. Es wird.

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 20:36
von jannik
Aaalso es geht nun mit etwas Mühe und einem Umweg über ein PMC Script. Siehe Screen.
Hier lässt sich das gleiche Szenario abbilden (grafisch mit Delay - "HEY") und als Lua Code generieren.
Allerdings erhielt ich von der automatisch generierten PMC Version immer einen Script error. Habe es manuell angepasst, scheint ein Bug vom PMC Modul zu sein. Hoffe ich mal :) Auf jeden Fall geht es nun.

Lösung siehe Bild:
Letztendlich wird auch hier nur in den Registern meine WZW Allowed auf 1 gesetzt mit den gleichen Bedingungen und dem Delay.
Jetzt kann man von "überall" auf diesen Registerwert zugreifen und ihn auslesen um z.B. den Auswurfzyliner zu schalten.

Manuelle Anpassung im Code war bei mir Nötig, da diese automatische Variable nicht existierte.

Code: Alles auswählen

--    ........
    if(Read_I_b_rung_top() == 1) then
        --Write_Register("iRegs0/WzwAllowed", pmcvars.(null)) -- automatischer Code
		Write_Register("iRegs0/WzwAllowed", 1) -- angepasster Code
    end
    
    -- ] finish series
end

return WZW_Approval

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 20:56
von Stud54
Ich nutze das " Spindel_steht" Signal direkt aus dem Fu, speise das in Linuxcnc zurück. Keine Ahnung, ob dein FU so einen Ausgang besitzt.

Gruß

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 21:18
von jannik
Ich kann es dir auch gerad nicht sagen :) Hab ihn noch nicht einmal angeschlossen siehe Bild :am
Spaß bei Seite - ja, wäre vielleicht doch sinniger es so zu tun. Wäre auch sicherer, wenn später mal am FU die Rampen angepasst werden - dann wird sicher keiner dran denken das PMC Script auch anzupassen. Ich gucke mal. Dann bieten sich auch gleich beide Signale an wie Millhouse schon schrieb.

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Verfasst: 09.02.2019, 22:25
von millhouse_