OSP(オークマ) - NCプログラム構成
ここではオークマ設備の制御装置であるOSPプログラムの基本的な構成要素について解説しています。まずはNCプログラムの全体の構成を見て行きましょう。下記のサンプルプログラムを上から順に見ていきます。
%; O1000(SAMPLE); VC1=10.; N100; S2000; M3; G01X50. Y=VC1 Z-10. F500; M5; M02; %;
% | データスタート/データエンド
プログラムの先頭にある「%」はデータスタートを表す記号で、プログラムの始まりを表す記号です。プログラムの最後にも同じ「%」がありますが、こちらはデータエンドを表す記号で、プログラムの終わりを表しています。外部からプログラムを読みこませる際に、データスタートからデータエンドまでが一つのプログラムとして認識されます。
; | EOB(エンドオブブロック)
上のプログラムを見ると、すべての行の終わりに「;」(セミコロン)が付いています。この「;」をEOB(イー・オー・ビー)と呼びます。End Of Block(エンドオブブロック)の頭文字です。行の終わりには必ず付けることになっており、行の先頭から「;」までをブロックと呼びます。
ただし、パソコンなどでプログラムを作成する場合は、設備に読み込ませる際に改行が「;」に変換されるので、つける必要はありません。
O | プログラム名
データスタートの次のブロックに来るのがプログラム名です。「O」の後に続く数字がプログラム名となります。最大で4文字(0000〜9999)の数字を使用することができます。OSPの場合アルファベット(A〜Z)を使用することもでき、数字との混在も可能ですが、アルファベットを使用する場合は先頭の文字を必ずアルファベットにする必要があります。この場合も最大4文字のプログラム名をつけることができます。
なお、プログラム名は数字としてではなく、文字として認識されますので、O0123 と O123 などは異なるプログラム名と判断されます。
アルファベットが入っているものをプログラムラベル、数字のみのものをプログラム番号と呼び、これらを総称してプログラム名と呼びます。
() | 注釈(コメント)
「O1000」の後に「(SAMPLE)」と入っていますが、「()」の中身はNCでは読み込まれません。自分の好きなように注釈を入れることができます。あまり使いすぎるのも考え物ですが、少なくともこのプログラムは何を行うものなのか、という注釈は入れておいた方が良いです。自分で作ったプログラムでも時間がたてば、何に使うプログラムなのか分からなくなってしまいます。
「()」の中は読み込まれませんので基本的には何を記述しても良いのですが、全角文字や一部の記号は使用できません。NCには全角文字などを表示できる機能はついていませんので、設備に読み込ませたときに別の文字に変換されます。こうなると何が記述されているのか分からなくなってしまいます。設備の操作パネルのキーに無い文字は、使用できないと考えた方が良いです。
VC | 変数
3ブロック目に「VC1=10.」とありますが、「VC1」は変数となります。正確にはコモン変数と呼ばれますが、変数については「変数」のページで詳しく解説します。ここでは数値を保存する箱だと思っておいてください。ここでは変数の後に「=10.」とありますが、NCで使用する「=」は等しいという意味ではなく、代入を意味します。つまり「VC1」という箱に「10.」という数値を入れて保存しておき、後でこの「10.」という数値を取り出して使用することができます。
N | シーケンス名
4ブロック目にある「N100」はシーケンス名と呼ばれ、「N」+「英数字」で表します。プログラムを見やすくするための目印で、単独で記述しても動作に影響はありません。シーケンス名は最大で5文字まで使用出来ます。「GOTO」の飛び先としても使用されます。
シーケンス名にはアルファベットを使用することができますが、プログラム名と同じく、アルファベットを使用する場合は先頭の文字が必ずアルファベットになるようにしなければなりません。
シーケンス名はプログラム名と同じく文字として認識されますので、「N0123」と「N123」などは異なるシーケンス名と判断されます。
アルファベットが入っているものをシーケンスラベル、数字のみのものをシーケンス番号と呼び、これらを総称してシーケンス名と呼びます。
「N」の後に続く「英数字」は自分の好きな値を入れることができます。数値の番号も順番に入れなければならないわけではなく、また、同じ番号を付けることも可能ですが、上のブロックから順番に数値が大きくなっていくように番号を付けた方が、見やすくなります。
アドレス + 数値 → ワード
5〜9ブロックにはアルファベットと数値が並んでいます。NCプログラムは特殊な場合(%など)を除くと、ほとんどが「アルファベット」+「数値」の形になっています。アルファベットの部分をアドレスと呼び、アドレスと数値を合わせてワードと呼びます。NCプログラムではアルファベットと数値の組み合わせによって様々な機能を実現しています。
アドレスに続く数値を変数にすることも可能です。その場合「X=VC1」のように、アドレスと変数の間に「=」を入れる必要があります。
S | 主軸回転数
5ブロック目にある「S2000」は主軸の回転数を設定するもので、「S」+「数値」で表します。回転数の単位はrpm(revolution/minute = 一分間で何回転するか)です。「S2000」だけで主軸が回転するわけではありません。
Mコード | 補助機能
6ブロック目にある「M3」の「M」はMコードと呼ばれ、補助機能を行うものです。主軸の回転や停止などを行います。
Mコードの基本的な機能はFANUC系と同じです。Mコードについては「Mコード」のページで解説しています。
Gコード | 準備機能
7ブロック目の先頭にある「G01」の「G」はGコードと呼ばれ、準備機能を行うものです。直線補間や円弧補間などを行います。
Gコードについては「Gコード」のページで解説しています。
X,Y,Z
7ブロック目の真ん中にある「X50. Y=VC1 Z-10.」は、それぞれX軸、Y軸、Z軸のことで、後に続く数値は座標、又は距離になります。アドレスの後に変数を使用することも可能です。その場合「Y=VC1」のように、アドレスと変数の間に「=」を入れる必要があります。また、変数の後にスペースを入れないと「X50.Y=VC1Z-10.」のようにアドレスと変数の区別がつかなくなってしまうので注意が必要です。
F | 送り速度
7ブロック目の最後にある「F500」は送り速度を設定するもので、「F」+「数値」で表します。送り速度の単位はmm/min(一分間に何ミリ移動するか)です。
T | 次工具選択
上のプログラムには記述されていませんが、ATC(オートツールチェンジャ)を装備した設備であれば、「T」+「数値」でその数値のツール番号に入っている工具を呼び出すことができます。呼び出しただけでは工具交換はされず、「M06」を記述することで工具交換が行われます。
NCプログラム構成まとめ
- NCプログラムの先頭と末尾には「%」(データスタート/データエンド)を入れる。
- データスタートのすぐ後のブロックには、プログラム名を記述しなければならない。
- 「()」内は読み込まれないので、注釈として使用できるが、設備の操作パネルにない文字は使用しない。
- NCプログラムは複数のブロックからできており、1つのブロックはいくつかのワードによって構成されている。
- ワードはアドレスと数値に分かれており、このアドレスと数値の組み合わせによって様々な機能を実現している。
- アドレスの後に変数を使用する場合は、アドレスと変数の間に「=」をつける。
また、NCプログラムは特定の記述がない限り、上から下に向かって1ブロックづつ読み込んでいきます。NCにはブロックを先読みする機能が付いており、設備にもよりますが、現在のブロックから3〜5ブロックを先読みしています。プログラムエラーでアラームが出た場合は、先読みされたブロックにエラーがある場合もありますので、なかなかエラーが見つからないときには、このことを思い出してみてください。
- 当サイトのPDF版を作成しました。教育資料やリファレンスとして使用して頂ければと思います。
→ NCプログラムの教科書 - 上級編も作成しました。
→ NCプログラム上級編