コンテンツにスキップ

利用者:加藤勝憲/LinuxCNC

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インタプリタ、リアルタイムモータ/アクチュエータドライバ、およびユーザインタフェースが含まれている。これは、FreeBSDLinux が動作する市販の 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
  1. ^ EMC History”. Linuxcnc Board of Directors (2018年9月12日). 2018年9月14日閲覧。
  2. ^ EMC History”. Linuxcnc Board of Directors (2018年9月12日). 2018年9月14日閲覧。
  3. ^ Getting LinuxCNC”. linuxcnc.org (2018年2月19日). 2018年9月14日閲覧。
  4. ^ Linuxcnc hardware design requirements”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  5. ^ Simple Tp Notes”. Template:Cite webの呼び出しエラー:引数 accessdate は必須です。
  6. ^ EMC2's Hardware Abstraction Layer”. Linuxcnc Board of Directors. 2010年9月30日閲覧。
  7. ^ A couple case studies”. 2010年9月30日閲覧。
  8. ^ ClassicLadder”. 2014年3月6日閲覧。
参考文献

外部リンク[編集]

[[Category:Cでプログラムされたフリーソフトウェア]] [[Category:CAE]]