【FANUC】PMCラダーとNCプログラム間でカスタムマクロから入出力する方法【実例あり】

[temp id=2]

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>

[temp id=2]

目次

概要

カスタムマクロ機能

変数・演算指令・条件分岐などをNCプログラム上で実行することができる機能です。

変数と演算指令を使用して同じ加工を繰り返したり、条件分岐を使用して加工ルートを変更するなどNCプログラムに汎用性を持たせることが可能となります。

システム変数

NCプログラム中で使用される変数が”システム変数”と呼ばれています。

NCプログラム内で利用する際は”#1000”のように記述します。変数である”#1000″には自由に値を設定することが可能です。

変数ごとに入力値の型が異なるので、使用したい変数について
”カスタムマクロ用入力信号”および”カスタムマクロ用出力信号”
の一覧表から型の対応を参照してください。

PMC入出力専用システム変数

PMCから入出力を行うことができる専用のシステム変数を指します。

PMCとのインタフェースとして定義されている入力用および出力用のシステム変数は次のとおりです。

<入力用>#1000~#1035
<出力用>#1100~#1135

カスタムマクロ機能 有効/無効 切り替え

本機能を使用するためにはパラメータNo.8135#5<NMC>を”1”にする必要があります。

パラメータNo.8135#5<NMC>
[入力区分]パラメータ入力
[データ形式]ビット形
[機能]カスタムマクロを
0:有効にする
1:無効にする

カスタムマクロ用入出力信号一覧

カスタムマクロ変数の拡張設定

PMCで使用できるカスタムマクロ変数の数を増加させる拡張設定があります。拡張仕様にするデメリットはないので、拡張仕様に変更しましょう。

パラメータNo.6001#0<MIF>
[入力区分]パラメータ入力
[データ形式]ビット系統形
[機能]カスタムマクロにおけるインタフェース信号を設定します。
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進コード
符号付き32bit 2進コードの扱える値は ”-2,147,483,648~2,147,483,647”
符号なし16bit 2進コードの扱える値は ”0~65,536”

システム変数の使用例

PMC→NCプログラム

PMCラダーからNCプログラムのシステム変数に入力を行う場合の処理について、次のサンプルを元に解説します。

system-variable-input

[temp id=2]

ビット入力(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

system-variable-output

ビット出力(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アドレスの対応はカスタムマクロ用入出力信号一覧を参照してください。

システム変数#1133~#1135に値を代入する際、範囲外の値を入力するとアラーム”PS0110 データが許容範囲を越えました”が発生します。アラーム発生時は代入する数値を修正してください。

ALARM-PS0110

実際の動作

PMCラダーでNCプログラム上のシステム変数に値を渡し、その値をNCプログラムを経由してPMCラダーで取得して表示する回路およびプログラムを参考に解説します。

PMCとNC実例

[temp id=2]

  1. PMCラダー上でアドレスG276(~G277)に定数”2147483647″を4バイト転送します。
  2. NCプログラム上のシステム変数#1033に定数”2147483647”が入力されます。
  3. NCプログラム上でシステム変数#1133の値を#1033に代入します。
  4. PMCラダー上でアドレスF056(~F059)の値をアドレスD3000に4バイト転送を行います。
  5. アドレスD3000にアドレスG276に入力した定数と同じ値が表示されました。

あとがき

カスタムマクロについて調べた内容で、PMCに関係する処理が気になったため本記事でまとめてみました。

説明する内容がNCプログラムにも波及するため、大作となってしまい投稿に時間がかかってしまいました。

今回の内容が何かお役に立てれば幸いです。

この記事が気に入ったら
フォローしてね!

コメント

コメントする

CAPTCHA


目次
閉じる