オブジェクト指向によるFAソフトウェアの開発

日本アイ・ビー・エム(株)
CIMプラント・オペレーション技術センター

高 田 昌 之


1. はじめに

最近生産の自動化という言葉の意味として,従来からよく使われていた生産機器の自動制御だけでなく, それらの設備の効率的な運用を目的とした生産セルや工程そのものの自動制御やスケジューリングまでもが含まれるようになってきた. これに伴い,生産機器や工程などを制御するFA制御用のソフトウェア・システムに対しても, ただ単に『どのように動作すれば良いか』だけでなく,『どのような目的の作業を行なうか』といった, より抽象的な事柄についても記述できてほしいとの要求が高まってきている.

このような変化はすでにロボット用プログラミング言語について, 動作記述レベルの言語から動作目的レベルの言語への移行という形で現れていることでもあるので, これとほぼ同じ変化がFAプログラミング用言語処理系に対しても再現されていることになる.

生産過程を記述するプログラムを,より人間の発想方法に近づけ, さらにそのプログラムの可読性を高めて保守性や既存のプログラムの再利用性を高めるためには, より抽象度の高い『どのような工程をどのような順番で実行していくか』といった戦略的な表現と, 『各工程をどのような手段で実現していくか』というより具体的な戦術的な表現とに分離することが望ましい. このために,筆者らは生産現場をモデルで表現し,オブジェクト指向的な考えを導入した生産制御システムを開発した. 本稿では筆者らのこの試みについて触れてみたい.

2. FAプログラミングとモデリング

FAで扱う世界,すなわち工場のフロア内での作業を記述するプログラミング言語においては, その世界がどのようになっているのかを理解し, その世界に対してFAソフトウェアが働きかけることのできる動作とは一体何であるかということが明確にできなければならない.

このような『生産現場に関する知識』を表現するために, フロア内の全ての仕掛かり品や生産設備などの状況をFA制御システムの内部にデータで表現し, またそのフロアに対して行なうことの可能な作業のすべてを列挙できることが必要となる.

これを目的として行なうのがモデリングである. すなわち計算機のメモリ上に生産現場をデータとして表現し,状況判断などに必要な情報はこのモデルから全て収集するとともに, このデータ構造の一部を変更することによって,計算機が行なえる全ての操作を実行できるようにもするのである.

従来のFAソフトウエアはセンサから得られた機器に関する情報を用いて直接機器を制御していたが, このフィード・バック・ループをFAソフトウェアとモデルとの間のループと, モデルと外界の機器との間のループとに分割し, 前者はFAソフトウェアのアプリケーション・プログラム側で実現し, 後者はセル制御システムの一部の機能,一種の(拡張された)デバイス・ドライバとして考えるようにする.(図1)

このようなセル制御システムを利用するという前提に立つと,アプリケーション・プログラムはモデルのデータを変更するだけで, 後はセル制御システムのもつデバイス・ドライバが自動的に被制御機器をそのモデルの状態に近付くように制御を行なうことを期待できるし, またセンサの存在を意識せずにその瞬間の生産現場の状況を知ることができる.

3. メッセージ通信によるFAプログラミング

より容易にFAソフトウェアを作成し,かつ保守をしやすいプログラムを作るためには, 生産の手順を人間の認識に近い単位でプログラムとして書き下し, それらのモジュールの結合体として全体のFA制御プログラムを実現できるようにすることが重要である.

モデルと実機器との間のフィード・バック制御はセル制御システム内のデバイス・ドライバに任されているため, 被制御機器を記述するモデルの抽象度を上げることによって,その機器を仮想的な生産設備(VMD)として扱うことができる. しかしこれだけでは,データ表現として被制御機器の状態の表示を実現できただけで, それらを動作する機器として抽象化して表現したと言うにはまだ足りない.

ここでメッセージによって動作指定を行なうことを考える. メッセージとはオブジェクトに対して送られる指示のことで, メッセージ以外の手段ではオブジェクトの内部状態を変更することはできない.

オブジェクトが『メッセージが送られたということ』に対して行なう動作の詳細は各オブジェクトごとにその内部で定義される. このためメッセージを送り出す側ではどのような手段によって自分の出した指示が実行されるのかを意識する必要はない. すなわち,送り手はメッセージによって作業の内容を指定するものの,その実現の方法に関しては何の知識も持つ必要がないため, メッセージによって戦略を指定する事でモデルに与える変更(機器の動作)までも仮想化することができる.

オブジェクト指向の用語では送られたメッセージに対応する動作の記述をメソッドと呼ぶが, 各オブジェクト毎に定義されたメソッド群こそが, メッセージ・レベルの戦略的な抽象度の高い動作指定を被制御機器を直接制御できるほど具体性の高い戦術的な動作指定にまで変換する役目を持つ.

この時に,最も抽象的なレベルから最も具体性の高いレベルまで一気に情報を変換するのではなく, 中間的な段階を幾つか用意してVMDに対する動作指令を徐々に具体的な動作命令に変換していくことにより, メッセージの抽象レベルを階層化して多くの機器に共有される機能は抽象度の高い部分に, 特殊なものにしか備わっていない機能は抽象度の低い部分に,などと適切に組み込んでいくことができる.

また例外事象の発生なども,例外事象ハンドラに対してメッセージを送ることで記述して, その時々に応じた例外処理を行なうことも可能となる.

さらに一歩進めて一つの工程に着目した時, その工程の開始の前提となる工程の作業完了を一つの事象として取り扱うこととすれば, すべての動作を事象の発生とそれに対応するプログラムの実行という一つのフレーム・ワークの中で表現・実現できるようになる.

4. 事象駆動型FAプログラミング

メッセージの交換を基本として処理を行なうシステムとしては,オブジェクト指向以外にもいろいろな実現方法が考えられる. その一つの実現例として内容が更新された時に指定のプロセスへメッセージを送るような簡易データベース・システムを考えてみたい.

前項の最後に述べたように,生産過程に考えられるタスクを通常の加工処理から異常処理まで含めてすべて列挙し, それらの起動条件をセンサの入力や前工程の終了状態(正常終了/異常終了)などからなる条件式で表現することができれば, FAソフトウェアは条件の記述とその条件が成立した時に行なうべき行動からなるIF−THENルールの集合となる.

さらにこのような処理開始の条件を示す式はSFC (Sequencial Function Chart) に代表されるペトリネット様の図形的な作業内容記述から容易に生成することができる. すなわちペトリネットなどで表現したFAソフトウェアとは, 前工程の完了を示す通知をトークンのリリースという事象に置き換えた, 完全な事象駆動型のシステムの表現に他ならないといえる.

たとえば各種の処理の開始条件の監視を, 処理自身を行なう並列処理タスクから共用されるようなデータベース・サーバの内部で行なわせ, さらに監視していた条件が成立した時にはあらかじめ登録されたクライアント・タスクに対して条件式成立の事実を通知するようなデータベース・システムを考える.(図2)

このようなデータベースを用いるタスクは 自分の処理を開始するために必要な条件の成立を監視するためのポーリングを行なう必要がなく, ただデータベースからの条件成立の通知メッセージを待ち合わせるだけで良くなるため, CPUの負荷が軽減されるとともにネットワーク上の通信トラフィックが激減する.

さらに各処理タスクはすべて独立したプログラム・モジュールとして記述できる一方, 必要なデータの交換は共用データベースを介して行なうことができるため, 記述能力を維持したまま可読性を高めることができる. さらにマイナー・チェンジの時にも手を入れなければならないプログラムの数を減らせるため, FAソフトウェアの生産性・再利用性を高められる.

また,これは副次的なメリットであるが, アプリケーション・タスクのひとつとしてデータベースの内容を調べたり画面に表示したりするようなものを追加することにより, 生産工程の進捗を示す重要な情報を一括して入手・表示することができる. この時実際に工程を処理しているプログラムには何の変更も加えることなく生産システムの現状を知ることができるため, デバッグ時やシステムの変更・拡張時に威力を発揮する.

5. おわりに

以上の議論は,すべてFAソフトウェアからいかにモデルを操作するかという議論であった. しかし,実際の制御においてはモデルの変更に伴って被制御機器をどのように操作するかという点にも問題は多い.

アプリケーション・プログラムが被制御機器の持つ数多くの属性のうち, 作業に重大な影響を及ぼすものだけを意識し,他のものには気を使わなくてもよいようにするためには, 同種の被制御機器すべてに共通して使えるVMDを設定することが最も重要である.

すなわちVMDのモデルとしての表現方法やVMD操作用アトミック・オペレーションとしてのメッセージ集合などを標準として設定し, どんな被制御機器もここに定められた内部状態変数とメソッド群とを含んでいることを保証しなければならないのである.

仮に生産現場において使用される可能性のあるすべての被制御機器についてその種類ごとに一般性の高いVMDの仕様を設定し, その種類に属するすべての機器に対してVMDの状態を実機に反映させる機器制御用拡張デバイス・ドライバが用意されたならば, その仕様にしたがったFAソフトウェアは被制御機器にかかわらずに所期の目的を達成することができる.

高機能の生産制御システムが必要とされ実現されて行くにつれ, このような被制御機器の共通インタフェースの標準化が必要になると考えられる.


 [M.T. HomePage]  [written & copyrighted by Masayuki Takata]