Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
CNCjsで4方向のワーク原点に対応したXYZプローブ(端面で計測)
; Based on https://github.com/cncjs/CNCjs-Macros/blob/master/C3D_3axis_probe
; エンドミルを穴に入れて、エンドミルの先はプレート表面より下にします
; 制御基板のプランナーキューが空になるまで待ちます
%wait
; 以下はユーザーが定義する変数です
%ENDMILL_DIAMETER = 3.175 ;エンドミルの直径
%PROBE_BLOCK_Z = 5.06 ;Z方向のプレートの厚さ
%PROBE_BLOCK_Y = 9.982 ;Y方向のプレートの厚さ
%PROBE_BLOCK_X = 9.983 ;X方向のプレートの厚さ
%PROBE_FEEDRATE_A = 70 ;プローブ時の送り速度 1回目
%PROBE_FEEDRATE_B = 30 ;プローブ時の送り速度 2回目
%Z_ESCAPE_DISTANCE = 15 ;Zの退避時の距離
%Z_PROBE_KEEPOUT_X = -20 ;穴の位置からのZを計測する点のX方向距離 (特にここ変更!!)
%Z_PROBE_KEEPOUT_Y = -20 ;穴の位置からのZを計測する点のY方向距離 (特にここ変更!!)
%XY_START_POS_DISTANCE = 20 ;穴位置からXYプローブ開始位置への移動距離(絶対値)
%XY_PROBE_Z_DISTANCE_FROM_SURF = -5 ;XYプローブ時のZ表面からの高さ
G21 ; mm単位
G91 ; 相対座標系
%X_WORK_CENTER_DIRECTON = Math.abs(Z_PROBE_KEEPOUT_X)/Z_PROBE_KEEPOUT_X ; 穴から見てプレートの中心X方向
%Y_WORK_CENTER_DIRECTON = Math.abs(Z_PROBE_KEEPOUT_Y)/Z_PROBE_KEEPOUT_Y ; 穴から見てプレートの中心Y方向
G0 Z[Z_ESCAPE_DISTANCE] ;穴から工具を出す
X[Z_PROBE_KEEPOUT_X] Y[Z_PROBE_KEEPOUT_Y] ;Zプロービングの位置へ移動
G38.2 Z[-Z_ESCAPE_DISTANCE] F[PROBE_FEEDRATE_A] ;Zプローブ
G0 Z2 ;Z2mm上げ
G38.2 Z[-Z_ESCAPE_DISTANCE] F[PROBE_FEEDRATE_B] ;Zプローブ
G4 P0.1;
G10 L20 Z[PROBE_BLOCK_Z] ;Zの厚さをセット
G4 P0.1;
G0 Z3 ;Z3mm上げ
G0 X[-Z_PROBE_KEEPOUT_X - XY_START_POS_DISTANCE * X_WORK_CENTER_DIRECTON] ;X方向の端面側へ移動
G0 Z[XY_PROBE_Z_DISTANCE_FROM_SURF - 3] ;Z下げる
G38.2 X[Z_PROBE_KEEPOUT_X] F[PROBE_FEEDRATE_A] ;X方向端面プロービング
G0 X[-2 * X_WORK_CENTER_DIRECTON] ;工具逃し
G38.2 X[Z_PROBE_KEEPOUT_X] F[PROBE_FEEDRATE_B] ;X方向端面プロービング
G4 P0.1
G10 L20 X[(-ENDMILL_DIAMETER/2 -PROBE_BLOCK_X) * X_WORK_CENTER_DIRECTON] ;Xの厚さと工具径を考慮した座標をセット
G4 P0.1
G0 X[-Z_PROBE_KEEPOUT_X/2] ;工具逃し
G0 Y[-Z_PROBE_KEEPOUT_Y - XY_START_POS_DISTANCE * Y_WORK_CENTER_DIRECTON ] ;Y方向の端面側へ移動
G90 G0 X[Z_PROBE_KEEPOUT_X] ;工具が端面に当たる位置へX移動
G91 ;incremental
G38.2 Y[Z_PROBE_KEEPOUT_Y] F[PROBE_FEEDRATE_A] ;Y方向端面プロービング
G0 Y[-2 * Y_WORK_CENTER_DIRECTON] ;工具逃し
G38.2 Y[Z_PROBE_KEEPOUT_Y] F[PROBE_FEEDRATE_B] ;Y方向端面プロービング
G4 P0.1
G10 L20 Y[(-ENDMILL_DIAMETER/2 -PROBE_BLOCK_Y) * Y_WORK_CENTER_DIRECTON] ;Yの厚さと工具径を考慮した座標をセット
G4 P0.1
G0 Y[10 * Y_WORK_CENTER_DIRECTON * -1] ;工具逃し
G0 Z10 ;Z工具退避
G90
G0 X0Y0 ;Go to X0Y0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment