(57)【要約】【課題】ソフトウェアに基づきシステムの伝送処理の応答性を診断することが可能なプログラム診断装置を提供する。【解決手段】本発明のプログラム診断装置１００は、機器間の伝送処理を規定するプログラムを診断する装置であって、所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部１８０と、プログラムのソースから使用されている関数を抽出するプログラム読取部１２０と、関数情報記憶部１８０より抽出された関数の関数処理時間を取得して、プログラムのソースの実行に要する全処理時間を算出し、当該プログラムを実行する機器内での最大許容処理時間と全処理時間とを比較して、機器間の伝送処理の応答性の良否を判定するプログラム判定部１３０と、を備える。プログラム判定部１３０は、全処理時間が最大許容処理時間より大きいとき、機器間の伝送処理の応答性に問題があると判定する。【選択図】図１
2011180883.tif 000002
【特許請求の範囲】
【請求項１】
オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断装置であって、
前記ソフトウェアを用いて規定された関数について、当該関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部と、
プログラムのソースにおいて使用されている前記関数を抽出するプログラム読取部と、
前記関数情報記憶部より前記抽出された関数の前記関数処理時間を取得して、前記プログラムのソースの実行に要する全処理時間を算出し、当該プログラムを実行する機器内での最大許容処理時間と前記全処理時間とを比較して、前記機器間の伝送処理の応答性の良否を判定するプログラム判定部と、
を備え、
前記プログラム判定部は、前記全処理時間が前記最大許容処理時間より大きいとき、前記機器間の伝送処理の応答性に問題があると判定することを特徴とする、プログラム診断装置。
【請求項２】
前記プログラム判定部は、前記関数処理時間以外に前記プログラムの処理に要する付加処理時間を、前記プログラムの全処理時間にさらに加算することを特徴とする、請求項１に記載のプログラム診断装置。
【請求項３】
前記プログラム読取部により、前記プログラムのソースから、当該プログラムを実行する前記機器から他の前記機器に対して情報の送信を要求する送信要求関数が抽出されたとき、
前記プログラム判定部は、前記全処理時間に、前記送信要求関数の関数処理時間と、当該プログラムを実行する前記機器が前記他の機器に伝文を送信してから応答を受信するまでの最大許容待機時間とを加算することを特徴とする、請求項２に記載のプログラム診断装置。
【請求項４】
前記最大許容処理時間および前記最大許容待機時間は、回線定義情報として規定されており、
前記プログラム判定部は、
前記最大許容待機時間が前記プログラムを実行する機器にて設定されている前記最大許容処理時間より大きいか否かを判定し、
前記最大許容処理時間が前記最大許容待機時間以下であるとき、回線定義違反と判定することを特徴とする、請求項３に記載のプログラム診断装置。
【請求項５】
前記プログラム判定部による判定結果を出力する出力部をさらに備え、
前記出力部は、前記機器間の伝送処理の応答性の良否と、前記機器間の伝送処理の応答性に問題があると判定されたときにはその内容および前記プロフラムの問題箇所とを出力することを特徴とする、請求項１〜４のいずれか１項に記載のプログラム診断装置。
【請求項６】
オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断方法であって、
プログラムのソースにおいて使用されている前記ソフトウェアを用いて規定された関数を抽出するプログラム読取ステップと、
所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部より前記抽出された関数の前記関数処理時間を取得する関数処理時間取得ステップと、
前記プログラムのソースの実行に要する全処理時間を算出する全処理時間算出ステップと、
当該プログラムを実行する機器内での最大許容処理時間と前記全処理時間とを比較して、前記機器間の伝送処理の応答性の良否を判定するプログラム判定ステップと、
を含むことを特徴とする、プログラム診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム診断装置およびプログラム診断方法に関し、より詳細には、機器間で行われる伝送処理の応答性を診断するプログラム診断装置およびプログラム診断方法に関する。
【背景技術】
【０００２】
従来、プログラムの開発においては、開発効率や保守性を向上させるために、所定の規約に沿った開発が行われている。規約には、例えばプログラムの記述形式に関するものや、プログラムの文法に関するもの等がある。例えば、Ｃ言語での識別子名に関する規約として、構造体や列挙子を使用する場合は必ず予約語typedefによりデータの型を定義し、そのtypedef名はタグ名と同一とする、という規約や、ローカル変数名には、#define文で定義した論理名と間違えないように、英字の大文字は使用しない、という規約等がある。
【０００３】
このような規約に沿って開発されたプログラムが正しく記述されているか否かを判断するための方法が提案されている。例えば、特許文献１には、プログラムの構造を示す抽象構文木を用いてプログラムの規約違反を効率的に判断する装置が開示されている。また、特許文献２には、外部から入力されるルールによって論理チェックを行うとともに、利用者の指定する付加的なルールでもプログラムチェックを行う方法が開示されている。
【０００４】
さらに、特許文献３には、ソースプログラムのプログラミング言語の文法チェックに加え、コーディングスタイルのチェックも自動的に行うことができるプログラミング言語処理システムが開示されている。そして、特許文献４には、ソースプログラムのコンパイル時に、規約違反の有無を自動で確認するコーディング規約チェックシステムが開示されている。これにより、人手によるチェックでのチェック漏れや偏りの発生をなくし、作業効率、生産性を向上させることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１２２６３１号公報
【特許文献２】特開昭６３−２６３５４５号公報
【特許文献３】特開平０６−１４９５８８号公報
【特許文献４】特開平１１−７３３２８号公報
【非特許文献】
【０００６】
【非特許文献１】「ライトサイジング・オープン化システムの鉄鋼プロセスへの適用事例」；河原  健次他、新日鉄技報、第３６３号、第４０頁（１９９７）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、２４時間操業で高い信頼性が要求される製鉄業等におけるプロセス制御システムは、これまで重電メーカ専用のコンピュータやネットワークで構成されてきた。しかしながら、近年では、仕様が公開された汎用品のコンピュータ等の機器を利用したオープン系システムであるプロセス制御システムの導入が進んでいる。オープン系システムは、オープン標準に準拠したソフトウェアや、それを使用しているコンピュータで構成されるオープン系コンピュータシステムであって、コンピュータの基本的な制御を行うオペレーティングシステム（ＯＳ）と、各業務・制御処理を行うアプリケーションソフトウェア（ＡＰ）と、これらの間に位置する共通的なソフトウェアであるミドルウェアとを具備する。オープン系システムをプロセス制御分野に応用したオープン系プロセス制御システムは、例えば非特許文献１の図−４のように、制御用サーバと外部機器が汎用のネットワークを介して接続されて構成される。ここで、外部機器としては、電気計装制御装置（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ、Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）、データベースサーバ、他工程の制御サーバなどが対象となる。
【０００８】
このようなオープン系プロセス制御システムにおける共通的なソフトウェアであるミドルウェアは、所定の規約に沿って開発されるものである。したがって、このミドルウェアを用いたプログラムを、上記特許文献１〜４に開示された技術を用いて、プログラムの規約に沿って正しく記述されているか否かをチェックすることはできる。しかし、当該プログラムを実行したときの処理状態をチェックすることはできなかった。
【０００９】
例えば、オープン系プロセス制御システムにおける信頼性を向上するために、プログラムを実行したときの処理状態をチェックすることで、ソフトウェアの不具合に起因するシステム障害を事前に検知したいという要望がある。プロセス制御システムを構成するプロセス制御用計算機と外部機器との間ではネットワークを介した情報の伝送が行われているが、計算機と外部機器との伝送異常はシステムダウンにつながる。例えば、伝送処理のばらつきは、稀に発生し、再現の規則性の低いトラブルにつながる。また、トラブルの要因が、計算機や外部機器、ネットワークといったハードウェアからアプリケーションソフトウェアやミドルウェア等のソフトウェアに及ぶため、トラブルの原因究明に多大な労力と時間を要するという問題があった。
【００１０】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、オープン系プロセス制御システムに関して、当該システム内で共通的に用いられるソフトウェアに基づき、システム内の伝送処理する環境において使用されるプログラムについて、当該プログラムによる伝送処理の動作の良否を診断することが可能な、新規かつ改良されたプログラム診断装置およびプログラム診断方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明のある観点によれば、オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断装置が提供される。かかるプログラム診断装置は、ソフトウェアを用いて規定された関数について、当該関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部と、プログラムのソースにおいて使用されている関数を抽出するプログラム読取部と、関数情報記憶部より抽出された関数の関数処理時間を取得して、プログラムのソースの実行に要する全処理時間を算出し、当該プログラムを実行する機器内での最大許容処理時間と全処理時間とを比較して、機器間の伝送処理の応答性の良否を判定するプログラム判定部と、を備える。プログラム判定部は、全処理時間が最大許容処理時間より大きいとき、機器間の伝送処理の応答性に問題があると判定することを特徴とする。
【００１２】
本発明によれば、プログラム読取部によりプログラムから使用されている関数を抽出し、プログラム判定部により抽出した関数の処理に要する関数処理時間を関数情報記憶部から取得する。そして、プログラム判定部は、取得した関数処理時間からプログラムの全処理時間を算出して、当該プログラムを実行する機器での最大許容処理時間と比較する。プログラム判定部は、これらの時間の比較結果に基づいて、機器間の伝送処理の応答性の良否を判定する。これにより、プログラムをシステムに適用する前に、事前に伝送処理の応答性を確認することができるので、ソフトウェアの不具合に起因するシステム障害を事前に防止することができる。また、初心者であっても容易にかつ安価に、プログラムの不具合箇所を事前に検出することが可能となる。
【００１３】
ここで、プログラム判定部は、関数処理時間以外にプログラムの処理に要する付加処理時間を、プログラムの全処理時間にさらに加算してもよい。これにより、プログラムの全処理時間をより正確に算出することができる。
【００１４】
また、プログラム読取部により、プログラムのソースから、当該プログラムを実行する機器から他の機器に対して情報の送信を要求する送信要求関数が抽出されたとき、プログラム判定部は、全処理時間に、送信要求関数の関数処理時間と、当該プログラムを実行する機器が他の機器に伝文を送信してから応答を受信するまでの最大許容待機時間とを加算するようにしてもよい。これにより、プログラムの全処理時間をより正確に算出することができる。
【００１５】
さらに、最大許容処理時間および最大許容待機時間は、回線定義情報として規定されているとき、プログラム判定部は、最大許容待機時間がプログラムを実行する機器にて設定されている最大許容処理時間より大きいか否かを判定し、最大許容処理時間が最大許容待機時間以下であるとき、回線定義違反と判定するようにしてもよい。これにより、回線定義情報の誤りを検出することも可能となる。
【００１６】
また、本発明のプログラム診断装置は、プログラム判定部による判定結果を出力する出力部をさらに備えることもできる。出力部は、例えば、機器間の伝送処理の応答性の良否と、機器間の伝送処理の応答性に問題があると判定されたときにはその内容およびプロフラムの問題箇所とを出力する。これにより、ユーザはプログラム上の問題個所を容易に見つけることができる。
【００１７】
また、上記課題を解決するために、本発明の別の観点によれば、オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断方法が提供される。かかるプログラム診断方法は、プログラムのソースにおいて使用されている上記ソフトウェアを用いて規定された関数を抽出するプログラム読取ステップと、所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部より抽出された関数の関数処理時間を取得する関数処理時間取得ステップと、プログラムのソースの実行に要する全処理時間を算出する全処理時間算出ステップと、当該プログラムを実行する機器内での最大許容処理時間と全処理時間とを比較して、機器間の伝送処理の応答性の良否を判定するプログラム判定ステップと、を含むことを特徴とする。
【発明の効果】
【００１８】
以上説明したように本発明によれば、オープン系プロセス制御システムに関して、当該システム内で共通的に用いられるソフトウェアに基づいて記述された、当該システム内の伝送処理する環境において使用されるプログラムについて、共通的に用いられるソフトウェアにより規定された各関数の処理時間に基づき、当該プログラムを実行する際の伝送処理に要する時間を評価することによって、当該プログラムの動作の良否である応答性を診断することが可能なプログラム診断装置およびプログラム診断方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係るプログラム診断装置の構成を示すブロック図である。
【図２】関数情報記憶部の一構成例を示す説明図である。
【図３】制御サーバと通信対象機器との間で行われる伝送処理を示す説明図である。
【図４】制御サーバと通信対象機器との間で行われる伝送処理のプログラムの構成の一例を示す説明図である。
【図５】プログラム診断方法を示すフローチャートである。
【図６】各関数の予測最大処理時間を算出する際に送信タイムアウト値を考慮する処理を示すフローチャートである。
【図７】制御サーバで実行される処理についてのチェック内容を示す説明図である。
【図８】通信対象機器で実行される処理についてのチェック内容を示す説明図である。
【図９】同実施形態に係るプログラム診断装置の一ハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２１】
＜１．プログラム診断装置の概略構成＞
まず、図１に基づいて、本発明の実施形態に係るプログラム診断装置の概略構成について説明する。なお、図１は、本実施形態に係るプログラム診断装置１００の構成を示すブロック図である。
【００２２】
本実施形態に係るプログラム診断装置１００は、図１に示す、プロセス制御システムを構成するプロセス制御用計算機（以下、「制御サーバ」と称する。）１０と通信対象機器２０との間で、ネットワークを介して行われる伝送処理において実行されるプログラムソースの構造を診断する。本実施形態において、制御サーバ１０と通信対象機器２０との伝送処理は、ミドルウェアを用いて行われており、当該ミドルウェアの処理構造によって伝送処理の応答性は変化する。プログラム診断装置１００は、制御サーバ１０および通信対象機器２０から取得したミドルウェア（プログラムソース）と当該ミドルウェアを使用するに際して定義すべき情報である回線定義情報とに基づいて、これらの間で行われる伝送処理の応答性の良否を診断する。
【００２３】
オープン系プロセス制御システムにおいて共通的に用いられるミドルウェアでは、まとまりのある処理を１つにまとめたプログラムが関数として規定されている。処理全体を規定するプログラムにおいて、関数を呼び出して実行することにより、例えば、情報の送信要求や、受信データ取り込み等のようなまとまりのある処理を実行させることができる。本実施形態に係るプログラム診断装置１００は、処理全体を規定するプログラムにおいて使用されている関数のうち、ミドルウェアにおいて規定されている、伝送処理の応答性に影響する関数を抽出し、プログラムの処理に要する全処理時間を算出する。そして、全処理時間が、回線定義情報に規定されている送信タイムアウト値より大きいとき、プログラム診断装置１００は、当該プログラムソースを用いた伝送処理の応答性に問題がある可能性があると判定する。送信タイムアウト値は、制御サーバ１０と通信対象機器２０との伝送状態を確認するために、いずれか一方の機器から伝文を送信してから他方の機器の応答を受信するまでの最大許容待機時間である。すなわち、伝文が送信されてから最大許容待機時間内に応答がない場合には、伝送状態に問題があると考える。
【００２４】
上記考えに基づき診断されたプログラムの判定結果は、表示手段等を介してユーザに通知される。ユーザは、伝送処理の応答性に問題があると判定されている場合には、プログラムソースを修正して、ソフトウェアに起因する伝送処理の応答性を改善することができる。
【００２５】
このように、プログラム診断装置１００によって、プロセス制御システムにプログラムを適用して伝送処理を実行する前に、伝送処理の応答性の良否を診断することができ、プロセス制御システムにおける伝送障害を低減することができる。以下、プログラム診断装置１００の構成と、これによるプログラム診断処理について、詳細に説明していく。
【００２６】
＜２．プログラム診断装置の機能構成＞
本実施形態に係るプログラム診断装置１００は、図１に示すように、インタフェース部１１０と、プログラム読取部１２０と、プログラム判定部１３０と、表示部１４０と、入力部１５０と、入力情報処理部１６０と、メモリ１７０と、関数情報記憶部１８０とを備える。
【００２７】
インタフェース部１１０は、制御サーバ１０や通信対象機器２０と情報の送受信を行う。インタフェース部１１０は、制御サーバ１０および通信対象機器２０から、プログラムソースおよび回線定義情報を受信する。なお、これらの情報は、プログラムを診断する際に取得できればよい。このため、制御サーバ１０および通信対象機器と、診断装置１００とは、常時接続されていなくともよく、情報の取得が必要なときに接続できればよい。インタフェース部１１０は、プログラムソースをプログラム読取部１２０へ送信し、メモリ１７０に記録するとともに、回線定義情報をメモリ１７０に記録する。
【００２８】
プログラム読取部１２０は、プログラムソースに記述されている関数を抽出する。プログラム読取部１２０は、関数情報記憶部１８０を参照して、伝送処理のプログラムソースに使用されている関数から、少なくとも関数を実行したときに要する処理時間を考慮すべき関数を抽出する。抽出された関数は、プログラム読取部１２０からプログラム判定部１５０へ送信される。
【００２９】
プログラム判定部１３０は、プログラムを実行したときに要する全処理時間を算出して、当該プログラムによる伝送処理の応答性の良否を判定する。プログラム判定部１３０は、関数情報記憶部１８０を参照して、プログラム読取部１２０により抽出された各関数につき、関数の処理に要する関数処理時間を取得して、関数の処理を開始してから終了するまでに予想される最大の処理時間である予想最大処理時間を算出する。そして、プログラム判定部１３０は、予想最大処理時間に基づき、プログラムの全処理時間を算出する。
【００３０】
また、プログラム判定部１３０は、予想最大処理時間を算出するとき、関数処理時間以外に関数の処理が完了するまでに考慮する必要のある時間があれば、かかる時間も予想最大処理時間に加算する。例えば、プログラムを実行する機器から他の機器に対して情報の送信を要求する送信要求関数が抽出されているときには、メモリ１７０を参照して送信タイムアウト値を取得し、予想最大処理時間に加算する。これにより、送信要求関数が実行されたときに要する最大の時間を考慮することができる。
【００３１】
さらに、プログラム判定部１３０は、算出したプログラムの全処理時間と最大許容処理時間とを比較して、プログラムによる伝送処理の応答性の良否を判定する。具体的には、プログラム判定部１３０は、全処理時間が最大許容処理時間以下であるときには、伝送処理の応答性に問題はないと判定し、全処理時間が送信タイムアウト値より大きい場合には、伝送処理の応答性に問題があると判定する。そして、プログラム判定部１３０は、判定結果を表示部１４０に出力する。
【００３２】
表示部１４０は、情報を表示可能な出力手段である。表示部１４０は、プログラム判定部１３０による判定結果やプログラムソース、回転定義情報等の情報を、表示処理して表示可能な形式に変換する表示処理部と、表示処理された情報を表示する出力部とからなる。表示部１４０には、例えば、液晶ディスプレイ装置や、有機ＥＬディスプレイ装置等を用いることができる。
【００３３】
入力部１５０は、情報が入力される入力手段である。入力部１５０には、例えば、キーボードやマウス、タッチパネル等の入力装置を用いることができる。ユーザは、入力部１５０を用いて、例えば所定の情報を表示させる表示指示情報や、プログラムソースの修正指示情報等を入力することができる。入力部１５０より入力された情報は、入力情報処理部１６０へ出力される。
【００３４】
入力情報処理部１６０は、入力部１５０から入力された情報に基づいて、当該情報に基づく処理を実行する。入力情報処理部１６０は、例えば、所定の情報を表示させる表示指示情報が入力されると、当該情報をメモリ１７０から取得して、表示部１４０へ出力する。また、入力情報処理部１６０は、プログラムソースの修正指示情報が入力されると、メモリ１７０に記憶されたプログラムソースを更新するとともに、修正後のプログラムソースを表示部１４０に表示させる。
【００３５】
メモリ１７０は、プログラム診断処理に用いる各種情報を記憶する。メモリ１７０には、例えば、制御サーバ１０および通信対象機器２０から取得したプログラムソースおよび回線定義情報、プログラムソースの修正履歴等が記憶される。
【００３６】
関数情報記憶部１８０は、プログラムの全処理時間を算出するために用いられる関数情報を記憶する。関数情報記憶部１８０は、例えば図２に示すように、伝送処理の応答性を診断するためにプログラムソースから抽出すべき関数名１８１と、当該関数の処理に要する関数処理時間１８２とを記憶するように構成することができる。関数情報は、予め関数情報記憶部１８０に記憶させてもよく、関数情報を生成する外部装置（図示せず。）を所定のタイミングで取得して関数情報記憶部１８０に記憶させてもよい。
【００３７】
以上、本実施形態に係るプログラム診断装置１００の機能構成について説明した。
【００３８】
＜３．プログラム診断方法＞
次に、図３〜図８に基づいて、本実施形態に係るプログラム診断装置１００を用いたプログラム診断方法について説明する。なお、図３は、制御サーバ１０と通信対象機器２０との間で行われる伝送処理を示す説明図である。図４は、制御サーバ１０と通信対象機器２０との間で行われる伝送処理のプログラムの構成の一例を示す説明図である。図５は、プログラム診断方法を示すフローチャートである。図６は、各関数の予測最大処理時間を算出する際に送信タイムアウト値を考慮する処理を示すフローチャートである。図７は、制御サーバ１０で実行される処理についてのチェック内容を示す説明図である。図８は、通信対象機器２０で実行される処理についてのチェック内容を示す説明図である。
【００３９】
［制御サーバ‐通信対象機器間の伝送処理とそのプログラム構成］
本実施形態に係るプログラム診断方法を説明する前に、図３および図４に基づいて、プログラム診断装置１００により応答性を診断する制御サーバ‐通信対象機器間の伝送処理とそのプログラム構成について説明する。制御サーバ１０と通信対象機器２０とは、業務伝文とそれに対する応答伝文の伝送処理を行う。例えば、図３に示すように、制御サーバ１０から通信対象機器２０へ情報を送信する場合、制御サーバ１０は、送信制御部１２から送信回線１４、回線３２を介して、通信対象機器２０に対して業務伝文を送信する。業務伝文を送信すると、制御サーバ１０は、通信対象機器２０からの応答伝文の戻りを待つ。
【００４０】
一方、受信回線２４を介して制御サーバ１０からの業務伝文を受信した通信対象機器２０は、送信制御部２２により送受信可能な状態か否かを確認し、当該結果を応答伝文として受信回線２４、回線３２を介して制御サーバ１０へ送信する。このとき、送信制御部２２は、業務伝文を受信してからの時間をカウントしており、自身が送受信可能な状態か否かを確認する処理が所定時間（受信タイムアウト値）内に終了しなかった場合には、その内容を所定時間経過後制御サーバ１０へ送信する。
【００４１】
制御サーバ１０は、業務伝文を送信した後、通信対象機器２０へ業務伝文を送信してから応答伝文を受信するまでの時間をカウントする。そして、カウントした時間が所定時間（送信タイムアウト値）より大きい場合には、制御サーバ１０の送信制御部１２は、通信対象機器２０との間で情報の送受信が正しく行われないものと判断する。一方、通信対象機器２０へ業務伝文を送信してから送信タイムアウト値を経過する前に、通信対象機器２０から応答伝文を受信した場合には、送信制御部１２は、通信対象機器２０と情報の送受信を正しく行うことができると判断する。
【００４２】
なお、制御サーバ１０から通信対象機器２０に対して業務伝文の送信がされると、通信対象機器２０から制御サーバ１０に対しても同様に業務伝文が送信される。送信回線２８、回線３４を介して業務伝文を送信した通信対象機器２０は、制御サーバ１０からの応答伝文の戻りを待つ。一方、受信回線１８を介して業務伝文を受信した制御サーバ１０は、受信制御部１６により自身が送受信可能な状態か否かを確認し、当該結果を応答伝文として、通信対象機器２０へ送信する。所定時間（受信タイムアウト値）内に当該確認する処理が終了しなかった場合には、その内容を所定時間経過後通信対象機器２０へ送信する。
【００４３】
通信対象機器２０は、業務伝文を送信した後、制御サーバ１０へ業務伝文を送信してから応答伝文を受信するまでの時間をカウントする。そして、カウントした時間が所定時間（送信タイムアウト値）より大きい場合には、受信制御部２６は、制御サーバ１０との間で情報の送受信が正しく行われないものと判断する。一方、制御サーバ１０へ業務伝文を送信してから送信タイムアウト値を経過する前に、制御サーバ１０から応答伝文を受信した場合には、受信制御部２６は、制御サーバ１０と情報の送受信を正しく行うことができると判断する。
【００４４】
このように、制御サーバ１０と通信対象機器２０との間では、業務伝文とそれに対する応答伝文の電装処理が実行される。かかる伝送実行処理をプログラムの構成として表すと、図４に示すようになる。本実施形態では、本願出願人により開発されたオープン系プロセス制御システム用ミドルウェアであるＮＳ  ＳＥＭＩ  ＳＹＳＴＥＭ（登録商標）を用いて開発したプログラムを例に説明する。なお、上記ミドルウェアは、生産現場の実行、管理を行うとともに、上位の情報システムとの連携を実現する最適なＭＥＳ（Ｍａｎｕｆａｃｔｕｒｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  Ｓｙｓｔｅｍ；操業実行指示系システム）を構築するための情報技術である。図３に示した、伝送実行処理は、上記ミドルウェアのうち下位伝送セミを用いて実行することができる。
【００４５】
上記ミドルウェアを使用するには、まず、当該ミドルウェアを使用するに際して回線定義情報を定義する必要がある。回線定義情報は、本実施形態に係るプログラム診断方法にも用いられる。回線定義情報には、例えば、制御サーバ１０と通信管理対象とを接続する物理的な回線に対して論理的な回線番号を定義した論理回線Ｎｏや、最大許容待機時間である送信タイムアウト値、伝文を受信した機器が伝文を受信してから応答を送信するまでの最大許容処理時間である受信タイムアウト値等が定義されている。以下では、回線定義情報が定義されているものとして説明する。
【００４６】
図４では、通信対象機器２０から制御サーバ１０に対して業務伝文を送信した場合の伝送実行処理を示している。まず、スタートイベントによりタスクＣの実行が開始される。スタートイベントにより、関数Csgmsg()の処理が実行される（第１処理）。関数Csgmsg()は、データ付きタスク起動要求の取り込みを行うための関数である。そして、通信対象機器２０は、送信データを編集した後、データ送信要求を行うための関数Csdsnd()の処理において、送信ドライバを介して、指定された論理回線Ｎｏおよび伝送データを識別するためのメッセージＮｏを付加したデータが制御サーバ１０に送信される（第２処理）。
【００４７】
受信ドライバを介してデータ送信要求を受けた制御サーバ１０では、タスクＡが起動される。制御サーバ１０は、受信したデータの論理回線Ｎｏ、メッセージＮｏに基づき、タスク起動要求をする関数Csgmsg()の処理を実行し、受信データを取り込むための関数Csdrcv()を呼び出す（第３処理）。そして、関数Csdrcv()の処理により受信完了通知が発行されると、送達確認情報として送信ドライバを介して通知対象機器２０へ送信される（第４処理）。送達確認情報を受信した通信対象機器２０は、タスクＣの関数Csdsnd()の処理により復帰情報を通知し、タスクＣを終了する（第５処理）。
【００４８】
一方、通信対象機器２０からの送信要求によって起動された制御サーバ１０のタスクＡでは、関数Csdrcv()の処理によってデータ送信要求を行う関数Csdsnd()が呼び出され、送信ドライバを介して、指定された論理回線Ｎｏ、メッセージＮｏのデータが通信対象機器２０に送信される（第６処理）。
【００４９】
データ送信要求を受けた通信対象機器２０では、タスクＢが起動される。タスクＢでは、制御サーバ１０のタスクＡと同様、受信したデータの論理回線Ｎｏ、メッセージＮｏに基づき、タスク起動要求をする関数Csgmsg()の処理を実行し、受信データを取り込むための関数Csdrcv()を呼び出す（第７処理）。そして、関数Csdrcv()の処理によって受信完了通知が発行されると、当該通知は送達確認情報として送信ドライバを介して制御サーバ１０へ送信される（第８処理）。送達確認情報を受信した制御サーバ１０は、待機しているタスクＡの関数Csdsnd()に復帰情報を通知し、タスクＡを終了する（第９処理）。
【００５０】
また、通信対象機器２０のタスクＢの関数Csdrcv()では、受信完了通知を発行後、データ付きタスク起動要求を行う関数Csqmsg()を呼び出し、タスクＣを呼び出す。こうして、通信対象２０による制御サーバ１０との伝送実行処理が終了する。
【００５１】
本実施形態に係るプログラム診断装置１００は、例えば、上述したような伝送実行処理時に実行されるプログラムに用いられている所定の関数（ここでは、上記ミドルウェアの下位伝送セミで使用される関数）に基づき、制御サーバ１０と通信対象機器２０との伝送処理の応答性を判定する。以下、プログラム診断装置１００によるプロフラム診断方法について説明する。
【００５２】
［プログラムの診断］
プログラム診断装置１００は、伝送処理に用いるプログラムについて、制御サーバ１０と通信対象機器２０との間における伝送実行処理時に、一方の機器が他方の機器に業務伝文を送信してから応答伝文を受信するまでの時間が受信タイムアウト値を超えるか否かを判定することにより、伝送処理の応答性を診断する。送信タイムアウト値は、機器毎に設定されているため、プログラムの診断は、図５に示すように、制御サーバ１０、通信対象機器２０等、機器毎に行われる（ステップＳ１００）。
【００５３】
診断対象の機器が決定されると、当該機器のタスク毎にプログラムの内容をチェックする（ステップＳ１１０）。例えば、制御サーバ１０についてみると、伝送実行処理では図４よりタスクＡが実行されることがわかる。プログラム診断装置１００のプログラム読取部１２０は、制御サーバ１０から取得したプログラムソースのタスクＡから使用されている関数を抽出する。プログラム読取部１２０は、例えば、伝送処理の応答性に関係する関数のみを抽出するようにしてもよく、関数情報記憶部１８０に記憶されている関数のみを抽出してもよく、すべての関数を抽出してもよい。図４に示す例では、プログラム読取部１２０は伝送処理を規定する上記ミドルウェアの関数である関数Csqmsg()、Csdrcv()、Csdsnd()を抽出している。
【００５４】
次いで、抽出された関数について、関数情報記憶部１８０を参照して、処理に要する時間を示す関数処理時間を取得する（ステップＳ１２０）。ここで、関数処理時間は、当該関数において記述されている処理を実行したときの処理に要する時間であって、例えば当該関数が他の関数を呼び出してその応答を待ち、応答を受けて処理を再開するような場合において、応答を待つ待機時間は関数処理時間には含まれない。このため、このような待機時間は、予想最大処理時間を算出する際に考慮する必要がある。関数情報記憶部１８０には、図２に示すように、各関数の関数処理時間が格納されている。プログラム判定部１３０は、抽出された関数の関数処理時間を取得する。図４に示す例では、関数Csqmsg()の関数処理時間Ｔ００１、関数Csdrcv()の関数処理時間Ｔ１０２、関数Csdsnd()の関数処理時間Ｔ１０１が取得される。
【００５５】
さらに、プログラム判定部１３０は、取得した各関数の関数処理時間および送信タイムアウト値から、各関数について予想最大処理時間を算出する（ステップＳ１３０）。予想最大処理時間は、関数の処理が開始されてから終了するまでに要する時間であり、上述した待機時間等のような関数処理時間以外に考慮すべき時間（付加処理時間）を含めた時間である。このため、予想最大処理時間を算出するため、考慮すべき時間を取得する必要がある。
【００５６】
本実施形態において、伝送処理の規定に用いるミドルウェアのうち、データ送信要求を行う関数Csdsnd()では、自身が送信した伝文に対する他の機器からの応答を受けるために待機する待機時間を考慮する必要がある。かかる待機時間の最大時間は、回線定義情報に規定された送信タイムアウト値と考えることができる。そこで、関数Csdsnd()については、当該関数の関数処理時間に送信タイムアウト値を加算した時間を予想最大処理時間とする。
【００５７】
図６に示すフローチャートに沿って、かかる処理を説明すると、まず、プログラム判定部１３０は、関数処理時間に考慮すべき時間（ここでは送信タイムアウト値）の加算が必要か否かを判定する（ステップＳ１３１）。送信タイムアウト値等の考慮すべき時間が必要な関数の判定は、例えば、関数情報記憶部１８０に、考慮すべき時間を記憶させておくことにより可能となる。例えば関数Csdsnd()には、関数処理時間に加算すべき時間として送信タイムアウト値を指定しておく。プログラム判定部１３０は、考慮すべき時間が指定されている場合には、当該時間を取得する（ステップＳ１３２）。考慮すべき時間の値は、関数情報記憶部１８０に記憶させておいてもよく、他の記憶部に記憶された情報を参照して取得してもよい。例えば関数Csdsnd()については、メモリ１７０に記憶された回線定義情報から送信タイムアウト値を取得する。
【００５８】
ここで、プログラム判定部１３０は、関数Csdsnd()の送信タイムアウト値のように回線定義情報から値を取得した場合には、回線定義情報の設定に誤りがないかを確認してもよい（ステップＳ１３３）。例えば、送信タイムアウト値については、受信タイムアウト値よりも大きい値となっていることが必要である。プログラム判定部１３０は、送信タイムアウト値が受信タイムアウト値よりも大きい場合には、回線定義情報の設定に誤りはないと判定して、関数処理時間に考慮すべき時間を加算した値を関数の予想最大処理時間とする（ステップＳ１３４）。関数Csdsnd()については、関数処理時間に送信タイムアウト値を加算した値が予想最大処理時間となる。
【００５９】
一方、送信タイムアウト値が受信タイムアウト値以下の場合のように、回線定義情報の設定条件を満たさない場合には、回線定義情報の設定が誤っているとして、表示部１６０に回線定義違反があることを表示し（ステップＳ１３５）、処理を終了する。また、ステップＳ１３１において、関数処理時間に加算すべき時間がない場合には、関数処理時間が予想最大処理時間として設定される。
【００６０】
以上のような処理を行い、プログラム判定部１３０は各関数の予想最大処理時間を算出する。図４に示す例では、図７に示すように、関数Csqmsg()の予想最大処理時間はＴ００１、関数Csdrcv()の予想最大処理時間はＴ１０２、関数Csdsnd()の予想最大処理時間はＴ１０１＋送信タイムアウト値となる。
【００６１】
その後、プログラム判定部１３０は、制御サーバ１０の伝送実行処理において実行されるプログラムの全処理時間を算出する（ステップＳ１４０）。プログラムの全処理時間は、伝送実行処理において機器で実行されるすべてのタスクの処理に要する時間となる。図４に示す例では、全処理時間はタスクＡの処理に要する時間であり、すなわち、タスクＡから抽出された関数の各予想最大処理時間の合計となる。
【００６２】
なお、図７に示すように、伝送処理の応答性の診断に考慮する関数が設定されている場合には、全処理時間は、設定されている関数の予想最大処理時間の合計となる。例えば、タスクＡにおいて、関数Csdrcv()の処理が終了してから次の呼び出しまでに実行される処理、すなわち、関数Csgmsg()およびCsdsnd()のみを考慮すると設定されている場合、全処理時間は、時間Ｔ００１＋Ｔ１０１＋送信タイムアウト値となる。
【００６３】
プログラムの全処理時間を算出すると、プログラム判定部１３０は、メモリ１７０の回線定義情報から取得した受信タイムアウト値と全処理時間とを比較する（ステップＳ１５０）。そして、全処理時間が受信タイムアウト値以下であるとき、伝送異常に起因するようなプログラムではなく、伝送処理の応答性に問題はないと判定して、判定結果を表示部１４０に表示する（ステップＳ１６０）。一方、ステップＳ１５０にて全処理時間が受信タイムアウト値より大きい場合には、伝送処理の応答性に問題があるとして、受信タイムアウト違反となっていることを表示部１４０により通知する（ステップＳ１７０）。このようにして、制御サーバ１０の伝送処理の応答性が診断される。
【００６４】
同様に、通信対象機器２０についてもステップＳ１１０〜Ｓ１７０の処理を行うことで、通信対象機器２０の伝送処理の応答性を診断することができる。通信機器対象２０の伝送実行処理において実行されるプログラムには、タスクＢおよびＣの２つがある。図５のステップ１２０〜Ｓ１３０を繰り返し、タスクＢおよびＣから抽出された各関数の関数処理時間を取得して、予測最大処理時間を算出する。
【００６５】
例えば図８に示すように、通信機器対象２０の各関数に対する予想最大処理時間が算出されたとする。そして、プログラム判定部１３０は、プログラムの全処理時間を算出するが、伝送処理の応答性の診断には関数Csdrcv()の処理が終了してから次の呼び出しまでに実行される処理、すなわち、関数Csgmsg()およびCsqmsg()を考慮すると設定されているため、全処理時間は、時間Ｔ００１＋Ｔ００２となる。
【００６６】
プログラム判定部１３０は、通信対象機器２０について算出された全処理時間と受信タイムアウト値とを比較して、判定結果をユーザに通知する（ステップＳ１５０〜Ｓ１７０）。このようにして、制御サーバ１０および通信対象機器２０のプログラムが診断される。
【００６７】
ここで、プログラム診断装置１００によって伝送処理の応答性に問題があると判定された場合、ユーザは、判定結果を参照して、プログラムソースを修正することもできる。判定結果は、例えば、伝送処理の応答性に問題があることを通知するとともに、当該診断を行った際に考慮した関数名およびプログラムソース上で当該関数が記述されている位置を表示部１４０に表示させることで通知することができる。ユーザは、通知された判定結果に基づいて、入力部１５０からプログラムソースの修正情報を入力することができる。そして、ユーザは、修正後のプログラムソースについて、プログラム診断装置１００によるプログラム診断処理を再度実行させて、伝送処理の応答性が改善されたか否かを確認することができる。
【００６８】
プログラムから伝送処理の応答性に問題がないことが確認されると、そのプログラムを用いて制御サーバ１０と通信対象機器２０との伝送処理が行われる。このように、本実施形態に係るプログラム診断装置１００によるプログラム診断方法を用いることで、事前に伝送処理の応答性を確認することができる。これにより、ソフトウェアの不具合に起因するシステム障害を事前に防止することができる。また、初心者であっても容易にかつ安価に、プログラムの不具合箇所を事前に検出することが可能となる。
【００６９】
＜４．ハードウェア構成例＞
上述した本実施形態に係るプログラム診断装置１００は、例えばコンピュータ等の情報処理装置４００により実現することができる。かかる情報処理装置４００は、例えば図９に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、バス４０４と、インタフェース４０５と、入力装置４０６と、出力装置４０７と、ストレージ装置４０８と、通信装置４０９とを備える。
【００７０】
ＣＰＵ４０１は、演算処理装置および制御装置として機能し、各種プログラムに従ってプログラム診断装置１００内の動作全般を制御する。また、ＣＰＵ４０１は、マイクロプロセッサであってもよい。ＲＯＭ４０２は、ＣＰＵ４０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ４０３は、ＣＰＵ４０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはバス４０４により相互に接続されている。バス４０４は、入力装置４０６、出力装置４０７、ストレージ装置４０８、および通信装置４０９を相互に接続するインタフェース４０５と接続されている。
【００７１】
入力装置４０６は、マウス、キーボード、タッチパネル、ボタン、マイク、スイッチおよびレバーなどユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ４０１に出力する入力制御回路などから構成されている。プログラム診断装置１００の作業者は、該入力装置４０６を操作することにより、プログラム診断装置１００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【００７２】
出力装置４０７は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置およびランプなどの表示装置を含む。さらに、出力装置４０７は、スピーカおよびヘッドホンなどの音声出力装置を含む。
【００７３】
ストレージ装置４０８は、プログラム診断装置１００の記憶部の一例として構成されたデータ格納用の装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。ストレージ装置４０８は、例えばハードディスクを駆動し、ＣＰＵ４０１が実行するプログラムや各種データを格納している。また、通信装置４０９は、例えば、通信網４１０に接続するための通信デバイス等で構成された通信インタフェースである。通信装置４０９としては、例えば、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）対応通信装置や、ワイヤレスＵＳＢ対応通信装置、有線による通信を行う通信装置等を用いることができる。
【００７４】
なお、かかる情報処理装置４００は、例えば、当該情報処理装置４００に内蔵、あるいは外付けされる記憶媒体用リーダライタを備えることもできる。記憶媒体用リーダライタは、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体に記録されている情報を読み出して、ＲＡＭ４０３に出力する。また、情報処理装置４００は、外部機器と接続されるインタフェースを備えることもでき、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などによりデータ伝送可能な外部機器との接続口として用いることができる。
【００７５】
また、上述した本実施形態に係るプログラム診断装置１００の処理は、それぞれ専用のハードウェアにより実行させてもよいが、ソフトウェアにより実行させてもよい。一連の処理をソフトウェアにより行う場合、例えば、汎用または専用のコンピュータにプログラムを実行させることにより、上記の一連の処理を実現することができる。
【００７６】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【００７７】
例えば、上記実施形態では、プログラム診断装置１００を用いて制御サーバ１０と通信対象機器２０との間で行われる伝送処理の応答性を診断したが、本発明はかかる例に限定されない。例えば、本発明のプログラム診断装置により、データベースへのアクセス処理の応答性等を診断することもできる。
【００７８】
また、上記実施形態では、診断対象のプログラムはミドルウェアであったが、本発明はかかる例に限定されず、例えば、アプリケーションソフトウェア等であってもよい。
【符号の説明】
【００７９】
１０      制御サーバ
２０      通信対象機器
１００    プログラム診断装置
１１０    インタフェース部
１２０    プログラム読取部
１３０    プログラム判定部
１４０    表示部
１５０    入力部
１６０    入力情報処理部
１７０    メモリ
１８０    関数情報記憶部
【図１】
2011180883.tif 000003
【図２】
2011180883.tif 000004
【図３】
2011180883.tif 000005
【図４】
2011180883.tif 000006
【図５】
2011180883.tif 000007
【図６】
2011180883.tif 000008
【図７】
2011180883.tif 000009
【図８】
2011180883.tif 000010
【図９】
2011180883.tif 000011