CNCコントローラー

パソコンとパラレルポート

一般的なパソコンでパラレルポートがあるもの、若しくはPCI、PCI-Eにて、パラレルポートを増設したもの。
パソコンの能力にもよりますが、Gコード再生中にPCにて別作業をすると途中で一時的に止まってしまうこともあります。
OSの省消費電力機能や、スクリーンセーバー等を切っておくことをおすすめします。

パラレルポート自体の出力電流が小さいのとオープンドレイン出力になっているものも在るのと、直接位置制御用のモータードライバを接続出来ない場合が多いので、バッファIC等で入出力信号を増幅して駆動用の回路へ出力、リミットスイッチ等のセンサの入力をします。

市販のCNC用のパラレルポートインターフェースとして販売されているものは


  • フォトカプラを利用した駆動回路とパソコンの絶縁
  • 切削用のスピンドルのON、OFF用のリレー
  • 各種モータードライバに対応するためにオープンドレイン出力や差動出力


などの機能を付加したものとなってます。

バッファIC、フォトカプラによるアイソレートなどなど方法は多種多様なので、コレ!とゆう物の判断がつきかねますが、使用用途と基本的な所が抑えられていれば、問題なく使えると思われます。

ただし、中華基板とかでは、入力出力絶縁されているはずが、グランド部分や電源部分で絶縁されていない物もあるので注意が必要です。


市販物、自作にかかわらずとても種類が多く、また、回路図なども多数がインターネット上に公開されています。



モータードライバには、パラレルポートに掛かる電圧より高い電圧が掛かるのでモーター駆動用の信号部分にはアイソレーター等を入れておいたほうが、何か有った時にPCまでダメージが行かず安心です。


PCのパラレルポートの性能は小型/自作系CNCマシン用としては結構高く、下手なUSB接続の外部パルスジェネレーターよりも高い周波数でStepパルスを発生させる事ができることがあります。

PCのパラレルポートをソフトウエアが叩く為、PCの制御ループのジッタ(制御周期の揺れ)の影響が割と大きく、PCのジッタにより、出力されるモーションパルス等にもジッタが乗ります。
オープンループの制御で、外部パルスジェネレーターへのデータ送信時にバッファを使っている物の方がスムーズなパルスが出力される場合も多いです。


また、LinuxCNCの場合ですが、パラレルポートに接続するFPGA基板Pluto-Pを用いパラレルポートをEPPモードで作動させると、最大312.5kHzものステップパルスを発生させることができ、さらに、入出力も増やす事ができます。
さらに、Pluto-Servoにてモーターのフィードバック制御を行う際、高速エンコーダー入力が可能となります。
(この場合、Pluto-PはパラレルポートとEPPモードでの通信をします。Pluto-P自体が外部パルスジェネレーター、エンコーダーとしての機能を果たします。)


ソフトウエア

パソコンとUSB接続パルスジェネレーター

パソコンにUSB接続のパルスジェネレーター(組み込み系マイコン、CPLD、FPGA)を使用しパソコン外部にてモーターコントロール用の信号を出力します。

パラレルポートを使用した物に比べパソコンの負荷は小さく、高速な信号を出力できるものが多いです。

しかし、外部パルスジェネレーターとの信号のやりとりが規格化されておらず、ソフトウエア専用のハードウエアとなっている場合が多いです。


案外、最大ステップパルスの周波数がパラレルポートより低い物もあるので、注意が必要です。

高マイクロステップにて、高速作動させる場合、送りの具合にもよりますがステップパルスが足らなくなる可能性もあります。


リアルタイム制御に重きを置くLinuxCNCでは、モーションに係るパルスジェネレーター部分(オープンループの場合)や、外部エンコーダー入力からのリアルタイム(1ms以内)なフィードバック制御を行っているため、パケット通信方式で、データのバッファリングを利用し、1ms以上の遅延を容認するUSBでの通信が公式にサポートされていません。

(パルスジェネレーター部が、モーター駆動用のパルス発生だけでなく、位置データを絶えずPCに返してる)

ステッピングモーターでのオープンループな制御か、制御ループをドライバ_モーター間でしているサーボモーター等外部でのPCの外側でのフィードバックループ制御をするのであれば、なんら問題はありませんが、PC-モーター間での制御ループは構築出来ないこと、になってます。


ソフトウエア-ハードウエア
Mach3-SmoothStepperPoKeys56(αバージョンドライバ)その他中華物等色々。
EdingCNC USBCNC
その他

パソコンとUSB接続CNCコントローラー

パソコンからUSB接続のシリアル・インターフェース等により、Gコードを送信。
受信したGコードを解釈しコントロール用の信号を出力するコントローラーがこれになります。
対人間のインターフェース、Gコードをシリアル通信で送るソフトはPCを使用して、となります。


Reprap等押し出し式3Dプリンタのコントローラーの大半はこれに当たります。



データをSDカードに入れてそれを読み込むことでスタンドアローンのCNCマシンとすることも出来る物もあるようです。

Arduino等、組み込み系の8ビットマイコンを使用している為か、最大出力ステップ周波数は低めな物が多いです。

最近はCortex-M3等のArduinoと比較して高速に作動するMCUを使用するタイプも有り、最大出力ステップ数も高くなってます。

オープンソースとして公開されているものが多く、少ない投資でモーションコントロールを体験できます。
また、ソースコードを読むことでモーションコントロールの基礎、MCUプログラミングの基礎を学べます。


1ボードARM_Linuxコンピュータ


BeagleboneBlackBeagleboneGreenなどの1ボードでLinuxが動くMCUボード上でLinuxCNCのMachineKitを作動させ、VNC接続でリモートデスクトップをPC上に表示してコントロールのみをPC上から行う事ができるように成りました。この場合、PC上にはリモートデスクトップのクライアントソフトウエアをインストールする必要がありますが、操作のみをPC上から行うので、使用するPC上にすらNCコントローラーで使用するGコードを置く事もありません。

また、上記BeagleboneBlack/Greenと同じようなARMプロセッサを搭載したRaspberryPiでもMachinekit/LinuxCNCを作動させることが可能です。ただこの場合、HDMI接続のディスプレーが必要のようでまだリモートデスクトップでは試していません。 (追記 設定次第でBeagleboneと同じようにリモートデスクトップでの作動が可能なことを試して確認しました。) BeagleboneBlack/Greenと違う所として、PRU(プログラマブルリアルタイムユニット)がRaspberryPi2には無いので、素の状態ではBeagleboneBlack/Greenのようにはパルスは出せないと思います。外部パルスジェネレーターの使用が必須となるかと思われます。(追記 デスクトップPCのパラレルポートEPP接続なFPGAを利用したパルスジェネレータ、Pluto-StepをSPIインターフェースにて使用できるオープンソースなハードウエアを利用して作動を確認しました。)



RaspberryPi2Machinekit_LinuxCNC.JPG


パソコンとPCI PCI-E FPGAカード


Mach3、LinuxCNCの場合、PCのカードスロットに刺すタイプのFPGAカードがあります。
Mach3の場合オープンループ制御のため、SmoothStepper等安価なUSB接続タイプの外部パルスジェネレーター&I/Oボードが有るのでよっぽどI/Oやパルスジェネレーターが足りない時でないとPCI PCI-E FPGAカードまで必要になることはまず無いと思われます。

LinuxCNCの場合、モーションコントロールのクローズドループを1ms以内に1周期回さなければならないので、USBは規格上使えず、モーターコントロール用の高速なパルス出力や、DCモーター等のクローズドループ用の高速なエンコーダー入力を可能にするためにPCIやPCI-Eで接続するFPGAカードが有ります。

もちろん上の方で書いたようにパラレルポートのEPP通信で作動するPluto-StepやPluto-Sarvo等も有りますが、基本的にFPGA等にプログラムされた物の市販品は無く、Pluto-Pとゆうボードを購入しコンフィギュレーションするか、他FPGAボードや自作基板を作るかしないと使用することができません。

LinuxCNCには、Mesa Electronicsとゆうところから販売されているANYTHING I/O FPGA CARDSとゆうものが有り、最近のバージョンのLinuxCNCにはPNCconfとゆう名前のMesa Configuration Wizardが付属するようになりました。

数種類のカードと、必要なI/O、データの種類により沢山のドーターカードが有り、必要なI/O,パルス、データにより、色々と選べるようになっています。
FPGAカード自体、LinuxCNC起動時にFPGA自体をどのようなI/O、パルスジェネレーターにするか設定しFPGA自体をそのようにコンフィギュレーションする物と、カード上のコンフィギュレーションROMにFPGAの設定が既に書き込まれているものが有り、I/O数も違っていますが似たような感じで使えます。
PC上でLinuxCNCを使用するのであればPC付属、若しくは追加のプリンタポートを使用するよりも格段に色々なパルス、I/O数が確保できるので、1枚持っておくと良いと思われます。

LinuxCNCを使用してのモーションコントロールのクローズドループ制御をするのであれば高速なエンコーダー入力も可能となるためとても便利です。リニアエンコーダーを利用したフルクローズドループ制御も可能です。

また、LinuxCNC自体このWiki内で紹介しているNCコントローラーとは別格で、単なる3軸4軸のNCコントロールのみならず、各種自動化に応用が可能で非常に多くの機能コンポーネントがあります。





ハードウエア、ソフトウエア
GRBL ArduinoをCNCコントローラーとして使用するファームウエア オープンソース。
TinyGATMEL ATXMEGAを使用したCNCコントローラー。
Smoothie NXP LPC1769Cortex-M3MCUを使用した専用ハードウエア、ファームウエア。オープンソース。
各種Reprap系ハードウエア、ソフトウエア

  • 最終更新:2016-05-24 02:43:59

このWIKIを編集するにはパスワード入力が必要です

認証パスワード