FOCAS2開発 R領域の読み書き

FANUCのNC装置にR領域というメモリ領域があります。ここのビットを読み書きすることで、様々なことが出来ます。

・NC装置のラダープログラムを起動

・シートキーのキーを押したのと同じ動きをさせる

・NC装置のステータスによってビットを立てるようにラダープログラムを作成、PCのソフトが読み取ってステータスを取得(吸着している、プログラム実行中など)

FOCASの関数で出来ないことは、PCソフトとNCのラダープログラムを作る必要があり、R領域を読み書きすることで連動できる、ということです。

R領域を読むのはpmc_rdpmcrng、書くのはpmc_wrpmcrngを使用します。

 

さて、NC装置でR領域を見ると、各番地に8ビットの0、1が入っています。

3200番地00000011

こんな感じです。右端が0番目、左端が7番目。「3200番地の0番目が0か1か」で判断するわけです。

一方、FOCASの読み書きの関数は、3200番地の値=3となります。8つのビットを2進数として、10進数に変換した値で読んだり書いたりします。

引数で3200番地の0ビット目を指定して0か1が帰ってくれば楽なのですが、それはできません。引数で指定するのは番地だけ。帰ってくる値は3200番地全体の10進数表現です。

ということは・・・・。読むにしても書くにしても、VBでビット演算をしなくてはならないことになります。めんどくさい・・・・。