加工法記述言語:OSEL

現在のNC装置で一般的に利用されているEIAコード(Gコード)の体系は1960年代に開発されたもので、ISOなどにより工作機械のための標準データフォーマットとして国際的に標準化が行われた。その結果、技術開発の出発点がそのレベルに合わされ、NC装置が今日のようにブラックボックス化して発展したというのも事実である。しかし、当時の技術レベルに合わせて設計されたものが陳腐化し、それを防ぐために改良を重ねられてきた結果、次のような問題点が指摘されている。

こうした問題点の解決に加え、エンドユーザや機械メーカなどにあまた蓄積されている固有の生産技術を、ソフトウェアの形でパッケージ化し、再利用可能にするための手法を提案することが加工法記述言語OSEL (OSE Language)の目的である。これはさらに、ネットワークを中心とするであろう将来の産業社会の中で、ソフトウェア化された固有の生産技術が流通し調達できるような新たなビジネス環境への転換という大きなパラダイムシフトへの提言をも行うものである。これは、産業のグローバル化により空洞化が叫ばれている昨今、現場での「もの作り」を中心としたビジネスから、「もの作り」で得られた生産にかかわる知識やノウハウをもとにした新たなビジネス環境への転換を促すものである。

加工法記述言語OSELの特徴を以下に列挙する。

OSELにおける処理の流れの概略を図 3-10に示す。

FS 3-10 OSELにおける処理の流れ

最上位レベルでの記述であるOSEL-F (Feature OSEL)では、加工プログラムは穴・溝といった加工特徴の記述、例えば「貫通穴をドリルで開けよ」といった形で入力される。OSEL-Fは加工特徴クラスライブラリと工具クラスライブラリを利用して、機械独立な中間記述である OSEL-I (Intermediate OSEL)に展開される。OSEL-Iは機械クラスライブラリを利用して、 機械に依存した実行フォーマットであるOSEL-X (eXecutable OSEL)に展開される。実時間で処理する必要のあるのは、このOSEL-Xプログラムの解釈処理部(OSEL実行系:OSEL-EX)以降である。

加工特徴クラスライブラリでは、機械に依存しない加工方法が、穴・溝・側面といった加工特徴に基づくクラス毎のメソッドの形で定義されている。図 3-11に加工特徴クラスの基底クラスの概略図を示す。機械メーカ・エンドユーザなどは、この基底クラスの派生クラスを自由に加えることによって、独自の加工ノウハウを加えていくことが可能である。

機械クラスライブラリでは仮想的なプログラム座標系から物理的な機械座標系への変換や実I/O指令など、機械に依存した処理への展開がメソッドの形で記述されている。工具クラスライブラリは工具に関するデータライブラリで、加工特徴クラスライブラリからは工具の寸法や加工条件を得るために、機械クラスライブラリからは実際の工具の名称を得るために参照される。

3-11 加工特徴クラスの基底クラスの概略図(Coadの記述による)

オープンコントローラへのOSEL処理系の実装としては、コントローラのシステム構成やユーザ要求などに応じて、図 3-10の実装モデルABCと示された3つのモデルから選択できる。実装モデルAでは、コントローラは一番抽象度の高いOSEL-Fプログラムを受け取り、軸制御まで一貫して行う。CAD/CAMの機能を備えた高度なコントローラではこの構成になると思われる。実装モデルBでは、コントローラは機械独立な中間記述である OSEL-Iを受け取る。機械依存部分以下をコントローラが受けもつ形態である。実装モデルCでは、コントローラは実行フォーマットであるOSEL-Xプログラムを受け取る。低機能なシステムでも実装可能な構成である。

加工法記述言語OSELによる加工プログラムの例

穴明け加工を行う加工プログラムOSEL-F(図 3-12)とそこで使われている『貫通穴』加工特徴クラスライブラリ(図 3-13)をプログラミング言語Javaを用いてを実装した例を添付する。この例では理解を容易にするため一部簡略化してある。

public class Sample { // サンプルプログラム

public static void main(String args[]) {

//

// 本来、この部分で位置・直径・深さの定義が行われる

//

ThroughHole hole = new ThroughHole(pos, dia, depth); // 加工特徴『貫通穴』の定義

hole.centerdrilling(); // センタドリル加工

hole.drilling(); // ドリリング加工

}

}

3-12 OSEL-F加工プログラムのJavaによるサンプルプログラミング例






public class ThroughHole extends Hole { // 加工特徴『貫通穴』クラスの定義

Vect3 position; // 属性:位置

double diameter; // 属性:直径

double depth; // 属性:深さ

public ThroughHole(Vect3 pos, double dia, double d) { // 『貫通穴』のコンストラクタ

position = pos;

diameter = dia;

depth = d;

}

public void drilling() { // 加工法『ドリリング』メソッドの定義

Tool tool = toolfordrilling(diameter); // 穴明け用工具選定

machining_center.toolchange(tool); // 工具交換

Vect3 initial = getinitial(); // 逃げ点

Vect3 reference = getreference(); // 加工開始点

Vect3 target = gettarget(); // 貫通穴の底の位置

machining_center.toolmove(initial); // 逃げ点へ移動

machining_center.toolmove(reference); // 加工開始点へ移動

machining_center.spindle_on(Osel.CW); // スピンドル・正転

machining_center.coolant_on(); // クーラント・オン

machining_center.toolline(target); // 貫通穴の底へ直線移動

machining_center.toolmove(reference); // 加工開始点へ戻る

machining_center.spindle_off(); // スピンドル・停止

machining_center.coolant_off(); // クーラント・オフ

}

}

3-13 『貫通穴』加工特徴クラスライブラリのJavaによるサンプルプログラミング例