LinuxCNCでCNCフライスを制御する
はじめに
一般的にNCフライスの制御にはMach3が使われることが多い.しかし,複雑な切削を行う場合(=長いGコードを読み込む場合)には,有料のライセンスを購入する必要があり,ソフトの機能に制約がある.
一方で,LinuxCNCと呼ばれるオープンソースなNCフライス制御ソフトも開発されており,こちらには機能制約はない.(機能的にはこちらの方が汎用的らしい?)
購入したNCフライスはMach3を想定して設定されているが,ライセンス代をケチるためにLinuxCNCで頑張ってみることにした.
なお,使用したNCフライスは以下の「黒い奴」である.
黒い奴にはMach3用の設定が提供されているので、これを元にLinuxCNCを設定する
コマンド
↓LinuxCNCの起動(レイテンシ調査もこっち.Sample Configurations->apps->latency.ツリービューを色々弄ると見つけられる.生成した設定ファイルはMy Configurationsに登録されるはず.)
./linuxcnc
↓LinuxCNC設定ファイル生成画面の起動
./stepconf
LinuxCNCのインストール
以下のサイトから落としてくれば良い.リアルタイム性能を引き出すために,Linuxカーネルに細工をする必要があり,細工済みの起動イメージが配布されている.これを用いるのが一番楽だ.
これを書いている人は,ソースからビルドを試みたが,あまりに躓く点が多いので,一度諦めている.
配布されている起動イメージではvncserverが入っていない.また,sshd_configではパスワード認証を許可していないので,ログイン周りで弄らないといけないかもしれない.
起動出来た場合,最初にlinuxcncのレイテンシを調べておく(latency-histogram).レイテンシが数usec以内に収まっていない場合には,対策が必要かもしれない.
レイテンシ軽減の一つの策として,カーネルの起動コマンドにisolcpusを追加し,割り込み用のcpuを定義する方法がある.レイテンシは減るが,実質的にcpu数が一つ減るので処理速度とのトレードオフである.
▲レイテンシの少ない例。isocpusを有効にした場合さらに改善する.
▲レイテンシが多い例.カーネルレベルでのリアルタイム処理の対策を行っていない.
レイテンシはすなわち出力波形のジッターとして出てくるはず.オシロスコープで実際の波形を見たわけではないが,ジッターはレイテンシ以下の数値にはならないと思う.
stepconf
レイテンシが満足できたら,次はNCフライス制御の設定を行う.
パラレルポートのピン位置や,軸の回転ステップ数や範囲についてを設定する.
LinuxCNC 2.7.8ではMach3の設定を読み込めるが,読み込んだ全ての設定が反映されているかはとても怪しい.(ピン位置の設定は反映されていなかった)
Mach3の設定画面を見つつ,stepconfを進めていけば良い.
▲この画面はあまり設定を変更する必要がなかった.Mach3のKernelSpeedとだいたい一致するように Max step rate を設定してやればよい?
▲ピンアサイン設定.ここは悩まされた。
Mach3と対応していない一部の設定項目について説明する.StepやDirection,Home,EStopは省略する.
項目 | Mach3での呼称 | 説明 |
---|---|---|
Spindle PWM | Spindle | 主軸スピンドルに与えるPWM信号. |
Amplifier Enable | Enable1 | ステッピングモータの通電切り替え? |
Spindle On | Output #1 | スピンドル回転のオン/オフ |
Coolant Flood | Output #2 | クーラントのオン/オフ(任意負荷) |
Mach3のLowActiveはstepconfのinvertedと対応する.
また,EmergencySwitchの入力信号が,Mach3と論理が一致しないようなので,注意する.
Mach3を使いこなしていないから,OutputやEnableに関する設定がどのようにソフトの挙動と対応するかは知らない.これは試行錯誤で設定を行った.
ちなみに,二つ先の画面で軸の移動量をテストする機能があるので,ピンアサインに関して一部動作確認できる.
▲これは重要ではない.オプションでおまけのGUIを表示できるよってやつ.スピンドル回転数などを表示するときに用いるらしい.
▲これは重要.軸の移動量を決定する.灰色背景のテキストボックスは「編集可能」,もっとユーザビリティを考えてほしい.Mach3ではmmあたりのステップ数(画像一番下の数値)のみ決定するが,LinuxCNCでは一回転あたりのステップ数を指定する.軸のリードピッチが分からないと変換できないので,調べる必要がある.
右上のボタンで移動量をテストできる.(もちろん,ピンアサインが間違っていたら動かない.)
▲重要だが躓く要素は少ない.PWM RateはMach3でも同様の設定項目はある.画像では最高回転数の時をPWM(=Duty比)1.0と設定している.
これで設定は終了で,あとは設定ファイルを保存するか聞かれるはず.設定をLinuxCNCに読ませて上手く動けば成功.
おわり
以上,是非とも設定で躓き,泥水を啜り,地べたから這い上がりつつも,なんとか動作確認をすませ,時間を浪費してほしい.なお,Mach3を2万円で購入するのであれば,以上の設定はすべて無駄である.