Skip to main content
CNC.wiki

G67モーダルマクロ呼び出しキャンセルの設定と使い方

G67モーダルマクロ呼び出しキャンセルのプログラミング方法とパラメータ設定を徹底解説。FanucのパラメータNo. 3402やMitsubishiの#1151の設定を比較し、タレットとワーク保持具のハード衝突を防ぎ、量産加工の信頼性と繰り返し精度を高める方法を解説。

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

CNC CARE 共同創業者

はじめに

加工完了後にG67マクロモーダル呼び出しキャンセル指令を記述し忘れると、ツールタレットが退避移動する際に意図しないマクロプログラムが再起動し、バイスジョーやテーブル固定クランプ、スピンドルチャックなどのワーク保持具にタレットが猛スピードで突っ込む重大なハード衝突(クラッシュ)を引き起こします。この単純なプログラムミスによる非計画停止やツールの破損は、ワークの変形や軸ボールねじの損傷を招き、最悪の場合はロット全体の再現性の低下や不良品発生の原因となります。量産工程において長期間にわたり加工の信頼性と繰り返し精度を維持し、段取り替え時の衝突事故を防ぐためには、Group 12またはGroup 14のモーダルグループ状態を適切に管理し、G67コマンドで不要なモーダル呼び出し状態を確実にクリアすることが極めて重要です。

技術概要

技術属性仕様詳細
指令コードG67 (カスタムマクロモーダル呼び出しキャンセル)
モーダルグループグループ12 (FanucシステムA), グループ14 (Fanuc B/C, Siemens ISO Dialect, Mitsubishi)
サポートブランドFanuc, Siemens, Mitsubishi
重要パラメータFanuc Parameter No. 3402 Bit 6 (CLR), Siemens MD 18800, Mitsubishi Parameter #1151
主な制限事項単独の準備機能ブロックとしてプログラミングする必要があります。座標パラメータや引数データは受け付けません。

クイックリード

  • 先読みモーションカーネルを解放するため、座標パターンサイクルの完了直後に単独のG67コマンドブロックをプログラムします。
  • リセットまたは電源投入時にグループ12/14のGコードをG67に初期化するため、FanucシステムでParameter No. 3402 Bit 6が1に設定されていることを確認します。
  • G67ブロックをコンパイルするため、G291を介してSiemens SINUMERIKバイリンガルインタープリタをISO Dialectモードに切り替えます。
  • Program Error P652を防止するため、サブ系統制御(G122/G144)を実行する前に、すべてのアクティブなモーダルマクロ呼び出しをキャンセルします。
  • NCリセット時にGコードモーダルグループがG67キャンセル状態に初期化されるよう、MitsubishiのParameter #1151 rstinitを1に設定します。
  • 即時のプログラムエラー停止を防ぐため、G66モーダル呼び出しがアクティブでない状態でG67コマンドを実行しないようにします。

基本概念

G67カスタムマクロモーダル呼び出しキャンセルコマンドの主な機能は、先読みモーションカーネルをモーダルマクロ実行状態から解放し、標準のブロックごとの経路実行を復元することです。モーダル呼び出し(G66またはG66.1)がアクティブな場合、制御システムはボルト穴配列や格子パターンなどの繰り返し形状を実行するために、すべての移動ブロック(モーダルA)またはすべての単一ブロック(モーダルB)の後に指定されたマクロプログラムを自動的に起動します。特定の座標シーケンスが完了したら、プログラマはG67を指令してモーダル状態をキャンセルしなければなりません。

段取りオペレータやプログラマは、座標値、シングルブロック停止、およびアクティブなGコードモーダル状態に対して細心の注意を払う必要があります。公差確認のためにシングルブロックやフィードホールドを介して機械を停止するなどの手動介入時や、非常停止が発生した場合、モーダルGコードの状態は#1151 rstinitなどのパラメータによって管理されます。リセットが押されたとき、#1151が0に設定されていると、制御システムはG66モーダル状態を保持したままになる場合があります。モーダル呼び出しがキャンセルされていない状態で手動のG67キャンセルを実行せずに運転を再開すると、誤ったマクロパスが実行され、工具がワークに食い込んで不良品(スクラップパーツ)が発生する原因になります。オペレータは、手動ポジショニングシーケンスを実行する前に、HMI表示のモーダルステータス画面を検査し、G67がアクティブであること(モーダル呼び出しがキャンセルされていること)を確認する必要があります。

コマンド構造

カスタムマクロモーダル呼び出しキャンセルの構文は、引数を持たない完全なスタンドアロン形式です。Fanuc Alarm PS0033などのブロック構文エラーコードを防ぐため、G67は独立したブロックとしてプログラミングする必要があります。座標、繰り返し回数、またはローカル変数引数は一切受け付けず、単にモーダル状態のキャンセルスイッチとしてのみ機能します。モーションカーネルがG67ブロックを解析すると、サブプログラムループが終了し、標準の座標解釈が復元されます。

キャンセル指令のグループマッピングは、Gコードシステムの構造に依存します。G67は、GコードシステムA(主に旋盤システム)ではグループ12、GコードシステムB/C(マシニングセンタリスト)ではグループ14に属します。システムパラメータを介してデフォルトのリセット状態を変更することで、オペレータはG67を安全なシステム起動デフォルトとして確立し、プログラム起動時にアクティブなマクロ呼び出しが引き継がれるのを防ぐことができます。

G67 ;
ブランド対象パラメータ機能説明値 / 状態範囲
FanucParameter No. 3402 Bit 6 (CLR)Gコードのクリア状態初期化を決定します。1に設定すると、グループ12/14のデフォルトがG67になります。0 (クリアしない) または 1 (G67にクリアする)
FanucParameter #1151 rstinitリセット中にG67モーダル状態を初期化するか保持するかを指示します。バイナリ (0 または 1)
SiemensMD 18800 $MN_MM_EXTERN_LANGUAGEISO Dialectモードに必要な外部CNCコンパイラを有効にするために1に設定する必要があります。0 (無効) または 1 (有効)
SiemensMD 20150 $MC_GCODE_RESET_VALUESパワーアップまたはチャネルリセット時のデフォルトのGコードグループ状態を設定します。Gコードリスト
MitsubishiParameter #1151 rstinitNCリセット時のG67モーダル初期化状態を設定します。0 (保持) または 1 (G67に初期化)
MitsubishiParameter #1296 ext32/bit5連続的な軸移動のためにマクロ文の一括処理を有効にします。0 または 1

ブランド別応用

Fanuc

Fanucシステムでは、G67はGコードグループ12または14に割り当てられています。プログラマはParameter No. 3402 Bit 6を使用してシステムデフォルトをG67に設定し、Parameter #1151 rstinitを使用してリセット動作を制御します。

; Fanuc: G67 ; マクロモーダル呼び出しの解除
カテゴリシステム項目説明
パラメータParameter No. 3402 Bit 6 (CLR), Parameter #1151 rstinit電源投入時またはリセット時にグループ12/14をG67に初期化し、モーダル保持状態を制御します。
アラームProgram Error (P232), Alarm PS0033G66がアクティブでない状態でG67が指令されるとP232がトリガーされ、G67が独自の独立したブロックでプログラムされていない場合はPS0033がトリガーされます。
バージョンSystem A, B, CG67はSystem A(旋盤用)ではグループ12、Systems B/C(フライス加工用マシニングセンタ用)ではグループ14になります。

警告: モーダルマクロ呼び出しがアクティブでないときにG67を指令すると、即座にProgram Error (P232)が発生し、機械が停止します。

Siemens

Siemens SINUMERIK制御は、ISO DialectモードでのみG67をコンパイルします。プログラマはMD 18800を介してこのコンパイルモードを有効にし、MD 20150を介してデフォルト設定を構成します。

; Siemens: G291 ; ISO Dialectモードへ切り替え
G67 ; アクティブなマクロモーダル呼び出しのキャンセル
G290 ; ネイティブのSiemensモードへ切り戻し
カテゴリシステム項目説明
パラメータMD 18800 $MN_MM_EXTERN_LANGUAGE, MD 20150 $MC_GCODE_RESET_VALUES外部ISO Dialect言語を有効にし、デフォルトのリセットGコード値を設定します。
アラームAlarm 61800, Alarm 12722G291コンパイラが無効な場合はAlarm 61800がトリガーされ、同一行内で複数のサブルーチン呼び出しが解析された場合はAlarm 12722がトリガーされます。
バージョンSINUMERIK 840D sl vs. 802D sl840D slはワイドスクリーンディスプレイレイアウトとアクティブな衝突回避チェックをサポートしますが、802D slはマシンパラメータデータがロックされています。

警告: MD 18800が0に設定されているときに、ISO DialectモードのG291に切り替えようとすると、Alarm 61800が発生し、翻訳機能が無効になります。

Mitsubishi

Mitsubishi制御では、G67はグループ14に分類されます。プログラマはParameter #1151 rstinitおよびParameter #1296 ext32/bit5を確認して、動作を調整します。

; Mitsubishi: G67 ; グループ14のモーダルマクロ呼び出しキャンセル
カテゴリシステム項目説明
パラメータParameter #1151 rstinit, Parameter #1296 ext32/bit5グループ14のモーダルリセット初期化を構成し、マクロ呼び出しを制御文または実行コマンドの間で切り替えます。
アラームProgram Error, Program Error (P728)アラーム条件としてG66がない状態でG67が指令されるとProgram Errorが発生し、加工中断プログラムの内部でグループ14のコマンドが発生するとP728がトリガーされます。
バージョンM80V Type B Series, レガシー M2/M0 形式M80V Type Bシリーズは、アクティブなモーダルマクロ呼び出し中に高度なGコードの実行を制限します。レガシーM2/M0形式は古いタイプのサブルーチン呼び出しに対応しています。

警告: 加工中断/後退プログラムの内部でG67を指令すると、Program Error (P728)が発生し、軸の退避復帰シーケンスが停止します。

ブランド比較

比較項目FanucSiemensMitsubishi
モーダルGコードグループグループ12 (System A) / グループ14 (Systems B/C)グループ12 (System A) / グループ14 (G291でのSystems B/C)グループ14 (フライス加工のグループ14または19)
コンパイラ環境単一の連続インタープリタバイリンガル切り替えコンパイラ(G290ネイティブ、G291 ISO Dialectモード)単一コンパイラ、G188/G189でフォーマット切り替え可能
変数構造ローカル変数 #1 から #33$C_ プリフィックス付きの構造化システム変数(ハッシュ記号は不使用)ローカル変数 #1 から #33
プログラム番号フォーマット標準のP(プログラム番号)およびL(繰り返し回数)マシンデータ MD 18800 および $MC_EXTERN_FUNCTION_MASK 構成Parameter #8129 および #1241 でL/Pを引数として検証
後退 / ロールバック手動ハンドルでのロールバック復帰不可ネイティブフレームロールバック中にワーク原点オフセットとモーダルが選択解除される手動任意逆転運転 (G127) でモーダル情報保存ブロックを使用してモーダルを追跡

技術解析

マクロキャンセルの内部ロジックは、Fanuc、Siemens、Mitsubishiがローカルレジスタとコンパイラをどのように処理するかにおいて根本的な違いを示しています。FanucとMitsubishiの制御システムは、G66/G65の転送パラメータを渡すためにフラットな変数マッピング構造(変数 #1 から #33)を使用します。逆にSiemensは、ネイティブモードではこのフラットなレジスタを破棄し、$C_ システム変数($C_A から $C_Z、および $C_I[0..9] など)を使用した構造化フォーマットを採用しており、これによりオブジェクト指向のマクロ環境が実現されます。

インタープリタの実行もブランドによって異なります。Siemensは、ISOスタイルのG66/G67ブロックをコンパイルするためにG291を使用したバイリンガルコンパイラの切り替えを必要としますが、Fanucは単一の連続的なインタープリタフロー内でマクロ呼び出しをネイティブに解析します。Mitsubishiは、旋盤(ターニング)とマシニングセンタ(ミーリング)システムの間でモーダルマクロ呼び出し構造を動的に切り替えるプログラムフォーマットスイッチ(G188/G189)を利用します。

座標の復帰も重要な相違点です。Mitsubishiは手動任意逆転運転(G127)をサポートしており、手動ハンドルでのロールバック中にアクティブなマクロモーダル位置とオフセットを追跡するためにモーダル情報保存ブロックを使用します。Fanucには同等の手動ハンドルロールバック追跡機能がなく、Siemensはネイティブフレームのロールバック中にアクティブなワーク原点オフセットとモーダルを完全に選択解除します。

プログラム例

Fanucのプログラミング例

G90 G54 G00 X0 Y0 Z10.0 ; 絶対座標指令
G66 P1234 A10.0 B20.0 ; プログラム O1234 に対してモーダルマクロ呼び出しを起動
X50.0 Y50.0 ; 移動ブロック1、サブプログラム O1234 を実行
X100.0 Y100.0 ; 移動ブロック2、サブプログラム O1234 を実行
G67 ; モーダルマクロ呼び出しをキャンセル
G00 X0 Y0 ; マクロを起動させずに原点復帰

空運転 (dry run) 手順: 機械加工を行う前に、メインプログラムとサブプログラム O1234 をロードします。操作盤の空運転スイッチとシングルブロックモードを有効にします。プログラムを順に実行し、各移動ブロックの座標終点でサブプログラムが正確に実行されることを現在値表示画面で確認します。原点への復帰動作の前に G67 キャンセルブロックが実行されることを確認し、タレットがワーク保持クランプに突っ込むような誤ったマクロ動作が実行されないことを検証します。

Siemensのプログラミング例

G291 ; ISO Dialectモードに切り替え
G90 G54 G00 X0 Y0 Z10.0 ; 絶対座標指令
G66 P0100 A10.0 B20.0 ; プログラム O0100 に対してモーダルマクロ呼び出しを起動
X50.0 Y50.0 ; 移動ブロック、サブプログラム O0100 を実行
X100.0 Y100.0 ; 移動ブロック、サブプログラム O0100 を実行
G67 ; モーダルマクロ呼び出しをキャンセル
G00 X0 Y0 ; 安全に原点へ復帰
G290 ; ネイティブのSiemensモードに切り戻し

空運転の手順: マシンデータ MD 18800 が有効(1)であることを確認します。空運転速度のオーバーライドを低い値に設定します。シングルブロックモードでプログラムを実行します。SINUMERIK 画面の G グループ表示を監視し、キャンセルブロックの実行中にモーダル G66 が G67 にクリアされることを確認します。安全退避境界においてサブルーチン SPF0100 を実行することなく、軸が G54 X0 Y0 に復帰することを確認します。

Mitsubishiのプログラミング例

G90 G54 G00 X0 Y0 Z10.0 ; 絶対座標指令
G66 P1000 A10.0 B20.0 ; プログラム O1000 に対してモーダルマクロ呼び出しを起動
X50.0 Y50.0 ; 移動ブロック、サブプログラム O1000 を実行
X100.0 Y100.0 ; 移動ブロック、サブプログラム O1000 を実行
G67 ; グループ14のモーダルマクロ呼び出しをキャンセル
G00 X0 Y0 ; 安全に原点へ復帰

空運転の手順: Parameter #1241 set13/bit5 が有効であることを確認します。空運転モードでプログラムを実行します。工具経路が逸脱した場合は、手動任意逆転運転(G127)の手動ハンドルを使用して軸を後退させます。アクティブな座標がモーダル情報保存ブロック内で正しく追跡されていることを確認します。原点退避の前に G67 がグループ14のモーダルをクリアすることを確認します。

エラー解析

ブランドアラームコードトリガー条件オペレータの症状根本原因 / 対策
FanucProgram Error (P232)対応するG66またはG66.1モーダルマクロ呼び出しがアクティブでない状態でG67を指令した。NCコンソールにプログラムエラーメッセージが点滅し、自動運転サイクルが停止します。G67を指令する前にG66またはG66.1がアクティブであることを確認し、冗長なキャンセルブロックを削除します。
FanucAlarm PS0033G67が独立したブロックでプログラムされていない(例:座標移動と同じ行にプログラムされている)。ディスプレイに Alarm PS0033 (Block Syntax Error) が表示され、システムが即座に停止します。他の座標移動やMコードコマンドを含めず、G67を専用の独立したブロックにプログラムします。
SiemensAlarm 61800MD 18800が無効なときにG291インタープリタの切り替え、またはG67コマンドが実行された。SINUMERIK 画面に「External CNC language option missing」と表示され、処理が停止します。バイリンガルコンパイルを有効にするため、マシンデータ MD 18800 $MN_MM_EXTERN_LANGUAGE を1に設定します。
MitsubishiProgram Error (P728)加工中断/後退プログラムの内部でG66、G66.1、またはG67を指令した。ディスプレイにプログラムエラーコードが点滅し、軸の退避シーケンスが停止します。退避や加工中断ルーチンの内部でグループ14のGコードをプログラムしないようにします。

実務応用ノウハウ

リセット操作や自動運転の非常停止時に、Parameter No. 1151 rstinit が 0 に設定されていると、アクティブなG66モーダルマクロ状態がメモリからクリアされずに保持されるため、機械の再起動時にタレットがバイスジョーやスピンドルチャックなどのワーク保持具に衝突する危険があります。このような深刻な機械事故や不良品発生を防ぐために、段取りオペレータは自動運転前に必ずHMI画面でアクティブなモーダルテーブルの中にG67がロードされていることを目視確認しなければなりません。また、FanucやMitsubishiでサブ系統制御(G122/G144)や加工条件選択(G120.1/G121)などの高度な機能を使用する場合は、事前にG67を実行してモーダルグループ状態をキャンセル状態に復帰させておくことが必須です。さらに、Mitsubishi制御の M80V Type B シリーズなどで、G66/G66.1モーダルがアクティブなまま高精度スプライン補間や工具先端点制御(G43.4)、傾斜面加工(G68.2)を起動すると、Program Error (P39) などのソフトウェアロックアラームが発生し、軸動作が強制停止します。連続加工での信頼性と繰り返し精度を保証し、製品ロットごとの寸法ばらつきを防ぐためにも、マクロの終了ブロックには必ずG67を単独で記述し、制御盤のパラメータ設定を最適化しておくことが、現場での最優先事項です。

関連コマンド

  • G65 (カスタムマクロ単純呼び出し):サブプログラムを1ブロックで1回だけ実行し、キャンセル用のG67を必要としません。
  • G66 (カスタムマクロモーダル呼び出しA):G67によってキャンセルされるモーダルマクロ呼び出し状態をアクティブにします。
  • G64 (連続パスモード):移動ブロック間の連続した経路補間を可能にしますが、キャンセルされていないマクロのプリプロセッサストップによって中断される可能性があります。
  • G61 (正確位置決めモード):高い幾何精度を確保するため、モーダルマクロの繰り返しの間で正確な座標チェック停止を強制します。

おわりに

モーダルマクロ制御における安全マージンを確保するためには、座標プログラムの直後にG67キャンセルコマンドを単独ブロックで確実に操作手順に組み込むプログラミング習慣を徹底させることが最も効果的な対策です。これに加え、各制御システムの初期化パラメータ(FanucのParameter No. 3402 Bit 6やMitsubishiのParameter #1151)をクリア設定(1)に変更しておくことで、万が一のオペレータ介入時にも不慮の動作や不良品発生を防ぐセーフティネットが構築されます。高精度な量産現場における信頼性と繰り返し精度は、こうした小さなパラメータ検証と体系的なプログラム構造の積み重ねによってのみ維持されます。

よくある質問

G67モーダルマクロのキャンセルが漏れた場合、ロットごとの加工品質や寸法ばらつきにどのような影響を及ぼしますか?

キャンセルコマンドG67の記述がないと、加工完了後にツールタレットが退避位置に移動する際にも不要なマクロプログラムの演算が継続され、加減速制御やルックアヘッドバッファが一時的に枯渇します。これにより、軸移動のわずかな時間差やdwell marks(加工傷)が生じ、2ロット目以降で寸法の再現性が低下して最終検査で初めて不良が発見される結果となります。対策:量産前に必ずモーダルステータス画面でG67がアクティブ(モーダルクリア)になっていることを確認し、退避移動の前にG67ブロックが単独で実行されるようプログラムを構築してください。

NCリセットを押した際にG66モーダル呼び出しが解除されず保持される現象を防ぐための、具体的なパラメータ設定手順を教えてください。

FanucシステムではParameter No. 3402のビット6(CLR)を1に設定し、さらにParameter #1151 rstinitを1に設定してください。これにより、リセット処理または電源投入時に制御システムが自動的にGroup 12およびGroup 14のGコードをG67キャンセル状態にリセットし、メモリ内に前処理のモーダルが残る危険を排除できます。対策:機械の立ち上げ時にシステムパラメータ設定画面を開き、対象ビットが「1」になっていることを照合し、段取りシートの確認項目に加えてください。

G67をプログラムしているにもかかわらず、Alarm PS0033 や Program Error (P232) が発生するのはなぜですか?

Alarm PS0033はG67が座標移動ブロックと同じ行にプログラムされていることが原因で、G67は完全に独立した単独ブロックで記述する必要があります。一方、Program Error (P232)はモーダルマクロ(G66/G66.1)が有効化されていないのにG67を読み込んだ場合にトリガーされます。対策:エラーが発生した際はメインプログラムのG66指令とG67の位置を確認し、G67が独自のブロックにプログラムされていること、またマクロ呼び出しが有効な領域でのみ実行されていることを確認してください。

まだ解決しませんか?

このトピックについて、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 - 2008)
  • Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)

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

関連記事

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

Siemens G71/G710メトリック寸法プログラミング設定ガイド

Siemens SINUMERIK制御におけるG71およびG710メトリック寸法設定のプログラミング方法を解説。MD 10240パラメータ検証から、Alarm 14800や12080などの構文エラー回避、回転軸FGREFファクタ計算、空運転による軌道検証まで徹底解説します。

FanucSiemensProgramming

G69バランスカット解除:CNC旋盤の座標復帰と干渉防止

Fanuc、Siemens、Mitsubishi制御のCNC旋盤におけるG69バランスカットキャンセル(解除)コマンドのプログラミング方法を解説。対向刃物台の同期制御を安全に解除し、チャック爪や治具への激突事故やアラーム停止を確実に防ぐ手順とパラメータ設定を網羅。

FanucSiemensProgramming

G70 CNC仕上げサイクル完全解説:構文・パラメータ・障害対策

CNC旋盤のG70仕上げサイクルを徹底解説。Fanuc、Siemens CYCLE95、Mitsubishiの構文の違い、PS0322・PS0325アラームの回避法、パラメータ設定、衝突事故を防ぐ安全な退避経路プログラミングを詳述。

FanucSiemensProgramming

G69座標系回転・ミラーイメージ解除のNCプログラミング

Fanuc、Siemens、MitsubishiのCNC旋盤におけるG68対向タレットミラーおよび座標回転のG69キャンセル機能を解説。#1202や#1119パラメータの検証、P29・M01 1036アラーム防止、刃物台衝突回避と量産ロットの繰り返し精度向上を図る実務ノウハウ。

FanucSiemensProgramming