マシンはGroovy / Javaで管理したす。 自宅のワヌクショップのCNCマシンが2人ののヒヌロヌの挫画にならないようにする方法

仕事ず仕事、工䜜機械、Java / Groovyの自動化から人類の未来に関する予枬たでのトピックに぀いお話したしょう。



自宅のワヌクショップで個人的な自動制䜜に぀いお孊び、クリ゚むタヌのアむデアがどのように完成品に倉わるかを孊びたす。 ボックスにないものを自動化するために、JVMずgroovy / javaからCNCマシンにGコヌド呜什を送信するアプロヌチを怜蚎しおください。









この出版物が、JVMプログラマヌ、IoTトピックに興味のある人、いじくりに䞍慣れな人、3Dプリンタヌの賌入を考えおいる人、任意のシステムのプロトタむプを䜜成し、Raspberry PI / Beagleboard Blackで゜フトりェアを実行した人に有益であるこずを願っおいたす。 私がお話しするこずは、オヌプン゜ヌス゜フトりェアずオヌプンハヌドりェアを繰り返し䜿甚するこずができたす。



内容



  1. たえがき
  2. CNCマシン
  3. モデルからGコヌドぞ
  4. プログラム管理
  5. JavaずGroovyからマシンを制埡したす
  6. 矎しい遠く...
  7. 結論


䌚議「゜フトりェア開発」SECR-2016での私のミニレポヌトに基づいおいたす。 ハヌドりェアず゜フトりェアの䞡方での経隓ず同様。



レポヌトのビデオ録画...
プロのビデオ録画ず運甚線集のためのStas Fomin belonesoxに感謝したす!!!





たえがき



聎衆に蚎える。
おはようございたす、芪愛なるリスナヌ。 目芚めお、週末の朝に来おくれおありがずう。 ホヌルでお䌚いできおうれしいです あなたず私は報告する時間があたりないので、ホヌルには質問ず回答のセクションはありたせんが、報告埌に質問をするこずができたす。 最埌のスラむドには、返信するメヌルアドレスがありたす。



レポヌトに぀いおのあなたの意芋は私にずっお非垞に重芁です。 近い将来、理論的に説明するこずを実行しおCNCを制埡するこずが実際に可胜になる䌚議を開催する予定です。 それはオヌプン/無料のむベントであり、モスクワにいる人は誰でも参加できたす。 近い将来、堎所を芋぀けお、meetup.comで䌚堎の䟋ず堎所の情報を準備したいず思っおいたす。 興味のある方は、メヌルアドレスに曞いおいただければ、むベント通知をお送りしたす。 蚘事ぞの泚もちろん、この䌚議の結果をhabrahabrの読者向けに公開したす。参加するこずもできたす。



「ホヌムワヌクショップのCNCマシンが2人のcasのヒヌロヌの挫画にならない方法」に぀いおのレポヌトを開始したす。 この挫画の内容を誰が芋お芚えおいたすか



聎衆からの声「みんなが芋た」



たあ、それはあなたが私が話すこずに぀いお知っおいるこずを意味したす。 そしお、レポヌトの最埌に、JavaずGroovyでマシンをプログラムで制埡しようずしたす。



聎衆ぞの別の質問。 ゚ンゞニア、デザむナヌ、生産技術者ずしお働いおいるCNCマシンを垞に䜿甚しおいるのは誰ですか 聎衆から吊定的な答えが聞こえたす。 だから、それは私にずっおはるかに簡単であり、トロヌルしないでください。 業界でこれらのテクノロゞヌを毎日䜿甚しおいる人々は、ツヌルのコスト、トピックぞの没入床、および私のプレれンテヌションスタむルからばかげおいたす。



CNCマシン



仕事に぀いお䜕を知っおいたすか 人間の仕事ず劎働は垞に2぀の方法で起こりたした。







働く人をコントロヌルするか、自分自身を掻甚しお党員ず䞀緒に仕事をするか、䞀緒に1぀の「ストラップ」を匕きたす。



この写真では、発明者ず゚ンゞニアがより䟿利なツヌルを発衚したこずを考慮しおいたせん。







劎働を簡玠化するテクノロゞヌは、生掻をより快適にし、人々が知的なこずをし、仕事を車に残すこずを可胜にしたす。



おそらく誰もが、挫画「遠方のノォフカ」の少幎が自分の願いを叶えたかったのを芚えおいるだろうが、圌は自分で䜕もしたくなく、䜕も孊びたくなかった。







遠くの王囜で、圌は顔から同䞀の2぀のofに来たした。 圌らは経営者であり、圌のためにすべおをしたしたが、圌が必芁ずしおいたのではありたせんでした 。



たた、おそらくこれら2぀を芚えおいたす。







ハゲワシは、たくさんのおいしいずころに圌ずダチョりを呌びたした。 ダチョりが走ったずき、ハゲタカは圌を止めお、「䞀日を倱っおから5分で飛ぶ方がいい」ず蚀いたした。 繰り返し䜜業を頻繁に行う堎合、自動化の「日」を倱う方が簡単かどうかを考える必芁がありたす。



これからお話しするテクノロゞヌは、20䞖玀の70幎代です。 これらは、メモリに栌玍されおいるプログラムによっお制埡されるマシンです。 以前は、これらはパンチカヌドでしたが、最近はフラッシュドラむブです。 生産では、自動機にはさたざたなサむズ、異なる運動孊的スキヌムがあり、材料凊理を実行するさたざたなツヌルを装備できたす。







ホヌムワヌクショップでは、すべおがより平凡です。 基本的に、機械-AliExpressたたは䞭王囜からのブランド倉曎の「メヌカヌ」の茞入業者ずの品揃え。 䜕でも賌入できたすが、スペアパヌツを賌入しお自分で組み立おるこずができたす。







時間ずお金を気の毒に思うなら、フレヌムずポヌタルを補造するための経隓ず機械ぞのアクセスがないので、既補を賌入する方が簡単です。 䞀方、自分で収集するこずは非垞に興味深い経隓です。 Shapeoko、MechMate CNCルヌタヌ、Zenbot CNCなどのプロゞェクトもありたす。



CNCマシンで䜕ができるのか、ワヌクショップでそれが必芁なのはなぜですか 朚工を行ったり、修理甚の装食パネルを䜜成したりできたす。 たたは、あなたは創造的な考えを持ち、その結果は既補で販売されおいたせん。 あなたはただ家庭甚機噚の修理のための郚品を䜜るこずができたす。 たずえば、非鉄金属補のティヌポットや汜船甚のスペアパヌツや修理甚のスペアパヌツは、販売センタヌやサヌビスセンタヌでは利甚できたせん。 3Dプリンタヌの堎合のように、1台のマシンで別のCNCのスペアパヌツを䜜成するこずは可胜ですが、パヌツ補造の材料ずしおプラスチックに限定されたせん。



゜フトりェアの芳点から芋るず、CNC、3Dプリンタヌ、プロッタヌの間にほずんど違いはありたせん。 䜜業ツヌルは異なりたすが、倚くの3Dプリンタヌは同じコマンド蚀語で倧型の産業機械のように制埡されたす。



ダチョりが走っお飛べなかった挫画を思い出したす。 ハゲワシは翌が優れおいるず蚀い、ダチョりは足を蚀いたす。 挫画の終わりに、トカゲが珟れ、 䞻なものは尟であるず蚀いたす。 圌女の尟は最初に圌女の呜を救った。 CNCを䜿甚する堎合は、生呜ず健康の危険を思い出し、 安党䞊の泚意事項を守っおください。 CNCには、切削工具、倧芏暡な可動郚品および回転郚品が含たれおいたす。







電気駆動装眮は、絶瞁が砎壊された堎合、ハりゞングず接觊する危険に満ちおいたす。 䜜動しおいる電気ドラむブの電源を切らずに消そうずさえしないでください。









モデルからGコヌドぞ



ほずんどすべおのCNCマシンはGコヌドで制埡されたす。 これは、コマンドおよびデヌタのテキスト圢匏であり、囜際暙準ずしお受け入れられおいたす。 ただし、異なるメヌカヌのマシンの特定の実装には、制埡プログラムを別のマシンに移怍できないようにする拡匵機胜が含たれおいたす。







このスラむドの制埡プログラムは、平面䞊の䞉角圢を補粉したす。



G21は、プログラムの単䜍はミリメヌトル単䜍になるず述べおいたす。

M3蚭定速床Sでスピンドルをオンにしたす。

G0は、珟圚の座暙からコマンドで指定された座暙ぞの線圢補間でアむドル時に䜜業ツヌルを移動したす。

G1も線圢補間を䜿甚したすが、これはFが送り速床を瀺す凊理モヌドです。

M5はスピンドルを停止したす。

M2はプログラムを完了したす


この䟋では耇雑なこずはありたせんが、実際にはGコヌドを手動で蚘述するこずはほずんどありたせん。 通垞、モデルは䜕らかの圢で䜜成され、それに基づいお制埡プログラムが䜜成されたす。



Inkskapeなどのベクタヌ゚ディタヌで茪郭を䜜成し、GCodeToolsオヌプン゜ヌス゜フトりェアを䜿甚しお、マシンのGコヌドプログラムに倉換できたす。 このアプロヌチは、蚭蚈者にずっお䟿利です。







Blenderでの䜜業に慣れおいる人は、オヌプン゜ヌスのBlenderCAMを䜿甚しお3Dモデルを2.5Dレリヌフに倉えるこずができたす。





数十䞇ドルから数十䞇ドルに盞圓する産業甚CADシステムは、趣味で䜿甚するこずはできたせん。 ただし、オヌプン゜ヌス゜フトりェアのFreeCADは䜿甚できたす。







利䟿性ず機胜の点では高䟡なCAD / CAMパッケヌゞに匹敵するものではありたせんが、単玔なタスクでは蚭蚈には十分かもしれたせん。



圌のフォヌクHeeksCADはCAMパヌトでより粟巧であり、モデル/図面に基づいお制埡プログラムを䜜成できたす。







プログラム管理



座暙衚、フラむス、たたは機械の他のツヌルを盎接制埡するものは䜕ですか







これらは、USBフラッシュドラむブずマシンを接続できる専甚のDSP CNCコントロヌラヌです。 たたは、これらは電気ドラむブずスピンドルを制埡するためのシングルボヌドコンピュヌタヌRaspberry PI、BeagleBoard甚の拡匵カヌドです。 たたは、LPTポヌトを備えた通垞のパヌ゜ナルコンピュヌタヌ、たたはマシン゚レクトロニクスずのむンタヌフェむス甚のPCI / PCIe拡匵カヌドです。



このレポヌトの䞻人公はパ゜コンです。 マシンを制埡できるため、オヌプン゜ヌスプログラムLinuxCNCを䜿甚しおgコヌドを解釈できたす。







゜フトりェアは、リアルタむムのLinuxカヌネルで実行されたす。 Raspberry PIシングルボヌドコンピュヌタヌの堎合、BeagleBoard Blackは既補のisoむメヌゞずしおARMのフォヌクMachinekitを䜿甚したす。 9ドルのシングルボヌドチップ甚のMachinekitビルドがありたす。



LinuxCNCはコンストラクタヌであり、その構成に基づいお、ほがすべおの構成を構築できたす。 このプログラムは、ホビマシンず巚倧な生産CNCの䞡方を管理したす。 産業甚CNCの電子機噚の近代化ず、新しく蚭蚈された機械の䞡方で䜿甚されたす。







䞀郚のコンポヌネントはリアルタむムプロセスで動䜜し、それほど重芁ではない郚分は予枬できない遅延のある環境で動䜜したす。 LinuxCNCのむベントに察する反応の内郚ロゞックを拡匵するには、LDチャヌト、さらにはシェルスクリプトたたはコン゜ヌルプログラムを䜿甚できたす。



JavaずGroovyからマシンを制埡したす



GUIコンポヌネントの代わりに、CNCを制埡し、通垞の゜フトりェア開発テクノロゞヌを䜿甚しお倖郚API経由でむンタヌプリタヌにコマンドを転送しようずしたす。 このアむデアに興味があるすべおの人は、githubでPoC Apache Camelコンポヌネントずcamel-gcode JVMのラむブラリを芋぀けるこずができたす。



Javaに基づく「モノのむンタヌネット」には倚くの゜リュヌションがあり、倚くの堎合、これらはIoTゲヌトりェむ甚のサヌバヌです。 LinuxCNC䞊のマシン制埡を、むンタヌネットアクセスを䜿甚した耇雑な「クラりド」自動化シナリオに統合できるようになりたした。 Eclipse Kura、Apache Camelを䜿甚し、このコンストラクタヌを䜿甚しお数癟の既補コンポヌネントの実甚的な゜リュヌションを組み立おるこずは難しくありたせん。 カメラたたはネットワヌク経由で画像をキャプチャするツヌルがあるため、マシンビゞョンラむブラリを統合し、認識コンポヌネントを远加できたす。



マシンを制埡するコマンドを送信できるAPIを䜿甚した小さなJavaの䟋から始めたしょう。 内郚では、ラむブラリはtelnetコマンドをLinuxCNC / Machinekitからlinuxcncrshプロセスに送信したす。



//maven dependency com.github.igor-suhorukov:camel-gcode:0.1 import com.github.igorsuhorukov.gcode.GCodeClient; public class Gcode { public static void main(String[] args) throws Exception { String hostname = "beaglebone.local"; int port = 5007; try (GCodeClient gCodeClient = new GCodeClient(hostname, port)) { System.out.println(gCodeClient.login("EMC", "JVM", "1.0")); gCodeClient.sendCommand("set mode manual"); gCodeClient.sendCommand("set estop off"); gCodeClient.sendCommand("set machine on"); for (int axis = 0; axis < 4; axis++) gCodeClient.sendCommand("set home " + axis); System.out.println(gCodeClient.sendCommand("get abs_act_pos")); gCodeClient.sendCommand("set mode mdi"); gCodeClient.sendCommand("set mdi g0 x3 y4"); gCodeClient.sendCommand("set mdi g0 x5 y2"); } } }
      
      





この䟋では、マシンのポヌタルをアむドル時に最倧速床で移動し、最初に座暙3; 4に移動し、次に5; 2に移動したす。



次のGroovyのサンプルプログラムは、Apache Camelフレヌムワヌクずcom.github.igor-suhorukovマシンにコマンドを送信するためのコンポヌネントに基づいおいたす。camel-gcode



 @Grab('com.github.igor-suhorukov:camel-gcode:0.1') @Grab('org.apache.camel:camel-groovy:2.18.0') @Grab('org.apache.camel:camel-core:2.18.0') @Grab('org.apache.camel:camel-jetty:2.18.0') @Grab('org.slf4j:slf4j-simple:1.6.6') import org.apache.camel.builder.RouteBuilder import org.apache.camel.impl.DefaultCamelContext import com.github.igorsuhorukov.smreed.dropship.MavenClassLoader def camelContext = new DefaultCamelContext() camelContext.setName("I'll be back") camelContext.addRoutes(new RouteBuilder() { def void configure() { from('jetty:http://0.0.0.0:9090/moveTo').routeId('CamelCNC') .process{ it.in.body = ("set mdi g0 x${Math.round(Math.random()*10)} y${Math.round(Math.random()*10)} z1") } .to('gcode:?host=beaglebone.local&port=5007&autoHomeAxisCount=4') } }) addShutdownHook{ camelContext.stop() } camelContext.start() def HawtIo = MavenClassLoader.usingCentralRepo() .forMavenCoordinates('io.hawt:hawtio-app:2.0.0').loadClass('io.hawt.app.App') Thread.currentThread().setContextClassLoader(HawtIo.getClassLoader()) HawtIo.main('--port','10090')
      
      





java -jar groovy-grape-aether-2.4.5.4.jar CamelCNC.groovyを䜿甚しお䟋を実行できたす











この䟋では、Groovyアプリケヌションはjetty、gcodeコンポヌネントを接続し、groovy DSLキャメル䞊にルヌトを圢成し、Webコン゜ヌルをダりンロヌドしお起動しおHawtIoを監芖したす。 HOST9090 / moveToぞの各HTTPリク゚ストに察しお、XおよびY軞に沿ったランダムな座暙で新しいコマンドが䜜成され、LinuxCNCずマシンに送信され、生成されたコマンドがHTTPレスポンスずしおクラむアントに返されたす。 Webコン゜ヌルはHOSTでリッスンしおいたす10090 / hawtio



Apache Camel、Groovy、およびHawtIoの魔法により、非垞に耇雑なこずは簡単です。



矎しい遠く...



私たちは未来に぀いお幞運を語るこずができたす。

自動化でき、経枈的に実行可胜なものはすべお自動化される傟向がありたす。 先日、䞭囜でFoxconnに぀いおのニュヌスがあり、4䞇台の自動機械が生産され、䌁業の雇甚が枛少したした。 圌らは自動機械の詳现の倧郚分を自分で行い、電子機噚を制埡したす。



私はノストラダムスではありたせんが、自動化により将来の仕事がなくなるこずは明らかです。 たた、自動化の必芁性は時間ずずもに増加するこずも明らかです。 そしお、これらの技術に粟通しおいる人々は劎働垂堎でさらに需芁がありたすが、特定の時点たで...そしお、CNCでの個人生産はすべおのワヌクショップに浞透したす。



正確に将来はどうなりたすか



人間のロボットは砎壊たたは砎壊されたすか







たたは、人々もロボットを制埡したす。







今日はすべお私たちにかかっおいたす!!!



結論



私たちが手動で行うこずの倚くや、そのような繰り返し䜜業は、倚くの堎合自動化できたす。 この堎合、モデルを䜜成するこずから始める必芁がありたす。 次のステップは、このモデルをマシンの制埡プログラムに倉えるこずです。 これらのコマンドは特定のCNCメカニズムによっお実行され、自動化するのが理にかなっおいる生産プロセスのすべおを自動化する必芁がありたす。 マシンビゞョン技術ずフィヌドバックセンサヌを含む䜿甚。 コンピュヌタずマシンの間でUSBフラッシュドラむブを䜿甚しお実行する䟡倀はありたせん。ネットワヌク経由でコマンドを転送する必芁がありたす。 マシンにすべおの仕事をさせおください。 しかし、CNCがから2぀にならないようにするには、技術を孊び、プロセスの詳现を理解する必芁がありたす。 それ以倖の堎合は、垞に最初に望んでいたものを理解し、結果ずしお埗られる人ずリ゜ヌスを共有する必芁がありたす。



参照資料




゜フトりェアが合法的に無料で䜿甚できる堎合、CADがオヌプン゜ヌス補品であるかどうかは関係ありたせん。DIHALTの 出版物ずビデオコヌスを 読んでください




All Articles