2009
10.19

NCプログラムからPMCデータを読むにはマクロI/Oだけでは足りない

Power Mate i シリーズ

CNC側のプログラム(加工プログラムとかパートプログラムと言って、O番号で始まるやつです)からPMCがわの制御データを読み取るときに、たぶん最もポピュラーなのはマクロI/Oを使うことです。

マクロI/OはCNC側の変数番号#1000~#1015と#1032のCNC側入力と、#1100~#1115と#1132のCNCがわ出力があります。通常#1000~#1015と#1100~#1115は1ビット単位の入出力を受け持ちますが#1032,#1132は16ビットひと固まりにした、16ビットデータを扱います。

しかしこれは同時に複数のデータをやり取りするには不都合で、一つのデータ送信(受信)が完了したら、次のデータを送信(受信)としなければいけないので、大量のデータ通信には向きません。たぶんファナックもそんな事を考えていたのでしょう。 PMCのD領域(データ用)やR領域(リレー用)も、システム変数を指定することでCNC側からの読取ができるようになります。

データサイズは4バイト固定(整数値として扱われ、-2147483648~2147483647)。PMCのタイマー領域、キープリレー領域、カウンタ領域、データ領域、内部リレー領域を参照できます。

機械側で設定された数値によりCNC側の動作を制御したい場合は、この変数を使って数値データを読取→適正化演算→座標として使う。などをすればよいですね。

ちなみに読み出し方法はいくつかありますが、対応するシステム変数はおおむね次のようにします。

変数#1200~#1219 可変タイマ(T) : 呼出用変数 #1991

変数#1220~#1224 キープリレー(K) : 呼出用変数 #1992

変数#1225~#1244 カウンタ(C) : 呼出用変数 #1993

変数#1245~#1709 データテーブル(D) : 呼出用変数 #1994

変数#1710~#1959 内部リレー(R) : 呼出用変数 #1995

PMCアドレスと変数の関係は次のようになります。

■可変タイマー(T)

読み出したいTアドレス=(変数#12** – 1200)×4+(80×#1991)

■キープリレー(K)

読み出したいKアドレス=(変数#12** – 1220)×4+(20×#1992)

■カウンタ(C)

読み出したいCアドレス=(変数#12** – 1225)×4+(80×#1993)

■データテーブル(D)

読み出したいDアドレス=(変数#12** – 1245)×4+(1000×#1994)

■内部リレー(R)

読み出したいRアドレス=(変数#17** – 1710)×4+(1000×#1995)

#1994の値を0~7と変えることで、D0000~D7999までアクセスが可能になります。

コメント

  • コメント (6)

  • トラックバックは利用できません。

  1. どうもありがとうございます。

    • nao
    • 2010年 5月 23日

    こんにちは、

    FS-16以降であれば、NCウインドウズのX,Y,Z座標値読み出し後、ユーザーマクロ
    の読み出し可能な変数領域(Rアドレス)に転送して、あげれば
    ユーザーマクロで読み出し可能だったと記憶しています。
    但し、当時マクロコンパイラーを使用して受け渡ししていましたがユーザー
    マクロでも可能だと思います。ちがっていたらゴメンナサイ。
    参考まで。

    nao

  2. こんにちは。
    うまくいきませんでしたか。 残念ですね。

    いろいろチャレンジしてみてください。
    もし何かわかったら、私にも教えていただければ幸いです。

    • yama
    • 2010年 3月 19日

    返信ありがとうございます。
    こちらもブログの確認遅くなりましてすいませんでした。
    マシニングセンタの仕様書を確認してみましたが、どうもリアルタイムカスタムマクロ機能は付いてなさそうです…が、一応MDI操作で下記プログラムで確認をしてみました。
     //#1=#IODW[2];
    しかし、アラーム(PS1096:変数名称が不正)が出てしまいました。
    やはり付いていないようです。残念です。

    色々と教えていただきありがとうございました。よい勉強になりました。
    またわからない事があればご質問させていただく事があるかもしれませんので
    その時はまたよろしくお願いします。

  3. こんにちは。

    久々に書き込もうとしたら質問コメントがありました・・・。
    遅くなりましたが、返信します。

    31iの場合は、PMCデータ領域へのアクセスはまったく方法が違っています。
    過去のNC装置とは別物と考えた方がいいくらいです。

    当然ながら使えるマクロ変数も違っていますので、この記事に書かれていることは31i(というか、30iシリーズ)には適用されません。

    30iではオプションとなっていますが、リアルタイムカスタムマクロ機能がついていれば、NCプログラム中でマクロを使ってPMCデータ領域へのアクセスが可能です。PMCのXYRDFGなどのアドレスへ、ビット、バイト、ワード、ダブルワードで読み書きができます。
    ただし当然ですが、XやF領域は読み取りだけで書き込むことはできません。

    30i,31i,32iシリーズのリアルタイムカスタムマクロ機能については、ユーザーズマニュアルを参照されることをおすすめします。
    このWebサイトで書ききれるようなボリュームではないからです。

    もしマニュアルが必要であれば、機械メーカーさん経由で購入してください。

    一つ忘れていましたが、リアルタイムカスタムマクロ機能はマクロエグゼキュータとは別物です。

    • yama
    • 2010年 2月 15日

    ご質問です。
    マシニングセンタのPMCデータテーブルをNCプログラムから読み込みを行いたいと思っているのですが、このページに書かれている変数#1200~1995をMDI操作にてコモン変数に代入しようとしたのですが、アラーム(PS0115:変数番号に誤りがあります)とでてしまいます。
    これはパラメータ等でこの変数にはアクセス不可とされてしまっているのでしょうか?
    NCのモデルは(31i-A)です。

コメントは利用できません