Skip to main content
CNC.wikiCNC.wiki

G65・G66・G67マクロ呼出のパラメータ設定と衝突防止:3大CNC比較

ファナック、シーメンス、三菱のG65・G66・G67マクロ呼び出しのパラメータ設定と衝突対策。SBM設定やG67のモーダル解除漏れによるチャックやタレットへの機械衝突、PS0129やP232等のアラーム回避を解説。加工ロット間での寸法ばらつきを防ぎ再現性を高める。

Hakan Gündoğdu
Hakan Gündoğdu

CNC CARE 共同創業者

はじめに

超硬切削工具が高速で焼き入れ鋼のバイスジョー、閉じたチャック、クランプ、あるいはインデックス機能を持つタレットへ激突する――これは、モーダルマクロ呼び出し(G66/G66.1)のキャンセル(G67)を忘れたことによる即座の物理的破壊である。プログラマーやオペレーターは、プロービングや繰り返しポケット加工などの定型動作において、ローカル変数引数を渡すためにG65やG66を頻繁に使用するが、これらのモーダル状態のキャンセルを怠ると、安全なGコードプログラムが突如として暴走する位置決めコマンドへと変貌する。ツールチェンジや二次的な座標経路に移行する前にオペレーターがG67のキャンセルブロックを実行し忘れた場合、制御装置は後続 of 移動ブロックでもマクロサブプログラムを自動的に実行し続け、破滅的な機械衝突や致命的な不良品発生を招く。このパラメータが未検証のまま量産に入ると、2ロット目から寸法ばらつきが広がり、最終検査で初めて不良が発見される。量産工程における寸法再現性の低下を防ぎ、機械的衝突のリスクを排除するためには、マクロ呼び出しコマンドの動作仕様と安全対策パラメータを完全に掌握することが不可欠である。

技術概要

仕様項目詳細仕様
コマンドコードG65 (シンプル呼び出し), G66 (モーダル呼び出し A), G66.1 (モーダル呼び出し B), G67 (モーダルキャンセル)
モーダルグループグループ 00 / ノンモーダル (G65), グループ 12 / モーダル (G66, G66.1), キャンセル (G67)
対応ブランドFanuc, Siemens, Mitsubishi
重要パラメータFanuc パラメータ 6000 (Bit 0 - G67, Bit 5 - SBM), Siemens $MC_EXTERN_FUNCTION_MASK (Bit 6), Mitsubishi パラメータ #1241 set13/bit5, パラメータ #11053 UserProgramStorage
主な制約事項マクロの入れ子(ネスト)深さは、M98サブプログラム呼び出しと比較して厳しく制限されており(Fanucは5レベル、Mitsubishiは4レベル)、G65/G66を固定サイクルと同じブロックにプログラムすることは固く禁じられています。

クイックリード

  • 単一ブロック実行にはG65を配備: カスタムサブプログラムをモーダル状態にすることなく、無条件で正確に1回だけ実行させたい場合は、G65をプログラムします。
  • G67によるモーダルの解除: 後続の移動動作中に意図しないマクロ実行が発生するのを防ぐため、G66またはG66.1のループ完了直後には必ず独立したG67コマンドを記述してください。
  • パラメータの数値タイプの検証: SiemensおよびMitsubishiシステムでの即時の制御障害を回避するため、サブプログラム番号(P)および繰り返し回数(L)には整数のみを渡してください。
  • 厳格なネスト制限の管理: オーバーランアラームを回避するため、ネストの深さを綿密に監視し、Fanucでは5レベル、Mitsubishiでは4レベルの上限以下に抑えてください。
  • 保存場所の整合: サブプログラムファイルは、Mitsubishiの#11053 UserProgramStorageのようなパラメータによって宣言された正確なディスクまたはメモリデバイスのパス内に登録してください。
  • 呼び出しブロックの隔離: 重複ワードの競合やプログラムの実行停止を防ぐため、1つのNCブロックにはマクロ呼び出しまたは固定サイクルを1つだけプログラムしてください。

基本概念

G65、G66、およびG66.1などのカスタムマクロコマンドは、サブプログラムに直接変数引数を渡すという実務上のプログラミング効果をプログラマーに提供し、極めてダイナミックな部品プログラミングや繰り返しサイクルの作成を可能にします。一般的な障害原因は、プログラマーが誤って予約済みアドレスを使用してしまうことであり、例えば標準的なG65呼び出し中に引数としてアドレスGを渡しようとすると、瞬時にPS0129アラームコードが作動して運転が停止します。プログラマーやオペレーターは、G66(すべての軸移動後にマクロを実行)やG66.1(すべてのブロックで実行)を使用する際、アクティブなモーダル状態に細心の注意を払う必要があります。オペレーターが新しいツールパスや工具交換に移行する前にモーダル呼び出しを解除するG67の記述を忘れると、CNCは意図しないマクロ実行を継続してしまいます。提供されているマニュアルは機械的な破損よりも構文エラーの解説に重点を置いていますが、解除されていないモーダルマクロは、工具をバイスジョー、チャック、クランプ、あるいはタレットに激突させる不規則で複合的な二次運動を引き起こし、深刻なハードコリジョン(衝突)やワークの全損(不良品発生)をもたらします。

安全な運用には、テスト運転中にこれらのマクロがどのように実行されるかを厳重に制御することが求められます。パラメータ6000#5(SBM)を利用することで、オペレーターはカスタムマクロステートメント内でシングルブロック停止を有効(1)にするか無効(0)にするかを明示的に制御でき、初品試作( proving )の最中に機械が検証されていない複雑な論理ループを勝手に通り抜けるのを物理的に防ぐことができます。ファナックのアーキテクチャは、マクロ呼び出し管理において非常に明確な独自の挙動を示します。第一に、ファナックはモーダルマクロの機能を2つの異なる挙動に明確に分割しています。G66は軸移動ブロックが完了するまでマクロ実行を数学的に遅延させます(カスタム穴あけパターンに最適)。一方、G66.1は移動の有無に関係なく、すべてのNCブロックに対して無条件でマクロを実行します。第二に、ファナックは厳格なパラメータエイリアス階層(パラメータ6050〜6059など)を統合しており、工作機械メーカーが標準のGコードやMコードを9000番台のマクロプログラムに直接マッピングできるようにして、オペレーターから複雑なG65構文を事実上隠蔽しています。最後に、ファナックは数学的なネスト制限を厳格に分離しており、マクロ呼び出しについては最大5レベルの制限を強制し、15レベルのサブプログラムネスト制限とは完全に独立して機能させています。

G65およびG66を利用することの実務上のプログラミング効果は、コアとなるサブプログラムを修正することなく、コントローラーのバックグラウンドメモリに変数を動的に渡しながらカスタムロジックを瞬時に実行できる点にあります。G65がマクロを正確に1回だけ実行するのに対し、G66がアクティブな場合、プログラマーとオペレーターはシステム状態を注視しなければなりません。モーダルマクロは後続のすべての移動ブロックの後に暗黙的に実行されるため、監視されていないアクティブ状態は過渡的な移動動作において致命的な事態を招きます。例えば、オペレーターがG67を指令し忘れ、急速な工具交換動作を実行したり、剛性のある周辺保持デバイスの近くに軸を位置決めしたりした場合、コントローラーは誤った位置でマクロ加工ロジックに自動的に突入します。この予期せぬ実行は、焼き入れ鋼のバイスジョー、閉じたチャック、あるいは割り出しタレットに工具を直接激突させ、壊滅的なハードコリジョンや過剰加工によるスクラップ(不良品発生)を引き起こします。安全な使用を確実にするため、オペレーターは座標系がクリアであることを保証し、クランプなどの物理的保持装置が適切に係合していることを検証し、モーダルマクロを常に個別のプログラムブロック内で系統的に隔離して暴走実行を防がなければなりません。これらの状態の管理を怠ると、深刻な座標違反を招き、チャネルを完全に麻痺させるアラームコードがトリガーされます。

コマンド構造

マクロ呼び出しの構造は、呼び出し用のGコード、対象のプログラム番号、繰り返し回数、および引数リストで構成されます。引数リストはサブプログラム内の対応する変数に数値を直接割り当てるため、入力される寸法に応じて1つのプログラムで複数のタスクを実行できます。

CNCシステムの種類に応じて、変数は番号付きのローカル変数または名前付きのシステム変数のいずれかにマッピングされます。主要な産業用プラットフォームにおいて呼び出し構文は共通していますが、各ブランドで独自のパラメータ拡張や変数のマッピング制限がサポートされています。

[FanucおよびMitsubishiの構文]
G65 P_ L_ [引数設定] ;
G66 P_ L_ [引数設定] ;
G66.1 P_ L_ [引数設定] ;
G67 ;

[Siemensの構文] G65 P... L... [引数設定] G66 P... L... [引数設定] G67

アドレス説明フォーマット備考
P呼び出されるサブプログラム番号またはファイル名整数または山括弧で囲まれた文字列FanucおよびSiemensでは整数限定。Mitsubishiは最大32文字の<ファイル名>をサポート。
L繰り返し回数(実行パス数)整数省略した場合はデフォルトでL1が適用されます。SiemensとMitsubishiは小数点(REAL形式)の入力を厳しく拒否します。
Arguments (引数)マクロに渡される動的変数A〜Zの文字(P, L, O, Nを除く)Fanuc/Mitsubishiではローカル変数(#1〜#33)にマッピングされ、Siemensではシステム変数 $C_A 〜 $C_Z に格納されます。

ブランド別応用

Fanuc

Fanucシステムにおいて、カスタムマクロ呼び出しの挙動はシステム変数と構成パラメータによって深く支配されています。プログラマーはパラメータNo. 6000およびパラメータNo. 6007を使用してマクロ制御パラメータを修正します。

標準的な構文構成では、単純呼び出しにG65、移動トリガー付きモーダル呼び出しにG66、ブロックごとのモーダル実行にG66.1を利用し、G67でキャンセル機構を提供します。

パラメータ / システム変数設定挙動関連アラーム / バージョン
Parameter No. 6000 (Bit 0)0 (非アクティブ時のG67指令でアラームPS1100を発生); 1 (冗長なG67コマンドを無視)PS1100 モーダル呼び出しなしでのキャンセル
Parameter No. 6000 (Bit 5)0 (マクロ内でのシングルブロック停止を無効); 1 (マクロ内でのシングルブロック停止を有効)SBM制御
Parameter No. 6007 (Bit 3)0 (カスタムGコードによるモーダル呼び出しがG66.1と同等の挙動を示す); 1 (G66と同等の挙動を示す)MGE制御
Parameter No. 6007 (Bit 4)0 (引数を標準NCフォーマットのまま渡す); 1 (マクロフォーマットに変換して渡す)CVA制御

警告:手動工具交換や早送り(ラピッド)への移行時にモーダルマクロをアクティブにしたままにしておくと、意図しないマクロループがトリガーされ、タレットやチャックとの深刻な機械衝突を招きます。

Siemens

Siemens制御装置は、標準のISOスタイルのダイアレクト呼び出しをネイティブのSinumerik変数にマッピングすることにより、極めて柔軟な統合を実現します。コントローラーはシステム変数 $MC_EXTERN_FUNCTION_MASK を使用してプログラム名を展開します。

構文の実行には、ノンモーダル処理にG65、モーダルマクロ呼び出しにG66、アクティブなモーダルマクロ選択の解除にG67を使用します。

パラメータ / システム変数設定挙動関連アラーム / バージョン
$C_A 〜 $C_ZA〜Zアドレス(P, L, O, Nを除く)から転送されるマッピングされたパラメータシステム変数
$C_I[], $C_J[], $C_K[]複数回プログラムされた I, J, K パラメータを格納する時系列シーケンス配列配列シーケンス追跡変数 $C_I_ORDER
$MC_EXTERN_FUNCTION_MASK (Bit 6)0 (Pを4桁にゼロパディングし、4桁を超えるとアラーム); 1 (ゼロパディングなし、8桁まで許可)Alarm 12720

警告:プログラム番号 P またはループ制限 L に対する厳格な整数フォーマットに違反すると(小数点を入力するなど)、即座にブロック実行エラーが発生し、チャンネル全体が機能不全に陥ります。

Mitsubishi

MitsubishiのCNCプラットフォームは、パラメータ駆動型のエイリアス機能を統合して、サブプログラムをカスタムコードにマッピングします。オペレーターはパラメータ #1241 およびパラメータ #11053 を構成して、引数のマッピングとプログラムの保存先を制御します。

このプラットフォームは、シンプル呼び出しのG65、モーダル呼び出しAのG66、モーダル呼び出しBのG66.1、およびアクティブなモーダル状態をキャンセルするG67をサポートしています。

パラメータ / システム変数設定挙動関連アラーム / バージョン
Parameter #1241 set13/bit50 (LおよびPを引数変数として使用不可); 1 (LおよびPを引数変数として同時に使用可能)マクロ引数有効化設定
Parameter #11053呼び出されたマクロプログラムをCNCが検索する特定のデバイスおよびディレクトリパスを定義指定外に登録された場合の P232 プログラムエラー
Parameter #7202 G[10] Type0 (M98と同等); 1 (G65と同等); 2 (G66と同等); 3 (G66.1と同等)カスタムGコード実行タイプ定義
Parameter #1081 Gmac_P0 (標準Gコード動作); 1 (システムGコードに対するエイリアスマクロ有効)Gコードエイリアス有効化設定

警告:高速高精度制御モード(G05.1 Q1など)と同時にユーザーマクロ呼び出しを実行すると、制御競合がトリガーされ、即座にP34等のプログラムエラーが発生します。

ブランド比較

比較項目FanucSiemensMitsubishi
マクロネスト深さ厳密に 5レベル に制限されています。— (ソースなし)最大 4レベル までサポート。
サブプログラムネスト深さM98を使用して最大 15レベル まで。— (ソースなし)M98/M99を使用して最大 27レベル まで。
文字列によるファイル指定— (ソースなし) (数字のみのプログラム)— (ソースなし)サポート。山括弧 <File name> を用いて最大32文字まで指定可能。
モーダル呼び出しのバリエーションG66 (移動トリガー) および G66.1 (ブロックごと実行) をサポート。G66 (軸移動トリガー) をサポート。G66 (モーダル呼び出しA、移動トリガー) および G66.1 (モーダル呼び出しB、ブロックごと実行) をサポート。
引数の配列受け渡しA〜Zのアドレスをローカル変数#1〜#33へマッピング。Gは使用禁止。システム変数 $C_A 〜 $C_Z へマッピング。1ブロックあたり最大10個の I, J, K を配列シーケンスマッピングでサポート。標準割り当て。パラメータ #1241 set13/bit5 = 1 のとき、LおよびPを同時に引数として使用可能。

技術解析

Fanuc、Siemens、Mitsubishiの各マクロアーキテクチャの根本的な相違点は、システム変数、メモリ割り当て、および構文の境界制御の管理方式にあります。Fanucは非常に体系的かつ厳格なアドレスマッピングを採用しており、各アルファベット文字は特定の番号付きローカル変数に厳しく拘束され、ネストの深さは最大5レベルに固定されています。この制御システムは、移動連動型のG66とブロック無条件型のG66.1の実行動作を論理的に完全に遮断しており、カスタムエイリアス設定にはパラメータ6050〜6059などの厳格なアドレスマップを使用します。

Siemensは、3つの高度な独自の動作構造を通じて、他の制御盤ブランドとマクロアーキテクチャを強力に差別化しています。第一に、Siemensは卓越したマルチダイアレクト(異種言語)相互運用性を提供します。ISOスタイルのG65で呼び出されたマクロは、ネイティブSinumerikのシステム変数($C_Xや$C_Aなど)に自動的に自動格納されるため、バックグラウンドのサブプログラム自体を強力なネイティブG290言語で記述しつつ、メインプログラムはレガシーなISO Dialect形式と100%の互換性を維持できます。第二に、Siemensは標準のブロック文字列に非常に深い配列ベースの引数引き渡し機能を組み込んでいます。パラメータの重複入力を破棄または上書きしてしまう他社製制御装置とは異なり、Siemensでは1つのG65ブロック内で最大10個の別個の I, J, K パラメータを渡すことができ、それらを時系列の配列(例:$C_I から $C_I[12])にマッピングしつつ、変数 $C_I_ORDER でプログラムされた順番をそのまま追跡できるため、カスタム変数テーブルを必要とせずに複雑な幾何学的パターンデータを渡すことができます。最後に、Siemensは工作機械メーカーに対し、マシンデータのビットマスクを介してプログラム番号の処理方式を高度に設計する権限を与えています。レガシーな4桁ゼロ埋め仕様を強制するか、またはエラーを発生させずに最大8桁までの近代的なプログラム名称をサポートするようにPアドレスの解釈を拡張するかを柔軟に決定できます。

Mitsubishiは、3つの異なる高度に柔軟な動作により、他のCNCプラットフォームからマクロアーキテクチャを差別化しています。第一に、軸移動ブロック完了後にのみ実行される標準のG66コマンドとは異なり、各命令ブロック(O, N, Gコードを除くすべてのブロックデータを引数として渡す)に対して無条件でマクロを実行する、極めてユニークなG66.1(マクロモーダル呼び出しB)機能を搭載しています。第二に、MitsubishiプラットフォームはGコードブロック内で英数字によるファイル名指定を直接サポートしています。伝統的な数値のPアドレスによる制約を受けることなく、山括弧 <File name> を用いて最大32文字のファイル名でマクロを呼び出せます。最後に、最大538個のカスタムまたはシステム用GコードをG65, G66, または G66.1マクロ呼び出しに直接マッピングできる、大規模なパラメータ駆動型エイリアスシステムを統合しています。パラメータ #7202 G[10] Type などを活用することで、工作機械メーカーはオペレーターに複雑な引数文字列を入力させることなく、独自のサイクルロジックを機械の基盤アーキテクチャに永続的に埋め込むことができます。

プログラム例

Fanucの例:ポケットミルサイクル

%
O0001 (MAIN PROGRAM - POCKETING SETUP) ;
G90 G54 G00 X0 Y0 Z10. ;
G65 P9010 L1 X100.0 Y80.0 Z-5.0 F300 ; ; サブプログラム9010を寸法引数付きでシンプル呼び出し
G00 Z100. M30 ;
%
%
O9010 (POCKET ROUTINE - SUBPROGRAM) ;
#10 = #24 / 2.0 (X幅の半分) ;
#11 = #25 / 2.0 (Y幅の半分) ;
G01 Z#26 F#9 ;                         ; 引数Zで指定された加工深さへ切り込み
G01 X#10 F#9 ;                         ; X幅の半分まで切削移動
Y#11 ;                                 ; Y幅の半分まで切削移動
X-#10 ;                                ; マイナスX方向へ切削移動
Y-#11 ;                                ; マイナスY方向へ切削移動
X0 Y0 ;                                ; 中心位置へ復帰
M99 ;                                  ; メインプログラムへ戻る
%

空運転 (dry run): オペレーターがG65ブロックを実行すると、制御装置はプログラムO9010を読み込み、アドレスX(100.0)を変数#24に、Y(80.0)を#25に、Z(-5.0)を#26に、F(300)を#9に自動マッピングします。ツールは指定の送り速度300でZ-5.0まで切り込みを行います。その後、半幅#10(50.0)および#11(40.0)を算出し、矩形のポケット形状パスを順番に切削します。M99ブロックに達すると、サブプログラムを抜け、制御権はメインプログラムO0001のG00ブロックに直接返されます。

Siemensの例:補間ボア配列

; MAIN PROGRAM - CIRCULAR MOVEMENT
G90 G54 G00 X0 Y0 Z50.0
G66 P1234 A10.0 C45.0 X100.0 Z-10.0    ; 移動ブロック完了後にモーダル呼び出しを実行
X50.0 Y50.0                            ; 移動ブロックによりサブプログラム1234をトリガー
X150.0 Y100.0                          ; 2番目の移動ブロックにより再度サブプログラム1234をトリガー
G67                                    ; アクティブなモーダルマクロ呼び出しをキャンセル
G00 Z100.0 M30
%
; SUBPROGRAM 1234 - BORE HELIX
G01 Z$C_Z F250                         ; アドレスZから渡された深さへ切り込み
G03 I$C_A U$C_C                        ; 引数AとCを使用した円弧ヘリカル進入
G01 Z5.0
M99
%

空運転: 制御装置はG66を処理し、引数 A=10.0、C=45.0、X=100.0、Z=-10.0 を伴ってサブプログラム1234をロードします。各軸が X50.0 Y50.0 へ移動完了すると、モーダルトリガーが作動してサブプログラム1234が暗黙的に実行されます。ツールは指定された Z-10.0 ($C_Z) まで切り込み、引数 $C_A と $C_C を用いてヘリカル進入を行います。M99による脱出後、軸が新しい座標 X150.0 Y100.0 へ移動すると、その新しい位置で再びサブプログラム1234がトリガーされます。最後にG67ブロックが実行され、ツール退避前にモーダル状態が適切に解除されます。

Mitsubishiの例:カスタム測定ルーチン

; MAIN PROGRAM - FILENAME TARGETING
G90 G54 G00 X0 Y0 Z25.
G65 <PROBE_X> L1 X150. Y100. S2. ;     ; ファイル名指定によるターゲット引数付きマクロ呼び出し
G00 Z100. M30
%
; FILENAME: PROBE_X
(SUBPROGRAM FOR SIDE MEASUREMENT)
G01 X#24 F150 ;
IF [#19 EQ 2.] GOTO 10 ;
#30 = #5021 ;
GOTO 20 ;
N10 #30 = #5022 ;
N20 G00 X0 ;
M99 ;
%

空運転: オペレーターが英数字のファイル名指定 <PROBE_X> を含むG65ブロックを起動します。制御装置はパラメータ #11053 UserProgramStorage で設定されたデバイスディスクを検索し、ファイル PROBE_X をロードし、引数X(150.0)を変数#24に、Y(100.0)を#25に、S(2.0)を#19にそれぞれ割り当てます。測定プローブは送り速度150でX150.0に移動します。変数#19が2.0であるため論理分岐はN10へジャンプし、位置測定レジスタ#5022の現在値を#30に格納します。その後プローブはX0まで退避し、M99でメインプログラムへ復帰します。

エラー解析

ブランドおよびアラームコードトリガー発生条件オペレーター側での症状根本原因 / 対策
Fanuc - PS1100G66/G66.1モーダル呼び出しが有効でない非アクティブ時に、G67キャンセルコマンドを実行した場合。操作パネル上の赤色のアラームランプが点灯し、プログラムが即座に停止します。Parameter 6000#0 が 0 に設定されています。プログラムから不要なG67を削除するか、Parameter 6000#0 を 1 に変更して警告を無視するようにしてください。
Fanuc - PS0129標準のG65またはG66引数割り当てリストに、アドレス文字「G」が含まれている場合。マクロ呼び出しブロックの構文解析時に、即座に構文エラーが発生し自動運転が停止します。引数としてアドレスGは使用禁止です。引数コードをGから別の変数文字(A〜Z、ただし P, L, O, N を除く)に変更するか、G66.1を使用してください。
Siemens - Alarm 12720G65またはG66を実行した際、Pアドレスを用いてプログラム番号を指定していない場合。操作パネル表示器にサイクル実行アラームが立ち上がり、工作機械が非常停止します。呼び出し先サブプログラム番号の記述漏れです。マクロ呼び出しブロックのPアドレスに有効なプログラム番号を記述してください。
Siemens - Alarm 12722G65またはG66が、固定サイクル(G81〜G89など)や他のマクロと同一のNCブロック内に記述されている場合。CNCが該当ブロックの構文解析を拒否し、軸の送り移動が完全にフリーズ(ロックアウト)します。ブロック記述の競合です。マクロ呼び出しと固定サイクル(またはセカンダリマクロコマンド)を連続する別の単独ブロックに分離してください。
Mitsubishi - P276CNCシステムがG66またはG66.1のモーダル呼び出しモードにない状態で、G67マクロモーダルキャンセルコマンドを実行した場合。NCサイクルが停止し、プログラム実行エラーが表示されます。不適切なキャンセルシーケンスです。プログラムを点検し、G67は必ず有効なモーダルマクロ処理の終了ブロック直後にのみ記述されるようにしてください。
Mitsubishi - P232呼び出し先のユーザーマクロプログラムが、許可されていない記憶デバイス内に登録されている場合。ファイル消失エラーが発生し、自動運転サイクルが途中で強制停止します。保存パスのミスマッチです。マクロのサブプログラムファイルを、パラメータ #11053 UserProgramStorage で規定された正しい記憶メディアまたはディレクトリへ移動してください。

実務応用ノウハウ

マクロ呼び出しコマンドの運用において、最も深刻な設備損傷と不良品発生を防ぐための核心は、モーダル状態の厳格な管理とパラメータの事前検証にある。モーダルマクロ呼び出し(G66/G66.1)が有効な間、制御装置はすべての移動ブロック(またはすべてのNCブロック)の後にサブプログラムを自動実行するため、移動経路の途中でG67による解除を怠れば、ツールは意図しない位置で加工動作に突入する。これにより、高速送り中のツールが工作物保持具であるバイスジョー、クランプ、チャック、あるいは自動割り出しを行うタレットへ激突するハードコリジョン(激しい衝突)が発生し、工作機械全体を大破させるだけでなく、高価なワークを廃棄処分(不良品発生)にする結果となる。

段取り前に6000番パラメータ(特にシングルブロック停止を制御するSBMビット5やG67の重複呼び出し時の挙動を決定するビット0)を確認することで、このコマンドで最も多い非計画停止を防げる。このパラメータが未検証のまま量産に入ると、2ロット目から寸法ばらつきが広がり、最終検査で初めて不良が発見される。ファナックでは、Parameter No. 6000のSBMを「1」に設定することで、量産開始前のテスト運転( proving )においてマクロ内の論理ループをシングルブロックごとに停止・検証することが可能になり、予期せぬ暴走を物理的に防止できる。三菱電機システムでは、パラメータ#11053(UserProgramStorage)で指定された正規の記憶デバイス(メモリカードや特定ディレクトリ)にマクロサブプログラムが保存されていない場合、自動運転中に突如としてP232プログラムエラーが発生し、送り軸が急停止する。これにより、ロット間での寸法ばらつきや再現性の低下が生じ、寸法安定性を維持できなくなる。シーメンスシステムでは、 プログラム番号 P や ループ制限 L に対する小数点(REAL形式)の誤入力を完全に排除し、電圧反転によってエンコーダやモジュールを瞬時に物理破壊する恐れのある接続ケーブル(6FX2002-2EQ00と6FX2002-2CH00など)の誤配線や、プロービング用の変数($C_I[]や$C_I_ORDER)の配列境界のオーバーランを事前に検証することが極めて重要である。

関連コマンド

  • M98 / M99 サブプログラム呼び出し・復帰: 引数変数の引き渡しを伴わずにサブプログラムを実行し、ネスト制限はFanucで最大15レベル、Mitsubishiで最大27レベルに拡張されます。
  • G60 正確決め停止 / 連続パスモード: 座標補間ステップ間での確実な軸減速を強制し、高速フィードのマクロループ中のコーナー丸みを完全に防止します。詳細は、G60 正確決め停止 を参照してください。
  • G62 / G63 コーナーオーバーライド / タッピングモード: 重要なポケット加工やタップ用サブプログラム内部での切削フィードの自動減速やエッジの欠けを防ぎます。詳細は、G62/G63 コーナーオーバーライド・タッピング を参照してください。
  • G50 / G92 座標系設定: グローバルなワーク座標を設定し、マクロ内の動的なオフセット変数が物理的なワーク座標原点と完全にアライメントされるようにします。詳細は、G50/G92 座標系設定 を参照してください。

おわりに

G65、G66、G67コマンドを効果的に展開することは、静的なGコードプログラムを動的で高効率な引数駆動サイクルへと最適化するための鍵である。しかし、モーダルコマンドの解除漏れやパラメータ検証の怠りは、瞬時に設備破壊や寸法の不整合を引き起こす。安定した量産を確立するためには、すべての加工サイクル開始前およびロットの切り替え時に、モーダルマクロの解除を確実に行うG67コマンドの記述、およびアンプやメモリに関連する制御パラメータの整合性チェックを標準の保守プロトコルとして運用することを強く推奨する。徹底したパラメータ管理と事前シミュレーションこそが、非計画停止を完全にゼロにし、長期間にわたって寸法再現性の高い合格品を生産し続けるための唯一の方法である。

よくある質問

大量生産(量産ロット)におけるワークの寸法ばらつきを防ぐため、モーダルマクロ(G66)パラメータで最優先で検証すべき設定は何ですか?

量産ロット間での寸法再現性を確保するには、パラメータ引数の変換フォーマットを指定するファナックのパラメータNo. 6007#4(CVA)の設定整合性を最優先で検証する必要があります。このパラメータが正しく設定されていないと、標準NCフォーマットからマクロ形式への変数データ変換で微小な数値丸め誤差やオフセット変換のズレが累積し、2ロット目以降に仕上げ寸法が徐々にばらつく原因となります。実加工に入る前に、CVAパラメータのビット値(0または1)と変数の受け渡し後の実数変換結果を手動でテスト・再計算し、計算値との整合性を厳密に確認するアクションを実行してください。また、堅牢な診断プロセス全体の構築については、CNCシステム故障の7ステップ診断手順を参照してください。

G67モーダルマクロキャンセルコマンドを実行した際、CNC画面にPS1100やP276のアラームが発生する根本原因と対策は何ですか?

これらのアラームは、制御装置がモーダル呼び出しモード(G66/G66.1)になっていない非アクティブ状態のときに、重複または不要なG67キャンセルコマンドを実行した場合に発生します。ファナックではパラメータNo. 6000#0(ビット値が0の場合にPS1100が発生)の設定、三菱ではP276エラーとしての仕様です。対策として、メインプログラム内のG67指令位置を点検し、G66ブロックと対をなす standalone(独立)ブロックとして正しく配置されているかを確認します。アラーム停止を防ぐため、実加工前にプログラムの構文ロジックをトレースし、不要なG67呼び出しブロックを削除するか、ファナックであればパラメータ6000#0を「1」(エラー無視)に書き換える予防アクションを実施してください。アラーム分類の体系的解説は、SETAL CNCアラーム分類マニュアルを参照してください。

マクロサブプログラムを呼び出すPアドレスやLアドレスに、誤って小数点を入力した場合の動作リスクと対策は何ですか?

三菱電機やシーメンスの制御システムにおいて、プログラム番号(P)や繰り返し回数(L)に小数点形式の数値を入力すると、CNCのシンタックスプリプロセッサが即座に浮動小数点エラー(P33等)を発生させ、自動サイクルを緊急停止させます。この構文違反は自動運転の突然の非計画停止を引き起こすだけでなく、もし安全バリアの設定やシングルブロック停止(SBM)の検証が不十分な場合、ツールが退避せず途中で停止して主軸チャックやクランプデバイスと干渉するリスクがあります。対策として、すべてのマクロ呼び出しブロック(G65/G66)のPおよびLアドレスに小数点が一切含まれていないことをテキストエディタの検索機能で一括検査し、厳格な整数(例:P1000、L2)としてプログラムを修正・保存するアクションを徹底してください。異常発生時の安全な原点復帰手順は、X01異常検知アラームガイドラインを参照してください。

まだ解決しませんか?

このトピックについて、AIアシスタントに自然言語で質問できます。検証済みの情報源に基づいており、ハルシネーションはありません。

AIアシスタントに質問する
Hakan Gündoğdu
Hakan Gündoğdu
  • CNC CARE Co-Founder (May 2025 - Present)
  • Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
  • Reis CNC Service Engineer (2003 - 2005)
  • Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)

CNC工作機械業界のあらゆる分野で25年以上の経験を持ち、ブランドに依存しないコンサルティング、エンジニアリング、純正部品サービスを提供するCNC CAREの共同創業者として活動を続けています。

関連記事

このトピックに関する他の記事

Siemens CYCLE800の使い方:平面旋回とツールアライメント

SiemensのCYCLE800による3+2軸加工をマスターしましょう。平面旋回、ツールアライメント、パラメータ設定から、アラーム61190や61153といったエラーのトラブルシューティングまで詳しく解説します。

SiemensProgramming

Siemens CYCLE72 パスミーリング: 輪郭加工の設定とプログラム解説

SinumerikのCYCLE72輪郭ミーリングを徹底解説。_KNAMEや_VARIの正しいパラメータ設定、シミュレーション時のアラーム61123回避方法、チャッククランプ確認によるアラーム700017防止まで、機械停止や不良品発生を防ぐ実務ノウハウを紹介します。

SiemensProgramming

Siemens CYCLE952旋削サイクルの設定とプログラム解説

SinumerikのCYCLE952輪郭旋削サイクルを徹底解説。_PRGや_CONRによるブランク境界定義、アラーム61051/61059の回避方法、および設定データSD55212による自動メモリ管理の設定手順まで詳しく紹介します。

SiemensProgramming

Siemens SLOT1/SLOT2溝フライスcycleプログラミング

Siemens製Sinumerikの溝加工cycleSLOT1・SLOT2のプログラミングを解説。パラメータ設定、Alarm 61000を防ぐ工具半径補正、VARIを用いた障害物回避など、量産時のロット間再現性を高め不良品発生を防ぐための実務ノウハウを紹介します。

SiemensProgramming