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

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までアクセスが可能になります。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。