OSP(OKUMA)のマクロ変数を使い始めると、「VC1に計算結果を代入できているのか」「FIX関数の使い方は正しいのか」と迷う場面がよくあります。特にG81などの固定サイクルで変数を使用する場合、書式や計算順序を理解していないと意図した動作にならないことがあります。この記事では、OSPの変数代入とFIX関数の基本、そして実際の加工プログラムでの使用例をわかりやすく整理します。
VC1への代入方法は基本的に問題ない
質問にある次の記述です。
VC1=FIX[[[16.7-13]/2+1.5]*10.]/10.
この書き方自体は、OSPのマクロ演算として基本的に問題ありません。
式を順番に分解すると、
- 16.7-13 → 3.7
- 3.7/2 → 1.85
- 1.85+1.5 → 3.35
- 3.35×10 → 33.5
- FIXで整数化 → 33
- 33/10 → 3.3
つまり、VC1には3.3が代入されます。
FIXは小数点以下を切り捨てる関数なので、このように「一桁で丸めたい」用途でよく使われます。
FIX関数とは何か?
OSPのFIX関数は、小数点以下を切り捨てて整数化する関数です。
| 式 | 結果 |
|---|---|
| FIX[3.9] | 3 |
| FIX[8.1] | 8 |
| FIX[-2.7] | -2 |
よくある使い方としては、
- 小数第1位まで残したい
- 整数送り値を作りたい
- 工具補正値を丸めたい
などがあります。
今回のように、
FIX[値*10]/10
とすると、小数第1位で切り捨てた値を作ることができます。
G81でZ=-VC1と書く方法について
次の部分についても確認してみます。
G81Z=-VC1R3.F70M53
OSPでは、変数を座標値として使うことは可能です。
ただし、機種やOSPバージョンによっては、マイナス記号と変数の扱いで解釈が異なる場合があります。
そのため、より安全な書き方としては、事前に負値を別変数へ代入しておく方法があります。
VC2=-VC1G81Z=VC2R3.F70M53
この書き方のほうが、デバッグ時にも値を確認しやすくなります。
特にOSPでは、演算を直接アドレスへ書いた場合にアラームや解釈違いが起きるケースもあるため、複雑な式は変数へ一度格納する方法がよく使われます。
演算式はシンプルに分けるとトラブルが減る
マクロを作り始めたばかりの頃は、一行に複雑な式を書きたくなります。
しかし、現場では可読性や保守性のために、あえて分けて書くことも多いです。
例えば、今回の式なら次のようにも書けます。
VC1=16.7-13VC1=VC1/2VC1=VC1+1.5VC1=FIX[VC1*10]/10
このようにすると、途中値を確認できるため、計算ミスや桁違いに気づきやすくなります。
特にNCマクロでは、「なぜこの値になったのか」を後から追えることが非常に重要です。
OSPで変数を使う際の注意点
OSPマクロでは、以下の点でトラブルが起きやすいです。
- 整数と実数の扱い
- 括弧の閉じ忘れ
- マイナス記号の解釈
- 変数未定義
- Gコード内直接演算
特に括弧は、OSPではかなり厳密に解釈されます。
そのため、質問文のように多重括弧を使う書き方は、むしろ安全側です。
演算優先順位を明確にしたい場合は、積極的に括弧を使ったほうが読みやすくなります。
実務ではコメントを付けると便利
現場で長く使うプログラムでは、計算意図をコメントで残しておくと非常に便利です。
(穴深さ計算)VC1=FIX[[[16.7-13]/2+1.5]*10.]/10
数か月後に見返した時でも、「なぜこの計算をしているのか」が分かりやすくなります。
特に他の作業者が触る可能性がある場合は、コメントが大きな助けになります。
まとめ
質問にあるOSPマクロの書き方は、基本的には問題ありません。
- VC1への代入方法は正しい
- FIXの使い方も一般的
- 小数第1位切り捨て処理になっている
ただし、
G81Z=-VC1
の部分は、機械仕様によっては注意が必要なため、
VC2=-VC1
のように事前計算しておくほうが安全な場合があります。
また、OSPのマクロは「動く」だけでなく、「後から読める」ことも重要です。
演算を分けたりコメントを書いたりすることで、保守しやすいプログラムになります。


コメント