OSELステーション
OSELステーションにおける実証デモの目的は、
を示すことである。
デモにおける全体の流れを図 4-8に、ワークの図面を図 4-9に示す。OSEL加工プログラムに含まれる重要な情報として、カッターパス・加工条件・工具・シーケンス情報がある。ユーザにわかりやすくこれらを提示するため、GUIとプロセスシートを用意した。GUIとしてCAD(CADKEY)、プロセスシートとして表計算プログラム(EXCEL)を用いた。CADKEYにはワーク形状、カッターパスを表示し、表には加工条件、工具、シーケンスを表示する。また最適化のツールとしてもEXCELを用いる。これらはあくまでも実証デモのためのツールである。またこのデモはあくまでも情報の流れを示しており、必ずしもすべてが実装されているわけではない。
まずCADKEYを用いてワークの図面を作成する(図 4-10)。つぎにCADKEY上から加工特徴を順次ユーザが指示していく。このデータをもとに、OSEL-F加工プログラムを生成する(図 4-11)。この段階では、プログラム中には、加工特徴のインスタンス生成と、加工特徴の一般的な加工指示しか記述されていない。このプログラムに関して、加工すべき加工特徴の漏れがないか確認するために、EXCELに加工シートを表示する(表 4-4)。つぎにOSEL処理系が加工特徴クラスライブラリと工具ライブラリを用いて、工具展開を行ない、OSEL-Fによる工程プログラムを生成する。シーケンス部分をEXCELに変換したものを表 4-5に示す。この段階では無駄な工具交換が生じているので、切削を開始するZ座標と工具の情報を用いて、EXCEL上でシーケンスをソートし、工具交換回数を最小にする(表 4-6)。最適化されたシーケンスデータをもとにOSEL-Fの工程プログラムが最適化されたものに変更される(図 4-12)。次に加工特徴クラスライブラリ、工具ライブラリ、機械依存加工クラスライブラリを用いて、OSEL-Xプログラムが生成される。このOSEL-Xを用いてCADKEYでカッターパスの確認を行なう(図 4-13)。
public class Sample { public static void main(String args[]) { // 加工特徴の定義がここに入る
// m10_4:4-M10タップ,hole20:Φ20貫通穴 m10_4.machining(); hole20.machining(); } |
次に、OSELによる意義を具体的に示す例として、加工に用いる工具の変更が簡単に行なえることを示す。
加工ノウハウには、カッターパスのパターン生成法、加工条件の設定法、工具選択法が含まれる。これまでは、CAMや自動プロの中にこのようなノウハウが埋め込まれており、ユーザが持っているノウハウを加工に反映させるためには、NCデータを作成するたびにそのNCデータに対し、変更を加えなければならなかった。
これに対し、OSEL は、ユーザが持っているノウハウをプログラムの形で記述し再利用することを可能にしている。たとえば、工具を選択する際には、種々の条件を勘案するが、一度、工具とその使用条件をプログラムしておけば、以後適切な工具が自動的に選択されることになる。また選択した工具に応じ、加工条件やカッターパスが自動的に変更される。実証デモでは、工具の変更をプログラム上で行ない、その工具によってカッターパスが変わることをJAVAアプレットで開発したシミュレータ上で表示した。
このようにOSELを用いることによって、ユーザが持っている加工ノウハウの記述が可能になることを実証し、OSELの実装言語としてJAVAを採用したことから加工ノウハウやツールのネットワーク上での流通に道を開いた。
public class Sample { public static void main(String args[]) { // 加工特徴の定義文がここに入る
// m10_4:4-M10タップ,hole20:Φ20貫通穴 // センタドリリングによる加工 m10_4.centerdrilling();
hole20.centerdrilling(); // ドリル D8.6による加工 Tool drill8 = toolfordrilling(8.6); // 工具クラスライブラリから選択
m10_4.drilling(drill8); // ドリル D15.8による加工 Tool drill15 = toolfordrilling(15.8); // 工具クラスライブラリから選択
hole20.drilling(drill15); // エンドミルD15による加工 Tool endmill15 = toolforendmilling(15); // 工具クラスライブラリから選択
hole20.milling(endmill15); // タッピング m10_4.tapping(); } } |