CNCjsの使い方、設定、CNCマシンにG-code送る方法

CNCjsとは
GrblやSmoothiewareで制御されるCNCマシンのコントローラー、G-codeを送るソフトとして使うことができるオープンソースのソフトウェアです。
Raspberry Piとかブラウザでも動作させることができるらしいですが、ここではDesktopApp(パソコンで動かすやつ)としての利用を想定して簡単な利用方法を記述します。

CNCjsで動かすことができるマシン例 (手元にないマシンは確認できていないので、未確認のもので動作確認できたらぜひ教えて下さい。)

  • C-Beam Maschineシリーズ(OPEN BUILDS,AvalonTech)
  • Art CNC(AvalonTech)
  • CNC3018-Proなどgrblで制御されるマシン
  • Marlinで制御されるマシン(未確認だけどね!)
  • Smoothieで制御されるマシン(未確認だけどね!)
  • TinyGで制御されるマシン(未確認だけどね!)

CNCjsのここがすごい!

  • 画面がウルトラ見やすい!
  • 開発後放置ではなくちゃんと更新されている!
  • 日本語に対応している!!
  • Windows、Mac、Linuxに対応している!
「いいね!」 2

CNCjsの入手方法

GitHubから入手可能です。
例)Windows64bitの方はcncjs-app-〇〇△□-win-x64.exeをダウンロードしてインストール

現在CNCxPRO v5はCNCjs v1.9.22で動作確認済です。
最新版は不安定だったりバグがあったりすることがあり避けたほうが良いです。

基本的な使い方

事前準備として、USBケーブルでパソコンと制御ボード(CNCxProなど)をつないでおきます。
CNCjsを立ち上げ、画面の左上の部分からポートを選択します。
選択できたら下の「開く」ボタンでパソコンとマシンが接続されます。接続されると一瞬「カッ」と音がします。





接続が成功していると下のコンソールに接続された制御のファームウェアのバージョン情報とパラメーターが表示されます。
CNCxPRO V5の場合は接続ボタンを押した後、CNCxPRO本体のリセットボタンを押すことで接続されます。

コンソールには接続失敗時のエラーメッセージや、通常動作中のエラーメッセージなども表示されるのでうまく行かない時はコンソールに何か書かれていないか確認しましょう。


機械原点の設定

リミットスイッチ(エンドストップキット)が有効になっている場合($22=1)は最初にホーミング動作で機械原点を登録しないとロックされており動きません。基本的には最初にホーミングを行いましょう。
ホーミングが実行されるとリミットスイッチの位置が機械原点として登録されます。
リミットスイッチがない場合、PCとマシンを接続したときの位置が機械原点となります。

ありがとうございます。

私は以下のサイトを参考にして
https://cnc.js.org/

コマンドプロンプトからCNCコマンドを実行して、
Webブラウザ上でCNCjsを実行する
やり方で使っています。(設定するのに結構苦労しました。)

紹介の方法は通常のデスクトップアプリになるのでしょうか?
インストールするだけで使えるなら便利そうですね。

リンクを貼っていただいたサイトのDesktopAppの部分が通常のデスクトップアプリになり、インストールするだけでボタンぽちぽちで使えます。
自分なんかはコマンドプロンプトを見ると胃が痛くなるのでこっち派です。
ただダウンロードの場所などが分かりにくいので簡単な案内だけここで書いておきます。

加工原点の設定

エンドミルの先端がCAMで設定した加工原点に来るように手動で動かします。








ワーク位置の下図赤丸部分のボタンを押すとワーク位置が0(現在位置が加工原点)となります。





G-codeのアップロード、加工開始

アップロードボタンで加工するNCデータを選択します。画面にプレビューが表示されます。
準備ができたら隣の:arrow_forward:ボタンを押すと加工が始まります。
各種準備(データの確認、マシン座標の確認、ルーターの電源をONに、保護メガネ着用など)ができてから押しましょう。
:arrow_forward:ボタンを押したときにデータに工具交換の命令があると一時停止状態になり、始まらない場合があります。その場合はもう一度:arrow_forward:ボタンを押して再開すると始まります。

お世話になります。私はCNC3018Proを買いましたが3018にG-codeを送るソフトCNCjsをインストール始めたのですが 「cncjs.app-1.9.22-Win-x64.exe このファイルはお使いのデバイスに問題を起こす可能性があるため
ブロックされました。」とメッセージが表示されてその先に進めません。どうすればよいか教えてくださいお願い致します。当方初心者なのでよろしくお願いいたします。

Microsoft Edgeでのダウンロード時の問題でしょうか?
そうであれば,以下のリンクが参考になるかと思います.

「いいね!」 1

お世話になりました。無事インストールが出来ました本当にありがとうございました。今後ともよろしくお願いいたします。

@Gym
はじめまして! CNC1610 PROを購入し、いろんな情報を頼りに環境を整えています!ズブのど素人でかなり苦労しております。Grbl Controller がうまく使えず困っていたところ、こちらでCNCjsを知り、無事にpcとマシンの接続、操作ができるようになりました!ありがとうございます!助かっています!
さしあたってはCNCjsの使い方を覚えようと思い、「ホーミング」ボタンから調べていたのですが、リミットスイッチ?スイッチの配線?、、と概念が全然足りておらずボタン一つ理解するのにもかなり手惑いました。。
「スリープ」「アンロック」など、他のボタンも、何をどうするボタンかちんぷんかんぷんなので、そのような基礎の基礎のコントローラーの機能を学べる資料などご存知ないでしょうか、、、?

こんにちは。

自分は分からないけどとりあえず押してみて理解していった性質なのでCNCjsの基礎基礎の資料というのはあまり見ていません。
参考になりそうなものとしてはCNCjsのwikiが一つ。

あとはボタンを押したときにコンソールに表示される(基板に送られる)コマンドを見て、対応しているGRBLの機能を調べると機能がわかります。
例えば[アンロック]を押したときはコンソールに

$X

と表示されます。これをGRBLのwikiで調べると

$X -アラームロックを解除します
Grblのアラームモードは、ハード制限やサイクル中のアボートなど、重大な問題が発生した場合、またはGrblがその位置を認識していない場合の状態です。デフォルトでは、ホーミングを有効にしてArduinoの電源を入れると、Grblはその位置を知らないため、アラーム状態になります。アラームモードは、「$ H」ホーミングサイクルが実行されるまで、すべてのGコードコマンドをロックします。または、ユーザーがアラームロックをオーバーライドして、軸をリミットスイッチから外す必要がある場合、たとえば、「$ X」キルアラームロックはロックをオーバーライドし、Gコード機能が再び機能できるようにします。

しかし、慎重に踏みます!これは緊急事態でのみ使用する必要があります。ポジションが失われた可能性があり、Grblはあなたが思っている場所にない可能性があります。したがって、短い動きをするためにG91インクリメンタルモードを使用することをお勧めします。次に、ホーミングサイクルを実行するか、直後にリセットします。

前述のように、起動行は$Xコマンドの後に実行されません。アラームをクリアし、アラームの原因となったシナリオを修正したら、必ずリセットしてください。Grblがアイドル状態にリセットされると、スタートアップラインは通常どおり実行されます。

といった感じです。機能自体はGRBLが実行していて、CNCjsはそのコマンドを送っているだけなので、どちらかというとGRBLの対応しているコマンドの説明を探す方が理解しやすい気がします。
GRBLのwikiはこのあたりを参考に

「いいね!」 1

ご回答ありがとうございます!
なるほど、ボタンをポチポチ押して、コンソールの反応を調べるのはいいアイデアですね💡
全く想像してませんでした。
早速活用させてもらいます!
ありがとうございます😊

MIniCNCを作ろうと思っています。 何か良いソフトが無いかと探していました。
早速CNCjsを」ダウンロード、Arduino につないでみました。 OKです。 通信できています。
このソフトはG-codeを送るだけですよね。 G-codeを作るソフトは何かいいのがありますか?

こんにちは

Gcodeを作るのにfusion360を使われているのをよく見ます。fusion360のポストの設定をgrbl用のものにすれば問題なく使えるかと思います

早々にありがとうございます。
Fusionは3Ddataを作るのに使っています。
stlデータを作り、別ソフトでGcode化してマシンに転送、プリントしています。
早速、Fusion の機能を見てみます。

異常停止した際にステップ指定してリスタートすることは可能なのでしょうか?
「サイクルスタート」で再開するのかと思っていたのですが、
「サイクルスタート」させるとホーム位置を超えて暴走しました。。。

そもそも設定が悪いのか?
最初からやり直すしかないのでしょうか?

ご存じの方教えてください。

こんにちは

どういう状態でストップしたのかが分からないのでなんとも言えませんが、
CNCjsの一時停止ボタンを押して手動で止めたのであれば復帰ボタンを押せば再開すると思います。
何らかのエラーが発生しロックされたのであれば,NCプログラムの送信は止まります。
そしてリセットやアンロックをかけた際にNCプログラムの送信状態もリセットされます。そのため、再度実行を行うとNCプログラムが最初から流れ、プログラムの内容によっては正しくない位置に行くかもしれません。

CNCjsにはNCプログラムの指定位置からのスタートという機能はなかったと思います。

もし加工の途中から再開させたいという場合は以下の方法が考えられます。

  • CAMの設定ですでに加工した部分を除外しパスを再出力して使う

  • 既存のNCプログラムを修正して加工途中の座標から始める

参考(NCプログラムを編集して再開する場合)

ちなみにCNCjsではなくUGSでは指定行からの実行の機能があるようです


「いいね!」 1

毎度返信ありがとうございます。
レスが遅くなり大変申し訳ございません。

お陰様でフル活用させていただいております。

Y軸の異常を検知して緊急停止しているようですが、何度組み直しても解消できないのでい緊急停止したさいは最初からリスタートしております。。。

現在切削している木刀は、片面30分程度なので最初からリスタートしても我慢できる時間です。

今後超大作を考えるとステップ指定でリスタートしたいのでUGSへの移行を考えてみます。ありがとうございます。

「いいね!」 2

すごく良い作品ですね!

もし良かったらY軸の異常が発生して緊急停止した時のエラーメッセージ等あれば教えて下さい。解決の手伝いができるかもしれません。

概要

装置の実験中に ニッチな 環境依存の問題に出くわしたので報告しておきます。

かなり限定的な環境でのトラブルシューティングですが、スタンドアロン版の Linux 用 CNCjsSlackware Linux で 使おうとすると、「udevadm がねーよ!」と怒られます。

補足事項

※ ダウンロードした CNCjs の使い方:cncjs-app-「使いたいバージョン」-linux-x64.tar.gz をダウンロード・展開し、展開されたフォルダ内でコマンドラインから ./cncjs-app と打つとスタンドアロン版 CNCjs が起動します。

※ 今回の問題の原因:Slackware Linux では /sbin や /usr/sbin(たぶん /usr/local/sbin も。うろ覚え)が設計上一般ユーザーのコマンドサーチパスにのぼらないこと。

Slackware Linux

エラーメッセージ

以下に抜粋。

2021-07-03T01:52:57.937Z - error service:cncengine { Error: spawn udevadm ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19)
    at onErrorNT (internal/child_process.js:407:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'spawn udevadm',
  path: 'udevadm',
  spawnargs: [ 'info', '-e' ] }

問題の回避策

この場合、管理者権限で

ln -s /sbin/udevadm /usr/local/bin/

等と、一般ユーザーに見える場所に udevadm のシンボリックリンクを張っておきます。

他には /dev/ttyUSB0 等の読み書きの権限がユーザーにないとそちらでエラーが出ます。これは gpasswd コマンド等を使って該当ユーザーを “dialout” グループに所属させた後で再度ログインすれば問題ないはず。

他の被害者

同じエラーに遭遇した方のポストが以下。こちらの方は /usr/bin 以下に /sbin/udevadm のリンクを張っていらっしゃいました。

「いいね!」 1