Mach3 CNC Controllerの原点補正をするマクロ


はじめに

中華ルーラ(3軸フライス)をポチッたところ、コントローラはMach3限定でした。
原点出しをするための方法を探したところ、
https://sites.google.com/site/likipong/pcbmilling/kontakutopurobu-ji-nengno-zhui-jia
を見つけて設定したのですが、マクロ実行時に一旦ゼロリセットされるとか、XY軸には使いにくかったので、改造しました。

マクロ

HiddenScript.m1s
Move   = 10.00             ' Total lenght of Probe to move before Stop or no Contact Made.
Width  = 20.00             ' Plate Width X(30.00) Y(40.00) Z(20.00)
Axis   = "Z"               ' "X" "Y" "Z"
Sn     = "-"               ' "" or "-"
Offset = 2.00              '

If Axis = "X" Then
  noBtn  = 1008              'ofs zero X(1008) Y(1009) Z(1010)
  noDro  = 0                 'set ofs X(0) Y(1) Z(2)
  noPos  = 2000              'pos X(2000) Y(2001) Z(2002)
  Width  = Width + GetOemDRO(822) / 2
End If
If Axis = "Y" Then
  noBtn  = 1009              'ofs zero X(1008) Y(1009) Z(1010)
  noDro  = 1                 'set ofs X(0) Y(1) Z(2)
  noPos  = 2001              'pos X(2000) Y(2001) Z(2002)
  Width  = Width + GetOemDRO(822) / 2
End If
If Axis = "Z" Then
  noBtn  = 1010              'ofs zero X(1008) Y(1009) Z(1010)
  noDro  = 2                 'set ofs X(0) Y(1) Z(2)
  noPos  = 2002              'pos X(2000) Y(2001) Z(2002)
End If

CurrentFeed = GetOemDRO(818)
DoSpinStop()

StopMove = 0
If GetOemLed (825)=0 Then
  MoveTo = GetDro(noDro)
  If Sn = "-" Then
    MoveTo = MoveTo - Move
  Else
    MoveTo = MoveTo + Move
  End If
  Code "G4 P2.5"
  Code "G31 " & Axis & MoveTo & "F25"
  While IsMoving()
    Sleep(200)
  Wend
  Probepos = GetVar(noPos)
  If Probepos = MoveTo Then
    responce = MsgBox ("**ERROR** ", 0, "Probe **ERROR**" )
    Code "G0 " & Axis & "0"
    StopMove = 1
  End If
  If StopMove = 0 Then
    DoOEMButton (noBtn)
    Code "G4 P1"
    If Sn = "-" Then
      Call SetDro (noDro, Width)
    Else
      Call SetDro (noDro, -Width)
    End If
    Code "G4 P1"
    Code "F25"
    If Sn = "-" Then
      Code "G91G1 " & Axis & Offset
    Else
      Code "G91G1 " & Axis & "-" & Offset
    End If
    Code "G90"
    Code "(" & Axis & " zeroed)"
  End If
  Code "F" & CurrentFeed
Else
  responce = MsgBox ("**ERROR** ", 0, "Check Ground Probe" )
End If
Exit Sub

設定方法

Proguram Run ページで Operator - Edit Button Script メニューを選択すると設定できるボタンが点滅します。Auto Tool Zeroを選択すると VB Script Editorが開きますので、ここに上記コードをコピペします。保存して終了すると設定されます。
念のため一旦Mach3を終了しておくと、確実に保存されます。

設定の変更は、最初の5行を変更してください。

Move = 10.00
1回の最大移動量(mm)です。この移動量を超えても検出しない場合エラーとなり停止します。

Width = 20.00
検出用の金属プレートの厚さ(mm)です。検出後この厚さ分オフセットが足されます。
X軸Y軸の場合は、Width = Width + GetOemDRO(822) / 2 を追加してありますので。Mach3のTool Dia の値の半分をさらに足しています。工具の中心座標に補正できます。

上図の例では、4mm工具を使うので、工具の半分の2mmが自動的に足されます。

Axis = "Z"
Sn = "-"
検出軸と移動方向です。
Axis = "Z" Sn = "-" だと、Z軸を―方向(下方向)に動きます。
Axis = "X" Sn = "" だと、X軸を+方向(右方向)に動きます。
Axis = "Y" Sn = "-" だと、Y軸を-方向(手前方向)に動きます。

私は、X,Y軸はOffsetsページの4つのSelectボタンに設定しています。

Offset = 2.00 '
検出した後にどれだけ元に戻すかを設定します。

さいごに

くれぐれも、ツールへの接続を忘れないように。突き刺さります。