マクロ解説:第8回 よく使うシステム変数一覧 (OSP・オークマ)
ここではOSP・オークマのCNCをベースに、現場で出番の多いシステム変数(V系)を用途別にまとめます。OSPのシステム変数は、工具補正・ワーク座標系・位置情報・モーダル情報などのCNC内部データを読み込み(一部は読み書き)できます。
OSP固有変数の書き方
変数の種類(OSP)
- ローカル変数:4文字以内の名前で作る変数。メインプログラム/サブプログラムで独立し、リセットやサブプロ終了で値が消えます。
- コモン変数(VC):標準でVC1〜VC200、オプションでVC1〜VC1000。プログラム間で共有できます。VC1〜VC400は電源OFFでも保持、VC401〜VC1000は電源OFFでクリアされます。
- システム変数(V系):用途が固定された変数。座標値読み込みや補正値変更などに使います。
角括弧 [ ] とアスタリスク * の意味
[ ]:番号(添字)を入れます(例:補正番号、座標系番号など)。*:X/Y/Z/C…などの軸名が入ります(例:VAPA*はVAPAXやVAPAZのように使う)。
条件分岐(IF)の基本形(OSP)
たとえば IF [条件式] GOTO N_ の形で書きます。比較演算子は EQ/NE/LT/LE/GT/GE を使います。
1 工具補正
ここでは形状補正のみに絞って説明します。
| システム変数 | 内容 |
|---|---|
VTOFH[ ] | 工具長補正量(H相当)を読み書き |
VTOFD[ ] | 工具径補正量(D相当)を読み書き |
例)H1=100, H2=20, D1=10, D2=5 なら、VTOFH[1]=100、VTOFH[2]=20、VTOFD[1]=10、VTOFD[2]=5 のように参照できます。
VC100 = VTOFH[1] (VC100にH1の補正量)
VC101 = VTOFD[2] (VC101にD2の補正量)
2 モーダル情報
実行中のG/M/S/F/D/Hをシステム変数で参照できます。G/Mはグループ番号を [ ] に指定します。
| システム変数 | 内容 |
|---|---|
VGCOD[ ] | 実行中Gコード(グループ指定) |
VMCOD[ ] | 実行中Mコード(グループ指定) |
VSCOD | 実行中Sコード(主軸回転指令値) |
VFCOD | 実行中Fコード(送り指令値) |
VDCOD | 実行中Dコード(工具径補正番号) |
VHCOD | 実行中Hコード(工具長補正番号) |
VC110 = VHCOD
VC111 = VDCOD
3 位置情報
各軸の現在値(APA)や演算値(CON)、機械座標系原点などを参照できます。
| システム変数 | 内容 |
|---|---|
VAPA* | 現在値(APA)読み込み |
VRCO* | 演算値(CON)読み込み |
VMOF* | 機械座標系原点(読み書き) |
VC120 = VAPAX
VC121 = VAPAZ
4 ワーク原点オフセット量
ワーク座標系(原点オフセット)の値は VZOF*[ ] で扱います。[ ] にはワーク座標系番号を指定します。VACOD で、現在選択中の座標系番号も参照できます。
| システム変数 | 内容 |
|---|---|
VZOF*[ ] | 原点オフセット量(読み書き) |
VACOD | 現座標系番号(読み込み) |
VC201 = VZOFX[1]
VC202 = VZOFY[1]
VC203 = VZOFZ[1]
5 自動運転
状態フラグや稼働時間、工具管理などでよく使う代表例です。
| システム変数 | 内容 |
|---|---|
VATOL | 現工具番号(工具種類+工具番号の管理値) |
VNTOL | 次工具番号(工具種類+工具番号の管理値) |
VTLCN | 現工具番号(“工具番号”として読み書き) |
VTLNN | 次工具番号(“工具番号”として読み書き) |
VMLOK | マシンロック状態(例:128/0) |
VDTIM[a,b] | 稼働時間計(電源入り/NC起動/主軸回転/切削…) |
VWRKC[a,b] | ワークカウンタ(A〜Dのカウント値/設定値) |
VC300 = VDTIM[4,1]
6 システム変数の使い方
6.1 掴んでいる工具が違ったらアラームを出す
VUACM[ ] にコメント文字列を入れ、VDOUT[*] = コード を実行すると、コメント付きのアラーム(A/B/C)を発生させられます(*が991/992/993でAlarm C/B/A、コードは1〜9999)。
IF [VTLCN NE 10] GOTO N900
GOTO N999
N900
VUACM[1] = 'TOOL_NOT_T10'
VDOUT[992] = 1000 (Alarm B / user code=1000)
N999
6.2 スキップ位置(センサ接触値)を使う
自動計測用のメーカーサブ(MSB)実行後などのセンサ/タッチプローブ接触位置を VSAP*[ ] で参照できます。
(計測用MSB実行後…という想定)
VC101 = VSAPX[1]
VC102 = VSAPY[1]
VC103 = VSAPZ[1]
6.3 作業者に確認させる停止
M00 (CHECK_CLAMP_AND_PRESS_CYCLE_START)
6.4 座標系の値を別座標系へコピー
VZOF*[ ] は原点オフセットを読み書きできるので、座標系間コピーに使えます。
VZOFX[2] = VZOFX[1]
VZOFY[2] = VZOFY[1]
VZOFZ[2] = VZOFZ[1]
おわりに
他にも多くのシステム変数がCNCには存在します。NCVIEWのマクロデバッガではシステム変数に限らず、マクロ変数の一覧をNCデータとともに確認できます。加工にかける前の不安なNCデータを検証することができます。