Set blockheight via python

More
07 Apr 2019 18:18 #130447 by MatthiasF1210

You ngc code is IMHO a mess

Till now I am not an Expert in G-gode. I use AutodeskFusion which generates the code. To be honest, I was wondering about that as well, but it worked. Later I will take care of that....

But now everything is working as it should. I adapted the change.ngc:
o<change> sub
;(debug, in change tool_in_spindle=#<tool_in_spindle> current_pocket=#<current_pocket>)
;(debug, selected_tool=#<selected_tool> selected_pocket=#<selected_pocket>)

;otherwise after the M6 this information is gone!
#<tool> = #<selected_tool>
#<pocket> = #<selected_pocket>

; we must execute this only in the milltask interpreter
; or preview will break, so test for '#<_task>' which is 1 for 
; the milltask interpreter and 0 in the UI's
O100 if [#<_task> EQ 0]
        (debug, Task ist Null)
O100     return [999]
O100 endif

;=====================================================
; Goto Tool Changeposition from INI File
;=====================================================
;first go up
G53 G0 Z[#<_ini[CHANGE_POSITION]Z>]
; then move to change position
G53 G0 X[#<_ini[CHANGE_POSITION]X>] Y[#<_ini[CHANGE_POSITION]Y>]

; cancel tool offset
G49

;=====================================================
; Request Tool Change
;=====================================================
; using the code being remapped here means 'use builtin behaviour'
M6
;(debug, Refernce Change Position x=#<_ini[CHANGE_POSITION]X> y=#<_ini[CHANGE_POSITION]Y>)

;check the auto tool measurment setting from the settingspage
O200 if [#<_hal[gmoccapy.toolmeasurement]> EQ 0]
O200 return [3] ; indicate no tool measurement 
O200 endif

;=====================================================
; Goto Tool Measureposition incl. Diameteroffset
;=====================================================
;Coorection of X/Y Position by half of the tool diameter
#10 = [#<_ini[TOOLSENSOR]X> + #5410/2*0.7]
#11 = [#<_ini[TOOLSENSOR]Y> - #5410/2*0.7]
;(debug, New Tool Diameter x=#5410)
;(debug, New Change Position x=#10 y=#11)

;go to new position
G53 G0 X[#10] Y[#11]
G53 G0 Z[#<_ini[TOOLSENSOR]Z>]

;check the velocity setting
O300 if [#<_hal[gmoccapy.searchvel]> LE 0]
O300 return [-1] ; indicate searchvel <= 0 
O300 endif
;check the velocity setting
O400 if [#<_hal[gmoccapy.probevel]> LE 0]
O400 return [-2] ; indicate probevel <= 0 
O400 endif

;===================================================
; start probing
;===================================================
F #<_hal[gmoccapy.searchvel]>
G91
G38.2 Z #<_ini[TOOLSENSOR]MAXPROBE>
G0 Z2

; This is commented out only for sim.
F #<_hal[gmoccapy.probevel]>
G38.2 Z-4

; check "G38" probe result #5070 - 1 if success, 0 if probe failed to close
O500 if [#5070 EQ 0]
G90
O500 return [-3] ; indicate probe contact failure to epilog
O500 endif

;===================================================
; probing finished
;===================================================
; back to change position
G90
G53 G0 Z[#<_ini[CHANGE_POSITION]Z>]

#<touch_result> = #5063
;===================================================
; Edit by Matthias, automated blockheight
;===================================================
#<probeheight> = #<_hal[gmoccapy.probeheight]>
;#<blockheight> = #<_hal[gmoccapy.blockheight]>
o1 if [EXISTS[#<_hal[probe.actautoblockheight]>]]   (blockheight set auto by script)
  o2 if [[#<_hal[probe.actautoblockheight]>] EQ 1]
    o3 if [[#<_hal[probe.ps_blockheight]>] EQ -999]
      (debug, Error - Auto-Blockheight has not been detected. Blockheight is calculated with 0.00)
      #<blockheight> = 0
    o3 else
      #<blockheight> = #<_hal[probe.ps_blockheight]>
      ;(debug, blockheight via script #<blockheight>)
    o3 endif
  o2 else
    #<blockheight> = #<_hal[gmoccapy.blockheight]>	
    ;(debug, blockheight via gmoccapy button used #<blockheight>)
  o2 endif
o1 else	(blockheight set manually via gmoccapy button)
    #<blockheight> = #<_hal[gmoccapy.blockheight]>	
    ;(debug, blockheight via gmoccapy button used #<blockheight>)
o1 endif 

;(DEBUG, #<touch_result>  #<probeheight>  #<blockheight>)

;calculation tool lenght compenation
G10 L1 P#<tool> Z[#<touch_result> - #<_hal[gmoccapy.probeheight]> + #<_hal[gmoccapy.blockheight]>]
G43

; signal success be returning a value > 0:
o<change> endsub [1]

M2

I used probe_screen.py as basis and added functions. First I probe the z-zero and after that the blockheight and safe the value to a hal pin. If the checkbox "Activate Blockheight " is not set, the gmoccapy blockheiht is used


I added all the Files, if someone is interested....


Thanks for the help

Matthias
Attachments:

Please Log in or Create an account to join the conversation.

Moderators: newbynobi
Time to create page: 0.093 seconds
Powered by Kunena Forum