利用者:加藤勝憲/LinuxCNC
LinuxCNC (旧Enhanced Machine ControllerまたはEMC2)は、汎用コンピュータを使用してCNCマシンを制御するために、数値制御機能を実装した、フリーでオープンソースのLinuxソフトウェアシステムである。
主にPC AMD x86-64システム上で動作することを意図している。linuxcnc.orgの様々なボランティア開発者によって設計され、通常、必要なリアルタイムカーネルを提供するDebian Linuxの修正バージョンとISOイメージファイルとしてバンドルされている。
リアルタイム オペレーティング システムが緊密に統合されているため、リアルタイム カーネルのない標準の Ubuntu Linux デスクトップ PCでは、パッケージはデモ モードでのみ実行される。
開発の目的
[編集]LinuxCNCは、フライス盤、旋盤、プラズマカッター、ルーター、切断機、ロボット、ヘキサポッドなどの機械の数値制御のためのソフトウェアシステムです。Gコード(RS-274NGC)を入力として、CNCマシンの最大9軸またはジョイントを制御できます。特定の使用方法(タッチスクリーン、インタラクティブ開発)に適した複数のGUIを備えています。
LinuxCNC は、フライス盤、旋盤、プラズマ カッター、ルーター、切断機、ロボット、ヘキサポッドなどの機械の数値制御用のソフトウェア システムです。 G コード(RS-274NGC) を入力として、CNC マシンの最大 9 つの軸またはジョイントを制御できる。特定の種類の使用法 (タッチ スクリーン、対話型開発) に適したいくつかのGUIがある。
現在、 x86 PC プラットフォームでほぼ独占的に使用されているが、他のアーキテクチャにも移植されている。リアルタイムで変更されたカーネルを広範囲に使用し、ステッパーとサーボの両方のタイプのドライブをサポートする。
図面 (CAD - コンピュータ支援設計) または図面からの G コード生成 (CAM - コンピュータ自動製造) 機能は提供していない。
開発の経緯
[編集]EMCパブリック ドメインソフトウェア システムは、もともとアメリカ国立標準技術研究所(英: National Institute of Standards and Technology、NIST)によって開発された。これは、 National Center for Manufacturing Sciences / Air Force が後援した Next Generation Controller Program [NGC 1989] /Specification for an Open Systems Architecture [SOSAS] の次のステップとして開発された。それは EMC [Enhanced Machine Controller Architecture 1993] と呼ばれていた。 1950 年代にデジタル コンピュータを使用して開発された最初のプロジェクトの 1 つは、フライス盤を制御するための政府出資のパブリック ドメイン ソフトウェア システムでした。これは、機械加工操作の数値制御用の業界標準言語である RS-274D ( G コード) の「ベンダー中立」なリファレンス実装になる予定であった。
このソフトウェアには、モーション軌道プランナを駆動するRS274インタプリタ、リアルタイムモータ/アクチュエータドライバ、およびユーザインタフェースが含まれている。これは、FreeBSD や Linux が動作する市販の PC ハードウェアを使用し、さまざまなハードウェアモーション制御システムとのインタフェースをとることで、高度な数値制御システムの実現可能性を示した。現在、追加アーキテクチャ(ARMアーキテクチャデバイスなど)を使用した開発が続けられている。
この実証プロジェクトは大成功を収め、ユーザーとボランティア貢献者のコミュニティが形成された。2000年6月頃、NISTはソースコードをパブリックドメインライセンスの下でSourceForgeに移し、外部の貢献者が変更できるようにした。2003年、コミュニティはその一部を書き直し、他の部分を再編成して簡素化し、EMC2という新しい名前を与えた。EMC2は現在も活発に開発が続けられています。ライセンスは現在、GNU General Public Licenseの下にある。
新しい名前 EMC2 の採用は、いくつかの大きな変更によって促された。主に、HAL (ハードウェア アブストラクション レイヤー) と呼ばれる新しいレイヤーが導入され、C コードを変更したり再コンパイルしたりすることなく、機能を簡単に相互接続できる。モーション ハードウェアからのこの分割された軌道とモーション プランニングにより、ガントリー マシン、旋盤のねじ切りとリジッドタッピング、スカラ ロボットアーム、およびその他のさまざまな適応をサポートする制御プログラムの生成が容易になりる。 HAL には、信号を調べてリンクを接続および削除するためのインタラクティブなツールがいくつか付属している。また、リアルタイムで信号を調べるための仮想オシロスコープも含まれている。 EMC2 のもう 1 つの変更点は、自動ツール チェンジャーなどの複雑な補助デバイスを構成するリアルタイム環境に適合したクラシック ラダー (オープンソースのラダー ロジックの実装) である。
2011年ごろ、名称が EMC2 から LinuxCNC に変更された。これは、 EMC社の主張とプロジェクト リーダーの合意により行われた。内部的には、EMC または EMC2 による LinuxCNC を歴史的に知られていたものとして言及する人もいる。 EMC Corporation は、LinuxCNC プロジェクトは、以前に名前が付けられていたように、(主に) ストレージ関連の製品を使用している顧客または潜在的な顧客を混乱させるだろうと提案した。
プラットフォーム
[編集]機械のきめ細かく正確なリアルタイム制御の必要性から、LinuxCNCはリアルタイムコンピューティング機能を持ったプラットフォームを必要とする。LinuxCNC (EMC) の初期のバージョンは、Windows NT のリアルタイムバージョンで動作していたが、Windows のその後のバージョンは、リアルタイムサポートが十分でなかったため、リアルタイム拡張機能を持つ Linux が好んで使われるようになった[1]。
現在、LinuxCNC は RTAI カーネルまたは PREEMPT-RT と LinuxCNC の 'uspace' フレーバーの RTAPI を使用している。
LinuxCNCとその基礎となるリアルタイムカーネルパッチをベースLinuxシステムにインストールするのは大変な作業である。Paul Cornerは、BDI(Brain Dead Install)を使って、完全に動作するシステム(Linux、リアルタイムパッチ、LinuxCNC)をインストールできるCDを提供してくれた[2]。
これによって、LinuxCNCは、より多くのユーザーコミュニティにアクセスできるようになった。今日、PaulのBDIはブータブル(ライブ)ISOに進化し、CDやUSBに焼くことができ、ほとんどのPCスタイルのコンピュータでシステムをインストールすることなくLinuxCNCをテストドライブすることができる。ブート可能な LinuxCNC ISO は、Debian wheezy (RTAI カーネル) と Debian stretch (RT-PREEMPT カーネル) で利用可能である。
LinuxCNCのポリシーは、Debian用のパッケージのビルドとサポートの提供であるが、他のLinuxシステムやアーキテクチャ用のビルド済みバイナリパッケージも利用可能である[3]。
デザイン
[編集]LinuxCNC は、ハードウェアとの対話において「感覚、計画、行動」のモデルを使用する[4]。たとえば、現在の軸位置を読み取り、新しい目標位置/電圧を計算して、それをハードウェアに書き込みる。コマンドのバッファリングはなく、外部から開始された読み取りまたは書き込みも許可されていません。このバッファリングなしのアプローチにより、LinuxCNC の機能を追加または変更する自由度が最大になりる。比較的「ばかげた」外部ハードウェアを使用し、ホスト コンピュータの機能をプログラミングすることにより、LinuxCNC はハードウェアのどの部分にもロックされません。また、関心のあるユーザーは、動作/機能/ハードウェアを簡単に変更できる。
このモデルは、特定の種類の外部インターフェイスに適している傾向がありる。PCI、PCIE、パラレル ポート (SPP または EPP モード)、ISA、およびイーサネットがモーター制御に使用されている。 USB および RS232 シリアルは適切な候補ではありません。 USB はリアルタイム機能が悪く、RS232 はモーター制御には遅すぎる。
このモデルのため、LinuxCNC には基本的な「リアルタイム」要件がありる。読み取りと書き込みの間隔は一定で、適度に速くなければなりません。典型的なマシンは、1 ミリ秒の反復スレッドでリアルタイムの計算を行いる。ハードウェアへの読み取りと書き込みは、この時間のごく一部 (たとえば 200 マイクロ秒) である必要がありる。そうしないと、フェーズ シフトによってチューニングがより困難になり、非リアルタイム プログラムに使用できる時間が少なくなり、画面コントロールの応答が遅くなる可能性がありる。
LinuxCNC は「台形速度プロファイル ジェネレーターを採用しています」。 [5]
構成
[編集]LinuxCNC は、HAL (Hardware Abstraction Layer) と呼ばれるソフトウェア層を使用しる。 [6]
HAL を使用すると、さまざまなハードウェア コントロール ボードを組み合わせて組み合わせたり、パラレル ポートまたはシリアル ポートを介して制御信号を出力したり、ステッパーまたはサーボ モーター、ソレノイド、その他のアクチュエーターを駆動したりしながら、柔軟に多数の構成を構築できます[7] 。
LinuxCNC には、通常、広範な構成 (複雑なマシニング センターなど) で使用されるソフトウェアプログラマブル ロジック コントローラー(PLC) も含まれている。ソフトウェア PLC は、オープン ソース プロジェクトの Classicladder [8]に基づいており、リアルタイム環境内で実行される。
参照
[編集]- Machinekitは、EMC2/LinuxCNC を移植および拡張してBeagleBoneおよび関連ハードウェアで効率的に実行するためのオープン ソース プロジェクトです。
脚注
[編集]- Notes
- ^ “EMC History”. Linuxcnc Board of Directors (September 12, 2018). 2018年9月14日閲覧。
- ^ “EMC History”. Linuxcnc Board of Directors (September 12, 2018). 2018年9月14日閲覧。
- ^ “Getting LinuxCNC”. linuxcnc.org (February 19, 2018). 2018年9月14日閲覧。
- ^ “Linuxcnc hardware design requirements”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “Simple Tp Notes”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
- ^ “EMC2's Hardware Abstraction Layer”. Linuxcnc Board of Directors. 2010年9月30日閲覧。
- ^ “A couple case studies”. 2010年9月30日閲覧。
- ^ “ClassicLadder”. 2014年3月6日閲覧。
- 参考文献
- Proctor, FM および Michaloski, J.、「Enhanced Machine Controller Architecture Overview」、NIST 内部レポート 5331、1993 年 12 月。 ftp://129.6.13.104/pub/NISTIR_5331.pdf%5B%5Dでオンラインで入手可能
- Lumia、「強化されたマシン コントローラ アーキテクチャ」、ロボティクスと製造に関する第 5 回国際シンポジウム、ハワイ州マウイ、1994 年 8 月 14 ~ 18 日、 https://www.nist.gov/customcf/get_pdf.cfm?pub_id=820483
- Fred Proctor ら、「オープン アーキテクチャ コントローラのシミュレーションと実装」、製造業向けシミュレーションおよび制御技術、第 2596 巻、SPIE 議事録、1995 年 10 月、 https://web.archive.org/web/20100527174141/ http://www.isd.mel.nist.gov/documents/proctor/sim/sim.html
- Fred Proctor、John Michaloski、Will Shackleford、および Sandor Szabo 共著「Validation of Standard Interfaces for Machine Control」、Intelligent Automation and Soft Computing: Trends in Research, Development, and Applications、Volume 2、TSI Press、ニューメキシコ州アルバカーキ、1996 年https://web.archive.org/web/20100527165142/http://www.isd.mel.nist.gov/documents/proctor/isram96/isram96.html
- Shackleford と Proctor の共著、「Use of open source distribution for a Machine tool Controller」、インテリジェントな製造のためのセンサーと制御。カンファレンス、マサチューセッツ州ボストン、2001 年、vol. 4191、pp。 19–30、 https: //web.archive.org/web/20100820224129/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf またはdoi:10.1117/12.417244
- Morar et al., "ON THE POSSIBILITY OF IMPROVING THE WIND GENERATORS", International Conference on Economic Engineering and Manufacturing Systems, Brasov, 25–26 October 2007, https://web.archive.org/web/20120313054238/http:/ /www.recentonline.ro/021/Morar_L_01a.pdf
- Zhang 他、「Qt に基づく EMC2 CNC の開発」、Manufacturing Technology & Machine Tool、2008 年、 http: //en.cnki.com.cn/Article_en/CJFDTOTAL-ZJYC200802046.htm
- Leto et al., "CAD/CAM INTEGRATION FOR NURBS PATH INTERPOLATION ON PC BASED REAL-TIME NUMERICAL CONTROL", 8th INTERNATIONAL CONFERENCE ON ADVANCED MANUFACTURING SYSTEMS AND TECHNOLOGY JUNE 12–13, 2008 ウディネ大学 - イタリア, https://web .archive.org/web/20110703113248/http://158.110.28.100/amst08/papers/art837759.pdf
- Xu et al., "Mechanism and Application of HAL in the EMC2", Modern Manufacturing Technology and Equipment 2009–05, http://en.cnki.com.cn/Article_en/CJFDTOTAL-SDJI200905037.htm
- Zivanovic 他、 「デスクトップ 3 軸パラレル キネマティック マシンを構成するための方法論」[リンク切れ] 、FME Transactions (2009) 37、107–115、
- Staroveski et al., "IMPLEMENTATION OF A LINUX-BASED CNC OPEN CONTROL SYSTEM", 12th INTERNATIONAL SCIENTIFIC CONFERENCE ON PRODUCTION ENGINEERING –CIM2009, クロアチア生産工学協会, Zagreb 2009,
- Li ほか、「EMC2 に基づくパラレル キネマティック マシンの制御システム設計とシミュレーション」、Machinery Design & Manufacture 2010–08、 http: //en.cnki.com.cn/Article_en/CJFDTOTAL-JSYZ201008074.htm
- Klancnik ほか、「光学カメラとニューラル ネットワークを使用した CNC フライス盤でのコンピュータベースの工作物検出」、生産工学と管理の進歩5 (2010) 1、59–68、 [1]
外部リンク
[編集]- LinuxCNC プロジェクト ウィキ
- NIST RS274NGC 規格 - バージョン 3 2000 年 8 月PDFとしても利用可能
- NISTの Enhanced Machine Controllerホームページ
[[Category:Cでプログラムされたフリーソフトウェア]] [[Category:CAE]]