トップ :: G 物理学 :: G05 制御;調整

【発明の名称】 制御プログラム保守方法、制御プログラム保守装置及び制御プログラム保守プログラム。
【発明者】 【氏名】寶蔵寺 春美

【氏名】小野 将英

【要約】 【課題】本発明は、制御プログラムの複数箇所の追加・変更・削除を検出する制御プログラム保守方法、制御プログラム保守装置及び制御プログラム保守プログラムを提供する。

【構成】本発明にかかる制御プログラム保守装置10は、オペコード及びオペランドを含む実行形式の制御プログラムを関連するステップ群を1つのブロックとして分割する分割手段101aと、この分割手段101aにより分割したブロックに基づいて2以上の制御プログラムを比較する比較手段101bと、この比較手段101bにより比較した比較結果を出力する出力手段101cとを備える。
【特許請求の範囲】
【請求項1】
プラントを制御する制御システムで用いられる制御プログラムの保守方法であって、
オペコード及びオペランドを含む実行形式の制御プログラムを関連する処理ステップ群を1つのブロックとして分割する分割工程と、
この分割工程により分割したブロックに基づいて2以上の前記制御プログラムを比較する比較工程と、
この比較工程により比較した比較結果を出力する出力工程と
を備えることを特徴とする制御プログラム保守方法。
【請求項2】
前記分割工程は、
前記制御プログラムを記憶した記憶手段からこの制御プログラムをステップ毎に読み込み、
この読み込んだステップから下分岐の接点又は下分岐のコイルを示すオペコードを検出した場合は、分割する単位を判断するための分岐カウンタを加算し、上分岐の接点又は上分岐のコイルを示すオペコードを検出した場合は分岐カウンタを減算し、
前記読み込んだステップからコイル、セット命令又はストア命令を示すオペコードを検出したとき、分岐カウンタがゼロであり、かつ次のステップのオペコードが分岐命令でない場合には、このコイル、セット命令又はストア命令のステップを最終出力と判定し、
最終出力と判定したステップまでをブロックの終端として制御プログラムを分割する
ことを特徴とする請求項1記載の制御プログラム保守方法。
【請求項3】
前記比較工程は、
比較元の制御プログラムと保守対象である比較先の制御プログラムとを前記分割工程により分割したブロック及びブロック単位でステップ毎に順次照合し、
この照合により不一致となるブロック又はステップが存在すると判定した場合に、比較元及び比較先の不一致と判定したブロック又はステップの数が一致している場合は比較先の制御プログラムは変更されたと判定し、
前記照合により不一致と判定したブロック又はステップが比較先の制御プログラムにのみ存在する場合は比較先の制御プログラムに不一致と判定したブロック又はステップが追加されたと判定し、
前記照合により不一致と判定したブロック又はステップが比較元の制御プログラムにのみ存在する場合は比較元の制御プログラムから不一致と判定したブロック又はステップが削除されたと判定する
ことを特徴とする請求項1又は2記載の制御プログラム保守方法。
【請求項4】
プラントを制御する制御システムで用いられる制御プログラムの保守装置であって、
オペコード及びオペランドを含む実行形式の制御プログラムを関連する処理ステップ群を1つのブロックとして分割する分割手段と、
この分割手段により分割したブロックに基づいて2以上の前記制御プログラムを比較する比較手段と、
この比較手段により比較した比較結果を出力する出力手段と
を備えることを特徴とする制御プログラム保守装置。
【請求項5】
前記分割手段は、
前記制御プログラムを記憶した記憶手段からこの制御プログラムをステップ毎に読み込む読込機能と、
この読込機能により読み込んだステップから下分岐の接点又は下分岐のコイルを示すオペコードを検出した場合は、分割する単位を判断するための分岐カウンタを加算し、上分岐の接点又は上分岐のコイルを示すオペコードを検出した場合は分岐カウンタを減算する加算減算機能と、
前記加算減算機能により読み込んだステップからコイル、セット命令又はストア命令を示すオペコードを検出したとき、分岐カウンタがゼロであり、かつ次のステップのオペコードが分岐命令でない場合には、このコイル、セット命令又はストア命令のステップを最終出力と判定する最終出力判定機能と、
この最終出力判定機能により最終出力と判定したステップまでをブロックの終端として制御プログラムを分割するブロック分割機能と、
を有することを特徴とする請求項4記載の制御プログラム保守装置。
【請求項6】
前記比較手段は、
比較元の制御プログラムと保守対象である比較先の制御プログラムとを前記分割工程により分割したブロック及びブロック単位でステップ毎に順次照合する照合機能と、
この照合機能により不一致となるブロック又はステップが存在すると判定した場合に、比較元及び比較先の不一致と判定したブロック又はステップの数が一致している場合は比較先の制御プログラムは変更されたと判定し、
前記照合機能により不一致と判定したブロック又はステップが比較先の制御プログラムにのみ存在する場合は比較先の制御プログラムに不一致と判定したブロック又はステップが追加されたと判定し、
前記照合機能により不一致と判定したブロック又はステップが比較元の制御プログラムにのみ存在する場合は比較元の制御プログラムから不一致と判定したブロック又はステップが削除されたと判定する判定機能と
を有することを特徴とする請求項4又は5記載の制御プログラム保守装置。
【請求項7】
プラントを制御する制御システムで用いられる制御プログラムの保守プログラムであって、コンピュータに、
オペコード及びオペランドを含む実行形式の制御プログラムを関連する処理ステップ群を1つのブロックとして分割する分割手段と、
この分割手段により分割したブロックに基づいて2以上の前記制御プログラムを比較する比較手段と、
この比較手段により比較した比較結果を出力する出力手段と
として機能させることを特徴とする制御プログラム保守プログラム。
【請求項8】
前記分割手段は、
前記制御プログラムを記憶した記憶手段からこの制御プログラムをステップ毎に読み込む読込機能と、
この読込機能により読み込んだステップから下分岐の接点又は下分岐のコイルを示すオペコードを検出した場合は、分割する単位を判断するための分岐カウンタを加算し、上分岐の接点又は上分岐のコイルを示すオペコードを検出した場合は分岐カウンタを減算する加算減算機能と、
前記加算減算機能により読み込んだステップからコイル、セット命令又はストア命令を示すオペコードを検出したとき、分岐カウンタがゼロであり、かつ次のステップのオペコードが分岐命令でない場合には、このコイル、セット命令又はストア命令のステップを最終出力と判定する最終出力判定機能と、
この最終出力判定機能により最終出力と判定したステップまでをブロックの終端として制御プログラムを分割するブロック分割機能と、
を有することを特徴とする請求項7記載の制御プログラム保守プログラム。
【請求項9】
前記比較手段は、
比較元の制御プログラムと保守対象である比較先の制御プログラムとを前記分割工程により分割したブロック及びブロック単位でステップ毎に順次照合する照合機能と、
この照合機能により不一致となるブロック又はステップが存在すると判定した場合に、比較元及び比較先の不一致と判定したブロック又はステップの数が一致している場合は比較先の制御プログラムは変更されたと判定し、
前記照合機能により不一致と判定したブロック又はステップが比較先の制御プログラムにのみ存在する場合は比較先の制御プログラムに不一致と判定したブロック又はステップが追加されたと判定し、
前記照合機能により不一致と判定したブロック又はステップが比較元の制御プログラムにのみ存在する場合は比較元の制御プログラムから不一致と判定したブロック又はステップが削除されたと判定する判定機能と
を有することを特徴とする請求項7又は8記載の制御プログラム保守プログラム。
【発明の詳細な説明】【技術分野】
【0001】
本発明は、制御プログラムの複数箇所の追加・変更・削除を検出する制御プログラム保守方法、制御プログラム保守装置及び制御プログラム保守プログラムに関する。
【背景技術】
【0002】
プラントを制御する一般的な制御システムにおいて、制御システムの提供者はプラントを安定かつ安全に制御するための各種機器の起動、停止信号等からなる制御回路を制御プログラムとして制御システムに組み込み、制御システムをプラント操業者へ提供する。
【0003】
しかし、制御システム提供後にプラントの操業者側で制御プログラムの改造を行った場合等、現地の制御システムに組み込まれている制御プログラム(以下、現地制御プログラムという。)と提供者が保有する改造元となる制御プログラム(以下、改造元制御プログラムという。)とが一致しない場合が生じる。このような場合、改造後の制御プログラムを制御システムへ反映させると、プラント操業者側が改造を行った制御プログラムの内容が消去されることとなる。
【0004】
このようなことを防止するため、提供者は制御プログラムを改造する前に、現地制御プログラムと改造元制御プログラムとの比較を行い、不整合がないことを確認後、制御プログラムを改造する必要がある。また両制御プログラムに不整合がある場合には、提供者はその不整合箇所を特定した後、操業者側が行った変更点を加味した上で改造元の制御プログラムの改造を行い、操業者の制御システムへ改造後の制御プログラムを反映させる必要がある。
【0005】
そこで、従来の技術では、制御システムに組み込まれた制御プログラムのレビジョンを管理することにより、現地制御プログラムと改造元制御プログラムとの間に不整合があるか否かを判定するソフトウェア変更保護装置が提案されている(例えば、特許文献1参照。)。
【0006】
また、制御プログラムのオブジェクト形式の実行コードや定数データからユーザが認識できるレベルのデータに逆変換し、逆変換された制御プログラムの変更箇所を比較する制御プログラム生成装置が提案されている(例えば、特許文献2参照。)。
【0007】
さらに、ソフトウェア生産物の変更の際、ソフトウェア生産物を解析して、データの同義関係を検出し、検出した同義データとソフトウェア生産物の関係を表示したマトリックスから変更対象を特定することで、同一データに関する変更箇所の調査作業を効率化するソフトウェア方法が提案されている(例えば、特許文献3参照。)。
【特許文献1】特開2000−194540号公報
【特許文献2】特開2004−38849号公報
【特許文献3】特開平8−95774号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかし、特許文献1に記載の装置では、制御プログラムのレビジョンを管理することにより制御プログラムに不整合があるか否かのみを判定するので、制御プログラムが改造された場合、制御プログラムの不整合箇所を特定することはできない。そのため、制御プログラムに不整合があると判定された場合、制御プログラムの提供者は手作業で現地制御プログラムと改造元制御プログラムとの比較を行うことにより不整合箇所を特定する必要があり、これには多大な労力を要していた。
【0009】
また、特許文献2に記載の装置では、オブジェクト形式の実行コードや定数データから逆変換された制御プログラムを先頭から1ステップづつ比較して不整合箇所を特定するので、不整合箇所が見つかるとその不整合箇所以降全てのステップが不整合と認識される場合がある。このような場合、制御プログラムの提供者はその複数の不整合箇所を特定するのに多大な労力を要していた。
【0010】
さらに特許文献3に記載の方法においても、同一データに関する変更箇所の調査では、制御プログラム全体の複数の不整合箇所を特定することはできず、上記同様に不整合箇所を特定するのに多大な労力を要していた。
【0011】
本発明は、上記に鑑みてなされたものであり、制御プログラムの複数箇所の追加・変更・削除を検出することによって、制御プログラムの改造作業効率を向上することができる制御プログラム保守方法、制御プログラム保守装置及び制御プログラム保守プログラムを提供することを課題とする。
【課題を解決するための手段】
【0012】
上記課題を解決するため、本発明の第1の特徴は、オペコード及びオペランドを含む実行形式の制御プログラムを関連する処理ステップ群を1つのブロックとして分割する分割工程と、この分割工程により分割したブロックに基づいて2以上の前記制御プログラムを比較する比較工程と、この比較工程により比較した比較結果を出力する出力工程とを備えることを特徴とする制御プログラム保守方法を提供することを要旨とする。
【0013】
上記課題を解決するため、本発明の第2の特徴は、分割工程は、制御プログラムを記憶した記憶手段からこの制御プログラムをステップ毎に読み込み、この読み込んだステップから下分岐の接点又は下分岐のコイルを示すオペコードを検出した場合は、分割する単位を判断するための分岐カウンタを加算し、上分岐の接点又は上分岐のコイルを示すオペコードを検出した場合は分岐カウンタを減算し、読み込んだステップからコイル、セット命令又はストア命令を示すオペコードを検出したとき、分岐カウンタがゼロであり、かつ次のステップのオペコードが分岐命令でない場合には、このコイル、セット命令又はストア命令のステップを最終出力と判定し、最終出力と判定したステップまでをブロックの終端として制御プログラムを分割することを特徴とする請求項1記載の制御プログラム保守方法を提供することを要旨とする。
【0014】
上記課題を解決するため、本発明の第3の特徴は、比較工程は、比較元の制御プログラムと保守対象である比較先の制御プログラムとを分割工程により分割したブロック及びブロック単位でステップ毎に順次照合し、この照合により不一致となるブロック又はステップが存在すると判定した場合に、比較元及び比較先の不一致と判定したブロック又はステップの数が一致している場合は比較先の制御プログラムは変更されたと判定し、照合により不一致と判定したブロック又はステップが比較先の制御プログラムにのみ存在する場合は比較先の制御プログラムに不一致と判定したブロック又はステップが追加されたと判定し、照合により不一致と判定したブロック又はステップが比較元の制御プログラムにのみ存在する場合は比較元の制御プログラムから不一致と判定したブロック又はステップが削除されたと判定することを特徴とする請求項1又は2記載の制御プログラム保守方法を提供することを要旨とする。
【発明の効果】
【0015】
本発明によれば、制御プログラムの提供者は、現地制御プログラムと改造元制御プログラムとの複数箇所の追加・変更・削除を把握できるので、制御プログラムの改造作業効率を向上することができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施の形態について図面を参照して説明する。
【0017】
本実施形態では、オペコード及びオペランドを含む実行形式の制御プログラムを関連するステップ群を1つのブロックとして分割して、このブロックに基づいて現地制御プログラムと改造元制御プログラムとを比較することにより、複数箇所の追加・変更・削除を把握できる制御プログラム保守方法を実現するための制御プログラム保守装置を例に挙げる。
【0018】
図1は、本発明に係る制御プログラム保守装置の一実施形態を示したブロック図である。
【0019】
図1において、制御プログラム保守装置10は通信回線30を介して制御システム20と接続され、制御プログラムの変更、追加又は削除等を検出して、制御プログラムの保守を実行する。制御プログラム保守装置10内のプロセッサ101、メインメモリ103は、バス105を介して相互に接続されており、このバス105にはまた、I/Oバス107も接続されている。
【0020】
プロセッサ101は、その機能上、分割手段101a、比較手段101b及び出力手段101c等を構成するもので、メインメモリ103にロードされた制御プログラム保守プログラム等のプログラムに従って各種の処理を実行する。
【0021】
分割手段101aは、オペコード及びオペランドを含む実行形式の制御プログラムをメインメモリ103から読み込み、関連するステップ群を1ブロックとして分割する。
【0022】
比較手段101bは、分割手段101aにより分割したブロックに基づいて2以上の制御プログラムを比較する。
【0023】
出力手段101cは、比較手段101cにより比較した比較結果を出力する。
【0024】
また、記憶手段であるメインメモリ103には、制御プログラムなどプロセッサ101が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0025】
I/Oバス107には、入出力コントローラを介して、記憶装置115、入力装置117、表示装置119、ネットワークI/F121が接続されている。
【0026】
記憶装置115は、半導体記憶装置や磁気ディスク装置であって、オペレーティングシステムなどのプログラムの他に、制御プログラム保守プログラムが記憶されている。
【0027】
入力装置117は、操作者が各種の操作を入力するキーボード、マウスなどの入力デバイスにより構成されており、例えば操作者の押しボタン操作により制御プログラムの比較を実行する入力信号を作成し、この入力信号を入出力コントローラ111、I/Oバス107及びメモリバス105を介してプロセッサ101に送信する。
【0028】
表示装置119は、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどであり、プロセッサ101からメモリバス105、I/Oバス107、入出力コントローラ111を介して制御プログラムの比較結果等の出力信号を受信し表示する装置である。
【0029】
ネットワークI/F121はLANカードやシリアルポートなどの通信装置であり、このネットワークI/F121を介して制御プログラム保守装置10を制御システム20に接続することで、制御システム20内の制御プログラムを制御プログラム保守装置10へダウンロードし、又は制御プログラム保守装置10内の制御プログラムを制御システム20へアップロードすることができる。
【0030】
本実施形態では、プロセッサ101は記憶装置115内に記憶された制御プログラム保守プログラムをメインメモリ103へロードし、制御プログラム保守プログラムを起動し、プロセッサ101は図3に示すような入力画面を表示する。利用者は、現地制御プログラムと改造元制御プログラムが指定するため、図3に示す入力画面からシステム名201、ステーション名202及びコントローラ名203等を設定する。そして利用者が比較ボタン204を押すことにより、入力装置117は、指定された制御プログラムの比較処理の実行命令を受け付け、プロセッサ101へ比較実行命令を送信する。プロセッサ101は、入力装置117から比較実行命令を受信すると、制御プログラム保守プログラムに従って、図2に示す各処理を実行する。これによりオペコード及びオペランドを含む実行形式の制御プログラムを関連するステップ群を1つのブロックとして分割する分割手段と、この分割手段により分割したブロックに基づいて現地制御プログラムと改造元制御プログラムとを比較する比較手段を実現する。
【0031】
次に、図2及び図4の各フローチャートに従って、本発明にかかる制御プログラム保守装置の一実施形態の処理手順について説明する。
【0032】
本実施形態では、図5、図6に示す改造元制御プログラムのソースコード及びUNIASMコードと、図7、図8に示す現地制御プログラムのソースコード及びUNIASMコードを分割、比較する制御プログラム保守装置について説明する。
【0033】
まず、プロセッサ101は、記憶装置115に記憶されている比較元となる改造元制御プログラムと、比較先となる現地制御プログラムをネットワークI/F121を経由して読み込み、メインメモリ103へ記憶する(図2、処理S101)。
【0034】
次に、プロセッサ101の分割手段101aは、図3の入力画面で指定された比較元となる改造元制御プログラムと比較先となる現地制御プログラムの分割を行う(処理S102、S103)。ここで、各制御プログラムの分割は制御プログラムを構成する処理ステップの中で関連する処理ステップ群を1つのブロックとして分割する。具体的には、オペコード及びオペランドを含む実行形式であるUNIASMコードを上からステップごとに読み込み、読み込んだステップが最終出力のコイル、ストア命令、セット命令であるか否かを判定し、最終出力と判定した場合は、そのコイル、セット命令又はストア命令のステップまでをブロックの終端として制御プログラムを分割する。
【0035】
≪分割手段101aによる分割処理≫
図4に、分割手段101aが上記処理S102、S103で行う分割の処理手順を示す。
【0036】
まず、分割手段101aは、分岐カウンタをイニシャライズした後(処理S201)、制御プログラムの先頭のステップをメインメモリ103から読み込む(処理S203)。ここで、分岐カウンタとは制御プログラムを構成する処理ステップの中で関連する処理ステップ群を1つのブロックとして分割する際、分割するステップの位置を判断するために用いる変数を指す。
【0037】
次に分割手段101aは、読み込んだステップから下分岐の接点又は下分岐のコイルを示すオペコードを検知した場合は分岐カウンタのカウント値を加算し(処理S205、S207)、上分岐の接点又は上分岐のコイルを示すオペコードを検知した場合は分岐カウンタのカウント値を減算する(処理S209、S211)。
【0038】
そして分割手段101aは、読み込んだステップからコイル、セット命令又はストア命令を示すオペコードを検出したとき(処理S213)に、分岐カウンタのカウント値がゼロであり(処理S215)、かつ次のステップのオペコードが分岐命令でない場合(処理S217)には、検知したコイル、セット命令又はストア命令のステップを最終出力と判定する。そして、最終出力と判定したコイル、セット命令又はストア命令のステップまでをブロックの終端として制御プログラムを分割し、分割するステップ情報をメインメモリ103へ記憶する(処理S219)。
【0039】
分割手段101aは、制御プログラムの全ステップについて上記処理S203乃至S219の処理を行う(処理S221)。これにより、制御プログラムを関連するステップ群を1つのブロックとして分割することができる。
【0040】
次に、具体的な分割手段101aの例を図5に示す改造元制御プログラムソースコード及び図6に示す改造元UNIASMコードを用いて説明する。
【0041】
図6では、ステップNO.を示す項301、オペコードを示す項303、オペランドを示す項305のデータが1対1に対応して関連付けられており、分割手段101aは、ステップNO.の昇順にこれらを読み込む。
【0042】
図6において、まず分割手段101aは、分岐カウンタをイニシャライズした後(処理S201)、先頭ステップであるステップNO.0をメインメモリ103から読み込む(処理S203)。そして、読み込んだステップから「ENTRY」を検出するが、これは接点、コイル、セット命令、ストア命令ではないので(処理S213)、分岐カウンタを初期値の“0”の状態で何も操作せず、次のステップNO.1をメインメモリ103から読み込む。
【0043】
次に分割手段101aは、読み込んだステップNO.1から「NOP」を検出するが、ステップNO.0と同様に接点、コイル、セット命令、ストア命令を示すオペコードではないと判定し(処理S213)、分岐カウンタのカウント値を初期値の“0”の状態で何も操作せず、次のステップNO.2を読み込む。
【0044】
分割手段101aは、ステップNO.2及びNO.3において、接点を示すオペコード「LDOC」、「OC」を検出するが、これらは分岐のない接点を示しているので、同様に分岐カウンタのカウント値は初期値の“0”の状態で何も操作せず、次のステップNO.4を読み込む(処理S213)。
【0045】
次に、分割手段101aは、ステップNO.4において下分岐のコイルを示すオペコード「CL_B」を検出するので、分岐カウンタのカウント値を加算し“1”とする(処理S207)。そうすると、分割手段101aは、分岐カウンタのカウント値が“0”ではないので、このコイルを最終出力とは判断せず、次のステップNO.5を読み込む(処理S215)。
【0046】
ステップNO.5では、上下に分岐のある接点を示すオペコード「OC_M」を検出するので、分岐カウンタのカウント値を操作することなく、“1”の状態で、次のステップNO.6を読み込む(処理S213)。
【0047】
ステップNO.6では、分岐のないコイルを示すオペコード「CL」を検出するので、分岐カウンタのカウント値は“1”の状態のまま操作せず、また分岐カウンタのカウント値が“0”ではないので、このコイルを最終出力とは判断せず、次のステップNO.6を読み込む(処理S215)。
【0048】
ステップNO.7では、上分岐のコイルを示すオペコード「CL_E」を検出するので、分岐カウンタのカウント値を“1”減算すると“0”となる(処理S211、処理S215)。また、次の処理ステップが分岐命令ではないので(処理S217)、分割手段101aは、このコイルを最終出力と判定し、ステップNO.0乃至7のステップを第1ブロックの終端として制御プログラムを分割し、メインメモリ103へ分割するステップ情報を記憶する(処理S219)。
【0049】
次にステップNO.13以降のUNIASMコードに着目する。
【0050】
まず分割手段101aは、ステップNO.13において、分岐のないロード命令(図5ではLDで示す。)を示すオペコード「LD_REAL」を検出するので、分岐カウンタのカウント値は初期値の“0”の状態で操作せず、次のステップNO.14を読み込む(処理S213)。ステップNO.15乃至17においても同様に分岐がないオペコードを検出するので、分岐カウンタのカウント値を操作することなく次のステップNO.18を読み込む(処理S213)。
【0051】
ステップNO.18ではストアを示すオペコード「ST_REAL」を検出するが、次のステップNO.19を読み込み、分岐命令を示すオペコード「WR_E」を検出するので、分割手段101aはステップNO.18が最終出力ではないと判定する(処理S217)。
【0052】
さらに順にステップを読み込むと、ステップNO.22でストアを示すオペコード「ST_REAL」を検出し、そのときの分岐カウンタのカウント値が“0”であり(処理S215)、かつ次ステップであるステップNO.23が分岐命令を示すオペコードではない(処理S217)ので、分割手段101aは、このストアを最終出力と判定する。そして、ステップNO.13乃至22のステップを第4ブロックの終端として制御プログラムを分割し、メインメモリ103へ分割するステップ情報を記憶する(処理S221)。
【0053】
以上のように制御プログラムを分割することにより、図5の破線に示すような関連するステップ群を1つのブロックとして分割することができ、これにより後述の比較手段による制御プログラムとの複数箇所の追加・変更・削除を把握できることとなる。
【0054】
さらに、分割手段101aは、図7に示す現地制御プログラムソースコード及び図8に示す現地UNIASMコードについても、上記と同様に関連する処理ステップ群を1つのブロックとして分割する(処理S103)。
【0055】
≪比較手段101bによる比較処理≫
分割手段101aによる分割処理が終了すると、プロセッサ101の比較手段101bは、比較元の制御プログラムと比較先の制御プログラムを分割手段101aにより分割した全てのブロックについて両プログラムのブロック同士を照合することにより比較する(処理S105、S107)。
【0056】
この照合により不一致となるブロックが存在すると判定した場合は、比較先制御プログラムが変更されたのか、追加されたのか、又は削除されたのかを判定する(処理S111)。
【0057】
ここではまず、図9乃至図11を用いて変更、追加及び削除の判定ルールについて説明する。
【0058】
図9は、比較先の制御プログラムが変更されている場合の一例を示す。
【0059】
比較手段101bは、上記照合により不一致となるブロックが存在すると判定した場合に、比較元と比較先の制御プログラムにおける不一致と判定したブロックの数が同一である場合には、比較先の制御プログラムは変更されていると判定する。
【0060】
図9の例では、比較元と比較先の制御プログラムの不一致となるブロック数が互いに2ブロックであるため、比較手段101bは、比較先の制御プログラムが変更されていると判定する。
【0061】
図10は、比較先の制御プログラムが追加されている場合の一例を示す。
【0062】
比較手段101bは、上記照合により不一致と判定したブロックが比較先の制御プログラムにのみに存在する場合は、比較先の制御プログラムに不一致と判定したブロックが追加されたと判定する。
【0063】
図10の例では、ブロックNO.3及びNO.4の不一致箇所が比較先の制御プログラムにのみ存在するため、比較手段101bは、比較先の制御プログラムにブロックNO.3及びNO.4が追加されていると判定する。
【0064】
図11は、比較先の制御プログラムが削除されている場合の一例を示す。
【0065】
比較手段101bは、上記照合により不一致と判定したブロックが比較元の制御プログラムにのみに存在する場合は比較先の制御プログラムから不一致と判定したブロックが削除されたと判定する。
【0066】
巣11の例では、ブロックNO.3及びNO.4の不一致箇所が比較元の制御プログラムにのみに存在するため、比較手段101bは、比較元の制御プログラムからブロックNO.3及びNO.4が削除されていると判定する。
【0067】
次に比較手段101bは、不一致となるブロックが存在すると判定した場合、変更されていると判定したブロック内の全てのステップを照合する。(処理S113、S115)。
【0068】
この照合により不一致となるステップが存在すると判定した場合は、比較先制御プログラムが変更されたのか、追加されたのか、又は削除されたのかを判定する(処理S117)。ここで、変更、追加、削除の判定方法については、上記ブロック単位の判定と同様であるため、省略する。
【0069】
なお、図9乃至図11に示した例では、変更、追加及び削除の例を示しているが、例えば変更と追加のような組み合わせの場合であっても、同様に判定が可能である。
【0070】
次に、分割手段101aが処理S102、S103において分割した図6に示す改造元UNIASMコードと、図8に示す現地UNIASMコードを比較した場合について説明する。
【0071】
プロセッサ101の比較手段101bは、図6に示す改造元UNIASMコードと、図8に示す現地UNIASMコードを分割手段101aにより分割した全てのブロックについて両プログラムのブロック同士を照合することにより比較する(処理S105、S107)。
【0072】
まず、比較手段101bは、分割手段101aによって分割した第1ブロック同士を比較する。比較の結果、改造元UNIASMコードのステップNO.3のオペコードは、「OC」であるのに対し、現地UNIASMコードのステップNO.3のオペコードは、「CC」であるので、まず第1ブロック同士は不一致であると判定する。そこで、比較手段101bは、改造元UNIASMコードの第1ブロックと一致するブロックを現地UNIASMコードの中から検索する。しかし、第1ブロックと一致するブロックを検出できないので、第1ブロックは不一致であると判定する。
【0073】
次に比較手段101bは、第2ブロックの判定を行う。改造元UNIASMコードのステップNO.8のオペコードは、「OC_E」であるのに対し、現地UNIASMコードのステップNO.7のオペコードは、「LDOC」であるので、第2ブロック同士も不一致であると判定する。そこで、比較手段101bは、改造元UNIASMコードの第2ブロックと一致するブロックを現地UNIASMコードの中から検索する。しかし、第2ブロックと一致するブロックを検出できないので、第2ブロックは不一致であると判定する。
【0074】
次に比較手段101bは、第3ブロックの判定を行う。改造元UNIASMコードのステップNO.11のオペコードは、「LDOC」であり、現地UNIASMコードのステップNO.10のオペコードも、「LDOC」で一致する。しかし、改造元UNIASMコードのステップNO.11のオペランドは、「%MX0.0.10」であるのに対し、現地UNIASMコードのステップNO.10のオペランドは、「%MX0.0.12」であるので、第3ブロック同士も不一致であると判定する。そこで、比較手段101bは、改造元UNIASMコードの第3ブロックと一致するブロックを現地UNIASMコードの中から検索する。そうすると、現地UNIASMコードの第4ブロックにオペコード、オペランド共に一致するブロックを検出できるので、改造元UNIASMコードの第3ブロックと現地UNIASMコードの第4ブロックは一致すると判定する。
【0075】
ここで、上記で不一致と判定した改造元UNIASMコードと現地UNIASMコードの第1ブロック及び第2ブロックについて、不一致と判定したブロックの数が一致しているので、比較手段101bは、現地制御プログラムの第1ブロック及び第2ブロックは変更されたと判定する。そして、現地UNIASMコードの第3ブロックについては、比較先である現地UNIASMコードにのみ存在するので、比較先である現地UNIASMコードに第3ブロックが追加されたと判定する(処理S111)。
【0076】
次に比較手段101bは、上記により改造元UNIASMコードの第3ブロックと現地UNIASMコードの第4ブロックは一致すると判定したので、その次ブロックである改造元UNIASMコードの第4ブロックと現地UNIASMコードの第5ブロックの比較を行う。そうすると、改造元UNIASMコードのステップNO.20のオペコードは、「LD_REAL」であるのに対し、現地UNIASMコードのステップNO.21のオペコードは、「LDI_L」であるので、これらのブロック同士は不一致であると判定する。
【0077】
次に比較手段101bは、第5ブロックの判定を行う。しかし現地UNIASMコード中に第5ブロックと一致するブロックは存在しないので、第5ブロックも不一致であると判定する。
【0078】
ここで、上記で不一致と判定した改造元UNIASMコード第4ブロックと現地UNIASMコードの第5ブロックについて、不一致と判定したブロックの数が一致しているので、現地制御プログラムは変更されたと判定する。そして、改造元UNIASMコードの第5ブロックについては、比較元である改造元UNIASMコードにのみ存在するので、比較先である現地UNIASMコードから改造元UNIASMコード第5ブロックに相当するブロックが削除されたと判定する。
【0079】
上記により、比較手段101bは、改造元UNIASMコードと現地UNIASMコードの第1ブロック及び第2ブロックについて、変更されたと判定し、改造元UNIASMコードの第3ブロックと現地UNIASMコードの第4ブロックは一致すると判定し、改造元UNIASMコード第4ブロックと現地UNIASMコードの第5ブロックについて、変更されたと判定し、比較先である現地UNIASMコードから改造元UNIASMコード第5ブロックに相当するブロックが削除されたと判定する。
【0080】
次に比較手段101bは、不一致となるブロックが存在すると判定したので、そのうち変更と判定したブロック内の全てのステップを照合する(処理S113、S115)。
【0081】
まず第1ブロックについて、比較手段101bは、ステップNO.0及びNO.2は一致すると判定する。次に、改造元UNIASMコードのステップNO.3のオペコードは、「OC」であるのに対し、現地UNIASMコードのステップNO.3のオペコードは、「CC」であるので、ステップNO.3同士のオペコードは不一致であると判定する。
【0082】
そこで、比較手段101bは、現地UNIASMコードの第1ブロックの中からステップNO.3のオペコード、オペランド共に一致するステップを検索する。しかし、ステップNO.3と一致するステップを検出できないので、ステップNO.3は不一致であると判定する。
【0083】
次に、比較手段101bは、ステップNO.4の判定を行う。改造元UNIASMコードのステップNO.4のオペコード、現地UNIASMコードのステップNO.4のオペコードは、共に「CL_B」で一致し、オペランドも一致するので、NO.4ステップ同士は一致すると判定する。
【0084】
ここで、上記で不一致と判定した改造元UNIASMコードと現地UNIASMコードのステップNO.3について、不一致と判定したステップの数が一致しているので、現地制御プログラムは変更されたと判定する。
【0085】
次に、比較手段101bは、ステップNO.5の判定を行う。改造元UNIASMコードのステップNO.5のオペコードは、「OC_M」であるのに対し、現地UNIASMコードのステップNO.5のオペコードは、「OC_E」であるので、ステップNO.5同士は不一致であると判定する。
【0086】
そこで、比較手段101bは、現地UNIASMコードの第1ブロックの中からステップNO.5のオペコード、オペランド共に一致するステップを検索する。しかし、ステップNO.5と一致するステップを検出できないので、ステップNO.5は不一致であると判定する。
【0087】
次に、比較手段101bは、ステップNO.6の判定を行う。改造元UNIASMコードのステップNO.6のオペコード、現地UNIASMコードのステップNO.6のオペコードは、共に「CL_E」で一致し、オペランドも一致するので、NO.6ステップ同士は一致すると判定する。
【0088】
ここで、上記で不一致と判定した改造元UNIASMコードと現地UNIASMコードのステップNO.5について、不一致と判定したステップの数が一致しているので、現地制御プログラムは変更されたと判定する。
【0089】
次に比較手段101bは、ステップNO.7の判定を行う。しかし現地UNIASMコード中にステップNO.7と一致するステップは存在しないので、ステップNO.7は不一致であると判定する。
【0090】
上記により、比較手段101bは、改造元UNIASMコードと現地UNIASMコードの第1ブロックについて、ステップNO.0乃至NO.2は一致すると判定し、ステップNO.3は変更されたと判定し、ステップNO.4は一致すると判定し、ステップNO.5は変更されたと判定し、ステップNO.6は一致すると判定し、改造元UNIASMコード第1ブロックのステップNO.7は削除されたと判定する。
【0091】
このように、比較手段101bは、順次変更されていると判定した改造元UNIASMコードの第1、第2、第4ブロックについて、ブロック単位で全ステップを照合し、現地UNIASMコードが変更されたのか、追加されたのか、又は削除されたのかを判定する(処理S117、S119)。
【0092】
≪出力手段101cによる出力処理≫
次に出力手段101cは、上記比較手段101bにより比較した比較結果を出力する。例えば、表示装置119に図12、又は図13のような比較結果を出力することができる(処理S121)。
【0093】
図12は、比較元の制御プログラムと保守対象である比較先の制御プログラムとを分割手段により分割したブロックを照合した出力結果の例を示している。
【0094】
図12には、分割したブロックに相当する図12中の「プログラム構成単位NO.」401毎に比較先制御プログラムが変更されたのか、追加されたのか、又は削除されたのかを判定した比較結果である「結果」405が出力されている。例えば、「プログラム構成単位NO.」401の値が「2048」に対応する「結果」405の内容は「変更」であるので、出力手段101cは、比較手段101bが「第2048ブロックは変更されている」と判定したことを表示している。
【0095】
さらに、利用者によって、図12中「詳細一括」411ボタンの押ボタン操作されることにより、図13のような詳細表示することもできる。
【0096】
図13は、比較元の制御プログラムと保守対象である比較先の制御プログラムとを分割手段により分割したブロック単位で処理ステップ毎に照合した出力結果の一例を示している。
【0097】
図13中では、出力手段101cは、「データファイル名」403単位で処理ステップ毎に照合した出力結果の例を表示領域501に表示している。ここで、「データファイル名」403は、ブロックに相当する「プログラム構成単位NO.」401と1対1に関連付けられている。
【0098】
表示領域501では、データファイル名「MS000」のブロックについて、ステップNO.96とステップNO.97の結果が「Changed」で、変更内容が「Instruction,Address」であるので、出力手段101cは、比較手段101bがデータファイル「MS000」に相当する第2048ブロックについて、「ステップNO.96とステップNO.97のオペコード(図中Instructionに相当する。)と、オペランド(図中Addressに相当する。)が変更されている」と判定したことを表示している。
【0099】
以上のように、オペコード及びオペランドを含む実行形式の制御プログラムを関連するステップ群を1つのブロックとして分割して、このブロックに基づいて現地制御プログラムと改造元制御プログラムとを比較することにより、現地制御プログラムと改造元制御プログラムとの複数箇所の追加・変更・削除を検出できる。これにより利用者は制御プログラムの改造作業効率を向上することができる効果を得ることができる。
【0100】
なお、本発明にかかる制御プログラム保守方法、制御プログラム保守装置、及び制御プログラム保守プログラムは、オペコード及びオペランドを含む実行形式のコードを用いて制御プログラムの分割、比較を行うので、ソースプログラムがラダー図、シーケンシャル・ファンクション・チャート(SFC)などの多種多様なプログラム言語で作成された制御プログラムであっても対応することができる。
【図面の簡単な説明】
【0101】
【図1】本発明にかかる制御プログラム保守装置の一実施形態を示すブロック図。
【図2】本発明にかかる制御プログラム保守装置の一実施形態の処理手順を示すフローチャート。
【図3】本発明にかかる制御プログラム保守装置の一実施形態の入力画面例。
【図4】本発明にかかる制御プログラム保守装置における分割手段の一実施形態の処理手順を示すフローチャート。
【図5】複数の不一致箇所を検出する改造元制御プログラムソースコードの一例を示す説明図。
【図6】複数の不一致箇所を検出する改造元UNISAMコードの一例を示す説明図。
【図7】複数の不一致箇所を検出する現地制御プログラムソースコードの一例を示す説明図。
【図8】複数の不一致箇所を検出する現地UNISAMコードの一例を示す説明図。
【図9】本発明にかかる一実施形態の比較手段で実行する変更の一例を示す説明図。
【図10】本発明にかかる一実施形態の比較手段で実行する追加の一例を示す説明図。
【図11】本発明にかかる一実施形態の比較手段で実行する削除の一例を示す説明図。
【図12】本発明にかかる一実施形態の出力手段がブロックを照合した結果を出力した出力結果の一例を示す説明図。
【図13】本発明にかかる一実施形態の出力手段がブロック単位で処理ステップを照合した結果を出力した出力結果の一例を示す説明図。
【符号の説明】
【0102】
10…制御プログラム保守装置
20…制御システム
101…プロセッサ
101a…分割手段
101b…比較手段
101c…出力手段
103…メインメモリ
115…記憶装置
117…入力装置
119…表示装置
121…ネットワークI/F
【出願人】 【識別番号】000003078
【氏名又は名称】株式会社東芝
【出願日】 平成18年6月20日(2006.6.20)
【代理人】 【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和

【識別番号】100100712
【弁理士】
【氏名又は名称】岩▲崎▼ 幸邦

【識別番号】100100929
【弁理士】
【氏名又は名称】川又 澄雄

【識別番号】100108707
【弁理士】
【氏名又は名称】中村 友之

【識別番号】100095500
【弁理士】
【氏名又は名称】伊藤 正和

【識別番号】100101247
【弁理士】
【氏名又は名称】高橋 俊一

【識別番号】100098327
【弁理士】
【氏名又は名称】高松 俊雄


【公開番号】 特開2008−3725(P2008−3725A)
【公開日】 平成20年1月10日(2008.1.10)
【出願番号】 特願2006−170714(P2006−170714)