メニューへ
2021.8. 13 ハスラー走行距離 4,450km
My_Mach4

 ウインドウズが11になるという事もあったので、Mach4に換装することにしたのだが、Mach4を弄り始めての感想としては、
 大変便利になったが、少々、自分好みにするところがあった。
 

 しかし、DIY先進国の米国の人たちには大変お世話になりました。感謝感謝。


構  成
1、Zero All
2、Go To Work Zero
3、Z Home
4、MPG
5,Keyboard Mapping(テンキーにコマンドを割り付ける方)とReff All Home
6,Probing Calibration
7,G31 Probing とTouch Module
8,モニター画面を見やすくする
9,Probe calibration の不具合
    ・Feed Hold Bottonを押さずにFeed Holdの機能をそのままに出来る方法
10,曲者だった主軸の実際の回転数表示方法
11,USB Cameraで原点合わせ
12,Work原点の設定方法

13,結線図
14,Mach4移行の為の後半テスト
15,プローブのチャタリング防止対策
16,Mach4のプーリー設定方法
17,3軸モーター逆回転方法
18,Mach4's Steps Per Unit Calculator Wizard
19, Backlashキャリブレーション
20,An Adventure in Mach4 LicensingMach4ライセンス取得方法

後書き


1、Zero All
  Mach4の緑枠のブランクボタンに張り付ければ、3軸一気にスケールを0に出来るので便利です。

-----------------------------------------
--Zero Allボタンに張り付ける
-------------------------------------------
inst = mc.mcGetInstance()
local rc = mc.mcAxisSetPos(inst, mc.X_AXIS,0.0);
rc = mc.mcAxisSetPos(inst, mc.Y_AXIS,0.0);
rc = mc.mcAxisSetPos(inst, mc.Z_AXIS,0.0);

画面の編集方法の基礎Mach4 Basics: Keyboard Mapping
スクリプトをボタンに張り付ける方法Mach 4 Quicky #2 - Keyboard Plugin




2、Go To Work Zero

Mach3にあったのに、デフォルトのMach4ではなくなった機能だ。この動画に解決方法がある。

 成功すれば、水色枠の様になる。
--------------------------------------------------------------- -- Go To Work Zero() function. --------------------------------------------------------------- function GoToWorkZero() --mc.mcCntlMdiExecute(inst, "G00 X0 Y0 A0")--Without Z moves --mc.mcCntlMdiExecute(inst, "G00 G53 Z0\nG00 X0 Y0 A0\nG00 Z0")--With Z moves mc.mcCntlMdiExecute(inst, "G90 G00 X0 Y0")--With Z moves end


3,Z Home

 自分のML4のサイズの場合、刃物交換は、加工を終えた位置での刃物交換となる。 
 なので、Z軸だけをHomingする機能が必要だ。
写真の様に、モジュールが用意されているので、選択するだけだ。Custom ボタンを使ったので、Home Zをクリック。

スクリプトでやりたい人はこれ、ボタンに張り付ける。ネットにあった、動作はした。
Here is a button script I use to home the Z axis. You should be able to adapt this to suit your needs:
--Move Z axis to home position
local inst = mc.mcGetInstance()--ボタンとのリンクのようだ
-- Check homed indicator
local hSig = mc.mcSignalGetHandle(inst, mc.OSIG_HOMED_Z)
local zHomed = mc.mcSignalGetState(hSig)
if (zHomed == 1) then
mc.mcCntlMdiExecute(inst, "G00 G90 G53 Z0")
else
local rc = mc.mcAxisHome(inst, mc.Z_AXIS)
if (rc == mc.MERROR_NOERROR) then
-- Set homed indicator
local rc = mc.mcSignalSetState(hSig, 1)
end
end



もう一つのやり方

黒矢印ボタンをクリックして、赤矢印、緑矢印をクリックし、Home Zを選ぶ。


4,MPG

自分のMPGは、ワイヤードペンダントと言われているようです。
Mach4になると、MPGは、Mach4のScreen Scriptにくむようだ。
ここに解決方法がある。
なお、上記Warp9の解説中にある解決方法のもとは此 処


机上になるが、動作したプログラムは、以下pdf参照、上記URLにあるプログラムは長すぎ、3軸用にした。
pdf
写真は、赤枠を追加すると、incrementとContinuousが切り替わるようになります。


5,Keyboard Mapping(テンキーにコマンドを割り付ける方),Ref All Home
mach4になってから、3から思うと、大分複雑になった感があった。
 1,テンキーに割り付け法方法
Inputは、mach Configに設定。なので、BOBの入力端子とは関係が無くなる。お得!

こちらの動画(3分過ぎ辺り)は、PLCスクリプトを利用し、 PLCスクリプト画面にスクリプトを書き込む方法です。

ただ、以下の用のPLCに書き込めば、Swを使って、Zell All、テンキーでもZero Allとなる。
-------------------------------------------------------------------------------
---これらはペンダントコードの一部ではありませんが、入力のためのいくつかのオプションを示しています
------------------------------------------------------------------------------------
[mc.ISIG_INPUT62] = function (state) --keypad Cycle Stop
InputCycleStop()
end,

[mc.ISIG_INPUT6] = function (state) --Cycle Stop
InputCycleStop()
end,
br [mc.ISIG_INPUT63] = function (state) --keypad Zero All
InputZeroAll()
end,

[mc.ISIG_INPUT7] = function (state) --Zero All
InputZeroAll()
end,
}
--------------------------------------------------------------
--Zero All
---------------------------------------------------------------
function InputZeroAll() --This will do Zero All button push

mc.mcAxisSetPos(inst, mc.X_AXIS,0.0);
mc.mcAxisSetPos(inst, mc.Y_AXIS,0.0);
mc.mcAxisSetPos(inst, mc.Z_AXIS,0.0);
mc.mcCntlSetLastError(inst, "Input Zero All")
end




上記の方法により、テンキーにコマンドを割り付けられるようになるが、
次のプログラムは、右側赤枠のMach4のKeybord Input Disableをクリックしないで自動になるスクリプト

--[ジョギング]タブでキーボード入力を有効にする必要があります。
Jogging タブをクリックすれば、キーボードON。 Jogging タブに次のCodeを張り付ける。 -------------------------------------------------------
-- Keyboard Inputs Toggle() function. Updated 20220111
--------------------------------------------------------------- local iReg = mc.mcIoGetHandle (inst, "Keyboard/Enable")
local iReg2 = mc.mcIoGetHandle (inst, "Keyboard/EnableKeyboardJog")
if (iReg ~= nil) and (iReg2 ~= nil) then
local val = mc.mcIoGetState(iReg);
if (val == 0) then
mc.mcIoSetState(iReg, 1);
mc.mcIoSetState(iReg2, 1);
scr.SetProperty('btnKeyboardJog', 'Bg Color', '#00FF00');
scr.SetProperty('btnKeyboardJog', 'Label', 'Keyboard\nInputs Disable');
else
end
end


以下のプログラムをMPGにSWを設けてMach4のInput端子に入力させて各動作するためのスクリプトです。
こちらの動画は、PLCスクリプトに張り付ける方法をまねるとOK。
-------------------------------------------------------
--PE3696 START CYCLE
-------------------------------------------------------
if mc.mcSignalGetState (mc.mcSignalGetHandle (inst, mc.ISIG_INPUT61)) == 1 then
mc.mcCntlCycleStart (inst)
else
-- Do something else
end

-------------------------------------------------------
--PE3696 STOP CYCLE
-------------------------------------------------------
if mc.mcSignalGetState (mc.mcSignalGetHandle (inst, mc.ISIG_INPUT62)) == 1 then
mc.mcCntlCycleStop (inst)
else
-- Do something else
end

-----------------
--FeedHold
-----------------
if mc.mcSignalGetState (mc.mcSignalGetHandle (inst, mc.ISIG_INPUT63)) == 1 then
mc.mcCntlFeedHold(inst)
else
--Do something else
end

---------------------------------------------------------------
--Reff All Home
---------------------------------------------------------------
if mc.mcSignalGetState (mc.mcSignalGetHandle (inst, mc.ISIG_INPUT60)) == 1 then
mc.mcAxisDerefAll(inst) --Just to turn off all ref leds
mc.mcAxisHomeAll(inst)
else
-- Do something else
end


6、Probing Calibration
probeing動画part1
probeing動画part2

retract amount
after finding a surface at the fast find feedrate the probe will be retracted by this amount before perfoming a mersurement move.
リトラクト量
高速検出送り速度で表面を検出した後、プローブは、測定移動を実行する前に、この量だけ後退します。

overshoot amount
probe moves are programmed to overshoot the measurement surface by specifed amount.
オーバーシュート量
プローブの動きは、指定された量だけ測定面をオーバーシュートするようにプログラムされています。

in postion tolerance
the measured point is compared to tha programmed end point of the probe move.
if it is within this distance from the end point thne no contact is assumed.
位置耐性
測定されたポイントは、プローブ移動のプログラムされたエンドポイントと比較されます。
終点からこの距離内にある場合、接触は想定されません。




Probing Calibration の操作には、参った。 赤矢印をクリックすると、Z measurement positionにくると、ERRORとなった。
 というのも、Probing Calibration Mach4 step 1 の3分50秒辺りをみると、
1,プローブは、Z軸を下降
2,Z measurement positionに来ると、一時停止して、
3,その後、自動で前後左右に移動して接触しているように見える
がしかし、自分の場合
2の地点に来ると、Mach4が停止してしまう!!
で、Craigさんに、下記の通り教えて頂きました。 
結論、,,,Z measurement positionに達する前に、Probeをタッチさせて通電させる。 でした。 ビデオと違うように思える。。。仕方ないか? と、、がしかし、助け船、9参照




7,Probing とTouch Module
質問
Mach4の「タッチモジュール」と「プロービング」をどのように適切に使用しますか?

> The hierarchy is: g31 probe command, enacted in realtime on the controller board, mcTouchOff Lua code probing routines to automate the required g31 probe commands, mcMapSurface a proprietary wizard that uses g31 to gather surface data and interacts with Machs trajectory planner to'flatten' a surface.
コントローラーボード上でリアルタイムに実行されるg31プローブコマンド、
必要なg31プローブコマンドを自動化するためのmcTouchOffLuaコードプローブルーチン、
mcMapSurfaceは、g31を使用してサーフェスデータを収集し、Machs軌道プランナーと対話してサーフェスを「平坦化」する独自のウィザードです。

回答から察すると、Touch Moduleは、スクリプトを改良できれば、何かを自動化できそう!


8、モニター画面を見やすく

初期設定(写真中)のモニター画面は、Tool Pathの線が細くて大変みずらかった。編集後は、写真左。
Operator〜EditScreen〜WX4〜画面をクリック〜プロパティを編集〜保存



9、Probe calibration の不具合

不具合の解決方法 フォーラム
修正ファイルは、Mach4Hobby / Modules / mcProbing.mcsです。
183〜185行
rc = mc.mcCntlGcodeExecuteWait(inst, string.format("G%.1f Z%.4f F%.1f", ProbeCode, ZMeasPos, FastFeed))
mm.ReturnCode(rc)
rc = Probing.CheckProbe(1, ProbeCode); if not rc then; do return end; end

を次のように変更

rc = mc.mcCntlGcodeExecuteWait(inst, string.format("G0 Z%.4f F%.1f", ZMeasPos, SlowFeed))
mm.ReturnCode(rc)



フイードホールドを省く方法



10,曲者だった主軸の実際の回転数表示方法

 私の場合だけかもしれませんが、Mach4は、デフォルトの場合、画面下側に見える主軸の回転数表示「Spin RPM」は、G Cordの回転数を表示する。
実際に回っている回転数を表示させえるには、写真の通りに「SpindleRPM」から「SpindleTrueRPM」に変更しないと表示しません 。


11,USB cameraで原点合わせ

 Mach3でも利用していたUSB カメラによる原点合わせは便利だったので、Mach4でも使用したかった。
 残念だがフリーソフトが無かったが、Mach4の画面にUSBカメラを見られるTabを設けられた。
ここを参照

Origin Button placement **** script **** -------------------------------------------------- ------------- --Camera Origin. Add2021.10.3 -------------------------------------------------- ------------- local inst = mc.mcGetInstance () mc.mcCntlGcodeExecute (inst, "G91 G0 Z0.0 \ n G0 Y1.7 \ n G0 X7 2.0")

Screenの編集方法は此処を参照

使えるかどうかのluaプログラム。


13、結線図
2021/10/11 Mach4の利用に付き、私的な結線図が纏まってきた。





主軸は、サーボアンプを速度制御で運用するが、MB3から出力されるアナログ電圧の極性をこの基板で反転させ て、主軸を反転させる。




14、Mach4移行の為の後半テスト
 ここまでくれば、実機直前だ。制御箱にSWを付けてtest。今回は、端子台を付けて確認しやすくした。こういった事も初めてだ。
 自分は、先ずInputの電源は入れずに、テスターだけで導通確認、
 Okなら、電源を入れる。MB3は、基板上に、HiになるとInput、OutputにLEDがあって、動作確認ができるし、 Mach4のDiagnosticでもチェックが入る画面で確認。
本番 Input 電源ON、いつも心臓バクバク(笑い
 結線図を見ながら、配線を確認し、SWで確認。この時、Mach4はEnableではない、緑色点滅の状態。 順番は、
・Ref Home
・Run Stop
・Zero All Go To 0
・手パのX Y Z と×1×10×100
・X Y ZのHome Sw(フォトセンサー)

ここまで来たら、実際に移動するかを確認。Enableを押して、赤く反転したら
・手パにより3軸が進むかを確認、スケールが移動したら、Ref HomeなどのSWによりスケールの動きを確認。




次は、Out Putだ。

Out Putは、
・主軸、MB3のAG AO端子にテスターを当てて電圧を確認、Max10V
・Mach4のDiagnosticでポンプとクーラント
・手パの3軸と移動倍率モニター用LEDの確認
・Mach4のGCode Fileを使ってRun、こういったところでしょう。



15、プローブのチャタリング防止対策
 以前、タッチプローブのチャタリング対策に考えた 記  事を掲載しました。
今回は、Mach4移行を契機に基板を製作した。

注意点
TC74HC14の使わない入力端子は、電源に接続しておく。
この為、私は、テクノペンで結線しましたが、経年変化の成果上手導通しない為に、半田も使った。
* TC74HC14の出力端子は、スイッチになっていて、回路図の青線のように吸い込むことができる。
なので、PICの入力端子RB0のスイッチとして動作する。

下の写真が分かり易い。 ここ。




16、
 回転計のマグネットを2個の場合、Mach3ではプーリーを変えた。
Mach4の場合を教わった。

黄色で強調表示した2つの場所の1つを2に設定し、もう1つを1のままにしておきます



17、3軸モーター逆回転方法

方法1、写真左
方法2、写真右



19、Backlashキャリブレーション
以下を参照した。
ESSステップ11-バックラッシュタブ:
How to tune CNC Axis travel and Backlash in Mach4 on an AVID CNC Router
1、Mach4のConfig〜Control Configureation〜Motorsタブ〜Backlashにバックラッシュ量をインプット〜Appy〜OK
2,Mach4のPlugin〜Backlashタブ〜Use Backlach Compensationにチェックを入れる。〜Ok


後書き
 この記事を書き始めたのが、2021/8月、ちょっとづつ、内容を更新してきました、ずいぶんと経過して、後書きとなりました。
***************** 2021/12/12(日)晴れ
 私事ですが、この日、午後6時45分頃に愛犬が亡くなりました。 14歳と9か月でした。心が落ち込みました。
生老病死のとおり、当たり前の事なので、悲しんだり恐れたりしないようにと思うようになりました。
愛犬とは、14年7月の長い付き合いでした。 私とは、市町合併後の苦しい時代を一緒に過ごしました。
ずいぶんと、癒していただき、また一緒に遊んだり、一緒に出掛けたり、一緒に散歩をし、一緒に食べ、一緒に就寝しました。
家族同然でした。
 亡くなった日の5日前から、ほとんど食べなくなり、数日前からは、全く食さず、水だけでした。もちろん寝たきりです。
死の原因は、小型犬特有の心不全がもとで脳梗塞を何度か起こして、最後は、先生曰く寿命とのことでした。
7日(火曜)に倒れて、本当に急変でした。
死の際に看取ってやり、犬との10の約束を果たし、愛犬seaは、心安らかに天国へ行けたと思います。
私がいつまでも悲しむと、seaが悲しむので元気を出したいと思います。
****************




【このページのTOPに戻る】

inserted by FC2 system