GコードNCデータの確認と学習支援ソフトを作ってみた

NC

こちらで、ファナック系NCデータで図形を定義する方法を説明しました。

絶対座標系(G90)の場合には、原点基準からのX軸やY軸の移動位置は、比較的イメージできますが、相対座標系(G91)モードの場合は、次の移動位置はわかりますが、全体的な図形形状はなかなかイメージできません。
さらに、「I」「J」円弧の場合はその中心と半径も、電卓を叩かないとわかりませんね。
NCデータの最終確認用として、加工輪郭の図形情報を表示するソフトを作ってみました。

NCデータから、図形輪郭確認

最近は、CAD/CAMを使用して、NCデータを作成する場合がほとんどだと思いますが、2D輪郭形状で、工具径補正を利用して形状精度を加工する場合、最終的には、使用NCデータと図面寸法を比較して確認したくなります。
確かに、CAD上で輪郭スケッチと図面寸法を確認する事はできますが、NC機械はCADデータから直接動作するわけではありません。
CADで輪郭を描いた後、CAMで工具径や補正、仕上げ代などを設定後、ポストプロセッサを経由して、最終的なNCデータが作成されます。
3D加工は、CAD/CAMに任せるしかありませんが、精度が必要な2D輪郭は、NCデータで確認したいと言うのが、このソフトの目的です。

図形要素

基本的に、2D輪郭は、直線と円弧の連続です。
直線は、絶対座標(G90)であれば、NC指示の数値で始点終点が簡単にわかるので、その形状も簡単に理解できます。
ところが、円弧補間はちょっと面倒です。
Gコードでの円弧指示は、「I」「J」方式と「R」方式があります。
「R」方式であれば、その半径はすぐにわかりますが、「I」「J」方式の場合は簡単にはわかりません。
ただ、円弧の中心位置は、「I」「J」方式のほうが簡単だと思いますし、制御機などによっては、「R」方式には対応していないものもあります。
今回は、「I」「J」方式のみで検討しています。

円弧の中心・半径の求め方

詳細はこちらに書きましたが、円弧の半径は

で求めることができます。
また、円弧中心と「I」「J」の関係は

円弧の始点から見た、中心座標までの、相対位置です。
「I」はX軸、「J」はY軸になります。
逆算すると、円弧の中心座標を(Xc、Yc)とすると


Xc = 始点のX座標 + I
Yc = 始点のY座標 + J


となります。
ただしこれは、日本国内では始点から見た「相対座標」が一般的なのでこうなりますが
海外の制御機の場合には、「絶対座標」の場合もあるので、注意が必要です。
このソフトは、「相対方式」の「I」「J」のみに対応しています。

電卓による確認

上記の計算式がわかれば、NCデータの一行(一ブロック)ごとに、計算する事で図形データと照合する事ができます。
部分的でも、この方法で確認する事で、ミスを見つける確率があがります。

ソフトを作ろう!

でもやっぱり、電卓は面倒。
C++Builder を利用して、輪郭の情報を表示するソフトを作成する事にします。
図面と照合する時に一番ほしいのは、円弧の中心と半径です
こんな仕様とします。

この情報は、リアルタイムに表示するようにして、工具径補正モードかどうかも
分かるようにします。
相対座標系、絶対座標系、両方に対応できるようにします。
ただし、半径指示は、「I」「J」のみとします。
「R」指示は、180°以上とか以下とかいろいろ面倒そうなので、
非対応とします
そして、やっぱり、図形が描画できるようにしたいと思います
私のレベル的に、2D表示までです。
3Dはちょっと敷居が高いです。
次期バージョンでは対応したいと思っていますが
キャンパスサイズの変更や拡大縮小にも現バージョンでは未対応。

こんなイメージ

ソフトのウィンドウ上に、NCデータをドロップすれば、解析を始めます
キーボードの矢印キーで、一行づつ、表示していきます。
マウスでNCデータをクリックすると、そこまで連続で移動します。

小容量のデータが対象です。

大容量のデータでも表示できますが、私のソフト開発のレベルの問題でかなりレスポンスが悪いです。
私の環境で試したところ、600KB 30000行ぐらいのデータで、
読込みに、約30秒。全行描画に約1分 かかります。
基本的なポリシーは、NCデータの図形要素の確認なので、2D輪郭の確認用と言うことで了承ください。

NCプログラムの学習にも使用できそう!

新人さんが入社して来たとき、NCプログラムを指導した事がありました。
その時に、適当な図形の例題を出して、NCデータで図形を定義させたのですが
その確認が面倒でした。
その時は、別のシミュレーションソフトで、新人さんが作成したデータを確認したのですが、そういった用途にも使用できそうです。

エディタ機能

他のエディタで、NCプログラムを手入力して保存し、そのファイルをドロップすれば、一行づづ確認できますが、せっかくなのでこのソフトにも簡易エディタ機能を追加してみました。

例題

試しに、この図形を手打ちで定義してみましょう!

エディタモード

ソフトが立ち上がったら、「Edit」を選択すると、入力モードになります

最近手打ちなんてやってませんが、久しぶりに、例題の図形の輪郭を手打ちでNCプログラムしてみましょう!

入力途中でも、「読込み」ボタンで、確認モードに戻ります。
「確認モード」では、矢印キーで、一行づつ確認できます。
「Check」と「Edit」を行き来しながら、確認しながら手打ち作業ができます。

円弧補間で入力ミスや定義がおかしいと、中心や半径が黄色の表示になります。
再度、「Edit」モードに移り、修正します。

ダウンロード

開発環境

C++Builder Community Edition を使用しています
このような、ソフトウェア開発環境を無料で提供していただいて
感謝!です。

まとめ

NCデータの座標確認を簡単にできないか?
の目的でこのソフトを作成しました。
おまけとして、エディタ機能も追加したので、手打ちでのNCプログミングやGコードの学習にも使用できると思います。

注意点

  • XY平面(G17)のみの対応です。
    Z軸も情報としては表示しますが、描画は、XYのみとなります。
  • 始点と終点が同じ、360°真円には対応していません。
    半円に分割して定義してください。
  • ファナック系の場合、座標値指令の小数点の「有り」「無し」で
    単位が変わる場合がありますが、このソフトは対応していません。
    互換性のためには、基本的に小数点使用をお勧めします。
  • 等高線などの、3Dパスも読み込み可能ですが、データ容量が多くなるとレスポンスはかなり悪くなります。
    待てない場合には、「強制終了」で終了してください。
  • 拡大・縮小や、キャンパスのサイズがデフォルトよりも大きくできません
    プログラムミング方法を検索中です。
    できそうであれば、次回バージョンで対応予定です。

コメント

  1. ZENKYU より:

    >始点と終点が同じ、360°真円には対応していません。
    との事ですが、
    始点、終点、中心点がわかるので描けそうな気がするのですが?

    • kazuban kazuban より:

      ZENKYUさん、こんにちは。
      そうですね。
      円要素の定義はできるのですが、まず定義した後、その円要素の輪郭上に
      始点終点が乗っかっているかの確認をしています。
      その私が策定した確認の計算式がちょっと悪さしているようです。
      たぶん、条件判断を追加すれば、どうにかなるとは思っていますが
      後回しになってます。
      拡大縮小もだいぶ完成してきたので、その後にちょっと検討してみます。

タイトルとURLをコピーしました