スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LinuxCNCのネイティブリアルタイムCAM   だそうです。。




上記の動画が2013年のもの。

元々はロシアのCNCclubってところの人が作ってらっしゃった物のようです。

LinuxCNC Features - набор мастеров для LinuxCNC
LinuxCNC公式掲示板内のスレッド
LinuxCNC Features - a kind of NGCGUI

Github上のソース

cnc-club/linuxcnc-features

大本からフォークされ、現在はV2.01になってるご様子。。

FernV/linuxcnc-features

フォークされた2.01はまだ15日前にコードを触ってる?ご様子なのでチョット期待してしまいます。

暫く触れないから、誰か試してください。。




は??旋盤用もあるの、か??なんか、ネジの絵が出てるぞ、、、。

上記とは別に旋盤用のマクロもあるらしい、、。。
Lathe Macros

案外、とゆうか、LinuxCNCってLinuxCNC本体自体各種コンポーネントの組み合わせによって3軸NCや4軸NCが作られているし、作動画面自体も、割りと自由にカスタマイズ出来たりするので、使ってない機能も多分かなり多いはず。マニュアルや、Wikiでは説明されてない事柄も有ったりするし、このCAM自体も、LinuxCNC本体とは別。
カスタマイズ出来る範囲が拾いLinuxCNCなんだけど、それを更に拡張してあるのがBeagleboneBlack/Green等ARMプロセッサ上で動くMachinekit。上記CAMやラダー図による制御がBaseThreadの無いMachinekit上で動くかどうかまでの検証はなかなか、、。。
スポンサーサイト

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

LinuxCNC、実はラダー図もできたりする。

拾い動画でスミマセン、、、。




LinuxCNC、Classic ladderにてラダー図での制御が出来ます。

Sample HAL And ClassicLadder

Classicladder Examples

ClassicLadder Ver 7.124

Classicladder Programming


案外classicladderの記述が豊富で、シーケンス制御とかのほうが需要があるのだろうな、と思います。

余り紹介されてるところも少なく(シマリスさんは触ってる)、更に動画を探しても上記の、、しか。。

余裕ができたら触ってみよう!!

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

ArduinoとLinuxCNC

ロシアな方のLinuxCNCでArduinoを繋ぎI/Oを、、とゆうページをみつけました。

LinuxCNC+Arduino





元々は前記事のPluto-Servo,Stepを作られたJeff Eplerさんのブログ内のページ。
Improved Analog & Digital Interface with Arduino

内のことを手順を追って書かれています。

なかなかにインストールが面倒?だったのをきちんとまとめてあるようです。

このページの手順ではやってませんが、過去に元記事を参考にLinuxCNCにArduinoを繋いだとこがあります。。


PythonでのHALコンポーネントなのでリアルタイムなスレッドではなく、ユーザーコンポーネントとしての作動。

なので、リアルタイム性が問われるStepパルスやモーション系の制御には向かないと思われます。
が、アナログ入力など、温度等々、多少ゆっくりでも構わない物の制御であるならば、Halスコープで数値の変化を見ながら制御出来るのでは?と思います。

LinuxCNCは、Pythonスクリプトを使うと、ユーザーコンポーネントを作製できます。
リアルタイムコンポーネントの場合、Sudoを用いた管理者権限でのインストールとなります。


このLinux+Arduinoとゆうページ、テキスト形式で解りづらいこのチュートリアル内のHALの配線を絵として書いてあります。
図とすれば、他HALファイルもこんな感じで書けると思うのですが、商用ソフトウエアでないのが仇となり、、そんなインターフェースはありませぬ、、。^^;


ただ過去に、回路CADのEagleを用いたEagle2HALとゆうものもありましたが、ライブラリの更新が残念ながら止まっているようです。




ちなみにLinuxCNC公式掲示板にはArduino based USB Pendant for Linuxcncなんてものも、、ある。。


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

Max10でもPluto-Step

かなり前に基板まで作成したのにLinuxCNCPluto-Pドライバ内にあるPluto-Stepが上手く動かなかったのですが、ようやく出力がきちんと出るように。。



動画を見たところで、使っているFPGAがMax10なのかはサッパリわかりませんがMax10を使用しています。


なぜ今更パラレルポートに取り付けるPluto-Step、、かとゆうと割りと安価なボード1枚でステップパルス4軸分と、Output14本Input16本と、パラレルポートの入出力よりかなり多くの信号出力が可能だから、、です。
また、パラレルポートを使用する場合ステップパルスジェネレーターであるStepgenはPC内の物を使用しますがPluto-Stepを使用すると、ステップパルスジェネレーターはFPGA上のハードウエアステップパルスジェネレーターを使うことになり、PC上のパルスジェネレーターよりも速い信号を出すことが可能です。

また、MaxⅡ上では作動確認していますが同じPluto-Pドライバ内のPluto-ServoもFPGA上で多分作動するはずです。←動きました。
このPluto-Servo、FPGA上にPWMジェネレーターとQエンコーダー4軸分載るので、PCにでDCモーターの位置フィードバック制御(サーボ制御)が可能となります。
Qエンコーダーに関して言えば、パラレルポートでもQエンコーダーの入力が可能なのですが、最大入力パルスの周波数が低いので使い方にも依りますがあまり高速で読み取ることができません。


もちろん、PCI PCI-EなMESAカードのようなFPGAカードを使用できるのならそちらのほうが使えるI/.O数も、出力出来るステップパルスの速度も、なんならエンコーダー入力とかもあり良いのですが、モノの値段と送料を考えると、、。。


MaxⅡ、MaxⅤ、CycloneⅤでもこのPluto-StepはLinuxCNCのHALドライバ内で公開されているHDLをPluto-Pとの異なっている所をほぼ合わせるだけで作動しましたが、Max10の場合、IDEであるQualtusⅡのバージョンの違いにより、多分HDLの解釈が微妙に違って?ちょっとした記述の違いで同じHDLでも出力が出ない状態でした。

元々もPluto-Pに使われているACEX-1kは5V入力が可能なデバイスなので、3.3VまでのI/0な最近のFPGAでパラレルポートに取り付けて作動させるにはレベル変換が必要になると思います。

Max10はFPGA内にコンフィギュレーションROMを内蔵し、3.3Vの単一電源作動が可能で容量が大きく、お手頃なお値段。
Pluto-ServoとPluto-Step両方を切り替えるように入れて、更に、デジタルリードアウト用のエンコーダーカウンタを入れてもなお、最小のサイズの10M02でも余る位の容量はとても魅力です。

もちろんこの手の容量の大きい色々な機能が付いているFPGA、ソフトウエアプロセッサ等を入れたりして使うのがアレだとおもうのですが、FPGA内で回路を作り、ソフトウエアプロセッサを載せさらにソフトウエアプロセッサ上で動くソフトウエアを書く、、私にはちょっと荷が重いです^^;


RaspberryPi上でのLinuxCNCを動かす場合、ハードウエアステップパルスジェネレータ等々をSPI通信にてPICで出力するPICNCV2とゆうものがあります。(作動未確認)

また、RaspberryPi,BeagleboneBlack/Green用のPluto-Servo,Stepとして、Github上にspi-fpga-driverがありますが、今の段階でソースコードからの回路合成が私の環境では上手く行ってません。。

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

LinuxCNCのPyVCPのサンプルで遊んでみる。

LinuxCNCのPyVCP(Python Virtual Control Panel)のサンプルで遊んでみました。

MCUでプログラムを書く事を考えればスクリプト言語でとても分かりやすく、割りと簡単にこんなことも出来ます。




LinuxCNC公式のPython Virtual Control Panelのページに有るサンプルをテキストエディタを開いてほぼ丸写しで入力、xmlの拡張子で保存。
端末を開いてhalrunして、loadusr pyvcp [ファイル名」.xml とすれば表示されます。

動画のように、パネル内の数値、信号を繋ぐにはshow pinで現在有るピンの名前を見て、net [任意の信号線名] [ピンの名前] => [ピンの名前] で繋ぎます。

矢印の方向は信号の方向。
テキストで記述するので難しく思うかもしれませんが、実際の回路と同じでピンを信号線で繋ぎます。
もちろんピンから出ている信号のフォーマット、bitか数値か、は揃えなければ繋がらずエラーになります。
信号の変換にはリアルタイムコンポーネント内の変換コンポーネントを使います。

必要であるならスレッドをを作り、loadrtでリアルタイムコンポーネントを呼び出し、スレッドに登録、使用します。



HAL Manual V2.6.10-10-g1824ef0, 2015-10-09

上記公式HALのマニュアル内に、Basic HAL ReferenceやAdvanced HAL Tutorial が有ります。

Tutorialは、内部信号の数値を表示出来るHalMeterや、オシロスコープライクな表示が出来るHalScopeなどを使うと理解が早いと思います。

Tutorialをやってみると良く判るのですが、LinuxCNC自体Linuxそのもので、カーネルスレッドとユーザースレッドとゆうものが有ります。LinuxCNCはリアルタイムカーネルと呼ばれる物を使用しているのでコンポーネントの呼び出しがリアルタイムのloadrtと、ユーザー空間での作動のloadusrが有ります。

NCマシンとしての作動で、一定以上の遅れの許されないコンポーネントはカーネルのコンポーネントとして入っており、loadrtで呼び出されます。また、少々の遅延が許されるユーザーインターフェース等のコンポーネントはloadusrで呼び出します。
リアルタイムコンポーネントは、一定時間内に繰り返し実行されるように、threadに登録します。

このthread、LinuxCNCの最初から入っている3軸NCの初期設定等では、低速なServoThreadと、高速なBaseThreadが使われ、LatencyTestでは、この2つのスレッドのジッタ(この場合一定時間に繰り返されるThreadの実行周期のズレ)を計測します。
ズレが大きいと、位置制御自体がズレるので。


StepGen(Stepパルスジェネレータ)などは、高速なBaseThreadを使用します。

BeagleboneBlack/GreenのLatencyTestには、この高速なBaseThreadが有りません。
どうやって、Stepパルスを生成しているか、とゆうと、BeagleBoneのMCU上に有るPRU(プログラマブルリアルタイムユニット)にStepgenがプログラムされて実行されています。
このPRU、メインのCPUとは関係なく動いているので、FPGA等のハードウエアでStepパルスジェネレーターを実装したのと同じように作動します。

低速なServoThreadでも、1ms周期でのフィードバック制御された実行なので、NC制御部分には規格上1mS以上の遅延を許すUSB機器の接続ができません。
また、サーボ駆動とフィードバック信号を制御する軸分入出力するため、低速なシリアル信号での入出力もできません。
この辺りがPC上でのLinuxCNCを運用するネックとなり、素のPCですと入出力する手段が直接Stepパルスを出力するパラレルポート位しか有りません。
リアルタイムな(この場合、ServoThreadの周期1mS以内)フィードバック制御が基本なので高速ではありませんが、パラレルポートにエンコーダー入力が出来、NCコントローラー内でのクローズドループなサーボ制御が可能です。
できれば、PCIやPCIE接続のFPGAカードを使用すると、FPGA上にStepgenや、PWMgen、エンコーダーインターフェースが置けるので、高速な入出力が可能となります。
パラレルポート自体、EPP/ECPモードとゆうものを持っており、割りと高速にデータ入出力が可能で、それを利用したパラレルポートに取り付けるタイプのFPGA、Pluto-PにStepパルスジェネレータを載せたPluto-Serve、PWMgen、エンコーダーインターフェースを載せたPluto-Servoなどを使うとPCI,PCI-Eなインターフェースには劣りますが、パラレルポートを使用した場合に比べ高速に、また、単純入出力ピン等も増えます。

loadusrで使うコンポーネントはNC制御で使うスレッドに登録しないので、USB機器の接続が可能です。
また、ユーザーコンポーネントはPythonでの記述もできるのでNet上にはリアルタイムコンポーネントから取り出した信号を、ユーザーコンポーネントにて使用し、USB接続のMCU等でキャラクタLCD等に情報を表示させたりする作例が色々とあります。
モーション制御でない、低速でも問題ないような制御であれば、USB接続にてデータ入力、制御出力なんて使い方もアリかもしれません。

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

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

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

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

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。