JP5327099B2 - プログラム診断装置およびプログラム診断方法 - Google Patents

プログラム診断装置およびプログラム診断方法 Download PDF

Info

Publication number
JP5327099B2
JP5327099B2 JP2010045307A JP2010045307A JP5327099B2 JP 5327099 B2 JP5327099 B2 JP 5327099B2 JP 2010045307 A JP2010045307 A JP 2010045307A JP 2010045307 A JP2010045307 A JP 2010045307A JP 5327099 B2 JP5327099 B2 JP 5327099B2
Authority
JP
Japan
Prior art keywords
program
function
processing time
processing
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010045307A
Other languages
English (en)
Other versions
JP2011180883A (ja
Inventor
伸夫 住田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Steel Corp
Original Assignee
Nippon Steel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Steel Corp filed Critical Nippon Steel Corp
Priority to JP2010045307A priority Critical patent/JP5327099B2/ja
Publication of JP2011180883A publication Critical patent/JP2011180883A/ja
Application granted granted Critical
Publication of JP5327099B2 publication Critical patent/JP5327099B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラム診断装置およびプログラム診断方法に関し、より詳細には、機器間で行われる伝送処理の応答性を診断するプログラム診断装置およびプログラム診断方法に関する。
従来、プログラムの開発においては、開発効率や保守性を向上させるために、所定の規約に沿った開発が行われている。規約には、例えばプログラムの記述形式に関するものや、プログラムの文法に関するもの等がある。例えば、C言語での識別子名に関する規約として、構造体や列挙子を使用する場合は必ず予約語typedefによりデータの型を定義し、そのtypedef名はタグ名と同一とする、という規約や、ローカル変数名には、#define文で定義した論理名と間違えないように、英字の大文字は使用しない、という規約等がある。
このような規約に沿って開発されたプログラムが正しく記述されているか否かを判断するための方法が提案されている。例えば、特許文献1には、プログラムの構造を示す抽象構文木を用いてプログラムの規約違反を効率的に判断する装置が開示されている。また、特許文献2には、外部から入力されるルールによって論理チェックを行うとともに、利用者の指定する付加的なルールでもプログラムチェックを行う方法が開示されている。
さらに、特許文献3には、ソースプログラムのプログラミング言語の文法チェックに加え、コーディングスタイルのチェックも自動的に行うことができるプログラミング言語処理システムが開示されている。そして、特許文献4には、ソースプログラムのコンパイル時に、規約違反の有無を自動で確認するコーディング規約チェックシステムが開示されている。これにより、人手によるチェックでのチェック漏れや偏りの発生をなくし、作業効率、生産性を向上させることができる。
特開2007−122631号公報 特開昭63−263545号公報 特開平06−149588号公報 特開平11−73328号公報
「ライトサイジング・オープン化システムの鉄鋼プロセスへの適用事例」;河原 健次他、新日鉄技報、第363号、第40頁(1997)
ところで、24時間操業で高い信頼性が要求される製鉄業等におけるプロセス制御システムは、これまで重電メーカ専用のコンピュータやネットワークで構成されてきた。しかしながら、近年では、仕様が公開された汎用品のコンピュータ等の機器を利用したオープン系システムであるプロセス制御システムの導入が進んでいる。オープン系システムは、オープン標準に準拠したソフトウェアや、それを使用しているコンピュータで構成されるオープン系コンピュータシステムであって、コンピュータの基本的な制御を行うオペレーティングシステム(OS)と、各業務・制御処理を行うアプリケーションソフトウェア(AP)と、これらの間に位置する共通的なソフトウェアであるミドルウェアとを具備する。オープン系システムをプロセス制御分野に応用したオープン系プロセス制御システムは、例えば非特許文献1の図−4のように、制御用サーバと外部機器が汎用のネットワークを介して接続されて構成される。ここで、外部機器としては、電気計装制御装置(Programmable Logic Controller、Distributed Control System)、データベースサーバ、他工程の制御サーバなどが対象となる。
このようなオープン系プロセス制御システムにおける共通的なソフトウェアであるミドルウェアは、所定の規約に沿って開発されるものである。したがって、このミドルウェアを用いたプログラムを、上記特許文献1〜4に開示された技術を用いて、プログラムの規約に沿って正しく記述されているか否かをチェックすることはできる。しかし、当該プログラムを実行したときの処理状態をチェックすることはできなかった。
例えば、オープン系プロセス制御システムにおける信頼性を向上するために、プログラムを実行したときの処理状態をチェックすることで、ソフトウェアの不具合に起因するシステム障害を事前に検知したいという要望がある。プロセス制御システムを構成するプロセス制御用計算機と外部機器との間ではネットワークを介した情報の伝送が行われているが、計算機と外部機器との伝送異常はシステムダウンにつながる。例えば、伝送処理のばらつきは、稀に発生し、再現の規則性の低いトラブルにつながる。また、トラブルの要因が、計算機や外部機器、ネットワークといったハードウェアからアプリケーションソフトウェアやミドルウェア等のソフトウェアに及ぶため、トラブルの原因究明に多大な労力と時間を要するという問題があった。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、オープン系プロセス制御システムに関して、当該システム内で共通的に用いられるソフトウェアに基づき、システム内の伝送処理する環境において使用されるプログラムについて、当該プログラムによる伝送処理の動作の良否を診断することが可能な、新規かつ改良されたプログラム診断装置およびプログラム診断方法を提供することにある。
上記課題を解決するために、本発明のある観点によれば、オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断装置が提供される。かかるプログラム診断装置は、ソフトウェアを用いて規定された関数について、当該関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部と、プログラムのソースにおいて使用されている関数を抽出するプログラム読取部と、関数情報記憶部より抽出された関数の関数処理時間を取得して、プログラムのソースの実行に要する全処理時間を算出し、当該プログラムを実行する機器内での最大許容処理時間と全処理時間とを比較して、機器間の伝送処理の応答性の良否を判定するプログラム判定部と、を備える。プログラム判定部は、全処理時間が最大許容処理時間より大きいとき、機器間の伝送処理の応答性に問題があると判定することを特徴とする。
本発明によれば、プログラム読取部によりプログラムから使用されている関数を抽出し、プログラム判定部により抽出した関数の処理に要する関数処理時間を関数情報記憶部から取得する。そして、プログラム判定部は、取得した関数処理時間からプログラムの全処理時間を算出して、当該プログラムを実行する機器での最大許容処理時間と比較する。プログラム判定部は、これらの時間の比較結果に基づいて、機器間の伝送処理の応答性の良否を判定する。これにより、プログラムをシステムに適用する前に、事前に伝送処理の応答性を確認することができるので、ソフトウェアの不具合に起因するシステム障害を事前に防止することができる。また、初心者であっても容易にかつ安価に、プログラムの不具合箇所を事前に検出することが可能となる。
ここで、プログラム判定部は、関数処理時間以外にプログラムの処理に要する付加処理時間を、プログラムの全処理時間にさらに加算してもよい。これにより、プログラムの全処理時間をより正確に算出することができる。
また、プログラム読取部により、プログラムのソースから、当該プログラムを実行する機器から他の機器に対して情報の送信を要求する送信要求関数が抽出されたとき、プログラム判定部は、全処理時間に、送信要求関数の関数処理時間と、当該プログラムを実行する機器が他の機器に伝文を送信してから応答を受信するまでの最大許容待機時間とを加算するようにしてもよい。これにより、プログラムの全処理時間をより正確に算出することができる。
さらに、最大許容処理時間および最大許容待機時間は、回線定義情報として規定されているとき、プログラム判定部は、最大許容待機時間がプログラムを実行する機器にて設定されている最大許容処理時間より大きいか否かを判定し、最大許容処理時間が最大許容待機時間以下であるとき、回線定義違反と判定するようにしてもよい。これにより、回線定義情報の誤りを検出することも可能となる。
また、本発明のプログラム診断装置は、プログラム判定部による判定結果を出力する出力部をさらに備えることもできる。出力部は、例えば、機器間の伝送処理の応答性の良否と、機器間の伝送処理の応答性に問題があると判定されたときにはその内容およびプロフラムの問題箇所とを出力する。これにより、ユーザはプログラム上の問題個所を容易に見つけることができる。
また、上記課題を解決するために、本発明の別の観点によれば、オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断方法が提供される。かかるプログラム診断方法は、プログラムのソースにおいて使用されている上記ソフトウェアを用いて規定された関数を抽出するプログラム読取ステップと、所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部より抽出された関数の関数処理時間を取得する関数処理時間取得ステップと、プログラムのソースの実行に要する全処理時間を算出する全処理時間算出ステップと、当該プログラムを実行する機器内での最大許容処理時間と全処理時間とを比較して、機器間の伝送処理の応答性の良否を判定するプログラム判定ステップと、を含むことを特徴とする。
以上説明したように本発明によれば、オープン系プロセス制御システムに関して、当該システム内で共通的に用いられるソフトウェアに基づいて記述された、当該システム内の伝送処理する環境において使用されるプログラムについて、共通的に用いられるソフトウェアにより規定された各関数の処理時間に基づき、当該プログラムを実行する際の伝送処理に要する時間を評価することによって、当該プログラムの動作の良否である応答性を診断することが可能なプログラム診断装置およびプログラム診断方法を提供することができる。
本発明の実施形態に係るプログラム診断装置の構成を示すブロック図である。 関数情報記憶部の一構成例を示す説明図である。 制御サーバと通信対象機器との間で行われる伝送処理を示す説明図である。 制御サーバと通信対象機器との間で行われる伝送処理のプログラムの構成の一例を示す説明図である。 プログラム診断方法を示すフローチャートである。 各関数の予測最大処理時間を算出する際に送信タイムアウト値を考慮する処理を示すフローチャートである。 制御サーバで実行される処理についてのチェック内容を示す説明図である。 通信対象機器で実行される処理についてのチェック内容を示す説明図である。 同実施形態に係るプログラム診断装置の一ハードウェア構成例を示すブロック図である。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
<1.プログラム診断装置の概略構成>
まず、図1に基づいて、本発明の実施形態に係るプログラム診断装置の概略構成について説明する。なお、図1は、本実施形態に係るプログラム診断装置100の構成を示すブロック図である。
本実施形態に係るプログラム診断装置100は、図1に示す、プロセス制御システムを構成するプロセス制御用計算機(以下、「制御サーバ」と称する。)10と通信対象機器20との間で、ネットワークを介して行われる伝送処理において実行されるプログラムソースの構造を診断する。本実施形態において、制御サーバ10と通信対象機器20との伝送処理は、ミドルウェアを用いて行われており、当該ミドルウェアの処理構造によって伝送処理の応答性は変化する。プログラム診断装置100は、制御サーバ10および通信対象機器20から取得したミドルウェア(プログラムソース)と当該ミドルウェアを使用するに際して定義すべき情報である回線定義情報とに基づいて、これらの間で行われる伝送処理の応答性の良否を診断する。
オープン系プロセス制御システムにおいて共通的に用いられるミドルウェアでは、まとまりのある処理を1つにまとめたプログラムが関数として規定されている。処理全体を規定するプログラムにおいて、関数を呼び出して実行することにより、例えば、情報の送信要求や、受信データ取り込み等のようなまとまりのある処理を実行させることができる。本実施形態に係るプログラム診断装置100は、処理全体を規定するプログラムにおいて使用されている関数のうち、ミドルウェアにおいて規定されている、伝送処理の応答性に影響する関数を抽出し、プログラムの処理に要する全処理時間を算出する。そして、全処理時間が、回線定義情報に規定されている送信タイムアウト値より大きいとき、プログラム診断装置100は、当該プログラムソースを用いた伝送処理の応答性に問題がある可能性があると判定する。送信タイムアウト値は、制御サーバ10と通信対象機器20との伝送状態を確認するために、いずれか一方の機器から伝文を送信してから他方の機器の応答を受信するまでの最大許容待機時間である。すなわち、伝文が送信されてから最大許容待機時間内に応答がない場合には、伝送状態に問題があると考える。
上記考えに基づき診断されたプログラムの判定結果は、表示手段等を介してユーザに通知される。ユーザは、伝送処理の応答性に問題があると判定されている場合には、プログラムソースを修正して、ソフトウェアに起因する伝送処理の応答性を改善することができる。
このように、プログラム診断装置100によって、プロセス制御システムにプログラムを適用して伝送処理を実行する前に、伝送処理の応答性の良否を診断することができ、プロセス制御システムにおける伝送障害を低減することができる。以下、プログラム診断装置100の構成と、これによるプログラム診断処理について、詳細に説明していく。
<2.プログラム診断装置の機能構成>
本実施形態に係るプログラム診断装置100は、図1に示すように、インタフェース部110と、プログラム読取部120と、プログラム判定部130と、表示部140と、入力部150と、入力情報処理部160と、メモリ170と、関数情報記憶部180とを備える。
インタフェース部110は、制御サーバ10や通信対象機器20と情報の送受信を行う。インタフェース部110は、制御サーバ10および通信対象機器20から、プログラムソースおよび回線定義情報を受信する。なお、これらの情報は、プログラムを診断する際に取得できればよい。このため、制御サーバ10および通信対象機器と、診断装置100とは、常時接続されていなくともよく、情報の取得が必要なときに接続できればよい。インタフェース部110は、プログラムソースをプログラム読取部120へ送信し、メモリ170に記録するとともに、回線定義情報をメモリ170に記録する。
プログラム読取部120は、プログラムソースに記述されている関数を抽出する。プログラム読取部120は、関数情報記憶部180を参照して、伝送処理のプログラムソースに使用されている関数から、少なくとも関数を実行したときに要する処理時間を考慮すべき関数を抽出する。抽出された関数は、プログラム読取部120からプログラム判定部150へ送信される。
プログラム判定部130は、プログラムを実行したときに要する全処理時間を算出して、当該プログラムによる伝送処理の応答性の良否を判定する。プログラム判定部130は、関数情報記憶部180を参照して、プログラム読取部120により抽出された各関数につき、関数の処理に要する関数処理時間を取得して、関数の処理を開始してから終了するまでに予想される最大の処理時間である予想最大処理時間を算出する。そして、プログラム判定部130は、予想最大処理時間に基づき、プログラムの全処理時間を算出する。
また、プログラム判定部130は、予想最大処理時間を算出するとき、関数処理時間以外に関数の処理が完了するまでに考慮する必要のある時間があれば、かかる時間も予想最大処理時間に加算する。例えば、プログラムを実行する機器から他の機器に対して情報の送信を要求する送信要求関数が抽出されているときには、メモリ170を参照して送信タイムアウト値を取得し、予想最大処理時間に加算する。これにより、送信要求関数が実行されたときに要する最大の時間を考慮することができる。
さらに、プログラム判定部130は、算出したプログラムの全処理時間と最大許容処理時間とを比較して、プログラムによる伝送処理の応答性の良否を判定する。具体的には、プログラム判定部130は、全処理時間が最大許容処理時間以下であるときには、伝送処理の応答性に問題はないと判定し、全処理時間が送信タイムアウト値より大きい場合には、伝送処理の応答性に問題があると判定する。そして、プログラム判定部130は、判定結果を表示部140に出力する。
表示部140は、情報を表示可能な出力手段である。表示部140は、プログラム判定部130による判定結果やプログラムソース、回転定義情報等の情報を、表示処理して表示可能な形式に変換する表示処理部と、表示処理された情報を表示する出力部とからなる。表示部140には、例えば、液晶ディスプレイ装置や、有機ELディスプレイ装置等を用いることができる。
入力部150は、情報が入力される入力手段である。入力部150には、例えば、キーボードやマウス、タッチパネル等の入力装置を用いることができる。ユーザは、入力部150を用いて、例えば所定の情報を表示させる表示指示情報や、プログラムソースの修正指示情報等を入力することができる。入力部150より入力された情報は、入力情報処理部160へ出力される。
入力情報処理部160は、入力部150から入力された情報に基づいて、当該情報に基づく処理を実行する。入力情報処理部160は、例えば、所定の情報を表示させる表示指示情報が入力されると、当該情報をメモリ170から取得して、表示部140へ出力する。また、入力情報処理部160は、プログラムソースの修正指示情報が入力されると、メモリ170に記憶されたプログラムソースを更新するとともに、修正後のプログラムソースを表示部140に表示させる。
メモリ170は、プログラム診断処理に用いる各種情報を記憶する。メモリ170には、例えば、制御サーバ10および通信対象機器20から取得したプログラムソースおよび回線定義情報、プログラムソースの修正履歴等が記憶される。
関数情報記憶部180は、プログラムの全処理時間を算出するために用いられる関数情報を記憶する。関数情報記憶部180は、例えば図2に示すように、伝送処理の応答性を診断するためにプログラムソースから抽出すべき関数名181と、当該関数の処理に要する関数処理時間182とを記憶するように構成することができる。関数情報は、予め関数情報記憶部180に記憶させてもよく、関数情報を生成する外部装置(図示せず。)を所定のタイミングで取得して関数情報記憶部180に記憶させてもよい。
以上、本実施形態に係るプログラム診断装置100の機能構成について説明した。
<3.プログラム診断方法>
次に、図3〜図8に基づいて、本実施形態に係るプログラム診断装置100を用いたプログラム診断方法について説明する。なお、図3は、制御サーバ10と通信対象機器20との間で行われる伝送処理を示す説明図である。図4は、制御サーバ10と通信対象機器20との間で行われる伝送処理のプログラムの構成の一例を示す説明図である。図5は、プログラム診断方法を示すフローチャートである。図6は、各関数の予測最大処理時間を算出する際に送信タイムアウト値を考慮する処理を示すフローチャートである。図7は、制御サーバ10で実行される処理についてのチェック内容を示す説明図である。図8は、通信対象機器20で実行される処理についてのチェック内容を示す説明図である。
[制御サーバ‐通信対象機器間の伝送処理とそのプログラム構成]
本実施形態に係るプログラム診断方法を説明する前に、図3および図4に基づいて、プログラム診断装置100により応答性を診断する制御サーバ‐通信対象機器間の伝送処理とそのプログラム構成について説明する。制御サーバ10と通信対象機器20とは、業務伝文とそれに対する応答伝文の伝送処理を行う。例えば、図3に示すように、制御サーバ10から通信対象機器20へ情報を送信する場合、制御サーバ10は、送信制御部12から送信回線14、回線32を介して、通信対象機器20に対して業務伝文を送信する。業務伝文を送信すると、制御サーバ10は、通信対象機器20からの応答伝文の戻りを待つ。
一方、受信回線24を介して制御サーバ10からの業務伝文を受信した通信対象機器20は、送信制御部22により送受信可能な状態か否かを確認し、当該結果を応答伝文として受信回線24、回線32を介して制御サーバ10へ送信する。このとき、送信制御部22は、業務伝文を受信してからの時間をカウントしており、自身が送受信可能な状態か否かを確認する処理が所定時間(受信タイムアウト値)内に終了しなかった場合には、その内容を所定時間経過後制御サーバ10へ送信する。
制御サーバ10は、業務伝文を送信した後、通信対象機器20へ業務伝文を送信してから応答伝文を受信するまでの時間をカウントする。そして、カウントした時間が所定時間(送信タイムアウト値)より大きい場合には、制御サーバ10の送信制御部12は、通信対象機器20との間で情報の送受信が正しく行われないものと判断する。一方、通信対象機器20へ業務伝文を送信してから送信タイムアウト値を経過する前に、通信対象機器20から応答伝文を受信した場合には、送信制御部12は、通信対象機器20と情報の送受信を正しく行うことができると判断する。
なお、制御サーバ10から通信対象機器20に対して業務伝文の送信がされると、通信対象機器20から制御サーバ10に対しても同様に業務伝文が送信される。送信回線28、回線34を介して業務伝文を送信した通信対象機器20は、制御サーバ10からの応答伝文の戻りを待つ。一方、受信回線18を介して業務伝文を受信した制御サーバ10は、受信制御部16により自身が送受信可能な状態か否かを確認し、当該結果を応答伝文として、通信対象機器20へ送信する。所定時間(受信タイムアウト値)内に当該確認する処理が終了しなかった場合には、その内容を所定時間経過後通信対象機器20へ送信する。
通信対象機器20は、業務伝文を送信した後、制御サーバ10へ業務伝文を送信してから応答伝文を受信するまでの時間をカウントする。そして、カウントした時間が所定時間(送信タイムアウト値)より大きい場合には、受信制御部26は、制御サーバ10との間で情報の送受信が正しく行われないものと判断する。一方、制御サーバ10へ業務伝文を送信してから送信タイムアウト値を経過する前に、制御サーバ10から応答伝文を受信した場合には、受信制御部26は、制御サーバ10と情報の送受信を正しく行うことができると判断する。
このように、制御サーバ10と通信対象機器20との間では、業務伝文とそれに対する応答伝文の電装処理が実行される。かかる伝送実行処理をプログラムの構成として表すと、図4に示すようになる。本実施形態では、本願出願人により開発されたオープン系プロセス制御システム用ミドルウェアであるNS SEMI SYSTEM(登録商標)を用いて開発したプログラムを例に説明する。なお、上記ミドルウェアは、生産現場の実行、管理を行うとともに、上位の情報システムとの連携を実現する最適なMES(Manufacturing Execution System;操業実行指示系システム)を構築するための情報技術である。図3に示した、伝送実行処理は、上記ミドルウェアのうち下位伝送セミを用いて実行することができる。
上記ミドルウェアを使用するには、まず、当該ミドルウェアを使用するに際して回線定義情報を定義する必要がある。回線定義情報は、本実施形態に係るプログラム診断方法にも用いられる。回線定義情報には、例えば、制御サーバ10と通信管理対象とを接続する物理的な回線に対して論理的な回線番号を定義した論理回線Noや、最大許容待機時間である送信タイムアウト値、伝文を受信した機器が伝文を受信してから応答を送信するまでの最大許容処理時間である受信タイムアウト値等が定義されている。以下では、回線定義情報が定義されているものとして説明する。
図4では、通信対象機器20から制御サーバ10に対して業務伝文を送信した場合の伝送実行処理を示している。まず、スタートイベントによりタスクCの実行が開始される。スタートイベントにより、関数Csgmsg()の処理が実行される(第1処理)。関数Csgmsg()は、データ付きタスク起動要求の取り込みを行うための関数である。そして、通信対象機器20は、送信データを編集した後、データ送信要求を行うための関数Csdsnd()の処理において、送信ドライバを介して、指定された論理回線Noおよび伝送データを識別するためのメッセージNoを付加したデータが制御サーバ10に送信される(第2処理)。
受信ドライバを介してデータ送信要求を受けた制御サーバ10では、タスクAが起動される。制御サーバ10は、受信したデータの論理回線No、メッセージNoに基づき、タスク起動要求をする関数Csgmsg()の処理を実行し、受信データを取り込むための関数Csdrcv()を呼び出す(第3処理)。そして、関数Csdrcv()の処理により受信完了通知が発行されると、送達確認情報として送信ドライバを介して通知対象機器20へ送信される(第4処理)。送達確認情報を受信した通信対象機器20は、タスクCの関数Csdsnd()の処理により復帰情報を通知し、タスクCを終了する(第5処理)。
一方、通信対象機器20からの送信要求によって起動された制御サーバ10のタスクAでは、関数Csdrcv()の処理によってデータ送信要求を行う関数Csdsnd()が呼び出され、送信ドライバを介して、指定された論理回線No、メッセージNoのデータが通信対象機器20に送信される(第6処理)。
データ送信要求を受けた通信対象機器20では、タスクBが起動される。タスクBでは、制御サーバ10のタスクAと同様、受信したデータの論理回線No、メッセージNoに基づき、タスク起動要求をする関数Csgmsg()の処理を実行し、受信データを取り込むための関数Csdrcv()を呼び出す(第7処理)。そして、関数Csdrcv()の処理によって受信完了通知が発行されると、当該通知は送達確認情報として送信ドライバを介して制御サーバ10へ送信される(第8処理)。送達確認情報を受信した制御サーバ10は、待機しているタスクAの関数Csdsnd()に復帰情報を通知し、タスクAを終了する(第9処理)。
また、通信対象機器20のタスクBの関数Csdrcv()では、受信完了通知を発行後、データ付きタスク起動要求を行う関数Csqmsg()を呼び出し、タスクCを呼び出す。こうして、通信対象20による制御サーバ10との伝送実行処理が終了する。
本実施形態に係るプログラム診断装置100は、例えば、上述したような伝送実行処理時に実行されるプログラムに用いられている所定の関数(ここでは、上記ミドルウェアの下位伝送セミで使用される関数)に基づき、制御サーバ10と通信対象機器20との伝送処理の応答性を判定する。以下、プログラム診断装置100によるプロフラム診断方法について説明する。
[プログラムの診断]
プログラム診断装置100は、伝送処理に用いるプログラムについて、制御サーバ10と通信対象機器20との間における伝送実行処理時に、一方の機器が他方の機器に業務伝文を送信してから応答伝文を受信するまでの時間が受信タイムアウト値を超えるか否かを判定することにより、伝送処理の応答性を診断する。送信タイムアウト値は、機器毎に設定されているため、プログラムの診断は、図5に示すように、制御サーバ10、通信対象機器20等、機器毎に行われる(ステップS100)。
診断対象の機器が決定されると、当該機器のタスク毎にプログラムの内容をチェックする(ステップS110)。例えば、制御サーバ10についてみると、伝送実行処理では図4よりタスクAが実行されることがわかる。プログラム診断装置100のプログラム読取部120は、制御サーバ10から取得したプログラムソースのタスクAから使用されている関数を抽出する。プログラム読取部120は、例えば、伝送処理の応答性に関係する関数のみを抽出するようにしてもよく、関数情報記憶部180に記憶されている関数のみを抽出してもよく、すべての関数を抽出してもよい。図4に示す例では、プログラム読取部120は伝送処理を規定する上記ミドルウェアの関数である関数Csqmsg()、Csdrcv()、Csdsnd()を抽出している。
次いで、抽出された関数について、関数情報記憶部180を参照して、処理に要する時間を示す関数処理時間を取得する(ステップS120)。ここで、関数処理時間は、当該関数において記述されている処理を実行したときの処理に要する時間であって、例えば当該関数が他の関数を呼び出してその応答を待ち、応答を受けて処理を再開するような場合において、応答を待つ待機時間は関数処理時間には含まれない。このため、このような待機時間は、予想最大処理時間を算出する際に考慮する必要がある。関数情報記憶部180には、図2に示すように、各関数の関数処理時間が格納されている。プログラム判定部130は、抽出された関数の関数処理時間を取得する。図4に示す例では、関数Csqmsg()の関数処理時間T001、関数Csdrcv()の関数処理時間T102、関数Csdsnd()の関数処理時間T101が取得される。
さらに、プログラム判定部130は、取得した各関数の関数処理時間および送信タイムアウト値から、各関数について予想最大処理時間を算出する(ステップS130)。予想最大処理時間は、関数の処理が開始されてから終了するまでに要する時間であり、上述した待機時間等のような関数処理時間以外に考慮すべき時間(付加処理時間)を含めた時間である。このため、予想最大処理時間を算出するため、考慮すべき時間を取得する必要がある。
本実施形態において、伝送処理の規定に用いるミドルウェアのうち、データ送信要求を行う関数Csdsnd()では、自身が送信した伝文に対する他の機器からの応答を受けるために待機する待機時間を考慮する必要がある。かかる待機時間の最大時間は、回線定義情報に規定された送信タイムアウト値と考えることができる。そこで、関数Csdsnd()については、当該関数の関数処理時間に送信タイムアウト値を加算した時間を予想最大処理時間とする。
図6に示すフローチャートに沿って、かかる処理を説明すると、まず、プログラム判定部130は、関数処理時間に考慮すべき時間(ここでは送信タイムアウト値)の加算が必要か否かを判定する(ステップS131)。送信タイムアウト値等の考慮すべき時間が必要な関数の判定は、例えば、関数情報記憶部180に、考慮すべき時間を記憶させておくことにより可能となる。例えば関数Csdsnd()には、関数処理時間に加算すべき時間として送信タイムアウト値を指定しておく。プログラム判定部130は、考慮すべき時間が指定されている場合には、当該時間を取得する(ステップS132)。考慮すべき時間の値は、関数情報記憶部180に記憶させておいてもよく、他の記憶部に記憶された情報を参照して取得してもよい。例えば関数Csdsnd()については、メモリ170に記憶された回線定義情報から送信タイムアウト値を取得する。
ここで、プログラム判定部130は、関数Csdsnd()の送信タイムアウト値のように回線定義情報から値を取得した場合には、回線定義情報の設定に誤りがないかを確認してもよい(ステップS133)。例えば、送信タイムアウト値については、受信タイムアウト値よりも大きい値となっていることが必要である。プログラム判定部130は、送信タイムアウト値が受信タイムアウト値よりも大きい場合には、回線定義情報の設定に誤りはないと判定して、関数処理時間に考慮すべき時間を加算した値を関数の予想最大処理時間とする(ステップS134)。関数Csdsnd()については、関数処理時間に送信タイムアウト値を加算した値が予想最大処理時間となる。
一方、送信タイムアウト値が受信タイムアウト値以下の場合のように、回線定義情報の設定条件を満たさない場合には、回線定義情報の設定が誤っているとして、表示部160に回線定義違反があることを表示し(ステップS135)、処理を終了する。また、ステップS131において、関数処理時間に加算すべき時間がない場合には、関数処理時間が予想最大処理時間として設定される。
以上のような処理を行い、プログラム判定部130は各関数の予想最大処理時間を算出する。図4に示す例では、図7に示すように、関数Csqmsg()の予想最大処理時間はT001、関数Csdrcv()の予想最大処理時間はT102、関数Csdsnd()の予想最大処理時間はT101+送信タイムアウト値となる。
その後、プログラム判定部130は、制御サーバ10の伝送実行処理において実行されるプログラムの全処理時間を算出する(ステップS140)。プログラムの全処理時間は、伝送実行処理において機器で実行されるすべてのタスクの処理に要する時間となる。図4に示す例では、全処理時間はタスクAの処理に要する時間であり、すなわち、タスクAから抽出された関数の各予想最大処理時間の合計となる。
なお、図7に示すように、伝送処理の応答性の診断に考慮する関数が設定されている場合には、全処理時間は、設定されている関数の予想最大処理時間の合計となる。例えば、タスクAにおいて、関数Csdrcv()の処理が終了してから次の呼び出しまでに実行される処理、すなわち、関数Csgmsg()およびCsdsnd()のみを考慮すると設定されている場合、全処理時間は、時間T001+T101+送信タイムアウト値となる。
プログラムの全処理時間を算出すると、プログラム判定部130は、メモリ170の回線定義情報から取得した受信タイムアウト値と全処理時間とを比較する(ステップS150)。そして、全処理時間が受信タイムアウト値以下であるとき、伝送異常に起因するようなプログラムではなく、伝送処理の応答性に問題はないと判定して、判定結果を表示部140に表示する(ステップS160)。一方、ステップS150にて全処理時間が受信タイムアウト値より大きい場合には、伝送処理の応答性に問題があるとして、受信タイムアウト違反となっていることを表示部140により通知する(ステップS170)。このようにして、制御サーバ10の伝送処理の応答性が診断される。
同様に、通信対象機器20についてもステップS110〜S170の処理を行うことで、通信対象機器20の伝送処理の応答性を診断することができる。通信機器対象20の伝送実行処理において実行されるプログラムには、タスクBおよびCの2つがある。図5のステップ120〜S130を繰り返し、タスクBおよびCから抽出された各関数の関数処理時間を取得して、予測最大処理時間を算出する。
例えば図8に示すように、通信機器対象20の各関数に対する予想最大処理時間が算出されたとする。そして、プログラム判定部130は、プログラムの全処理時間を算出するが、伝送処理の応答性の診断には関数Csdrcv()の処理が終了してから次の呼び出しまでに実行される処理、すなわち、関数Csgmsg()およびCsqmsg()を考慮すると設定されているため、全処理時間は、時間T001+T002となる。
プログラム判定部130は、通信対象機器20について算出された全処理時間と受信タイムアウト値とを比較して、判定結果をユーザに通知する(ステップS150〜S170)。このようにして、制御サーバ10および通信対象機器20のプログラムが診断される。
ここで、プログラム診断装置100によって伝送処理の応答性に問題があると判定された場合、ユーザは、判定結果を参照して、プログラムソースを修正することもできる。判定結果は、例えば、伝送処理の応答性に問題があることを通知するとともに、当該診断を行った際に考慮した関数名およびプログラムソース上で当該関数が記述されている位置を表示部140に表示させることで通知することができる。ユーザは、通知された判定結果に基づいて、入力部150からプログラムソースの修正情報を入力することができる。そして、ユーザは、修正後のプログラムソースについて、プログラム診断装置100によるプログラム診断処理を再度実行させて、伝送処理の応答性が改善されたか否かを確認することができる。
プログラムから伝送処理の応答性に問題がないことが確認されると、そのプログラムを用いて制御サーバ10と通信対象機器20との伝送処理が行われる。このように、本実施形態に係るプログラム診断装置100によるプログラム診断方法を用いることで、事前に伝送処理の応答性を確認することができる。これにより、ソフトウェアの不具合に起因するシステム障害を事前に防止することができる。また、初心者であっても容易にかつ安価に、プログラムの不具合箇所を事前に検出することが可能となる。
<4.ハードウェア構成例>
上述した本実施形態に係るプログラム診断装置100は、例えばコンピュータ等の情報処理装置400により実現することができる。かかる情報処理装置400は、例えば図9に示すように、CPU(Central Processing Unit)401と、ROM(Read Only Memory)402と、RAM(Random Access Memory)403と、バス404と、インタフェース405と、入力装置406と、出力装置407と、ストレージ装置408と、通信装置409とを備える。
CPU401は、演算処理装置および制御装置として機能し、各種プログラムに従ってプログラム診断装置100内の動作全般を制御する。また、CPU401は、マイクロプロセッサであってもよい。ROM402は、CPU401が使用するプログラムや演算パラメータ等を記憶する。RAM403は、CPU401の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはバス404により相互に接続されている。バス404は、入力装置406、出力装置407、ストレージ装置408、および通信装置409を相互に接続するインタフェース405と接続されている。
入力装置406は、マウス、キーボード、タッチパネル、ボタン、マイク、スイッチおよびレバーなどユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、CPU401に出力する入力制御回路などから構成されている。プログラム診断装置100の作業者は、該入力装置406を操作することにより、プログラム診断装置100に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置407は、例えば、CRT(Cathode Ray Tube)ディスプレイ装置、液晶ディスプレイ(LCD)装置、OLED(Organic Light Emitting Diode)装置およびランプなどの表示装置を含む。さらに、出力装置407は、スピーカおよびヘッドホンなどの音声出力装置を含む。
ストレージ装置408は、プログラム診断装置100の記憶部の一例として構成されたデータ格納用の装置であり、例えば、HDD(Hard Disk Drive)で構成される。ストレージ装置408は、例えばハードディスクを駆動し、CPU401が実行するプログラムや各種データを格納している。また、通信装置409は、例えば、通信網410に接続するための通信デバイス等で構成された通信インタフェースである。通信装置409としては、例えば、無線LAN(Local Area Network)対応通信装置や、ワイヤレスUSB対応通信装置、有線による通信を行う通信装置等を用いることができる。
なお、かかる情報処理装置400は、例えば、当該情報処理装置400に内蔵、あるいは外付けされる記憶媒体用リーダライタを備えることもできる。記憶媒体用リーダライタは、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体に記録されている情報を読み出して、RAM403に出力する。また、情報処理装置400は、外部機器と接続されるインタフェースを備えることもでき、例えばUSB(Universal Serial Bus)などによりデータ伝送可能な外部機器との接続口として用いることができる。
また、上述した本実施形態に係るプログラム診断装置100の処理は、それぞれ専用のハードウェアにより実行させてもよいが、ソフトウェアにより実行させてもよい。一連の処理をソフトウェアにより行う場合、例えば、汎用または専用のコンピュータにプログラムを実行させることにより、上記の一連の処理を実現することができる。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
例えば、上記実施形態では、プログラム診断装置100を用いて制御サーバ10と通信対象機器20との間で行われる伝送処理の応答性を診断したが、本発明はかかる例に限定されない。例えば、本発明のプログラム診断装置により、データベースへのアクセス処理の応答性等を診断することもできる。
また、上記実施形態では、診断対象のプログラムはミドルウェアであったが、本発明はかかる例に限定されず、例えば、アプリケーションソフトウェア等であってもよい。
10 制御サーバ
20 通信対象機器
100 プログラム診断装置
110 インタフェース部
120 プログラム読取部
130 プログラム判定部
140 表示部
150 入力部
160 入力情報処理部
170 メモリ
180 関数情報記憶部

Claims (6)

  1. オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断装置であって、
    前記ソフトウェアを用いて規定された関数について、当該関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部と、
    プログラムのソースにおいて使用されている前記関数を抽出するプログラム読取部と、
    前記関数情報記憶部より前記抽出された関数の前記関数処理時間を取得して、前記プログラムのソースの実行に要する全処理時間を算出し、当該プログラムを実行する機器内での最大許容処理時間と前記全処理時間とを比較して、前記機器間の伝送処理の応答性の良否を判定するプログラム判定部と、
    を備え、
    前記プログラム判定部は、前記全処理時間が前記最大許容処理時間より大きいとき、前記機器間の伝送処理の応答性に問題があると判定することを特徴とする、プログラム診断装置。
  2. 前記プログラム判定部は、前記関数処理時間以外に前記プログラムの処理に要する付加処理時間を、前記プログラムの全処理時間にさらに加算することを特徴とする、請求項1に記載のプログラム診断装置。
  3. 前記プログラム読取部により、前記プログラムのソースから、当該プログラムを実行する前記機器から他の前記機器に対して情報の送信を要求する送信要求関数が抽出されたとき、
    前記プログラム判定部は、前記全処理時間に、前記送信要求関数の関数処理時間と、当該プログラムを実行する前記機器が前記他の機器に伝文を送信してから応答を受信するまでの最大許容待機時間とを加算することを特徴とする、請求項2に記載のプログラム診断装置。
  4. 前記最大許容処理時間および前記最大許容待機時間は、回線定義情報として規定されており、
    前記プログラム判定部は、
    前記最大許容待機時間が前記プログラムを実行する機器にて設定されている前記最大許容処理時間より大きいか否かを判定し、
    前記最大許容処理時間が前記最大許容待機時間以下であるとき、回線定義違反と判定することを特徴とする、請求項3に記載のプログラム診断装置。
  5. 前記プログラム判定部による判定結果を出力する出力部をさらに備え、
    前記出力部は、前記機器間の伝送処理の応答性の良否と、前記機器間の伝送処理の応答性に問題があると判定されたときにはその内容および前記プロフラムの問題箇所とを出力することを特徴とする、請求項1〜4のいずれか1項に記載のプログラム診断装置。
  6. オープン系プロセス制御システムにおいて共通的に用いられるソフトウェアを用いて規定された、機器間の伝送処理を規定するプログラムを診断するプログラム診断方法であって、
    プログラムのソースにおいて使用されている前記ソフトウェアを用いて規定された関数を抽出するプログラム読取ステップと、
    所定の関数を実行したときの処理に要する関数処理時間を記憶する関数情報記憶部より前記抽出された関数の前記関数処理時間を取得する関数処理時間取得ステップと、
    前記プログラムのソースの実行に要する全処理時間を算出する全処理時間算出ステップと、
    当該プログラムを実行する機器内での最大許容処理時間と前記全処理時間とを比較して、前記機器間の伝送処理の応答性の良否を判定するプログラム判定ステップと、
    を含むことを特徴とする、プログラム診断方法。
JP2010045307A 2010-03-02 2010-03-02 プログラム診断装置およびプログラム診断方法 Active JP5327099B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010045307A JP5327099B2 (ja) 2010-03-02 2010-03-02 プログラム診断装置およびプログラム診断方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010045307A JP5327099B2 (ja) 2010-03-02 2010-03-02 プログラム診断装置およびプログラム診断方法

Publications (2)

Publication Number Publication Date
JP2011180883A JP2011180883A (ja) 2011-09-15
JP5327099B2 true JP5327099B2 (ja) 2013-10-30

Family

ID=44692314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010045307A Active JP5327099B2 (ja) 2010-03-02 2010-03-02 プログラム診断装置およびプログラム診断方法

Country Status (1)

Country Link
JP (1) JP5327099B2 (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202668A (ja) * 1995-01-27 1996-08-09 Hitachi Eng Co Ltd 性能評価装置と評価方法
JPH09325952A (ja) * 1996-06-05 1997-12-16 Mitsubishi Electric Corp オブジェクト指向仕様の実行検証装置
JP3169896B2 (ja) * 1998-07-03 2001-05-28 日本電気株式会社 プログラム開発装置、プログラム開発方法及びプログラム開発プログラムを記憶した記憶媒体
JP2001092693A (ja) * 1999-09-22 2001-04-06 Matsushita Electric Ind Co Ltd 処理遅延性能見積もり装置
JP3690721B2 (ja) * 1999-10-25 2005-08-31 株式会社日立製作所 システム性能見積システム及びシステム性能見積方法
JP2002063049A (ja) * 2000-08-23 2002-02-28 Matsushita Electric Ind Co Ltd システム性能の見積もり方法
JP2002229818A (ja) * 2001-02-01 2002-08-16 Hitachi Ltd プログラム実行時間解析方法およびその装置
JP2002251303A (ja) * 2001-02-23 2002-09-06 Matsushita Electric Ind Co Ltd システムの評価装置および評価結果の表示装置
JP4132802B2 (ja) * 2001-12-07 2008-08-13 富士通株式会社 概略マルチタスクソフトウェアのシミュレーションを行う方法、装置及びプログラム
JP2004348635A (ja) * 2003-05-26 2004-12-09 Renesas Technology Corp プログラム開発方法
JP2005038251A (ja) * 2003-07-16 2005-02-10 Mitsubishi Electric Corp 分散制御システム、分散制御システム用ソフトウェア設計支援システム
JP2006301852A (ja) * 2005-04-19 2006-11-02 Nec Corp 計算資源運用管理装置およびシステム
JP2009238051A (ja) * 2008-03-28 2009-10-15 Hitachi Ltd プログラム変換装置及びプログラム変換方法

Also Published As

Publication number Publication date
JP2011180883A (ja) 2011-09-15

Similar Documents

Publication Publication Date Title
CN108427616B (zh) 后台程序监控方法及监控装置
JP6552993B2 (ja) プロセス制御情報を表示する方法及び装置、機械がアクセス可能な媒体、及びデバイス記述ファイル内にスクリプト拡張機能を作成する方法
JP5198154B2 (ja) 障害監視システム及びデバイスと監視装置並びに障害監視方法
US20130124926A1 (en) System health and performance care of computing devices
WO2020000758A1 (zh) 服务器的验收方法、装置、计算机设备及存储介质
JP2014157505A (ja) コントローラ、情報処理装置およびプログラム
WO2013185092A1 (en) System and method for automatic test level generation
CN112256507B (zh) 芯片故障诊断方法、装置、可读存储介质及电子设备
CN113672306B (zh) 服务器组件自检异常恢复方法、装置、系统及介质
US20080288828A1 (en) structures for interrupt management in a processing environment
TW201435527A (zh) 可程式邏輯控制器、可程式邏輯控制系統及執行錯誤資訊作成方法
CN112817883A (zh) 接口平台的适配方法、设备、系统及计算机可读存储介质
JP5327099B2 (ja) プログラム診断装置およびプログラム診断方法
CN106130815B (zh) 板级测试方法及装置
JP2005266919A (ja) システム解析装置及び解析システム
US20210334153A1 (en) Remote error detection method adapted for a remote computer device to detect errors that occur in a service computer device
JP2005234987A (ja) 開発元サーバ装置、ソフトウェアトラブル対応システム及びソフトウェアトラブル対応方法
CN108648298B (zh) 消息处理方法及装置、存储介质、电子设备
JP6410705B2 (ja) 障害予兆検出システムおよび障害予兆検出方法
US9552203B1 (en) Configuration dependency manager for configurable applications
JP5589748B2 (ja) プログラム診断装置およびプログラム診断方法
TWI817147B (zh) 自動化接口管理方法
TWI769302B (zh) 設備供裝流程管控與整合的系統及其方法
CN113220379B (zh) 任务处理方法、装置、电子设备和可读存储介质
EP4339964A1 (en) A monitoring agent for medical devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130619

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130708

R151 Written notification of patent or utility model registration

Ref document number: 5327099

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350