(57)【要約】【課題】複雑化せずしかも再利用可能なコンポーネントを用いて構成することができる産業用ソフトウェアのプログラム構造を得ること。【解決手段】産業用機器に接続され、産業用機器の制御や産業用機器から所定の情報を取得して処理を行う計算機で実行される産業用ソフトウェアで、産業用機器に対する処理内容を所定の基準に基づいて分類したレイヤ１１０を当該産業用ソフトウェアの処理手順にしたがって階層構造に並べ、レイヤ１１０は、計算機と産業用機器との間のメッセージ１１３の処理を行うコンポーネント１１２と、当該レイヤ１１０内または他のレイヤ１１０間で所定の形式のメッセージ１１３を分配するマネージャ１１１と、を備え、マネージャ１１１は、当該レイヤ１１０内のコンポーネント１１２との間または他のレイヤ１１０からのマネージャ１１１との間のメッセージ１１３を受信して、その宛て先に基づいてメッセージ１１３を送信する。【選択図】        図２
2007094894.tif 000002
【特許請求の範囲】
【請求項１】
所定の処理を実行する産業用機器に接続され、前記産業用機器の制御や前記産業用機器から所定の情報を取得して処理を行う計算機で実行される産業用ソフトウェアで、前記産業用機器に対する処理内容を所定の基準に基づいて分類したレイヤを当該産業用ソフトウェアの処理手順にしたがって階層構造に並べた産業用ソフトウェアのプログラム構造であって、
前記レイヤは、
前記計算機と前記産業用機器との間のメッセージの処理を行うプログラムからなるコンポーネントと、
当該レイヤ内または他のレイヤ間で所定の形式のメッセージを分配するプログラムからなるマネージャと、
を備え、前記マネージャは、当該レイヤ内のコンポーネントとの間または他のレイヤからのマネージャとの間のメッセージを受信して、その宛て先に基づいてメッセージを送信することを特徴とする産業用ソフトウェアのプログラム構造。
【請求項２】
前記コンポーネントは、前記レイヤに含まれる処理を個々の機能ごとに分割したうちの１つの機能を実現するプログラムであることを特徴とする請求項１に記載の産業用ソフトウェアのプログラム構造。
【請求項３】
前記レイヤは、
前記計算機に前記産業用機器を接続して制御する処理を行うドライバコンポーネントを含むドライバレイヤと、
前記産業用機器に前記ドライバコンポーネントを介して所定の処理を実行させ、またはその実行結果に基づいて所定の処理を行うデータ処理コンポーネントを含むデータ処理レイヤと、
を含むことを特徴とする請求項１または２に記載の産業用ソフトウェアのプログラム構造。
【請求項４】
前記計算機には、通信回線を介してさらに上位系機器と接続され、
前記レイヤは、前記上位系機器と所定の通信プロトコルでデータの送受信を行う通信コンポーネントを含む通信レイヤをさらに含むことを特徴とする請求項３に記載の産業用ソフトウェアのプログラム構造。
【請求項５】
請求項１〜４のいずれか１つに記載のプログラム構造の産業用ソフトウェアを記憶する記憶装置を備えることを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、産業用機器の管理を行うためのソフトウェアのプログラム構造と、そのプログラム構造を有する産業用ソフトウェアを記憶する記憶装置を備える計算機に関するものである。
【背景技術】
【０００２】
近年のソフトウェア開発では、ソフトウェアを一つの大きなものとするのではなく、機能を分割することによって小規模なコンポーネントの組み合わせとするのが一般的となっている。たとえば、周辺機器とアクセスするためのコンポーネント、データ処理ロジックを処理するためのコンポーネント、画面表示やユーザからの入力を受け付けるためのコンポーネントなどの組み合わせでソフトウェアを構築する。このようなソフトウェアのコンポーネント化の考え方は、産業用システムにおいても有効である。通常、産業用のソフトウェアでは、画面表示などの用途は少ないが、閾値の検査、アラーム処理、単位系変換など一連のデータ処理を実施する場合が多く、個別の機能を持ったコンポーネントを組み合わせてソフトウェアを構築する方法は従来から使用されている。
【０００３】
この考え方を拡張した例として、特許文献１に記載されている通信方法が提案されている。このデータ通信方法では、ロジックを処理する部分をさらに複数の階層に分割し、また各階層の入出力を同じ形式にすることによって各階層を直接接続して段階的に処理を行うものである。このような方法によって処理を細分化しソフトウェアのコンポーネント化を容易にすることができる。
【０００４】
【特許文献１】特開２０００−６７０１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記特許文献１に記載のデータ通信方法では、処理対象がネットワークプロトコルである。このネットワークプロトコルは、常に同じ順番で処理すれば良いため、特許文献１に記載の方式で処理することによって高速化などの利点が得られる。しかしながら、産業用のデータ処理の場合には、データに応じて処理を変えたり、対象機器に応じて制御処理を変えたりするなどの手順が一般的であり、画一的な処理順序では対応できない。たとえば、上記特許文献１に記載のデータ通信方法におけるコンポーネント化手法を、データ処理や機器制御などを行う産業用ソフトウェアに適用しようとする場合には、産業用ソフトウェアの各コンポーネントが、データ自体の処理と、つぎの処理を行うコンポーネントへのデータの配送路（供給路）決定を兼ねているために、コンポーネントが複雑化してしまうという問題点があった。
【０００６】
また、コンポーネントは機能を単純化するほど再利用が容易になるが、特許文献１に記載の手法を産業用ソフトウェアに適用する場合には、各コンポーネントがつぎの処理を行うコンポーネントへのデータの配送の役割も持つために、様々なコンポーネントを再利用してソフトウェアを構成することが困難であるという問題点もあった。
【０００７】
この発明は、上記に鑑みてなされたもので、複雑化せずしかも再利用可能なコンポーネントを用いて構成することができる産業用ソフトウェアのプログラム構造を得ることを目的とする。また、この発明は、そのプログラム構造の産業用ソフトウェアを記憶する記憶装置を備える計算機を得ることも目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、この発明にかかる産業用ソフトウェアのプログラム構造は、所定の処理を実行する産業用機器に接続され、前記産業用機器の制御や前記産業用機器から所定の情報を取得して処理を行う計算機で実行される産業用ソフトウェアで、前記産業用機器に対する処理内容を所定の基準に基づいて分類したレイヤを当該産業用ソフトウェアの処理手順にしたがって階層構造に並べた産業用ソフトウェアのプログラム構造であって、前記レイヤは、前記計算機と前記産業用機器との間のメッセージの処理を行うプログラムからなるコンポーネントと、当該レイヤ内または他のレイヤ間で所定の形式のメッセージを分配するプログラムからなるマネージャと、を備え、前記マネージャは、当該レイヤ内のコンポーネントとの間または他のレイヤからのマネージャとの間のメッセージを受信して、その宛て先に基づいてメッセージを送信することを特徴とする。
【発明の効果】
【０００９】
この発明によれば、ソフトゥエアのプログラム構造において、メッセージの配送を行うマネージャと、メッセージの配送を除いたデータを処理するコンポーネントに分離して、これらを適切にレイヤ構造に配置することで、様々な要求を容易に処理することができるとともに、コンポーネントに高い再利用性を持たせることができるという効果を有する。また、システムを構築するユーザはデータ処理レイヤのコンポーネントを作成する必要があるが、コンポーネントは上述したようにメッセージに含まれるデータを処理する部分だけを記述すればよいため、メッセージの配送を気にする必要がなく再利用性の高いコンポーネントを作成できる。さらに、同様の処理を行うコンポーネントをまとめてレイヤ構造として各レイヤをマネージャが管理する構成にすることによって、新たな処理を追加する場合に、既存のレイヤやコンポーネントへの変更を生じさせることなく、新たなコンポーネントまたはコンポーネントとマネージャからなるレイヤを追加するだけでよいという効果を有する。
【発明を実施するための最良の形態】
【００１０】
以下に添付図面を参照して、この発明にかかる産業用ソフトウェアのプログラム構造および計算機の好適な実施の形態を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
図１は、この発明にかかるプログラム構造を有するソフトウェアが動作する計算機の構成の一例を模式的に示す図である。計算機１０は、ＣＰＵ（Central Processing Unit）１１と、ＲＡＭ（Random Access Memory）１２と、ＲＯＭ（Read Only Memory）１３と、ハードディスク装置などの記憶装置１４と、ネットワークアダプタ１５とが、バス１６を介してそれぞれ接続される構成を有している。ここで、ＲＯＭ１３または記憶装置１４に格納される産業用ソフトウェアを構成するプログラムが、ＲＡＭ１２に展開され、ＣＰＵ１１によって実行される。
【００１２】
この実施の形態で対象とする計算機１０は、図示しないインタフェースを介して制御対象となる被制御装置と接続して、この被制御装置を制御したり、被制御装置から所定の情報を収集したりするものであり、プログラマブルコントローラなどの産業用データ収集機器に適用する場合が一般的である。しかし、一般的にソフトウェアが動作する環境であれば同一の動作が可能となるので、パーソナルコンピュータなどの情報処理装置であってもよい。この被制御装置は、加工機や搬送用機器、センサ、ロボットなどの産業用機器であり、制御用プログラムからの指示に基づいて、所定の処理を実行する機器である。
【００１３】
さらに、この計算機１０のネットワークアダプタ１５には、通信回線２０を介して、上位系機器に接続され、計算機１０と上位系機器との間で所定の通信プロトコルにしたがってデータの送受信を行う場合もある。この上位系機器としては、パーソナルコンピュータやプログラマブルコントローラなどを例示することができる。
【００１４】
図２は、この発明にかかる産業用ソフトウェアのプログラム構造を模式的に示す図である。この実施の形態で対象とする産業用ソフトウェア１００は、上記産業用機器を制御し、産業用データ収集を行うためのソフトウェアである。この図２に示されるように、産業用ソフトウェア１００は、複数の階層構造を有している。ここでは、３層のレイヤ１１０ａ〜１１０ｃから構成され、各レイヤ１１０ａ〜１１０ｃは、１つのマネージャ１１１と任意の数のコンポーネント１１２とから構成される仮想的な構造である。このレイヤ１１０ａ〜１１０ｃは、産業用ソフトウェア１００の処理を所定の基準に基づいて分類した処理内容をプログラムとするコンポーネント１１２の集合体によって特徴付けられ、各レイヤ１１０ａ〜１１０ｃ間は、処理の流れに応じた階層構造を有する。レイヤ１１０ａ〜１１０ｃの分類として、産業用ソフトウェア１００を、たとえば被制御装置の制御を行う機能、データ処理を行う機能、通信を行う機能などのように大まかな機能ごとに分類する方法などがある。この図２では、レイヤ１１０ａが下位の機能を実現するレイヤであり、レイヤ１１０ｂがレイヤ１１０ａよりも上位の機能を実現するレイヤであり、レイヤ１１０ｃがレイヤ１１０ｂよりも上位の機能を実現するレイヤである。なお、この図２の例では、３階層のレイヤ構造となっているが、任意の数の階層構造とすることができる。
【００１５】
マネージャ１１１は、各レイヤ１１０ａ〜１１０ｃにおいて唯一存在し、上位レイヤや下位レイヤからのメッセージ１１３を受信し、その宛て先を参照して、同一レイヤ１１０ａ〜１１０ｃに存在する複数（１以上）のコンポーネント１１２にメッセージ１１３を送信したり、コンポーネント１１２からのメッセージ１１３を受信して上位レイヤや下位レイヤに送信したりするなどのメッセージ分配の役目を担うプログラム（ソフトウェア）である。
【００１６】
コンポーネント１１２は、レイヤ１１０ａ〜１１０ｃで規定される処理内容をさらに個別機能的に分割して、分割したそれぞれの処理をプログラム（ソフトウェア）にしたものである。たとえば、被制御対象の制御を行って、その結果をメッセージ１１３として生成したり、受信したメッセージ１１３に含まれるデータの変換、取捨選択などを実施してメッセージ１１３を再送信したり破棄したりする役目を担うソフトウェアである。
【００１７】
上記したマネージャ１１１とコンポーネント１１２との間（すなわち、レイヤ内部）や各レイヤ間のマネージャ１１１の間（すなわち、レイヤ間）では、データを交換するための共通仕様に則ったメッセージ１１３が交換される。このメッセージ１１３の共通仕様には、メッセージ１１３の宛て先、送信元、生成時間、通過履歴、データの有効期限、データなどが含まれる。
【００１８】
このように産業用ソフトウェア１００は、大まかな処理内容ごとに機能分割されたレイヤ構造を有し、さらにレイヤ１１０ａ〜１１０ｃは個別の機能ごとに処理内容が分割されたコンポーネント１１２と、メッセージ１１３の配送を行うマネージャ１１１を有するので、各処理に応じたコンポーネント１１２が起動されて、起動したマネージャ１１１によってメッセージ１１３が配送され、所望の処理が実行される。
【００１９】
図３は、産業用ソフトウェアのプログラム構造の具体例を示す図である。この図３では、レイヤ構造を有する産業用ソフトウェア１００Ａが実装された産業用データ収集機器１０Ａに、産業用機器１５１Ａ〜１５１Ｃ、データベース１６１、アラーム通知機器１６２、および上位系機器１７１が接続される構成を有している。そして、産業用ソフトウェア１００Ａは、その大まかな分類内容によってドライバレイヤ１１０Ａ、データ処理レイヤ１１０Ｂおよび通信レイヤ１１０Ｃの３階層に分かれた構成を有している。なお、産業用データ収集機器１０Ａは、特許請求の範囲における計算機に対応している。
【００２０】
産業用機器１５１Ａ，１５１Ｂ，１５１Ｃは、加工機や搬送用機器、ロボットなど工場内に設置される様々な被制御対象となる機器である。データベース１６１は、様々な情報を保存可能な機器であり、通常はパーソナルコンピュータやサーバ上でソフトウェアとして動作している。アラーム通知機器１６２は、異常を伝えるための機器であり、ハードウェアとしては赤色ライトなどが一般的であるが、自動的にＥ−ｍａｉｌを送信するソフトウェアなどもアラーム通知機器として考えられる。上位系機器１７１は、ＥＲＰ（Enterprise Resource Planning）システムが動作するサーバなど収集した情報を解析し活用する側の機器である。
【００２１】
ドライバレイヤ１１０Ａは、産業用機器１５１などの被制御装置と接続するためのドライバを配置するレイヤであり、１以上のドライバコンポーネント１１２Ａ−Ａ〜１１２Ａ−Ｃと１つのドライバマネージャ１１１Ａを有する。ドライバコンポーネント１１２Ａ−Ａ〜Ｃは、それぞれ産業用機器１５１Ａ〜１５１Ｃと通信するためのプロトコル解析部分を含んだプログラム（ソフトウェア）であり、デバイスドライバと呼ばれる場合もある。このドライバコンポーネント１１２Ａ−Ａ〜１１２Ａ−Ｃは、産業用機器１５１Ａ〜１５１Ｃの制御や情報収集などを行う機能を有する。通常、ドライバコンポーネント１１２Ａ−Ａ〜１１２Ａ−Ｃは、産業用機器１５１Ａ〜１５１Ｃの種類に応じて設けられ、システムの仕様に依存しないため再利用が可能である。ドライバマネージャ１１１Ａは、ドライバレイヤ１１０Ａに唯一存在するマネージャであり、ドライバコンポーネント１１２Ａ−Ａ〜１１２Ａ−Ｃのライフサイクル管理と、メッセージの分配、収集を行う機能を有する。通常、ドライバマネージャ１１１Ａは、システムの仕様に応じて作成する必要がある。
【００２２】
データ処理レイヤ１１０Ｂは、上位の通信レイヤ１１０Ｃおよび下位のドライバレイヤ１１０Ａからの情報を変換、解析、判断するためのコンポーネント１１２Ｂ−Ａ〜１１２Ｂ−Ｃを配置するレイヤである。データ変換コンポーネント１１２Ｂ−Ａは、この例の場合には産業用機器１５１Ａ〜１５１Ｃの情報を取得するためのメッセージを定期的に生成し、取得した情報を解析、判断して統合的な情報に変換し、新しいメッセージのデータとして送信する機能を有する。たとえば、産業用機器１５１Ａ〜１５１Ｃとの間でやりとりされるデータ形式と、上位系機器１７１やデータベース１６１で使用されるデータ形式とは、一般的に異なるものであるので、そのデータ形式を変換する機能を有する。データベースコンポーネント１１２Ｂ−Ｂは、この図３の例では産業用機器１５１Ｂの機器情報を取得するためのメッセージを定期的に生成し、取得した情報を外部のデータベース１６１に保存する機能を有する。アラームコンポーネント１１２Ｂ−Ｃは、産業用機器１５１Ｃの情報を取得するためのメッセージを定期的に生成し、取得した情報を解析し、異常と判断した場合には外部のアラーム通知機器を動作させる機能を有する。データ処理マネージャ１１１Ｂは、データ処理レイヤ１１０Ｂに唯一存在するマネージャであり、データ変換コンポーネント１１２Ｂ−Ａ、データベースコンポーネント１１２Ｂ−Ｂ、およびアラームコンポーネント１１２Ｂ−Ｃのライフサイクル管理およびメッセージの分配、収集を行う機能を有する。なお、ユーザが新たな処理を実行したい場合には、その処理内容が記述されたコンポーネントをこのデータ処理レイヤ１１０Ｂに配置させればよい。
【００２３】
通信レイヤ１１０Ｃは、ネットワーク経由で上位系機器と通信するためのコンポーネントを配置するレイヤである。通信コンポーネント１１２Ｃは、上位系機器１７１とのメッセージ交換を行うためのコンポーネントであり、受信の際には、受信したデータを産業用データ収集機器１０Ａ内部で使うためのメッセージとして再構成し、通信マネージャ１１１Ｃに渡す機能を有する。通信マネージャ１１１Ｃは、通信レイヤ１１０Ｃに唯一存在するマネージャであり、通信コンポーネント１１２Ｃのライフサイクル管理およびメッセージの分配、収集を行う機能を有する。
【００２４】
なお、図中に記載される経路１〜９はメッセージの動きを説明する都合上、便宜的に記載しているものであり、実際には何も存在しない。また、上述の全てのコンポーネント１１２Ａ−Ａ〜１１２Ｃと全てのマネージャ１１１Ａ〜１１１Ｃは、同一仕様のメッセージを送受信する機能を有しているため、どのコンポーネント１１２Ａ−Ａ〜１１２Ｃとマネージャ１１１Ａ〜１１１Ｃの間でもメッセージの交換が可能である。
【００２５】
つぎに、図３に示すようなシステムの産業用データ収集機器１０Ａ上で動作する産業用ソフトウェア１００Ａを例に挙げてその動作処理について説明する。図３に示される産業用ソフトウェア１００Ａでは、以下の４つの処理を行うものとする。
（１）上位系機器１７１からの要求によって産業用機器Ａの情報を取得し、上位系機器１７１に情報を伝える。
（２）産業用機器１５１Ｂの情報を定期的に取得し、データベース１６１に保存する。
（３）産業用機器１５１Ｃの情報を定期的に取得し、異常が発生している場合はアラームを発生させる。
（４）産業用機器１５１Ａ〜１５１Ｃの情報を定期的に取得し、まとまったデータに変換して上位系機器１７１に情報を伝える。
【００２６】
（１）「上位系機器１７１からの要求によって産業用機器Ａの情報を取得し、上位系機器１７１に情報を伝える。」場合
この処理は、通信コンポーネント１１２Ｃが、上位系機器１７１からの要求を受信した際に実行される処理である。まず、産業用データ収集機器１０Ａが上位系機器１７１からの要求を受信すると、産業用ソフトウェア１００Ａとしては通信コンポーネント１１２Ｃが、上位系機器１７１からの要求を受信し、メッセージを生成する。このメッセージには“産業用機器Ａから情報を取得し、その情報を上位系機器１７１に送信する”という要求がデータとして含まれる。また、このメッセージは、上述したように産業用ソフトウェア１００Ａのマネージャ間、コンポーネントとマネージャとの間で共通化されたフォーマットを有し、ここではその宛て先が「産業用機器Ａ」とされる。通信コンポーネント１１２Ｃは、このメッセージを、経路９を介して通信レイヤ１１０Ｃを管理する通信マネージャ１１１Ｃに送信する。通信マネージャ１１１Ｃは、受信したメッセージの宛て先を参照して下位のデータ処理レイヤ１１０Ｂのデータ処理マネージャ１１１Ｂに経路８を介して転送する。
【００２７】
データ処理レイヤ１１０Ｂのデータ処理マネージャ１１１Ｂは、通信マネージャ１１１Ｃから受信したメッセージの宛て先を参照して、さらに下位のドライバレイヤ１１０Ａのドライバマネージャに経路４を介して、メッセージを転送する。
【００２８】
ドライバレイヤ１１０Ａのドライバマネージャは、データ処理マネージャ１１１Ｂから受信したメッセージの宛て先を参照して、産業用機器Ａと通信を行うドライバコンポーネントＡに経路１を介してメッセージを転送する。ドライバコンポーネントＡは、メッセージ内のデータに含まれる要求を解析し、産業用機器Ａと通信して所定の情報を取得し、メッセージに乗せてドライバマネージャに経路１を介して返信する。このメッセージの宛て先は、「上位系機器１７１」である。ドライバマネージャは、ドライバコンポーネントＡから受信したメッセージの宛て先（すなわち、上位系機器１７１）を参照して、上位レイヤのデータ処理マネージャ１１１Ｂに経路４を介して転送する。
【００２９】
データ処理マネージャ１１１Ｂは、メッセージの宛て先（すなわち、上位系機器１７１）を参照して、通信マネージャ１１１Ｃに経路８を介して転送する。通信マネージャ１１１Ｃは、下位レイヤから受信したメッセージを全て通信コンポーネント１１２Ｃに経路９を通して転送する。そして、通信コンポーネント１１２Ｃでは、メッセージに含まれる内容を、上位系機器１７１に送信する。これにより、上位形機器では、産業用機器Ａから所定の情報を取得することが可能となる。
【００３０】
（２）「産業用機器１５１Ｂの情報を定期的に取得し、データベース１６１に保存する。」場合
この処理は、データ処理レイヤ１１０Ｂのデータベースコンポーネント１１２Ｂ−Ｂによって定期的に実行される処理である。データ処理レイヤ１１０Ｂのデータベースコンポーネント１１２Ｂ−Ｂは、定期的に産業用機器１５１Ｂの情報取得要求を含むメッセージを生成し、経路６を介して発信する。このメッセージの宛て先は、「産業用機器１５１Ｂ」であるとする。データ処理マネージャ１１１Ｂは、データベースコンポーネント１１２Ｂ−Ｂからのメッセージを受け取ると、その宛て先を参照してドライバレイヤ１１０Ａのドライバマネージャにメッセージを、経路４を介して転送する。
【００３１】
ドライバマネージャは、受信した宛て先を参照して産業用機器１５１Ｂと通信を行うドライバコンポーネントＢに経路２を介して、メッセージを転送する。メッセージを受信したドライバコンポーネントＢは、メッセージ内に含まれる要求を解析し、産業用機器１５１Ｂと通信して所定の情報を取得し、その情報をメッセージに乗せてドライバマネージャに経路２を介して返信する。このときの宛て先は、「データベースコンポーネント１１２Ｂ−Ｂ」である。ドライバマネージャは、ドライバコンポーネントＢからメッセージを受信すると、その宛て先を参照して、上位レイヤのデータ処理マネージャ１１１Ｂに経路４を介して転送する。
【００３２】
データ処理マネージャ１１１Ｂは、メッセージの宛て先（すなわち、データベースコンポーネント１１２Ｂ−Ｂ）を参照して受信したメッセージをデータベースコンポーネント１１２Ｂ−Ｂに経路６を介して転送する。そして、データベースコンポーネント１１２Ｂ−Ｂは、受信したメッセージを解析し、メッセージに含まれる情報を、外部に接続されるデータベース１６１に追加する処理を行う。これにより、産業用機器１５１Ｂの所定の情報が、定期的にデータベース１６１に保存される。
【００３３】
（３）「産業用機器１５１Ｃの情報を定期的に取得し、異常が発生している場合はアラームを発生させる。」場合
この処理は、データ処理レイヤ１１０Ｂのアラームコンポーネント１１２Ｂ−Ｃによって提起的に実行される。データ処理レイヤ１１０Ｂのアラームコンポーネント１１２Ｂ−Ｃは、定期的に産業用機器１５１Ｃの情報取得要求を含むメッセージを生成し、経路７を介して発信する。この場合のメッセージの宛て先は、「産業用機器１５１Ｃ」である。データ処理マネージャ１１１Ｂは、宛て先（すなわち、産業用機器１５１Ｃ）を参照して、ドライバレイヤ１１０Ａのドライバマネージャに経路４を介して転送する。
【００３４】
ドライバマネージャは、メッセージを受信すると、宛て先を参照して産業用機器１５１Ｃと通信を行うドライバコンポーネントＣに経路３を介して転送する。ドライバコンポーネントＣは、メッセージを受信すると、メッセージに含まれる要求を解析し、産業用機器１５１Ｃと通信して情報を取得し、メッセージに乗せてドライバマネージャに経路３を介して返信する。このときの宛て先は、アラームコンポーネント１１２Ｂ−Ｃである。ドライバマネージャは、コンポーネントから受信したメッセージの宛て先を参照して、上位レイヤのデータ処理マネージャ１１１Ｂに経路４を介して転送する。
【００３５】
データ処理マネージャ１１１Ｂは、メッセージの宛先（すなわち、アラームコンポーネント１１２Ｂ−Ｃ）を見てアラームコンポーネント１１２Ｂ−Ｃに経路７を介して転送する。アラームコンポーネント１１２Ｂ−Ｃは、受信したメッセージを解析し、アラームを通知するためのアラーム条件を満たしている場合にはアラーム通知機器を起動する。また、受信したメッセージの内容がアラーム条件を満たしていない場合には、アラーム通知機器を起動しない。
【００３６】
（４）「産業用機器１５１Ａ〜１５１Ｃの情報を定期的に取得し、まとまったデータに変換して上位系機器１７１に情報を伝える。」場合
この処理は、データ処理レイヤ１１０Ｂのデータ変換コンポーネント１１２Ｂ−Ａによって定期的に実行される。データ処理レイヤ１１０Ｂのデータ変換コンポーネント１１２Ｂ−Ａは、定期的に、産業用データ収集機器１０Ａに接続されている全ての産業用機器１５１Ａ〜１５１Ｃの情報取得要求を含むメッセージを生成し、経路５を介して発信する。この場合、メッセージの宛て先は、「ドライバマネージャ」となる。データ処理マネージャ１１１Ｂは、メッセージを受信すると、その宛て先（この場合、ドライバマネージャ）を見て、ドライバレイヤ１１０Ａのドライバマネージャに経路４を介して転送する。
【００３７】
ドライバマネージャは、メッセージを受信すると、その処理内容を解析し、各産業用機器１５１Ａ〜１５１Ｃと通信を行うそれぞれのドライバコンポーネントＡ，Ｂ，Ｃに経路１、経路２、経路３を介してメッセージを転送する。メッセージを受信した各ドライバコンポーネントＡ，Ｂ，Ｃは、メッセージ中の要求を解析し、それぞれ産業用機器１５１Ａ〜１５１Ｃと通信して所定の情報を取得し、メッセージに乗せてドライバマネージャに返信する。この場合の宛て先は、「データ変換コンポーネント１１２Ｂ−Ａ」となる。ドライバマネージャは、コンポーネントから受信したメッセージの宛て先を参照し、上位レイヤのデータ処理マネージャ１１１Ｂに経路４を介して転送する。
【００３８】
データ処理マネージャ１１１Ｂは、メッセージの宛先（すなわち、データ変換コンポーネント１１２Ｂ−Ａ）を参照して、データ変換コンポーネント１１２Ｂ−Ａに経路５を介して転送する。データ変換コンポーネント１１２Ｂ−Ａは、受信したメッセージを解析し、産業用機器１５１Ａ〜１５１Ｃで使用されるデータ形式を、上位系機器１７１で使用可能なデータ形式に変換し、各産業用機器１５１Ａ〜１５１Ｃの情報をまとめたものを新たな情報としてメッセージを生成する。このとき、データ変換コンポーネント１１２Ｂ−Ａは、生成したメッセージの宛て先を上位系機器１７１として、データ処理マネージャ１１１Ｂに経路５を介して送信する。データ処理マネージャ１１１Ｂは、宛て先を参照して受信したメッセージを通信マネージャ１１１Ｃに、経路８を介して転送する。そして、通信マネージャ１１１Ｃは、下位レイヤから受信したメッセージの全てを、通信コンポーネント１１２Ｃに経路９を介して転送する。通信コンポーネント１１２Ｃは、受信したメッセージを解析し、その内容を上位系機器１７１にネットワークを介して送信する。
【００３９】
以上のように、この実施の形態では、様々な要求をマネージャとコンポーネントを適切に配置することで容易に処理できることを示した。産業用ソフトウェア１００Ａの最大の特徴はコンポーネントの再利用性の高さである。この実施の形態では、通信コンポーネント１１２Ｃ、通信マネージャ１１１Ｃ、ドライバコンポーネントＡ，Ｂ，Ｃについては上述した要求に対して直接の関係はない。たとえば、完全に別の構成を持つシステムであってもドライバコンポーネントＡ，Ｂ，Ｃは変更なく再利用できるという特徴を有する。この特徴は、メッセージの処理を行う部分（コンポーネント）とメッセージの分配を行う部分（マネージャ）を明確に分割し、さらに同様の処理を行うコンポーネントをまとめてレイヤ構造としたことによって実現している。
【００４０】
また、システムを構築するユーザは、実行したい処理内容に応じたデータ処理レイヤ１１０Ｂのコンポーネントを作成する必要があるが、コンポーネントはメッセージに含まれるデータを処理する部分だけを記述すればよいため、メッセージの配送を気にする必要がなく再利用性の高いコンポーネントを作成できる。
【００４１】
さらに、コンポーネントからマネージャや、マネージャ間などのデータ受け渡しを行うメッセージは、全て産業用ソフトウェア１００Ａが管理するため、メッセージの流れを把握することが容易であり、効率的なデバッグを行うことができる。
【００４２】
また、同様の処理を行うコンポーネントをまとめて１つのレイヤ構造として、各レイヤをマネージャが管理する構成にすることによって、新たな処理を追加するのが容易である。たとえば、図３のプログラム構造を有する産業用ソフトウェア１００Ａにおいて、上位系機器１７１への全てのメッセージを暗号化するという要求がある場合を考える。図４は、暗号化レイヤを含む産業用ソフトウェアのプログラム構造を模式的に示す図である。この図に示されるように、暗号化レイヤ１１０Ｄは、下位レイヤからのメッセージを暗号化して上位レイヤへ送信し、上位レイヤからのメッセージを復号化して下位レイヤへ送信する機能を有するレイヤであり、１つの暗号化処理マネージャ１１１Ｄ、および暗号化コンポーネント１１２Ｄ−Ａと復号化コンポーネント１１２Ｄ−Ｂとを有する。暗号化コンポーネント１１２Ｄ−Ａは、下位のデータ処理レイヤ１１０Ｂからのメッセージを暗号化して送信する機能を有する。また、復号化コンポーネント１１２Ｄ−Ｂは、上位のデータ処理レイヤ１１０Ｂからの暗号化されたメッセージを復号化して送信する機能を有する。暗号化処理マネージャ１１１Ｄは、暗号化レイヤ１１０Ｄに唯一存在するマネージャであり、暗号化コンポーネント１１２Ｄ−Ａと復号化コンポーネント１１２Ｄ−Ｂのライフサイクル管理およびメッセージの分配、収集を行う機能を有する。
【００４３】
この図４に示されるように、図３に示される既存のレイヤにはまったく変更を発生せずに、通信レイヤ１１０Ｃとデータ処理レイヤ１１０Ｂの間に、上記の機能を有するコンポーネントとマネージャを含む暗号化レイヤ１１０Ｄを追加するだけでよい。
【００４４】
なお、この実施の形態においては、各レイヤがコンポーネントを有する例を記載したが、マネージャから成るレイヤが、階層化されたレイヤ間のいずれかに挿入されていても構わない。
【００４５】
この実施の形態によれば、ソフトゥエアのプログラム構造において、メッセージの配送を行うマネージャと、メッセージの配送を除いたデータを処理するコンポーネントに分離して、これらを適切にレイヤ構造に配置することで、様々な要求を容易に処理することができるとともに、コンポーネントに高い再利用性を持たせることができるという効果を有する。また、システムを構築するユーザはデータ処理レイヤ１１０Ｂのコンポーネントを作成する必要があるが、コンポーネントは上述したようにメッセージに含まれるデータを処理する部分だけを記述すればよいため、メッセージの配送を気にする必要がなく再利用性の高いコンポーネントを作成できる。さらに、同様の処理を行うコンポーネントをまとめてレイヤ構造として各レイヤをマネージャが管理する構成にすることによって、新たな処理を追加する場合に、既存のレイヤやコンポーネントへの変更を生じさせることなく、新たなコンポーネントまたはコンポーネントとマネージャからなるレイヤを追加するだけでよく、ユーザのシステム設計を容易にし、拡張性の高いプログラムを提供することができるという効果を有する。
【産業上の利用可能性】
【００４６】
以上のように、本発明にかかる産業用ソフトウェアは、産業用機器を制御するプログラマブルコントローラなどの計算機で使用されるソフトウェアに有用である。
【図面の簡単な説明】
【００４７】
【図１】この発明によるプログラム構造を有するソフトウェアが動作する計算機の構成の一例を模式的に示す図である。
【図２】この発明にかかる産業用ソフトウェアのプログラム構造を模式的に示す図である。
【図３】産業用ソフトウェアのプログラム構造の具体例を示す図である。
【図４】暗号化レイヤを含む産業用ソフトウェアのプログラム構造を模式的に示す図である。
【符号の説明】
【００４８】
１０  計算機
１０Ａ  産業用データ収集機器
１００，１００Ａ  産業用ソフトウェア
１１０ａ〜１１０ｃ  レイヤ
１１０Ａ  ドライバレイヤ
１１０Ｂ  データ処理レイヤ
１１０Ｃ  通信レイヤ
１１０Ｄ  暗号化レイヤ
１１１  マネージャ
１１１Ａ  ドライバマネージャ
１１１Ｂ  データ処理マネージャ
１１１Ｃ  通信マネージャ
１１１Ｄ  暗号化マネージャ
１１２  コンポーネント
１１２Ａ−Ａ〜１１２Ａ−Ｃ  ドライバコンポーネント
１１２Ｂ−Ａ  データ変換コンポーネント
１１２Ｂ−Ｂ  データベースコンポーネント
１１２Ｂ−Ｃ  アラームコンポーネント
１１２Ｃ  通信コンポーネント
１１２Ｄ−Ａ  暗号化コンポーネント
１１２Ｄ−Ｂ  復号化コンポーネント
１１３  メッセージ
【図１】
2007094894.tif 000003
【図２】
2007094894.tif 000004
【図３】
2007094894.tif 000005
【図４】
2007094894.tif 000006