fc2ブログ

Pi3でもMachinekit/LinuxCNC

今現在RaspberryPi公式で配布されているKernel version4.4のRaspbian Jessieにrt-preemptとゆうリアルタイムパッチを当ててRT-OS化し、Machinekit/LinuxCNCを作動させる環境を構築するページがあったのでやってみました。

2016-06-25-172510_1912x1129_scrot.png
画像をクリックすると大きくなります。

上記画像上で、CPUのアーキテクチャがARMv7lとなってますが、Pi3です。
Pi3は作動上、十分な電流が取れない電源(PCのUSBコネクタ等)の場合、CPUの作動速度を600Mhzまで落とします。また、低負荷時にも、CPUの作動速度を600Mhzまで落とします。
この画像の状態では、十分に(2A以上)電流を供給出来る電源に繋いでいます。
Machinekit/LinuxCNCを作動させると、オーバークロックをさせない最大作動速度の1.2Ghzでの作動状態に張り付きます。
かなり熱くなるので、ヒートシンクやファンで冷やしたほうが良いかも。


参考とさせて頂いたページは

koppi/mkmk/Machinekit-RT-Preempt-RPI.mdとゆう記述。

記述通り、rt-preemptのパッチをOSのソースに当ててPi3上でコンパイル。
他LinuxなPCでクロスコンパイルすると、速くコンパイルが終わるのかもしれませんが、私にそんな知識は無く^^;記述通りに。

一つ、、、転びそうになった所は

Patch Kernel with RT Preempt Patch

Next, patch the kernel with the RT Preempt patch. Choose the patch matching your kernel version. To this end, have a look at the Makefile. VERSION, PATCHLEVEL, and SUBLEVEL define the kernel version. At the time of writing this tutorial, the latest kernel was version 4.4.9. Patches for older kernels can be found in folder "older".

とゆう記述のところでそのあとの手順の記述の
wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/patch-4.4.9-rt17.patch.gz
とゆうところで、ファイルが無いと言われ、、上記の英文のようにolderファイルを探しました

ここに記述と同じファイルが有ります https://www.kernel.org/pub/linux/kernel/projects/rt/4.4/older/


元々この記述の著者さんは、EtherCATでのリアルタイムカーネルの評価が目的のご様子で、EtherCATのMasterのインストール方法も記載されています。



EtherCATといえば、つい最近トヨタが生産に使うとゆうようなニュースも有りましたが、LinuxCNC自体、既にEtherCATのマスターのドライバとかも有ったりしてnear産業用だったりします。
EtherCAT自体スレーブのサーボアンプや、各種I/O自体のソフトウエア部分にライセンスが掛かっており、スレーブを作ろうとするとライセンス料の支払いとなるようです。
既に、日本のオムロンや、オリエンタルモーターとかからも、EtherCAT対応機器が販売されてますね。

私自身EtherCATのスレーブを持ち合わせていないので、Machinekit/LinuxCNCでの作動を試してはいませんが、多分Pi2,3等を使ってEtherCATのMasterを駆動させることが可能なんだろうと思います。

以前の記事どおり、FPGAのMax10を使用したPluto-StepのPiでも使用できるSPI接続のものでの、パルス出力を確認しました。
多分大本のPICをパルスジェネレーター、I/Oとして使うPicnc2でも、パルス出力、I/Oピンの引き出しができるだろうと思います。


Pi3、Beagleboneに比べメディア再生とかスマホに使われるCPUなので、リモートデスクトップでのGUI操作、液晶画面での操作とうとうスムーズです。ただ、Beagleboneに比べLatencyTestの結果がアレなのはちょいと残念です。








テーマ : 自作・改造
ジャンル : コンピュータ

RaspberryPiでのMachinekit/LinuxCNC

RaspberryPiのフォーラム内のLinuxCNCのトピックで、とうとう5軸、、なんて、、。



http://www.wire2wire.org/PICnc_5axis/PICnc_5axis.html

Wireb/PICnc-5axis

どうも、PICnc-V2の亜種的な、、で、送受信するデータを変更、して作動させているようです。

FPGAで動くんだから、多分動くのではないのかと^^;
動画上では、低価格な(日本で入手するにはそうでもない?)PiZeroとPICを使っているご様子。超安価ですね

基本的にLinuxCNCの問題点として、一定時間以内の制御ループを規定しているので、その一定時間(1ms以内)での送受信、処理が行わなければならず、割と高速なデータ転送が必要な所。

確実に動くコンポーネントファイルと、外部パルスジェネレーターとして動くプロセッサさえあれば、オープンソースとなっているのでMachinekitでのデータ入出力はコンポーネントファイルと、プロセッサのファームウエアの変更でいかようにもなるんでしょう。


また、BeagleboneBlackの方でも、、、

Machinekit con GUI gmoccapy_lcd7



などのように、GUI自体を自在に変更されてます。


NCコントローラーソフト、、、とか、別に拘らなくても、自分の機械が必要な入出力さえあれば、、、価格面で言えば下はGRBLでもいいはずです。

何を、どうやって、どのように、、、で、NCコントローラーの選択が変わってくるんではないかと思います。

Piにパルスジェネレーター的な物を付ける、、だけじゃなく、それこそ表示が綺麗で速いPIにてVCN接続のクライアントとして、BeagleboneBlackのデスクトップを表示させてBeaglebone上のLinuxCNC/Machinekitを使う、、ような使い方でもいいような気はします。
もちろんWinPCからの、、でも。


小型LinuxボードでのLinuxCNC、ボードのI/Oがプロセッサによってマチマチなのが、、、、かなり面倒な所なんですよね、、。













テーマ : 自作・改造
ジャンル : コンピュータ

DIYプリンタとリニアドライブ

http://www.homofaciens.de/index_en_navion.htmより。

CNC V3.1 - Linear drives and DIY printer




最近の、、、昔のに比べると静音化されたプリンタの駆動ユニットを使用した、もっと大柄なプリンタの作成されてます。
記事、動画の内容としては、最近のプリンタに内蔵さたDCモーターと、超高分解能な光学式のエンコーダーを利用したサーボ制御を主体としています。

プリンタが静かになったのは、ステッピングモーターを使用したものから、周波数の高いPWMで作動させるDCモーターへ大本のモーターが変わったことが大きいと思います。また、これほど高分解能な光学式エンコーダーが量産効果により、安価で使用されるようになったこと、、が大きいのだと思います。

単純にサーボ制御とすることで、ステッピングモーターのように脱調して、制御がズレてズレっぱなし、ではなく、ずれた所はアレですが、司令に従った位置まで戻ろうとします。



チョット前に公開となった、PCのUSBマウスのセンサを利用したリニアエンコーダーの記事と動画です。

Computer mouse



シリアル通信の信号をArduinoで読み取ってますね。

一番上の動画では、USBマウスをリニアエンコーダーとしても利用してます。

シリアル通信でのデータの読取りなので、直接LinuxCNCに突っ込んでのモーション制御は出来ませんが、MCU等でStep/Dir入力のDCモーターサーボ制御ドライバを作れば、LinuxCNCにかぎらず、Mach3や、GRBL、その他Step/Dir信号出力なNCコントローラーでも、クローズドループなDCサーボ制御での作動が出来ると思います。

サーボ制御自体は、Step/Dir信号をUP/Downカウンタで読取り、位置指令とし、位置指令と、モーターに付けられたエンコーダー(こちらもUP/Downカウンタで読取り)の差をモーター作動用のPWM信号に変換するだけです。
MCU等から演算によって出力されたPWM信号を使用して、PWM信号を受けることの出来るDCモータードライバ(TB6643KQ等)を駆動させれば、サーボ制御することができます。

この演算時に、古典制御となるPID制御の演算式を入れています。


サーボ制御で問題となるのは、命令に対する現在位置の「遅れ」で、この遅れがあっても安定して制御できるようにしているのがPID制御の計算式です。

また、高速なインターフェースとプロセッサ、高分解能なエンコーダーにより、高速で正確な位置制御ができるようになったので、大きな負荷でない限り、割と簡単にサーボ制御ができるようになったと思います。


以前の記事DCモーターのサーボ制御や、位置フィードバックさせたDCモーターをロータリーエンコーダーで操作。でしているDCモーターのサーボ制御は極簡単なプログラムと回路で構成されています。





テーマ : 自作・改造
ジャンル : コンピュータ

格安で工業用サーボ制御

http://hackaday.com/blog/ より。

HACKADAY PRIZE ENTRY: INDUSTRIAL SERVO CONTROL ON THE CHEAP






ブラシレスモーターのサーボ制御に関する記事です。もちろんオープンソースとしてハードウエアソフトウエアも公開されています。

madcowswe/Servo

ステッピングモーターより効率がよく、より大きいトルク、速度を出すことが出来るブラシレスモーター。コレをサーボ制御すると、すげぃ作動速度ですね。。もちろんレベル、サイズは違えど、工業用のNCで使われているモーターもブラシレスモーターで有ることが多いです。

ただ、DCモーターブラシレスモーターも、ステッピングモーターよりも効率がよく、小さなモーターで大きなトルク回転数を出せる反面、モーター自身が発電機となり発生する起電力、逆起電力と呼ばれるものも大きいので、その処理が結構面倒です。

大電流のブラシレスモーターによるサーボ制御がお手軽にできるようになると良いですね。





ブラシレスモーター、ステッピングモーターと構造的には似ていて、よくよく考えると、ステッピングモーター自体にブラシは無いのである意味ブラシレスモーターなのかしらん?とも思います。
また、駆動に必要な電気も、マイコンやFPGA等で波形を作り出し、相数こそ違いますが、なめらかに動かすには正弦波に近い波形で動きます。



コンピューター数値制御(NC)の良い所、とゆうか特徴として、位置制御であれば、ローターリーエンコーダやリニアエンコーダーの位置の数値なのですが、マイコンやFPGAを使うことにより、センサ、AD等の数値も、、、、例えばモーターの作動に変換することが出来ます。ちょっと考え方を変えれば、ロータリーエンコーダーやリニアエンコーダーでカウントした数値を、電気で動かすことの出来るもの、、電灯の光量や、電熱線の温度、などなどにも変換したりできます。

テーマ : 自作・改造
ジャンル : コンピュータ

みんなのためにMECHADUINO-クローズドループステッピングサーボ

http://hackaday.com/blog/ より

MECHADUINO- CLOSED LOOP STEPPER SERVOS FOR EVERYONE



ステッピングモーターのクローズドループのオープンソースのハードウエアとソフトウエアに関する記事ですね。

ソースコードはGithubにて公開されています。
jcchurch13/Mechaduino-Firmware
jcchurch13/Mechaduino-Hardware



安価に位置制御が可能なステッピングモーターですが、最近のステッピングモータードライバICが行っているのはモーターに掛かる電流値のフィードバック制御(クローズドループ制御)しかしていません。ロータリーエンコーダー、リニアエンコーダー等でフィードバック制御をしていないので、位置制御的にはオープンループ制御です。

ステッピングモーターの確実な作動を担保するには、使用するステッピングモーターが絶対に脱調しない範囲内での負荷しか掛けない事、3軸NC的に言い換えれば、作動させるフレーム、刃物の送りに必要な負荷に対するトルクがギリギリではなく、かなりの余裕がある大きなモーター、モーターに掛かる電流を流すこと、、です。

クローズドループにすると、ステッピングモーターの能力を超える負荷が掛かって起こる脱調が無くなるわけではありません。

しかし、どれだけ現実に回転(移動)して欲しく、どれだけその命令とズレているか?を確認、修正することが出来ます。

ステッピングモーターを作っているオリエンタルモーターが、上位のステッピングモーター、モータードライバをクローズドループ制御としているのは、この、確認、修正が必要だから、、、だと思います。
作動に保証を付けるって事ですね。

本来から行くと、人間がNCコントローラーに出す司令はGコード。
Gコードどおりにモーターに司令を出すのがNCコントローラーの役目ですから、理想的にはフィードバック値をNCコントローラーが確認、モーターに出す司令を修正、、のフルクローズドループと呼ばれる物が本来の形なのでは?とも思います。


テーマ : 自作・改造
ジャンル : コンピュータ

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ