(57)【要約】      （修正有）【課題】制御プログラムの開発において生成される中間コードの検査の精度及び効率を改善する。【解決手段】第１プログラム変換部１２は、プラント制御プログラムを中間コードに変換するとともに、プラント制御プログラム上の要素（信号、論理演算シンボル、及び信号線）と中間コードとを対応させる中間コード補助データを生成する。第２プログラム変換部１４は、中間コードを実行可能コードに変換する。コード対応部１５は、中間コード補助データから、ユーザの指示に対応する情報を抽出し、その情報をダイヤグラム表示制御部１６及び中間コード表示制御部１８へ供給する。ダイヤグラム表示制御部１６は、コード対応部１５により抽出された情報に基づいて、表示装置に表示するＰＯＬダイヤグラムの表示内容を制御する。中間コード表示制御部１８は、コード対応部１５により抽出された情報に基づいて、表示装置に表示する中間コードの表示内容を制御する。【選択図】図２
2012164081.tif 000002
【特許請求の範囲】
【請求項１】
プラント制御プログラムを開発するときに生成される中間コードの品質を検査する中間コード検査装置と、
前記中間コード検査装置に対するユーザの指示を受け付ける入力装置と、
前記中間コード検査装置の検査内容を表示する表示装置と、を備え、
前記中間コード検査装置は、
問題向け言語で記述されたダイヤグラムを中間コードに変換するとともに、前記ダイヤグラムに基づいて、前記ダイヤグラムと前記中間コードとを対応付ける中間コード補助データを生成する前記第１プログラム変換部と、
前記中間コードを、プログラマブルロジックコントローラが実行可能な実行可能コードに変換する第２プログラム変換部と、
前記中間コード補助データから、前記ユーザの指示に対応する情報を抽出するコード対応部と、
前記コード対応部により抽出された情報に基づいて、前記表示装置に表示する前記ダイヤグラムの表示内容を制御するダイヤグラム表示制御部と、
前記コード対応部により抽出された情報に基づいて、前記表示装置に表示する前記中間コードの表示内容を制御する中間コード表示制御部と、を備える中間コード検査システム。
【請求項２】
前記ダイヤグラムは、前記プログラマブルロジックコントローラ上の複数の要素と、前記要素の位置及び形状を示す座標情報と、を含み、
前記中間コード補助データは、前記要素を特定する要素名と、前記要素名に対応する要素の前記ダイヤグラム上の位置を特定する座標情報と、を含む、請求項１に記載の中間コード検査システム。
【請求項３】
前記コード対応部は、前記ユーザの指示に対応する前記ダイヤグラムの座標情報を取得し、前記中間コード補助データから、前記ダイヤグラムの座標情報に対応する前記中間コード補助データの座標情報を抽出する、請求項２に記載の中間コード検査システム。
【請求項４】
前記ダイヤグラム表示制御部は、前記コード対応部により抽出された前記中間コード補助データの座標情報に対応する領域を強調する、請求項３に記載の中間コード検査システム。
【請求項５】
前記中間コード表示制御部は、前記コード対応部により抽出された前記中間コード補助データの座標情報に対応する領域を強調する、請求項３又は４に記載の中間コード検査システム。
【請求項６】
前記ユーザのユーザ認証を実行する認証インタフェースをさらに備え、
前記第１プログラム変換部は、前記認証インタフェースから認証情報を取得し、前記中間コード補助データに前記認証情報を付加する、請求項１乃至５の何れか１項に記載の中間コード検査システム。
【請求項７】
前記認証情報は、前記ユーザを特定するユーザＩＤ（Identification）と、前記ユーザ認証に成功した日付及び時刻と、前記中間コードの検証が終了した日付及び時刻と、の少なくとも１つを含む、請求項６に記載の中間コード検査システム。
【請求項８】
前記第１プログラム変換部は、中間コードの検証が終了した日付及び時刻を用いて、前記中間コード補助データを更新する、請求項７に記載の中間コード検査システム。
【請求項９】
前記中間コード検査装置は、前記中間コード補助データの信号に対応するアクセス命令を特定する追跡部をさらに備える、請求項１乃至８の何れか１項に記載の中間コード検査システム。
【請求項１０】
前記第１プログラム変換部は、前記ダイヤグラムに基づいて第１中間コード補助データを生成し、前記ダイヤグラムが変更されたときに、変更されたダイヤグラムに基づいて第２中間コード補助データを生成し、
前記第１中間コード補助データと前記第２中間コード補助データとを比較して、前記ダイヤグラムの変更内容を特定するプログラム比較部をさらに備える、請求項１乃至１０の何れか１項に記載の中間コード検査システム。
【請求項１１】
問題向け言語で記述されたダイヤグラムを中間コードに変換するとともに、前記ダイヤグラムに基づいて、前記ダイヤグラムと前記中間コードとを対応付ける中間コード補助データを生成し、
前記中間コードを、プログラマブルロジックコントローラが実行可能な実行可能コードに変換し、
前記中間コード補助データから、ユーザの指示に対応する情報を抽出し、
前記情報に基づいて、表示装置に表示する前記ダイヤグラム及び前記中間コードの表示内容を制御する、中間コード検査方法。
【請求項１２】
問題向け言語で記述されたダイヤグラムを中間コードに変換するとともに、前記ダイヤグラムに基づいて、前記ダイヤグラムと前記中間コードとを対応付ける中間コード補助データを生成し、
前記中間コードを、プログラマブルロジックコントローラが実行可能な実行可能コードに変換し、
前記中間コード補助データから、ユーザの指示に対応する情報を抽出し、
前記情報に基づいて、表示装置に表示する前記ダイヤグラム及び前記中間コードの表示内容を制御する、処理をコンピュータに実行させる中間コード検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、中間コード検査装置、中間コード検査方法、及び中間コード検査プログラムに関する。
【背景技術】
【０００２】
一般的に、沸騰水型原子力発電プラント等の発電プラントの設備を制御する制御プログラムの開発では、仕様が決められ、決められた仕様を満足するソフトウェアが問題向け言語（以下、「ＰＯＬ（Problem Oriented Language）」という）で記述されたダイヤグラムが作成され、作成されたダイヤグラムに基づいて中間コードが生成され、生成された中間コードが実行可能コードに変換され、変換された実行可能コードが制御プログラムに組み込まれる。
【０００３】
発電プラント用の制御プログラムには、極めて高い信頼性が要求される。この信頼性の要求は、制御プログラムに組み込まれる実行可能コードの品質だけではなく、開発において生成される中間コードの品質と、中間コードの品質を保証するための検査の手法と、にまで及ぶ。
【０００４】
この信頼性の要求を満たす方法には、中間コードを生成するコンパイラの性能を改善する方法と、生成された中間コードを検査する方法と、がある。
【０００５】
しかしながら、コンパイラのプログラム構成は複雑なので、コンパイラの性能の改善は困難である。また、コンパイラの性能を改善したとしても、生成される中間コードの品質が完全であることは保証されないので、中間コードの検査は必要である。
【０００６】
一方、中間コードの検査は、設計者が様々な情報を目視することによって行われる。すなわち、中間コードの検査は全く自動化されていない。従って、検査の所要時間が長く、且つ、設計者の負担が大きい。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−２４２９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、高い信頼性が要求される制御プログラムの開発において生成される中間コードの検査の所要時間を短縮し、且つ、設計者の負担を軽減することにより、設計者の検証の精度及び効率を改善することである。
【課題を解決するための手段】
【０００９】
本発明の第１態様によれば、
プラント制御プログラムを開発するときに生成される中間コードの品質を検査する中間コード検査装置と、
前記中間コード検査装置に対するユーザの指示を受け付ける入力装置と、
前記中間コード検査装置の検査内容を表示する表示装置と、を備え、
前記中間コード検査装置は、
問題向け言語で記述されたダイヤグラムを中間コードに変換するとともに、前記ダイヤグラムに基づいて、前記ダイヤグラムと前記中間コードとを対応付ける中間コード補助データを生成する前記第１プログラム変換部と、
前記中間コードを、プログラマブルロジックコントローラが実行可能な実行可能コードに変換する第２プログラム変換部と、
前記中間コード補助データから、前記ユーザの指示に対応する情報を抽出するコード対応部と、
前記コード対応部により抽出された情報に基づいて、前記表示装置に表示する前記ダイヤグラムの表示内容を制御するダイヤグラム表示制御部と、
前記コード対応部により抽出された情報に基づいて、前記表示装置に表示する前記中間コードの表示内容を制御する中間コード表示制御部と、を備える中間コード検査システムが提供される。
【００１０】
本発明の第２態様によれば、
問題向け言語で記述されたダイヤグラムを中間コードに変換するとともに、前記ダイヤグラムに基づいて、前記ダイヤグラムと前記中間コードとを対応付ける中間コード補助データを生成し、
前記中間コードを、プログラマブルロジックコントローラが実行可能な実行可能コードに変換し、
前記中間コード補助データから、ユーザの指示に対応する情報を抽出し、
前記情報に基づいて、表示装置に表示する前記ダイヤグラム及び前記中間コードの表示内容を制御する、中間コード検査方法が提供される。
【００１１】
本発明の第３態様によれば、
問題向け言語で記述されたダイヤグラムを中間コードに変換するとともに、前記ダイヤグラムに基づいて、前記ダイヤグラムと前記中間コードとを対応付ける中間コード補助データを生成し、
前記中間コードを、プログラマブルロジックコントローラが実行可能な実行可能コードに変換し、
前記中間コード補助データから、ユーザの指示に対応する情報を抽出し、
前記情報に基づいて、表示装置に表示する前記ダイヤグラム及び前記中間コードの表示内容を制御する、処理をコンピュータに実行させる中間コード検査プログラムが提供される。
【発明の効果】
【００１２】
本発明によれば、高い信頼性が要求される制御プログラムの開発において生成される中間コードの検査の所要時間を短縮し、且つ、設計者の負担を軽減することができる。その結果、設計者の検証の精度及び効率が改善する。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態の中間コード検査システム１のブロック図。
【図２】第１実施形態の中間コード検査装置１０のブロック図。
【図３】第１実施形態の中間コード検査処理のフローチャート。
【図４】ＰＯＬダイヤグラムの概略図。
【図５】中間コードの概略図。
【図６】中間コード補助データの第１データの概略図。
【図７】中間コード補助データの第２データの概略図。
【図８】図３のダイヤグラム表示制御（Ｓ３０４）における表示装置５の表示例。
【図９】図３のダイヤグラム表示制御（Ｓ３０４）における表示装置５の表示例。
【図１０】図３の中間コード表示制御（Ｓ３０６）における表示装置５の表示例。
【図１１】第２実施形態の中間コード検査処理のフローチャート。
【図１２】認証情報が付加された中間コード補助データの第１データの概略図。
【図１３】第３実施形態の中間コード検査装置１０のブロック図。
【図１４】第３実施形態の中間コード検査処理のフローチャート。
【図１５】図１４の追跡処理（Ｓ１４０５）のフローチャート。
【図１６】信号テーブルの概略図。
【図１７】図１４の中間コード表示制御（Ｓ１４０６）における表示装置５の表示例。
【図１８】第４実施形態の中間コード検査装置１０のブロック図。
【図１９】第４実施形態の中間コード検査処理のフローチャート。
【図２０】図１９の中間コード補助データ検証（Ｓ１９０１）のフローチャート。
【図２１】第１中間コード補助データの第１データ及び第２中間コード補助データの第１データの概略図。
【図２２】認証情報付加（Ｓ２００６）及びデータ削除（Ｓ２０２６）により生成される中間コード補助データの第１データの概略図。
【図２３】図２２の中間コード比較（Ｓ２００８）における表示装置５の表示例。
【発明を実施するための形態】
【００１４】
本発明の実施形態について、図面を参照して説明する。
【００１５】
本発明の実施形態の中間コード検査システムの構成について説明する。図１は、本発明の実施形態の中間コード検査システム１のブロック図である。
【００１６】
中間コード検査システム１は、プロセッサ２と、記憶装置３と、入力装置４と、表示装置５と、認証インタフェース６と、を備える。
【００１７】
プロセッサ２は、記憶装置３に格納された中間コード検査プログラムを起動することにより、中間コード検査装置１０として動作するモジュールである。中間コード検査装置１０は、プラント制御プログラムを開発するときに生成される中間コードの品質を検査し、入力装置４を介して与えられるユーザの指示に基づいて検査内容を表示装置５に表示する装置である。プロセッサ２は、例えば中央演算処理装置（以下、「ＣＰＵ（Central Processing Unit）」という）である。
【００１８】
記憶装置３は、コンピュータが読み取り可能な記憶媒体である。記憶装置３には、中間コード検査プログラムが予め格納されている。また、記憶装置３には、中間コード検査装置１０により取り扱われるデータが格納される。記憶装置３は、例えばハードディスク若しくはソリッドステートディスク、又は、ＵＳＢ（Universal Serial Bus）メモリ等の着脱可能な記憶媒体である。
【００１９】
入力装置４は、中間コード検査装置１０に対するユーザの指示を受け付ける装置である。入力装置４は、例えばマウス、トラッカボール、タッチスクリーン、又はカーソルキー等のポインティングデバイスである。
【００２０】
表示装置５は、中間コード検査装置１０の処理内容を表示する装置である。表示装置５は、例えば液晶ディスプレイ又は電子ペーパーである。
【００２１】
認証インタフェース６は、中間コード検査システム１のユーザ認証を実行するモジュールである。認証インタフェース６は、例えば、プロセッサ２のユーザ認証機能を利用してユーザ認証を実行するプロセッサ２のインタフェース又はユーザのＩＤ（Identification）カードに格納された接触型又は非接触型のカードリーダのインタフェースである。
【００２２】
（第１実施形態）
第１実施形態について説明する。第１実施形態は、ＰＯＬダイヤグラムから中間コードへ正しく変換されたか否かを検査する中間コード検査装置の例である。
【００２３】
第１実施形態の中間コード検査装置の構成について説明する。図２は、第１実施形態の中間コード検査装置１０のブロック図である。
【００２４】
中間コード検査装置１０は、第１プログラム変換部１２と、第２プログラム変換部１４と、コード対応部１５と、ダイヤグラム表示制御部１６と、中間コード表示制御部１８と、を備える。
【００２５】
第１プログラム変換部１２は、ＰＯＬにより記述されたプラント制御プログラムを中間コードに変換するとともに、プラント制御プログラムのＰＯＬダイヤグラム上の要素（信号、論理演算シンボル、及び信号線）と中間コードとを対応させる中間コード補助データを生成するモジュールである。第１プログラム変換部１２は、例えばＰＯＬコンパイラである。
【００２６】
第２プログラム変換部１４は、中間コードを実行可能コードに変換するモジュールである。実行可能コードは、プログラマブルロジックコントローラ（以下、「ＰＬＣ（Programmable Logic Controller）」という）が実行可能なコードである。ＰＬＣは、ＣＰＵと、ＲＡＭ（Random Access Memory）と、ＲＯＭ（Read Only Memory）と、入力バッファと、出力バッファと、を備える。第２プログラム変換部１４は、例えばアセンブラである。
【００２７】
コード対応部１５は、中間コード補助データから、入力装置４を介して与えられるユーザの指示に対応する情報を抽出し、その情報をダイヤグラム表示制御部１６及び中間コード表示制御部１８へ供給するモジュールである。
【００２８】
ダイヤグラム表示制御部１６は、コード対応部１５により抽出された情報に基づいて、表示装置５に表示するＰＯＬダイヤグラムの表示内容を制御するモジュールである。
【００２９】
中間コード表示制御部１８は、コード対応部１５により抽出された情報に基づいて、表示装置５に表示する中間コードの表示内容を制御するモジュールである。
【００３０】
第１実施形態の中間コード検査装置の動作について説明する。図３は、第１実施形態の中間コード検査処理のフローチャートである。
【００３１】
図３の中間コード検査処理は、プラント制御プログラム及び中間コードが記憶装置３に格納された後に実行される。プラント制御プログラムは、発電プラントの設備を制御するプログラムであって、ＰＯＬエディタを用いて作成されるＰＯＬダイヤグラムを含む。
【００３２】
図４は、ＰＯＬダイヤグラムの概略図である。図５は、中間コードの概略図である。図４に示すように、ＰＯＬダイヤグラムは、ＰＬＣ上の複数の要素と、座標情報と、を含む。要素は、信号（入力信号及び出力信号）、論理演算シンボル、並びに信号線である。入力信号は、ＰＬＣに入力される信号である。出力信号は、ＰＬＣから出力される信号である。論理演算シンボルは、ＰＬＣが実行する演算である。信号線は、ＰＬＣに設けられる配線である。座標情報は、ＰＯＬダイヤグラム上の要素の位置及び形状を示す情報である。ユーザが入力装置４を用いてＰＯＬダイヤグラム上の任意の位置を選択すると、選択された位置に対応する座標情報に関連付けられた要素が特定される。座標情報は、特定された要素に対応する中間コード（図５を参照）を表示するために用いられる。
【００３３】
＜中間コード補助データ生成（Ｓ３００）＞  第１プログラム変換部１２は、ＰＯＬダイヤグラムを入力し、ＰＯＬダイヤグラムを中間コードに変換するとともに、ＰＯＬダイヤグラムに基づいて中間コード補助データを生成し、中間コード補助データを記憶装置３に格納する。中間コード補助データは、ＰＯＬダイヤグラムと中間コードとを対応付けるデータである。中間コード補助データは、第１データと、第２データと、を含む。第１データは、ＰＯＬダイヤグラムと中間コードを対応付けるデータである。第２データは、ＰＯＬダイヤグラムの信号とＰＬＣのＲＡＭ上のアドレスとを対応付けるデータである。なお、ＲＡＭ上のアドレスは、絶対アドレスでも良いし、相対アドレスでも良い。
【００３４】
図６は、中間コード補助データの第１データの概略図である。第１データは、シート番号と、要素名と、命令番号と、座標情報と、を含む。シート番号は、ＰＯＬダイヤグラムのシートを特定する情報である。要素名は、ＰＯＬダイヤグラムの要素を特定する情報である。命令番号は、中間コードの命令を特定する情報である。座標情報は、要素名に対応する要素のＰＯＬダイヤグラム上の位置を特定する情報である。
【００３５】
図７は、中間コード補助データの第２データの概略図である。第２データは、信号名と、アドレスと、ビット長と、を含む。信号名は、ＰＯＬダイヤグラムの入力信号及び出力信号を特定する情報である。アドレスは、入力信号及び出力信号が格納されるＰＬＣのＲＡＭ上のアドレスを特定する情報である。ビット長は、入力信号及び出力信号のデータ長を特定する情報である。
【００３６】
中間コード補助データにより、ＰＯＬダイヤグラム上の座標に位置する論理演算シンボルと、当該論理演算シンボルに対応する命令の中間コード上の開始位置と、が特定される。なお、図５では、中間コードの命令番号には、“001”から始まるシート毎に固有の番号が用いられるが、中間コード全体の通し番号が用いられても良い。また、中間コード補助データは、例えばリレーショナルデータベース管理システムによって管理されても良い。
【００３７】
＜実行可能コード生成（Ｓ３０２）＞  第２プログラム変換部１４は、中間コードを実行可能コードに変換し、実行可能コードを記憶装置３に格納する。実行可能コードは、中間コードとシーケンシャルに対応する。
【００３８】
＜ダイヤグラム表示制御（Ｓ３０４）＞  ダイヤグラム表示制御部１６は、ＰＯＬダイヤグラムの座標情報に基づいて、ＰＯＬダイヤグラムを表示装置５に表示する。
【００３９】
図８及び図９は、図３のダイヤグラム表示制御（Ｓ３０４）における表示装置５の表示例を示す図である。
【００４０】
図８に示すように、領域５００には、ＰＯＬダイヤグラムが表示され、領域５０２には、ＰＯＬダイヤグラムのシート番号が表示される。表示装置５上のＰＯＬダイヤグラムの表示位置は、領域５００に合わせて補正される。
【００４１】
例えば、ユーザが入力装置４を用いて領域５００の論理演算シンボル（ＯＲゲート）を選択すると、コード対応部１５は、選択された論理演算シンボル（ＯＲゲート）に対応するＰＯＬダイヤグラムの座標情報を取得し、中間コード補助データから、ＰＯＬダイヤグラムの座標情報に対応する中間コード補助データの座標情報を抽出し、中間コード補助データの座標情報をダイヤグラム表示制御部１６に送信する。次いで、ダイヤグラム表示制御部１６は、コード対応部１５から送信された座標情報に対応する領域を強調する（図９を参照）。強調は、色の変更、輝度の変更、点滅表示、又は囲み線等により実現される。
【００４２】
＜中間コード表示制御（Ｓ３０６）＞  中間コード表示制御部１８は、第１データの中から、ユーザが入力装置４を用いて選択した領域５００の位置に対応する座標に基づいて論理演算シンボルの命令番号を特定し、表示命令番号に対応する中間コードを表示装置５に表示する。
【００４３】
図１０は、図３の中間コード表示制御（Ｓ３０６）における表示装置５の表示例を示す図である。領域５０４には、中間コード表示制御部１８により特定された中間コードが表示され、領域５０６には、領域５０４のスクロールバーが表示され、領域５０８には、中間コード補助データの第２データが表示される。
【００４４】
例えば、ユーザが入力装置４を用いて信号線を選択すると、コード対応部１５は、選択された信号線に対応するＰＯＬダイヤグラムの座標情報を取得し、中間コード補助データから、ＰＯＬダイヤグラムの座標情報に対応する中間コード補助データの座標情報を抽出し、中間コード補助データの座標情報を中間コード表示制御部１８に送信する。次いで、中間コード表示制御部１８は、コード対応部１５から送信された中間コード補助データの座標情報に対応する領域を、囲み線５０５を用いて強調する。
【００４５】
例えば、ユーザが入力装置４を用いて座標（２００，１５０）付近を選択すると、コード対応部１５は、選択された座標の座標情報に対応する要素の要素名を中間コード表示制御部１８に送信する。次いで、中間コード表示制御部１８は、コード対応部１５から送信された要素名に対応する中間コードを領域５０４に表示する。
【００４６】
なお、第１実施形態では、１つのプロセッサ２が第１プログラム変換部１２及び第２プログラム変換部１４として動作する例について説明したが、第１プログラム変換部１２と第２プログラム変換部１４とが異なるプロセッサにより実現されても良い。例えば、第１プロセッサが第１プログラム変換部１２として動作し、第２プロセッサが第２プログラム変換部１４として動作しても良い。この場合には、記憶装置３は、第１プロセッサ及び第２プロセッサに共有される。第１プロセッサ及び第２プロセッサは、ネットワークを介して互いに接続されても良い。記憶装置３は、第１プロセッサ及び第２プロセッサのそれぞれに対して着脱可能なメモリ（例えばＵＳＢメモリ）であっても良い。
【００４７】
第１実施形態によれば、ユーザが入力装置４を用いてＰＯＬダイヤグラムの要素を選択すると、選択した要素に対応する領域が表示装置５に強調表示される。これにより、ユーザは、ＰＯＬダイヤグラムから中間コードへの変換が正しく行われたことを検証するための情報を容易に得ることができる。その結果、検証作業の精度及び効率が改善し、プラント制御プログラムの信頼性が効率よく保証される。
【００４８】
（第２実施形態）
第２実施形態について説明する。第２実施形態は、ＰＯＬダイヤグラムの検証が漏れなく完了しているか否かを示す情報を提供する中間コード検査装置の例である。なお、上述の実施形態と同様の説明は省略する。
【００４９】
第２実施形態の中間コード検査装置の動作について説明する。図１１は、第２実施形態の中間コード検査処理のフローチャートである。
【００５０】
図１１の中間コード検査処理は、プラント制御プログラム及び中間コードが記憶装置３に格納され、認証インタフェース６によるユーザ認証が成功した後に実行される。プラント制御プログラムは、発電プラントの設備を制御するプログラムであって、ＰＯＬエディタを用いて作成されるＰＯＬダイヤグラムを含む。
【００５１】
＜中間コード補助データ生成（Ｓ１１００＞  第１実施形態（図３の中間コード補助データ生成（Ｓ３００））と同様である。
【００５２】
＜認証情報付加（Ｓ１１０１）＞  第１プログラム変換部１２は、認証インタフェース６から認証情報を取得し、中間コード補助データに認証情報を付加する。認証情報は、認証インタフェース６によりユーザ認証に用いられた情報である。
【００５３】
図１２は、認証情報が付加された中間コード補助データの第１データの概略図である。第１データは、シート番号と、要素名と、命令番号と、座標情報と、認証情報（ユーザＩＤ、検証日、及び検証時刻）と、を含む。ユーザＩＤは、ユーザ認証のためにユーザが入力したＩＤである。検証日は、ユーザ認証に成功した日付である。検証時刻は、ユーザ認証に成功した時刻である。
【００５４】
＜実行可能コード生成（Ｓ１１０２）〜中間コード表示制御（Ｓ１１０６）＞  第１実施形態（図３の実行可能コード生成（Ｓ３０２）〜中間コード表示制御（Ｓ３０６））と同様である。
【００５５】
＜Ｓ１１０８＞  コード対応部１５は、検証が終了したか否かを判定する。検証が終了した場合には（Ｓ１１０８−ＹＥＳ）、認証情報更新（Ｓ１１１０）が実行される。検証が終了していない場合には（Ｓ１１０８−ＮＯ）、未検証表示制御（Ｓ１１２０）が実行される。例えば、コード対応部１５は、第１データの全ての要素名に認証情報が付加されている場合に検証が終了したと判定し、第１データに認証情報が付加されていない要素名が含まれる場合に検証が終了していないと判定する。コード対応部１５は、検証が終了したと判定すると、判定した日付及び時刻をプロセッサ２から取得し、日付及び時刻をダイヤグラム表示制御部１６に送信する。コード対応部１５は、検証が終了していないと判定すると、認証情報が付加されていない要素名をダイヤグラム表示制御部１６に送信する。
【００５６】
＜認証情報更新（Ｓ１１１０）＞  第１プログラム変換部１２は、コード対応部１５から送信された日付及び時刻を用いて、第１データの認証情報（検証日及び検証時刻）を更新するとともに、第１データを記憶装置３に格納する。次いで、ダイヤグラム表示制御部１６は、第１プログラム変換部１２により更新された認証情報を用いて、表示装置５に表示された第１データの認証情報（検証日及び検証時刻）を更新する。
【００５７】
＜未検証表示制御（Ｓ１１２０）＞  ダイヤグラム表示制御部１６は、コード対応部１５から送信された要素名に対応する領域を強調する。これにより、表示装置５には、検証が終了していない要素が強調表示される。未検証表示制御（Ｓ１１２０）が終了すると、Ｓ１１０８に戻る。
【００５８】
第２実施形態によれば、中間コードの検証が終了したことを示す認証情報又は検証が終了していない要素が表示装置５に表示される。これにより、ユーザは、検証が終了したか否かを容易に判断することができる。また、中間コードの検証が終了したことを示す認証情報が記憶装置３に格納される。これにより、検証したユーザと、検証が終了した日付及び時刻と、を特定する情報を残すことができる。
【００５９】
（第３実施形態）
第３実施形態について説明する。第３実施形態は、信号へのアクセスを集中的に検証するための情報を提供する中間コード検査装置の例である。なお、上述の実施形態と同様の説明は省略する。
【００６０】
第３実施形態の中間コード検査処理の構成について説明する。図１３は、第３実施形態の中間コード検査装置１０のブロック図である。
【００６１】
中間コード検査装置１０は、第１プログラム変換部１２と、第２プログラム変換部１４と、コード対応部１５と、ダイヤグラム表示制御部１６と、追跡部１７と、中間コード表示制御部１８と、を備える。第１プログラム変換部１２、第２プログラム変換部１４、コード対応部１５、ダイヤグラム表示制御部１６、及び中間コード表示制御部１８は、第１実施形態と同様である。
【００６２】
追跡部１７は、中間コード補助データの第１データに基づいて中間コードを追跡するモジュールである。
【００６３】
第３実施形態の中間コード検査装置の動作について説明する。図１４は、第３実施形態の中間コード検査処理のフローチャートである。
【００６４】
図１４の中間コード検査処理は、プラント制御プログラム及び中間コードが記憶装置３に格納された後に実行される。プラント制御プログラムは、発電プラントの設備を制御するプログラムであって、ＰＯＬエディタを用いて作成されるＰＯＬダイヤグラムを含む。
【００６５】
＜中間コード補助データ生成（Ｓ１４００）〜ダイヤグラム表示制御（Ｓ１４０４）＞  第１実施形態（図３の中間コード補助データ生成（Ｓ３００）〜ダイヤグラム表示制御（Ｓ３０４））と同様である。
【００６６】
＜追跡処理（Ｓ１４０５）＞  追跡部１７は、中間コード補助データの第１データに基づいて中間コードを追跡する。図１５は、図１４の追跡処理（Ｓ１４０５）のフローチャートである。
【００６７】
＜信号テーブル生成（Ｓ１５００）＞  追跡部１７は、中間コード補助データの第１データから信号（入力信号及び出力信号）を取得し、信号に対応するアクセス命令を特定する信号テーブルを生成する。
【００６８】
図１６は、信号テーブルの概略図である。信号テーブルは、信号名と、シート番号と、命令番号と、を含む。信号名は、ＰＯＬダイヤグラムの入力信号及び出力信号を特定する情報である。シート番号は、ＰＯＬダイヤグラムのシートを特定する情報である。命令番号は、中間コードのアクセス命令を特定する情報である。信号テーブルでは、信号名に基づいて情報がソートされている。
【００６９】
＜アクセス命令抽出（Ｓ１５０２）＞  追跡部１７は、信号テーブルの先頭から、シート番号及び命令番号をキーとして用いて、各信号に対応するアクセス命令を中間コードから抽出し、アクセス命令を中間コード表示制御部１８に送信する。
【００７０】
＜中間コード表示制御（Ｓ１４０６）＞  中間コード表示制御部１８は、第１データの中から、ユーザが入力装置４を用いて選択した領域５００の位置に対応する座標に基づいて論理演算シンボルの命令番号を特定し、命令番号に対応する中間コードと、追跡部１７から送信されたアクセス命令と、を表示装置５に表示する。
【００７１】
図１７は、図１４の中間コード表示制御（Ｓ１４０６）における表示装置５の表示例を示す図である。表示装置５には、信号名と、シート番号と、命令番号と、アクセス命令と、が表示される。信号名は、追跡部１７から送信されたアクセス命令に対応する信号を特定する情報である。シート番号は、追跡部１７から送信されたアクセス命令に対応するシートを特定する情報である。命令番号は、追跡部１７から送信されたアクセス命令を特定する情報である。アクセス命令は、追跡部１７から送信されたアクセス命令である。１８Ａ及び１８Ｂは、入力信号ＤＩ０１に対するアクセスにレジスタＲ１が使用されることを示している。１８Ｃは、入力信号ＤＩ０１に対するアクセスにレジスタＲ２が使用されることを示している。すなわち、図１７は、１つの入力信号に対して異なるレジスタが使用されることを示している。これにより、ユーザは、中間コードに誤りがあることを容易に判断することができる。なお、アドレス又はビットシフトが異なっている場合にも、ユーザは、中間コードに誤りがあることを容易に判断することができる。
【００７２】
第３実施形態によれば、中間コード補助データに基づいて中間コードの追跡結果が表示装置５に表示される。これにより、ユーザは、中間コードに誤りがあるか否かを容易に判断することができる。
【００７３】
なお、第３実施形態では、アクセス命令抽出（Ｓ１５０２）の後に、アクセス命令に基づいて中間コードに誤りがあるか否かを判定する処理が実行されても良い。これにより、ユーザは、中間コードに誤りがいるか否かをより容易に判断することができる。
【００７４】
（第４実施形態）
第４実施形態について説明する。第４実施形態は、検証済みのＰＯＬダイヤグラムを変更したときに、変更されたＰＯＬダイヤグラムから生成される中間コードを容易に検証するための情報を提供する中間コード検査装置の例である。なお、上述の実施形態と同様の説明は省略する。
【００７５】
第４実施形態の中間コード検査処理の構成について説明する。図１８は、第４実施形態の中間コード検査装置１０のブロック図である。
【００７６】
中間コード検査装置１０は、第１プログラム変換部１２と、第２プログラム変換部１４と、コード対応部１５と、ダイヤグラム表示制御部１６と、中間コード表示制御部１８と、プログラム比較部１９と、を備える。第１プログラム変換部１２、第２プログラム変換部１４、コード対応部１５、ダイヤグラム表示制御部１６、及び中間コード表示制御部１８は、第１実施形態と同様である。
【００７７】
プログラム比較部１９は、第１プログラム変換部１２により生成された中間コード補助データを検証するモジュールである。
【００７８】
第４実施形態の中間コード検査装置の動作について説明する。図１９は、第４実施形態の中間コード検査処理のフローチャートである。
【００７９】
図１９の中間コード検査処理は、プラント制御プログラム、中間コード、及び第１中間コード補助データが記憶装置３に格納された後に実行される。プラント制御プログラムは、発電プラントの設備を制御するプログラムであって、ＰＯＬエディタを用いて作成されるＰＯＬダイヤグラムを含む。第１中間コード補助データは、中間コード補助データ生成（Ｓ１９００）の前に生成されていた中間コード補助データ（すなわち、既存の中間コード補助データ）である。
【００８０】
＜中間コード補助データ生成（Ｓ１９００）＞  第２実施形態（図１１の中間コード補助データ生成（Ｓ１１００））と同様である。
【００８１】
＜中間コード補助データ検証（Ｓ１９０１）＞  プログラム比較部１９は、直前の中間コード補助データ生成（Ｓ１９００）において第１プログラム変換部１２により生成された中間コード補助データ（以下、「第２中間コード補助データ」という）を検証する。図２０は、図１９の中間コード補助データ検証（Ｓ１９０１）のフローチャートである。
【００８２】
＜中間コード補助データ取得（Ｓ２０００）＞  プログラム比較部１９は、第１中間コード補助データを記憶装置３から読み出し、第２中間コード補助データを第１プログラム変換部１２から取得する。
【００８３】
図２１は、第１中間コード補助データの第１データ及び第２中間コード補助データの第１データの概略図である。第１中間コード補助データは、認証情報（検証したユーザのユーザＩＤ、並びに検証が終了した日付及び時刻）が付加された第１データ（図２１（Ａ）を参照）を含む。第２中間コード補助データは、認証情報が付加されていない第１データ（図２１（Ｂ）を参照）を含む。
【００８４】
＜中間コード補助データ比較（Ｓ２００２）＞  プログラム比較部１９は、第１中間コード補助データと第２中間コード補助データとを比較する。例えば、図２１に示すように、プログラム比較部１９は、シート番号及び要素名について、第１中間コード補助データの第１データと第２中間コード補助データの第１データとを行（１）〜（４）毎に比較する。
【００８５】
＜Ｓ２００４＞  中間コード補助データ比較（Ｓ２００２）において、シート番号及び要素名が一致する行（図２１の行（１）〜（３））に対しては認証情報付加（Ｓ２００６）が実行され、シート番号及び要素名が一致しない行（図２１の行（４））に対してはデータ削除（Ｓ２０２６）が実行される。
【００８６】
＜認証情報付加（Ｓ２００６）＞  プログラム比較部１９は、第２中間コード補助データの第１データの行（図２１の行（１）〜（３））に、第２中間コード補助データの第１データの認証情報を付加する。
【００８７】
＜データ削除（Ｓ２０２６）＞  プログラム比較部１９は、第２中間コード補助データの第１データの行（図２１の行（４））を削除する。
【００８８】
図２２は、認証情報付加（Ｓ２００６）及びデータ削除（Ｓ２０２６）により生成される中間コード補助データの第１データの概略図である。認証情報付加（Ｓ２００６）及びデータ削除（Ｓ２０２６）により、検証が終了した行のみから構成される第１データを含む中間コード補助データが生成される。
【００８９】
＜中間コード比較（Ｓ２００８）＞  プログラム比較部１９は、第１中間コード補助データに対応する中間コード（以下、「第１中間コード」という）と、認証情報付加（Ｓ２００６）及びデータ削除（Ｓ２０２６）により生成される中間コード補助データに対応する中間コード（以下、「第２中間コード」という）と、を第１データの行毎に比較する。
【００９０】
＜Ｓ２０１０＞  ２つの中間コードが一致する場合には（Ｓ２０１０−ＹＥＳ）、中間コード補助データ検証が終了する。２つの中間コードが一致しない（すなわち、中間コードの検証が必要である）場合には（Ｓ２０１０−ＮＯ）、認証情報削除（Ｓ０２１２）が実行される。２つの中間コードが一致することは、第１中間コードに対応する中間コード補助データに付加された認証情報が第２中間コードに対する中間コード補助データに対して有効であるので、中間コードの検証が必要ないことを意味する。２つの中間コードが一致しないことは、第１中間コードに対応する中間コード補助データに付加された認証情報が第２中間コードに対する中間コード補助データに対して無効であるので、中間コードの検証が必要であることを意味する。
【００９１】
＜認証情報削除（Ｓ２０１２）＞  プログラム比較部１９は、第２中間コード補助データの第１データから、認証情報付加（Ｓ２００６）において付加された認証情報を削除し、新たに中間コード補助データを生成し直す。
【００９２】
なお、中間コード比較（Ｓ２００８）において、第１中間コードと第２中間コードとが表示装置５に表示されても良い。図２３は、図２２の中間コード比較（Ｓ２００８）における表示装置５の表示例である。第１中間コードと第２中間コードとが一致しない場合には、一致しない箇所が枠線２３１及び２３２で囲まれる。また、領域２３３にシート番号及び要素名が表示される。図２３では、信号のＰＬＣのＲＡＭ上の位置が移動している。これにより、信号が記憶されるＰＬＣのＲＡＭ上のアドレスとビット長とを用いて、ロジックの等価性を検証することもできる。
【００９３】
また、Ｓ２０１０では、中間コード補助データの第２データのアドレス及びビット長について比較されても良い。この場合には、第１中間コードに対応する中間コード補助データの第２データのアドレス及びビット長と、第２中間コードに対応する中間コード補助データの第２データのアドレス及びビット長と、が一致する場合に限り、Ｓ２０１０が実行される。
【００９４】
第４実施形態によれば、ユーザは、ＰＯＬダイヤグラムを変更したとしても、第１中間コードと第２中間コードとの間で一致しない箇所（すなわち、ＰＯＬダイヤグラムの変更内容）を容易に特定することができる。その結果、検証の信頼性を効率よく改善することができる。
【００９５】
本実施形態に係る中間コード検証装置１０の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、中間コード検証装置１０の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【００９６】
また、本実施形態に係る中間コード検証装置１０の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【００９７】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００９８】
１  中間コード検査システム
２  プロセッサ
３  記憶装置
４  入力装置
５  表示装置
６  認証インタフェース
１０  中間コード検査装置
１２  第１プログラム変換部
１４  第２プログラム変換部
１５  コード対応部
１６  ダイヤグラム表示制御部
１７  追跡部
１８  中間コード表示制御部
１９  プログラム比較部
【図１】
2012164081.tif 000003
【図２】
2012164081.tif 000004
【図３】
2012164081.tif 000005
【図４】
2012164081.tif 000006
【図５】
2012164081.tif 000007
【図６】
2012164081.tif 000008
【図７】
2012164081.tif 000009
【図８】
2012164081.tif 000010
【図９】
2012164081.tif 000011
【図１０】
2012164081.tif 000012
【図１１】
2012164081.tif 000013
【図１２】
2012164081.tif 000014
【図１３】
2012164081.tif 000015
【図１４】
2012164081.tif 000016
【図１５】
2012164081.tif 000017
【図１６】
2012164081.tif 000018
【図１７】
2012164081.tif 000019
【図１８】
2012164081.tif 000020
【図１９】
2012164081.tif 000021
【図２０】
2012164081.tif 000022
【図２１】
2012164081.tif 000023
【図２２】
2012164081.tif 000024
【図２３】
2012164081.tif 000025