LinuxCNC

LinuxCNC
安定版リリース
2.9.8
ライセンスGNU GPLv2GNU LGPLv2.1 [ 1 ]
Webサイトhttps://linuxcnc.org/
リポジトリhttps://github.com/LinuxCNC/linuxcnc

LinuxCNC(旧称Enhanced Machine Controller、またはEMC2 )は、汎用コンピュータを用いてコンピュータ数値制御(CNC)機能を実装した、無料のオープンソースLinuxソフトウェアシステムです。CNCマシンの制御に汎用コンピュータを使用しています。主にPC AMD x86-64システム上で動作するように設計されています。linuxcnc.orgの複数のボランティア開発者によって設計されており、通常は必要なリアルタイムカーネルを提供するDebian Linuxの修正版にISOファイルとしてバンドルされています。

リアルタイム オペレーティング システムとの緊密な統合により、リアルタイム カーネルのない標準の Linux デスクトップ PC では、パッケージはデモ モードでのみ実行されます。

目的

LinuxCNCは、フライス盤、旋盤プラズマカッタールーターカッティングマシン、ロボット、ヘキサポッドなどの機械の数値制御(CNC)ソフトウェアシステムです。Gコード(RS-274NGC)を入力として、CNCマシンの最大9軸または9関節を制御できます。特定の用途(タッチスクリーン、インタラクティブ開発)に適した 複数のGUIを備えています。

現在、x86 PCプラットフォームでほぼ独占的に使用されていますが、他のアーキテクチャにも移植されています。リアルタイム向けに修正されたカーネルを広範に使用し、ステッピングモータサーボモータの両方の駆動方式をサポートしています。

図面 (CAD - コンピュータ支援設計) や図面からの G コード生成 (CAM - コンピュータ自動製造) 機能は提供されません。

歴史

EMCパブリックドメイン・ソフトウェアシステムは、もともとNISTによって、国立製造科学センター(National Center for Manufacturing Sciences) /空軍が後援する次世代コントローラプログラム(NGC 1989)/オープンシステムアーキテクチャ仕様(Specification for an Open Systems Architecture)[SOSAS]の次のステップとして開発されました。EMC [Enhanced Machine Controller Architecture 1993]と呼ばれていました。政府が後援するフライス盤制御用のパブリックドメイン・ソフトウェアシステムは、1950年代にデジタルコンピュータを用いて開発された最初のプロジェクトの一つでした。これは、機械加工の数値制御における業界標準言語であるRS-274D( Gコード)の「ベンダー中立」なリファレンス実装となることを目指していました。

このソフトウェアには、動作軌道プランナーを駆動するRS274インタープリタ、リアルタイムモーター/アクチュエータドライバ、そしてユーザーインターフェースが含まれていました。これにより、FreeBSDまたはLinuxを搭載した市販のPCハードウェアを用いて、様々なハードウェア動作制御システムとインターフェースする高度な数値制御システムの実現可能性が実証されました。現在、既存のアーキテクチャに加え、 ARMアーキテクチャデバイス などの追加アーキテクチャを用いた開発が継続されています。

デモプロジェクトは大きな成功を収め、ユーザーとボランティアの貢献者からなるコミュニティが形成されました。2000年6月頃、NISTは外部貢献者が変更を加えられるように、ソースコードをパブリックドメインライセンスの下でSourceForgeに移管しました。2003年、コミュニティはソースコードの一部を書き直し、他の部分を再編成・簡素化した後、EMC2という新しい名前を付けました。EMC2は現在も活発に開発が進められており、ライセンスはGNU General Public License(GNU一般公衆利用許諾契約書)に基づいています。

EMC2という新しい名前の採用は、いくつかの大きな変更によって促されました。まず、Cコードの変更や再コンパイルなしに機能を簡単に相互接続するために、HAL(ハードウェア抽象化レイヤー)と呼ばれる新しいレイヤーが導入されました。これにより、軌道と動作計画がモーションハードウェアから分離され、ガントリーマシン旋盤のねじ切りとリジッドタッピングSCARAロボットアーム、およびその他のさまざまな適応をサポートする制御プログラムを簡単に生成できるようになりました。HALには、信号を調べたり、リンクを接続および削除したりするための対話型ツールがいくつか付属しています。また、信号をリアルタイムで調べるための仮想オシロスコープも含まれています。EMC2でのもう1つの変更点は、自動工具交換装置などの複雑な補助デバイスを構成するためにリアルタイム環境に適応したClassic Ladder(オープンソースのラダーロジック実装)です。

2011年頃、 EMC Corporation( EMCおよびEMC 2の商標を保有)との商標権紛争により、名称がEMC2からLinuxCNCに変更された。LinuxCNCはLinux Foundationから「Linux」商標のライセンスを取得していた。[ 2 ]

プラットフォーム

LinuxCNCは、きめ細やかで正確なリアルタイムマシン制御を必要とするため、リアルタイムコンピューティング機能を備えたプラットフォームを必要とします。EMCの初期バージョンはWindows NTのリアルタイムバージョンで動作していましたが、Windowsの後期バージョンはリアルタイムサポートが不十分だったため、リアルタイム拡張機能を備えたLinuxが推奨プラットフォームとなりました。[ 2 ]現在、LinuxCNCはRTAIカーネル、またはLinuxCNCのRTAPIの「uspace」フレーバーを備えた PREEMPT-RTを使用しています。

LinuxCNC と基礎となるリアルタイム カーネル パッチをベースの Linux システムにインストールするのは困難な作業です。Paul Corner が BDI (Brain Dead Install) で救いの手を差し伸べました。これは、完全な動作システム (Linux、リアルタイム パッチ、LinuxCNC) をインストールできる CD でした。[ 3 ]これにより、LinuxCNC ははるかに大きなユーザー コミュニティーにアクセスできるようになりました。現在、Paul の BDI は起動可能な (ライブ) ISO に進化しました。これは CD または USB に書き込むことができ、ほとんどすべての PC スタイルのコンピューターで実行して、システムをインストールすることなく LinuxCNC を試用できます。起動可能な LinuxCNC ISO は、 RT-PREEMPT カーネルを搭載したDebian Bookworm と Trixie で利用でき、RTAI と Xenomai カーネルも引き続きサポートされています。

LinuxCNCのポリシーはDebian向けのパッケージを構築してサポートを提供することですが、他のLinuxシステムやアーキテクチャ向けのビルド済みバイナリパッケージも利用可能です。[ 4 ]

デザイン

LinuxCNCは、ハードウェアとのやり取りにおいて「感知、計画、実行」モデルを採用しています。[ 5 ]例えば、現在の軸位置を読み取り、新しい目標位置/電圧を計算し、それをハードウェアに書き込みます。コマンドのバッファリングは行われず、外部からの読み取りや書き込みも許可されません。このバッファリングのないアプローチにより、LinuxCNCの機能追加や変更の自由度が最大限に高まります。比較的「低機能」な外部ハードウェアを使用し、ホストコンピュータで機能をプログラミングすることで、LinuxCNCは特定のハードウェアに縛られることなく、動作/機能/ハードウェアを簡単に変更することができます。

このモデルは、特定の種類の外部インターフェース(PCI、PCIE、パラレルポート(SPPまたはEPPモード)、ISA、イーサネットなど)に適しています。USBとRS232シリアルは適していません。USBはリアルタイム性が低く、RS232はモーター制御には速度が遅すぎるためです。

LinuxCNCはこのモデルのため、基本的な「リアルタイム性」要件を満たしています。読み取りと書き込みの間隔は一定で、かつ適度に高速である必要があります。一般的なマシンは、1ミリ秒の繰り返しスレッドでリアルタイム計算を行います。ハードウェアへの読み取りと書き込みは、この時間のうちのごく一部、例えば200マイクロ秒程度に抑える必要があります。そうでないと、位相シフトによってチューニングが困難になり、非リアルタイムプログラムに使える時間が少なくなり、画面コントロールの応答性が低下する可能性があります。

LinuxCNCは「台形速度プロファイルジェネレータを採用しています。」[ 6 ]

構成

LinuxCNCはHAL(ハードウェア抽象化レイヤー)と呼ばれるソフトウェアレイヤーを使用します。[ 7 ]

HALは柔軟性がありながら多様な構成を構築できます[ 8 ]。様々なハードウェア制御ボードを組み合わせたり、パラレルポートシリアルポートを介して制御信号を出力したり、ステッピングモータやサーボモータソレノイドやその他のアクチュエータを駆動したりできます。

LinuxCNCには、複雑なマシニングセンターなどの大規模な構成で使用されるソフトウェアPLC(プログラマブルロジックコントローラ)も含まれています。このソフトウェアPLCは、オープンソースプロジェクトClassicladder [ 9 ]をベースにしており、リアルタイム環境で動作します。

参照

参考文献

注記
  1. ^ 「Linuxcnc/COPYING.more at 2.9 · LinuxCNC/Linuxcnc」 . GitHub .
  2. ^ a b「EMCの歴史」 Linuxcnc取締役会。2018年9月12日。 2018年9月14日閲覧
  3. ^ 「EMCの歴史」 Linuxcnc取締役会。2018年9月12日。 2018年9月14日閲覧
  4. ^ 「LinuxCNCの入手」 linuxcnc.org. 2018年2月19日. 2018年9月14日閲覧
  5. ^ 「Linuxcnc ハードウェア設計要件」
  6. ^ 「シンプルなTpノート」
  7. ^ 「EMC2のハードウェア抽象化レイヤー」 Linuxcnc取締役会。 2010年9月30日閲覧
  8. ^ 「いくつかのケーススタディ」 。 2010年9月30日閲覧
  9. ^ 「ClassicLadder」 . 2014年3月6日閲覧
参考文献