Mach4 Delay in Script einbauen / Spindel steht Signal

Motioncontroller, Endstufen, mechanische/induktive Endschalter etc.
Antworten
jannik
Beiträge: 24
Registriert: 05.08.2018, 19:43

Mach4 Delay in Script einbauen / Spindel steht Signal

Beitrag von jannik » 09.02.2019, 18:51

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

millhouse_
Beiträge: 153
Registriert: 31.10.2018, 09:06

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Beitrag von millhouse_ » 09.02.2019, 19:20

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.

jannik
Beiträge: 24
Registriert: 05.08.2018, 19:43

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Beitrag von jannik » 09.02.2019, 19:34

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.
Dateianhänge
Bild.JPG

jannik
Beiträge: 24
Registriert: 05.08.2018, 19:43

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Beitrag von jannik » 09.02.2019, 20:36

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
Dateianhänge
Delay.JPG

Stud54
Beiträge: 660
Registriert: 15.02.2018, 16:19

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Beitrag von Stud54 » 09.02.2019, 20:56

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ß

jannik
Beiträge: 24
Registriert: 05.08.2018, 19:43

Re: Mach4 Delay in Script einbauen / Spindel steht Signal

Beitrag von jannik » 09.02.2019, 21:18

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.
Dateianhänge
bild.JPG


Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast