FANUCのNCプログラム内でPMCの入出力状態を利用する方法として、カスタムマクロ変数を利用する方法があります。
- NCプログラム内でカスタムマクロ変数を使ってワークごとに加工条件を変更する
- NCプログラムの実行状況をマクロ変数を使ってPMCに出力し外部機器を動作させる
などなど、応用次第で様々な動作を実現することができます。
今回はNCプログラムとPMCの入出力を担うカスタムマクロ変数の使い方について解説します。
- NCプログラムで使用するカスタムマクロの変数値をPMCラダーにて
専用の入出力システム変数を用いて読出し・書出しができる - 本機能を使用するためにはカスタムマクロ機能を有効にする必要あり
※パラメータNo.8135#5<NMC> - PMC⇔NCプログラム間専用システム変数は、
#1000~#1035(PMC⇒NC)、#1100~#1035(NC⇒PMC) - 専用システム変数は拡張設定を行うと使用できる点数を増加できる
※パラメータNo.6001#0<MIF>
概要
カスタムマクロ機能
変数・演算指令・条件分岐などをNCプログラム上で実行することができる機能です。
変数と演算指令を使用して同じ加工を繰り返したり、条件分岐を使用して加工ルートを変更するなどNCプログラムに汎用性を持たせることが可能となります。
システム変数
NCプログラム中で使用される変数が”システム変数”と呼ばれています。
NCプログラム内で利用する際は”#1000”のように記述します。変数である”#1000″には自由に値を設定することが可能です。
PMC入出力専用システム変数
PMCから入出力を行うことができる専用のシステム変数を指します。
PMCとのインタフェースとして定義されている入力用および出力用のシステム変数は次のとおりです。
<出力用>#1100~#1135
カスタムマクロ機能 有効/無効 切り替え
本機能を使用するためにはパラメータNo.8135#5<NMC>を”1”にする必要があります。
[入力区分]パラメータ入力
[データ形式]ビット形
[機能]カスタムマクロを
0:有効にする
1:無効にする
カスタムマクロ用入出力信号一覧
カスタムマクロ変数の拡張設定
PMCで使用できるカスタムマクロ変数の数を増加させる拡張設定があります。拡張仕様にするデメリットはないので、拡張仕様に変更しましょう。
[入力区分]パラメータ入力
[データ形式]ビット系統形
[機能]カスタムマクロにおけるインタフェース信号を設定します。
0:標準仕様
1:拡張仕様
入力信号
標準仕様の場合
信号名 | ビット 点数 |
システム 変数 |
PMC アドレス |
値の対応 |
---|---|---|---|---|
UI000 | 1 | #1000 | G054.0 | ビット入力 “0”または”1″ |
UI001 | 1 | #1001 | G054.1 | |
UI002 | 1 | #1002 | G054.2 | |
UI003 | 1 | #1003 | G054.3 | |
UI004 | 1 | #1004 | G054.4 | |
UI005 | 1 | #1005 | G054.5 | |
UI006 | 1 | #1006 | G054.6 | |
UI007 | 1 | #1007 | G054.7 | |
UI008 | 1 | #1008 | G055.0 | |
UI009 | 1 | #1009 | G055.1 | |
UI010 | 1 | #1010 | G055.2 | |
UI011 | 1 | #1011 | G055.3 | |
UI012 | 1 | #1012 | G055.4 | |
UI013 | 1 | #1013 | G055.5 | |
UI014 | 1 | #1014 | G055.6 | |
UI015 | 1 | #1015 | G055.7 | |
UI000~UI015 | 16 | #1032 | G054.0~G055.7 | 符号なし16bit 2進コード |
拡張仕様の場合
信号名 | ビット 点数 |
システム 変数 |
PMC アドレス |
値の対応 |
---|---|---|---|---|
UI000 | 1 | #1000 | G054.0 | ビット入力 “0”または”1″ |
UI001 | 1 | #1001 | G054.1 | |
UI002 | 1 | #1002 | G054.2 | |
UI003 | 1 | #1003 | G054.3 | |
UI004 | 1 | #1004 | G054.4 | |
UI005 | 1 | #1005 | G054.5 | |
UI006 | 1 | #1006 | G054.6 | |
UI007 | 1 | #1007 | G054.7 | |
UI008 | 1 | #1008 | G055.0 | |
UI009 | 1 | #1009 | G055.1 | |
UI010 | 1 | #1010 | G055.2 | |
UI011 | 1 | #1011 | G055.3 | |
UI012 | 1 | #1012 | G055.4 | |
UI013 | 1 | #1013 | G055.5 | |
UI014 | 1 | #1014 | G055.6 | |
UI015 | 1 | #1015 | G055.7 | |
UI016 | 1 | #1016 | G056.0 | |
UI017 | 1 | #1017 | G056.1 | |
UI018 | 1 | #1018 | G056.2 | |
UI019 | 1 | #1019 | G056.3 | |
UI020 | 1 | #1020 | G056.4 | |
UI021 | 1 | #1021 | G056.5 | |
UI022 | 1 | #1021 | G056.6 | |
UI023 | 1 | #1021 | G056.7 | |
UI024 | 1 | #1021 | G057.0 | |
UI025 | 1 | #1021 | G057.1 | |
UI026 | 1 | #1021 | G057.2 | |
UI027 | 1 | #1021 | G057.3 | |
UI028 | 1 | #1021 | G057.4 | |
UI029 | 1 | #1021 | G057.5 | |
UI030 | 1 | #1021 | G057.6 | |
UI031 | 1 | #1021 | G057.7 | |
UI000~UI031 | 32 | #1032 | G054.0~G057.7 | 符号付き32bit 2進コード |
UI100~UI131 | 32 | #1033 | G276.0~G279.7 | 符号付き32bit 2進コード |
UI200~UI231 | 32 | #1034 | G280.0~G283.7 | 符号付き32bit 2進コード |
UI300~UI331 | 32 | #1035 | G284.0~G287.7 | 符号付き32bit 2進コード |
出力信号
標準仕様の場合
信号名 | ビット 点数 |
システム 変数 |
PMC アドレス |
値の対応 |
---|---|---|---|---|
UO000 | 1 | #1100 | F054.0 | ビット入力 “0”または”1″ |
UO001 | 1 | #1101 | F054.1 | |
UO002 | 1 | #1102 | F054.2 | |
UO003 | 1 | #1103 | F054.3 | |
UO004 | 1 | #1104 | F054.4 | |
UO005 | 1 | #1105 | F054.5 | |
UO006 | 1 | #1106 | F054.6 | |
UO007 | 1 | #1107 | F054.7 | |
UO008 | 1 | #1108 | F055.0 | |
UO009 | 1 | #1109 | F055.1 | |
UO010 | 1 | #1110 | F055.2 | |
UO011 | 1 | #1111 | F055.3 | |
UO012 | 1 | #1112 | F055.4 | |
UO013 | 1 | #1113 | F055.5 | |
UO014 | 1 | #1114 | F055.6 | |
UO015 | 1 | #1115 | F055.7 | |
UO000~UO015 | 16 | #1132 | F054.0~F057.7 | 符号なし16bit 2進コード |
UO100~UO131 | 32 | #1133 | F056.0~F059.7 | 符号付き16bit 2進コード |
拡張仕様の場合
信号名 | ビット 点数 |
システム 変数 |
PMC アドレス |
値の対応 |
---|---|---|---|---|
UO000 | 1 | #1100 | F054.0 | ビット出力 “0”または”1″ |
UO001 | 1 | #1101 | F054.1 | |
UO002 | 1 | #1102 | F054.2 | |
UO003 | 1 | #1103 | F054.3 | |
UO004 | 1 | #1104 | F054.4 | |
UO005 | 1 | #1105 | F054.5 | |
UO006 | 1 | #1106 | F054.6 | |
UO007 | 1 | #1107 | F054.7 | |
UO008 | 1 | #1108 | F055.0 | |
UO009 | 1 | #1109 | F055.1 | |
UO010 | 1 | #1110 | F055.2 | |
UO011 | 1 | #1111 | F055.3 | |
UO012 | 1 | #1112 | F055.4 | |
UO013 | 1 | #1113 | F055.5 | |
UO014 | 1 | #1114 | F055.6 | |
UO015 | 1 | #1115 | F055.7 | |
UO016 | 1 | #1116 | F276.0 | |
UO017 | 1 | #1117 | F276.1 | |
UO018 | 1 | #1118 | F276.2 | |
UO019 | 1 | #1119 | F276.3 | |
UO020 | 1 | #1120 | F276.4 | |
UO021 | 1 | #1121 | F276.5 | |
UO022 | 1 | #1122 | F276.6 | |
UO023 | 1 | #1123 | F276.7 | |
UO024 | 1 | #1124 | F277.0 | |
UO025 | 1 | #1125 | F277.1 | |
UO026 | 1 | #1126 | F277.2 | |
UO027 | 1 | #1127 | F277.3 | |
UO028 | 1 | #1128 | F277.4 | |
UO029 | 1 | #1129 | F277.5 | |
UO030 | 1 | #1130 | F277.6 | |
UO031 | 1 | #1131 | F277.7 | |
UO000~UO031 | 32 | #1132 | F054.0~F055.7(下位16bit) F276.0~F277.7(上位16bit) |
符号付き32bit 2進コード |
UO100~UO131 | 32 | #1133 | F056.0~F059.7 | 符号付き32bit 2進コード |
UO200~UO231 | 32 | #1134 | F280.0~F283.7 | 符号付き32bit 2進コード |
UO300~UO331 | 32 | #1135 | F284.0~F287.7 | 符号付き32bit 2進コード |
システム変数の使用例
PMC→NCプログラム
PMCラダーからNCプログラムのシステム変数に入力を行う場合の処理について、次のサンプルを元に解説します。
ビット入力(1bit)
ビット入力型のシステム変数の使用例についての解説は次の通りです。
- IF[#1000EQ1]GOTO10のブロックでは、PMC側でG0054.0が”1″であれば、NCプログラム側のシステム変数#1000の値が”1″となりラベルN10へジャンプします。
- IF[#1015EQ1]GOTO20のブロックでは、PMC側でG0055.7が”1″であれば、NCプログラム側のシステム変数#1015の値が”1″となりラベルN20へジャンプします。
- IF[#1031EQ1]GOTO30のブロックでは、PMC側でG0057.7が”1″であれば、NCプログラム側のシステム変数#1031の値が”1″となりラベルN30へジャンプします。
ダブルワード入力(32bit)
ダブルワード入力型のシステム変数の使用例についての解説は次の通りです。
- X#1033;のブロックでは、X軸に対してPMCラダーでシステム変数#1033(G276.0~G279.7)に設定した値である”-2,147,483,648″分だけ移動するよう命令します。
NCプログラム上では”X-2147483678.”と同じ記述となります。 - Y#1034;のブロックでは、Y軸に対してPMCラダーでシステム変数#1034(G280.0~G283.7)に設定した値である”2,147,483,647″分だけ移動するよう命令します。
NCプログラム上では”Y2147483647.”と同じ記述となります。 - Z#1035;のブロックでは、Z軸に対してPMCラダーでシステム変数#1035(G284.0~G287.7)に設定した値である”123,456,789″分だけ移動するよう命令します。
NCプログラム上では”Z123456789.”と同じ記述となります。
NCプログラム→PMC
ビット出力(1bit)
ビット出力型のシステム変数の使用例についての解説は次の通りです。
#1131=1;のブロックでは、PMC側のアドレスF0277.7を”1″に変更します。
NCプログラム上で#1131=0;と記述すれば、アドレスF0277.7を”0″に変更することが可能です。
他のビット型システム変数についての使用方法は上記と同じです。システム変数とPMCアドレスの対応はカスタムマクロ用入出力信号一覧を参照してください。
ダブルワード出力(32bit)
NCプログラム側のシステム変数#1133に代入した値”-12,345″が、PMC側のアドレスF0056(~F0059)に反映されます。
- #1133=-12345;のブロックでは、PMCアドレスG056.0~G059.7にバイナリ形式でシステム変数
#1133の値が設定されます。
他のビット型システム変数についての使用方法は上記と同じです。システム変数とPMCアドレスの対応はカスタムマクロ用入出力信号一覧を参照してください。
実際の動作
PMCラダーでNCプログラム上のシステム変数に値を渡し、その値をNCプログラムを経由してPMCラダーで取得して表示する回路およびプログラムを参考に解説します。
- PMCラダー上でアドレスG276(~G277)に定数”2147483647″を4バイト転送します。
- NCプログラム上のシステム変数#1033に定数”2147483647”が入力されます。
- NCプログラム上でシステム変数#1133の値を#1033に代入します。
- PMCラダー上でアドレスF056(~F059)の値をアドレスD3000に4バイト転送を行います。
- アドレスD3000にアドレスG276に入力した定数と同じ値が表示されました。
あとがき
カスタムマクロについて調べた内容で、PMCに関係する処理が気になったため本記事でまとめてみました。
説明する内容がNCプログラムにも波及するため、大作となってしまい投稿に時間がかかってしまいました。
今回の内容が何かお役に立てれば幸いです。
コメント