操作系ソフトウェアから見た機械の標準モデル:マシンリソースオブジェクト

コントローラのマンマシンインターフェースは、それぞれの機械に適した操作環境を実現するという点で機械メーカやエンドユーザなどにとって非常に関心の高い部分である。しかしながら、こうしたマンマシンインターフェイスを実現するソフトウェアとしては、これまではコントローラメーカが作った基本的な操作環境を利用するしか方法がなかった。同様に、機械運用のためのアプリケーションソフトウェアも、機械に対する標準的なインターフェイスの欠如から、個別の作り込みを行ってきていた。オープンコントローラでは機械メーカやエンドユーザなどが自由に操作系ソフトウェアを構築・改良できるものと期待を集めている。

機械メーカ・エンドユーザなどが自由に操作系ソフトウェアを構築・改良していくためには、以下の事項を考慮する必要がある。

操作系ソフトウェアに関するOSECアーキテクチャでは、こうした要求事項を満たすための手段としてアプリケーションフレームワークというソフトウェア開発手法を全面的に取り入れた。従来のソフトウェア開発手法では、ソフトウェアの大部分は一つ一つ積み重ねていくようにして開発する。そこでの開発労力は、あらかじめ用意されたソフトウェアライブラリを呼び出すことで低減できるが、あらかじめ用意された部分に比べて新規に開発する部分の比率はかなり多い(図 3-5(a))。一方、アプリケーションフレームワーク手法では、ソフトウェアは今までのような積み重ねによっては開発しない。あらかじめアプリケーションソフトウェアのひな型が用意されていて、目的に合わせてそのひな型を変更したり拡張するのが開発作業の主となる(図 3-5(b))。当然こうした改良にはあらかじめ提供されるライブラリが利用できる。このようにアプリケーションソフトウェアのひな型、すなわちアプリケーションフレームワークを利用することで機械に対する操作系ソフトウェアの開発を効率よく行えるよう目指したのである。

                       (a) 従来の手法                 (b) アプリケーションフレームワークを用いる手法

3-5 ソフトウェア開発手法

一般に、操作画面に関するソフトウェアのひな型としては『モデル(Model)・ビュー(View)・コントローラ(Controller)』という3つの部分(MVC)に分けて考えると効率的である。機械の操作系ソフトウェアの場合、『モデル』は操作する対象である機械のモデルに、『ビュー』は画面およびGUI部品など画面要素に、『コントローラ』は操作系ソフトウェアでのロジック、すなわちGUI部品のボタンが押されたときの処理や機械の状態が変わったときの処理に相当する。このうち機械をオブジェクトの形で『モデル』化したものが『マシンリソースオブジェクト』であり、OSECアーキテクチャとして標準化がすすめられた。

こうした工場内の事物のオブジェクトによるモデル化は、分散オブジェクト技術の業界標準であるOMG (Object Management Group)などでも『生産オブジェクト』として取り組まれ始めた。またコンピュータを利用した半導体製造システム(SEMI)では、最近、ホストコンピュータとその管理下にある装置群との間の関係を標準化するために、ホストコンピュータから見た下位の装置群との共通部分をGEM (Generic Equipment Model:包括的な装置モデル)と呼ばれるモデルで規定する方法が用いられている。これまで装置のベンダはホストコンピュータとの接続のために個々のソフトウェアを開発する必要があったが、ホストコンピュータとの接続に必要な共通部分がGEMに組込まれ標準化されたため、ホストコンピュータと各装置はGEMを介して独立することになり、システムインテグレータや装置ベンダはGEMとのインターフェイスを遵守している限り、独立にアプリケーションソフトウェアを開発することが可能となった。

3-6 マシンリソースオブジェクトの概念

同様に、マシンリソースオブジェクトも機械とアプリケーションの間のインターフェイスの標準化を図ることによって、ソフトウェアの可搬性・移植性・再利用性・拡張性の向上を狙ったものである。マシンリソースオブジェクトの標準的なインターフェイスとして、表示操作関係のアプリケーションインターフェイス・生産管理など上位プラントフロアアプリケーションとのインターフェイス・NC制御部(NC制御カード・PLC・サーボなど)とのインターフェイスの3つの切り口を備えたモデルを採用している(図 3-6)。

図 3-7は工作機械を対象としたマシンリソースオブジェクトにおける機械資源のクラスの概略図である。軸・スピンドル・ツール・PLCなど工作機械の持つ様々な資源を論理的に分析し、各資源の属性・機能を明示的に定義してオブジェクト指向関連図(ORD)としてまとめたものである。これらの資源に対する指令と状況の問い合わせが各資源オブジェクトに対するメソッドの形で定義されている。操作系ソフトウェアとしては、機械の各資源オブジェクトにメッセージを投げる形で機械に指令を与えたり機械の状況を知ったりする。

3-7 マシンリソースオブジェクトのクラス概略図(Coadの記法による)

現行のマシンリソースオブジェクトは工作機械をオブジェクトの形でモデル化したものだが、同じ工作機械といってもマシニングセンタ・旋盤など機種の違いや同じ機種でも軸の数・パトライトなど付属品の有無といった構成の違いなどによって機械資源が異なってくる。そこでマシンリソースオブジェクトとしては抽象的な工作機械の一般的なモデルを一つ用意しておいて、機種や構成の違いはその一般モデルから派生されたオブジェクト群を個別の機械に対して構成し直すことで対応している。ここではオブジェクト指向での継承の概念が利用されている。

操作系ソフトウェアからはマシンリソースオブジェクトにより標準的な工作機械が一意に見えるようになったが、実世界である制御系とインターフェイスすることを考えると、制御系としては制御ボードなどに応じて様々な実装形態が存在するため、一意というわけにはいかない。OSECアーキテクチャでは、抽象的な仮想世界であるマシンリソースオブジェクトから実世界である制御系への展開を行うために、コントローラの内部構造(制御実行部)へアクセスするためのリソース制御という概念が導入されている。

アプリケーションフレームワークによる操作盤画面の作成の例

3-8 マシンフレームワークによる操作盤画面作成の例

最近のソフトウェア開発環境やツールの動向として、アプリケーションフレームワークを備え、ソフトウェアを部品化することで効率的に開発が行えるものが注目を集めている。こうした統合環境のもとで、マシンリソースオブジェクトを中心とする、工作機械の操作系ソフトウェアのためのアプリケーションフレームワーク(マシンフレームワーク)によって操作盤画面を作成した例を紹介する(図 3-8)。この例で使用したマシンフレームワークは、ビジュアルビルダや高機能コンパイラなどを備え効率良くC++アプリケーションソフトウェアを開発するための統合環境であるVisualAge C++を基盤としていて、次のような特徴を持つ。

この環境のもとでの工作機械の操作用ソフトウェアの開発は以下のように行う(図 3-9参照)。

  1. 対象機械のモデルの作成
    マシンリソースオブジェクトの各資源オブジェクトに対応した軸・制御カードなどの機械要素モデル部品を使って対象機械のモデル化を行う。例えば機械は制御カードと機械資源から出来ていて、機械資源には3つの軸とスピンドルモータがあって、といったモデル化をアイコンを利用して行う。機械への働きかけは全てこの抽象化された機械モデルを通して行われ、直接制御系が叩かれることはない。このとき、例えば軸の稼動範囲や最高速度といった細かな設定も行う。新たに機械要素モデル部品を追加するときは、例えば新たに制御カードを開発したためそれに対応したモデル部品を開発するには、あらかじめ用意されている制御カードの機械要素モデル部品のひな型に対して、新たな制御カードとの実インターフェイスの部分だけ追加すればよい。
  2. 画面の作成
    例えば操作盤の画面ならば、軸のジョグボタンや軸の現在位置を表示するための表示板といったGUI部品を画面に貼り付けていくことによって画面を作成する。もちろん新たにGUI部品を追加することも容易である。
  3. 画面と機械モデルの関係付け作成
    画面に貼り付けたGUI部品が機械モデルに対してどのようにふるまうか、関係付けを作成する。例えば軸のジョグボタンが押されたら軸のモデルは『切削送り』をするよう関係付ける。軸の現在位置の表示板は軸のモデルの『現在位置』の値が変更されたらその値を表示するよう関係付ける。あらかじめ用意されていないような特殊な関係付けを行いたいときには、そのときのふるまいをソフトウェア部品として追加することになる。
  4. 実行コード生成
    作成された画面・機械モデル・画面と機械モデルの関係付けなどは、32ビットコードを生成するフルセットC/C++最適化コンパイラによってネイティブコードにコンパイルされる。

3-9 機械の操作系ソフトウェア開発の例