LoginSignup
2
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-06-30

はじめに

中華ルーラ(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 の値の半分をさらに足しています。工具の中心座標に補正できます。
無題.png
上図の例では、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 '
検出した後にどれだけ元に戻すかを設定します。

さいごに

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

2
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1