マクロ呼び出し命令、サブプログラム呼び出し命令を含むNCデータを、
それらが実行された状態に置換して一つのプログラムにします。
また、マクロ文を平易なNC文に変換(実機の内部変換をシミュレート)します。
FANUC系のNCデータ用です。
まずはPerlが動作する環境を用意してください。StrawberryPerlのインストールを推奨します。
スクリプトの実行には、以下の2つの方法があります。
[実行方法1] 簡単に実行するには、Scriptoriumを使用してください。
Scriptorium本体(Scriptorium.exe)は、NCVCを標準インストールすると、[C:\Program Files\NCVC]フォルダ内にインストールされています(翼のアイコンです)。
または、こちらのページの下方から入手できます。
Scriptoriumを開き、
[スクリプトファイル]にtranspose_macro.pl、
[入力ファイル]に呼び出し命令やマクロを含むNCコードが入っているファイルのパス、
[出力ファイル]に出力したいファイルパス
を指定して[実行]ボタンを押します。
([入力ファイル]を指定すれば、[出力ファイル]にはScriptorium内の設定に沿ったファイル名が自動的に入ります。)
NCVCで何らかのファイルを開いている状態で、メニューバーの[オプション]-[外部アプリケーションの設定]にて外部アプリケーションの設定ウインドウを立ち上げます。
[参照]ボタンからScriptorium.exe本体を選択し、[追加]ボタンを押すと、上部の外部アプリケーション一覧ウインドウに登録されます。
[OK]ボタンでウインドウを閉じると、NCVC上のツールバーにScriptoriumアイコンが表示されるようになります。
そのアイコンをクリックすると、NCVCで開いているファイルを[入力ファイル]に指定した状態でScriptriumを開くことができます。
[実行方法2] コマンドプロンプトから実行することも可能です。
コマンドプロンプトを立ち上げ、
perl␣"スクリプトのパス"␣"入力ファイルのパス"␣"出力ファイルのパス"
を実行すると、"出力ファイルのパス"に変換後のNCデータファイルが生成されます。
なお、"~のパス"は該当ファイルのアイコンをコマンドプロンプトにドラッグアンドドロップすれば自動的に入力されます。
呼び出し命令から呼び出されるプログラムは
1. 入力ファイル(変換されるファイル)の中に O<呼び出されるプログラム番号> で始まる行があれば、それ以降の行が読み込まれます。
2. 入力ファイル以外からの呼び出し命令の場合(呼び出されたプログラムが 入力ファイル以外のファイルに入っていて、その中に更に呼び出し命令がある場合)、 1.で見つからなければ、呼び出し命令が入っているファイルの中に O<呼び出されるプログラム番号> で始まる行があれば、それ以降の行が読み込まれます。
3. 1.,2.で該当するものがなければ、入力ファイルと同じ階層(フォルダ)の中のファイルを検索します。
検索されるマクロプログラム、サブプログラムのファイル名について
呼び出されるマクロプログラム、サブプログラムのファイルは、
ファイル名を O<プログラム番号>.ncd としてください。
プログラム番号の前の0は、付けても付けなくても構いません。
(例えば、プログラム番号10のファイル名は O10.ncd または O0010.ncd)
また、O<プログラム番号>の後に( )が入っていても認識します
(ファイル名を O10(bolt_hole_circle).ncd としても認識します)。
4. 3.でファイルが見つからなければ、下記で登録するフォルダの中のファイルを検索します。
ファイル名のルールは3.と同じです。
マクロプログラム、サブプログラム用のフォルダ(兼用)の登録について
transpose_macro.plをテキストエディタで開き、スクリプト中の
$macro_folder= 'C:\Program Files\NCVC\macro';
の行でマクロプログラム、サブプログラム用のフォルダ(兼用)のパスを設定してください。
デフォルトでは上記のようになっているので、変更したい場合は、' 'で囲まれた部分を変更してください。
(注意)フォルダ名の最後に\はつけないでください。
よく使うプログラムのファイルはここで登録したフォルダに置くと便利です。
5. 4.でもファイルが見つからなければ、マクロ呼び出し命令をそのまま出力します。
・#3000
#3000= (アラーム番号);
のブロックを通るとメッセージとともに終了します。
・#4001~#4120
通ったブロックのモーダル情報が自動的に入ります。
・#4001~4022: Gコード各グループのモーダル情報
・#4102: Bコード
・#4109: Fコード
・#4111: Hコード
・#4113: Mコード
・#4119: Sコード
・#4120: Tコード
・#4001(グループ1): 0
・#4002(グループ2): 17
・#4003(グループ3): 90
・#4004(グループ4): 22
・#4005(グループ5): 94
・#4007(グループ7): 40
・#4008(グループ8): 49
・#4009(グループ9): 80
・#4010(グループ10): 98
・#4011(グループ11): 50
・#4012(グループ12): 67
・#4013(グループ13): 97
・#4014(グループ14): 54
・#4015(グループ15): 64
・#4016(グループ16): 69
・#4017(グループ17): 15
・#4018(グループ18): 50.1
・#4019(グループ19): 40.1
・#4020(グループ20): 160
・その他のシステム変数
その他のシステム変数を使用する場合で、初期値が必要なものは値を登録してください。
初期状態のGコードのモーダル情報が違う場合も同様です。
transpose_macro.plをテキストエディタで開き、スクリプト中の
#%system_value= (,);
の行の行頭の#を削除して、
%system_value= (変数番号,変数値);
としてください。
登録する変数が複数ある場合は","で区切って変数番号とその値を順番に羅列してください。
%system_value= (変数番号1,変数1の値,変数番号2,変数2の値,・・・);
例えば#4119に3000、#4120に1を登録したいときは
%system_value= (4119,3000,4120,1);
となります。
コントローラによって2種類のものがあるようです。
1. M98P○○○○L○○○○で指令して、L○○○○で繰り返し数を指定する。
2. M98P○○○○○○○○で指令して、○の前半4桁で繰り返し数を指定する。
$M98_houshiki= 0;
の行で、1.の場合は0、2.の場合は1 を設定してください。