(57)【特許請求の範囲】
【請求項１】
ＣＰＵに実装されるプログラムを模擬動作させる仮想プログラム実行部と、
前記ＣＰＵに接続される周辺デバイスを正常または異常のステータスにおいて模擬動作させることができる仮想デバイス実行部と、
前記周辺デバイスの正常または異常のステータスを指定することができるステータス入力部と、
正常および異常のステータスにおける前記周辺デバイスに対する前記プログラムの適合動作を記憶する適合動作記憶部とを備え、
前記仮想デバイス実行部は、前記ステータス入力部によって指定されたステータスを前記周辺デバイスに与え、当該ステータスにおいて前記周辺デバイスを動作させ、
前記仮想プログラム実行部は、当該ステータス下の前記周辺デバイスに対して前記プログラムを動作させ、さらに前記プログラムの動作結果を当該ステータスにおける前記適合動作と照合して前記プログラムの動作検証を行うようにし、
前記ＣＰＵおよび前記周辺デバイスは、各々二重化され、さらに二重化された前記ＣＰＵおよび前記周辺デバイスを接続するＣＰＣＩバスをエミュレートする仮想二重化バス実行部をさらに備え、
適合応答記憶部は、前記ＣＰＣＩバスの正常および異常のステータスに対する前記プログラムの適合な動作をさらに記憶し、
前記仮想デバイス実行部は、エミュレートした前記ＣＰＣＩバスの各ステータスに対する前記プログラムの動作を当該ステータスにおける適合情報と比較して前記プログラムの動作検証を行うことを特徴とするプログラム検証システム。
【請求項２】
前記ＣＰＵには複数の周辺デバイスが接続され、前記プログラムは複数の前記周辺デバイスが各々正常または異常のステータスとなる複数のステータス組において動作するものであって、
前記適合動作記憶部は、複数のステータス組における各々の前記プログラムの適合動作を記憶し、
前記ステータス入力部によって複数のステータス組における各前記周辺デバイスのステータスを前記周辺デバイスに順に与え、前記仮想デバイス実行部は、各々のステータス組における前記プログラムの動作を当該ステータス組における前記適合動作と比較し、前記プログラムの動作検証を行うことを特徴とする請求項１に記載のプログラム検証システ
ム。
【請求項３】
前記周辺デバイスは、タイムサーバインターフェイス基板を仮想的に模擬する仮想タイムサーバインターフェイス基板を含み、
前記適合動作記憶部は、前記仮想タイムサーバＩＦ基板の正常および異常のステータスに対する前記プログラムの適合動作をさらに記憶することを特徴とする請求項１乃至請求項２の何れか一項に記載のプログラム検証システム。
【請求項４】
前記周辺デバイスは、コミュニケーション基板を仮想的に模擬する仮想コミュニケーション基板を含み、
前記適合動作記憶部は、前記仮想コミュニケーション基板の正常および異常のステータスに対する前記プログラムの適合動作をさらに記憶することを特徴とする請求項１乃至請求項３の何れか一項に記載のプログラム検証システム。
【請求項５】
前記ＣＰＵは、コミュニケーション基板間をＰＣＩブリッジ回路によりＣＰＣＩバスで接続してデータ入出力を行うものであって、
前記周辺デバイスは、前記ＣＰＵと仮想コミュニケーション基板に組み込む仮想ＰＣＩ回路間をソケット通信でイベント交換し共有メモリでデータを入出力できるＣＰＣＩ仮想バスを含み、
前記適合動作記憶部は、前記ＣＰＣＩ仮想バスの正常および異常のステータスに対する前記プログラムの適合動作をさらに記憶することを特徴とする請求項１乃至請求項４の何れか一項に記載のプログラム検証システム。
【請求項６】
前記ＣＰＵは、ＩＥＥＥ１３９４インタフェース回路間を二重化バスで接続してデータ入出力を行うものであって、
前記周辺デバイスは、前記ＩＥＥＥ１３９４インタフェース回路をパソコンに搭載するＬＡＮコントローラにソケットインタフェースを使用して接続することでＬＡＮ通信に変換し、二つの仮想ＣＰＵ基板間のデータ伝送を仮想的に模擬する仮想二重化バスを含み
、
前記適合動作記憶部は、前記仮想二重化バスの正常および異常のステータスに対する前記プログラムの適合な動作をさらに記憶することを特徴とする請求項１乃至請求項５の何れか一項に記載のプログラム検証システム。
【請求項７】
前記周辺デバイスは、ＰＩＯ基板とのデータ入出力を仮想的に模擬するＰＩＯ模擬処理を含み、
前記適合動作記憶部は、前記ＰＩＯ模擬処理の正常および異常のステータスに対する前記プログラムの適合動作をさらに記憶することを特徴とする請求項１乃至請求項６の何れか一項に記載のプログラム検証システム。
【請求項８】
プログラムが実装されるＣＰＵに接続される周辺デバイスに正常または異常のステータスを指定する工程と、
指定されたステータスにおいて前記周辺デバイスを模擬動作させる工程と、
指定されたステータスにおける前記周辺デバイスに対してプログラムを動作させる工程と、
前記プログラムの動作結果を当該ステータスにおける前記プログラムの適合動作である適合動作と照合して前記プログラムの動作検証を行う工程とを備えるプログラム検証方法であって、
前記ＣＰＵおよび前記周辺デバイスは各々二重化されており、
二重化された前記ＣＰＵおよび前記周辺デバイスを、接続するＣＰＣＩバスにエミュレートさせる工程と、
前記ＣＰＣＩバスの正常および異常のステータスに対する前記プログラムの適合な動作を記憶装置に記憶させる工程と、
エミュレートされた前記ＣＰＣＩバスの各ステータスに対する前記プログラムの動作を当該ステータスにおける適合情報と比較して前記プログラムの動作検証させる工程とを備えたことを特徴とするプログラム検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置内のＣＰＵに実装されるプログラムを動作検証するプログラム検証システムに関する。
【背景技術】
【０００２】
原子力発電所をはじめとする発電プラントの制御装置は、制御装置内のＣＰＵに実装されるプログラムによってプラント機器の制御や監視を行う。この制御装置内には、メモリや伝送装置等の周辺デバイスが設けられ、これら周辺デバイスがプログラムからの指令によって動作する。そして、原子力発電所をはじめとする発電プラントの制御装置に実装されるプログラムは、制御装置に設けられるメモリや伝送装置の異常発生時にこれらの異常を探知し、他のデバイスへの切り替えや中央制御室への異常発生の通知、ログ記録等の動作が要求される。
【０００３】
従来のプログラムの検証方法としては、実制御装置にプログラムを実装し、制御装置内の正常時ならびに異常時の実デバイスを動作させ、プログラムの応答を検証していた。しかし、開発コストの削減や開発期間の短縮のためにプログラムおよびデバイスを模擬動作させるシステムを用いたプログラムの動作検証が望まれている。
【０００４】
そこでプログラムの動作検証システムについて、以下の技術が開発されている。ＣＰＵおよびＣＰＵにバスを介して接続されるデバイスをコンピュータ上で協調して模擬動作させ、プログラムの動作検証を行う技術が開発されている（例えば、特許文献１参照。）。また、プログラマブルコントローラの動作検証において、プログラマブルコントローラに接続されるデバイスの異常を模擬し、デバイス異常時に発する信号を模擬発信する技術が開発されている（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１１７２０号公報
【特許文献２】特開２００８―２９３４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の技術は、デバイスの正常状態を模擬動作させているため、デバイス異常時の状況下においてプログラムを模擬動作させて動作検証を行うことはできない。また、特許文献２に記載の技術は、プログラマブルコントローラに接続されるデバイスの異常を異常時に発信する信号によって模擬するだけであるため、プログラムからの指令に対する異常デバイスの応答や、プログラムの異常デバイスに対する動作や異常判定は模擬できない。
【０００７】
そこで本発明は、異常あるデバイスに対するプログラムの動作結果を検証することができるプログラム検証システムの提供を目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明のプログラム検証システムは、ＣＰＵに実装されるプログラムを模擬動作させる仮想プログラム実行部と、ＣＰＵに接続される周辺デバイスを正常または異常のステータスにおいて模擬動作させることができる仮想デバイス実行部と、周辺デバイスの正常または異常のステータスを指定することができるステータス入力部と、正常時ならびに異常時の周辺デバイスに対するプログラムの適合動作を記憶する適合動作記憶部とを備え、仮想デバイス実行部は、ステータス入力部によって指定されたステータスを周辺デバイスに与え、当該ステータスにおいて周辺デバイスを動作させ、仮想プログラム実行部は、当該ステータス下の周辺デバイスに対してプログラムを動作させ、さらにプログラムの動作結果を当該ステータスにおける適合動作と照合してプログラムの動作検証を行うことを特徴とする。
【０００９】
さらに上記目的を達成するために、本発明のプログラム検証方法は、プログラムが実装されるＣＰＵに接続される周辺デバイスに正常または異常のステータスを指定する工程と、指定されたステータスにおける周辺デバイスを模擬動作させる工程と、指定されたステータスにおける周辺デバイスに対してプログラムを動作させる工程と、プログラムの動作結果を当該ステータスにおけるプログラムの適合動作である適合動作と照合してプログラムの動作検証を行う工程とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、プログラム検証システムによって異常あるデバイスに対するプログラムの動作結果を検証することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態に係るフトウエア検証システムの概略構成図。
【図２】本発明の第１の実施形態に係るプログラム検証システムのコントローラを二重化構成とした場合の概略構成図。
【図３】本発明の第２の実施形態に係るフトウエア検証システムの概略構成図。
【図４】本発明の第３の実施形態に係るフトウエア検証システムの概略構成図。
【図５】本発明の第４の実施形態に係るフトウエア検証システムの概略構成図。
【図６】本発明の第５の実施形態に係るフトウエア検証システムの概略構成図。
【図７】本発明の第６の実施形態に係るフトウエア検証システムの概略構成図。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を説明する。
【００１３】
（第１の実施形態）
（構成）
以下、本発明の第１の実施形態に係るプログラム検証システムについて図１および図２を参照して説明する。図１は、本発明の第１の実施形態に係るプログラム検証システムの概略構成図である。
【００１４】
プログラム検証システム１は、パソコン（ハードウエア）Ｈ／Ｗ９のホスト（オペレーションシステム）ＯＳ８上で動作するソフトウエアとして実装される。
【００１５】
プログラム検証システム１は、仮想ＣＰＵ基板１０と、仮想プログラム実行部２と、仮想デバイス実行部３と、ステータス入力部４と、適合動作記憶部５とから構成される。仮想ＣＰＵ基板１０は、実ＣＰＵ基板上に実装するＣＰＵコア１１と周辺デバイス１２を模擬する構成であり、実ＣＰＵ基板に搭載するデバイスと同等のインタフェースを提供する。ＣＰＵコア１１には、ＣＰＵコア１１に実装されるプログラムと協調して動作するオンチップデバイスを構成に含めることができる。
【００１６】
周辺デバイス１２は、ＣＰＵコア１１にバスを介して接続され、ＣＰＵコア１１と協調して動作するデバイスであり、メモリやハードディスクといった記憶装置、デジタル・アナログ入出力装置や光伝送装置、各種センサ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の演算装置を適用することができる。
【００１７】
さらに周辺デバイス１２は、カスタムデバイスとサードパーティデバイスに分類される。カスタムデバイスは、一般にＣＰＵコア１１が実装される基板に規格品として動作保障された状態で実装される汎用デバイスである。サードパーティデバイスは、プラント監視装置等の特定の目的の使用のために個別に実装されるデバイスである。
【００１８】
また、周辺デバイス１２は、ＬＡＮポート等によって接続される外部の個別保守ツール２００からのデータを受信するものを適用することができる。また、図２に示すように二重化バス１４やＣＰＣＩ（Ｃｏｍｐａｃｔ  Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス１５と接続され、外部装置や他のＣＰＵ基板とデータ送受信を行うものを適用することができる。
【００１９】
仮想プログラム実行部２は、ＣＰＵコア１１に実装されるプログラムを動作させる。当該プログラムは、周辺デバイス１２と協調して動作し、さらにバスを通じて操作卓からの指令に応じた動作や、所定時間における自動のアプリケーション実行等を行う。さらに仮想プログラム実行部２は、プログラムの各動作結果を逐次受信することができる。
【００２０】
ステータス入力部４は、上述した周辺デバイス１２の正常および異常を含むステータスを個別に指定することができる。ＣＰＵコア１１に実装されるプログラムは、複数の周辺デバイス１２がそれぞれ正常または異常のステータス下にある様々なステータス組の状況下おいて動作することが要求される。図１に示すテーブルは、動作要求される複数の周辺デバイス１２のステータスを定めたステータス組をあらかじめ複数定めたものであり、この組を順に与えてプログラムを動作させるものとする。または、マウスやキーボードといった入力デバイスによって複数の周辺デバイス１２にそれぞれステータスを入力する構成してもよい。
【００２１】
仮想デバイス実行部３は、周辺デバイス１２の各ステータスにおける動作をあらかじめ記憶し、ステータス入力部４の指定ステータスにしたがって周辺デバイス１２に当該ステータスを与えて動作模擬することができる。周辺デバイス１２の動作は、自発的な動作やプログラムからの応答動作が含まれる。異常時の動作についても周辺デバイス１２ごとに定められ、ＣＰＵコア１１との断線や機能停止によってプログラムからの指令を受信できない状態や、異常な演算結果をプログラムに送信する状態などを設定することができる。
【００２２】
適合動作記憶部５は、ステータス入力部４が指定した各ステータスにおけるプログラムの適切な動作である適合動作を記憶するものである。例えば、周辺デバイス１２が断線や機能停止によってプログラムからの指令を受信できない場合には、プログラムはこの異常を探知し操作卓画面に通知し、または他の正常なコントローラへの切替を行うことを適合動作として設定することができる。
【００２３】
さらにプログラム検証システム１は、仮想ＣＰＵ基板を二重化構成とした仮想コントロールユニット１８におけるプログラムの動作検証を行うこともできる。図２は、本発明の第１の実施形態に係るプログラム検証システムのコントローラを二重化構成とした場合の概略構成図である。図２に示すプログラム検証システム１は、仮想コントロールユニット１８をパソコンＨ／Ｗ９のホストＯＳ８上で模擬動作させるソフトウエアとして実装される。
【００２４】
仮想コントロールユニット１８は、仮想コントローラ１６ａ、１６ｂから構成される。仮想コントローラ１６ａは、仮想ＣＰＵ基板１０ａと、仮想コミュニケーション基板２１ａと、仮想タイムサーバ（インターフェイス）ＩＦ基板２２ａとから構成される。仮想コントローラ１６ｂは、仮想ＣＰＵ基板１０ｂと、仮想コミュニケーション基板２１ｂと、仮想タイムサーバＩＦ基板２２ｂとから構成される。さらに仮想コントローラ１６ａと仮想コントローラ１６ｂは、仮想二重化バス１４によって接続され二重化システムとして構成される。
【００２５】
（作用）
以下、本発明の第１の実施形態の作用について説明する。まずプログラム検証システム１によって仮想ＣＰＵ基板１０内のＣＰＵコア１１に実装されるプログラムの動作検証を行う作用について説明する。
【００２６】
まず、ステータス入力部４によって複数の周辺デバイス１２の正常または異常のステータスを個別に指定する。例として、図１に示すステータス組の１つを各周辺デバイス１２に与える。以下、周辺デバイス１２であるメモリ１２ａに書き込み不可の異常が発生した場合を模擬動作する場合について説明する。ステータス入力部４によって当該メモリについて異常ステータスを指定し、他の周辺デバイス１２については正常を指定する。
【００２７】
仮想デバイス実行部３は、ステータス入力部４で指定されたステータスを各周辺デバイス１２に与えて周辺デバイス１２を動作させる。メモリ１２ａに異常ステータスを与えた場合、当該メモリは書き込み不可な状態を模擬動作する。他の周辺デバイス１２については正常時の動作を行わせる。
【００２８】
ここで適合動作記憶部５は、ステータス入力部４が指定した周辺デバイス１２の各ステータス下において、プログラムの適切な動作をあらかじめ記憶するものである。例えば、ＣＰＵコア１１での演算結果をメモリに書き込む動作を行う場合において、メモリ１２ａが書き込み不可であるとき、プログラムは書き込み不可を探知して、当該情報を仮想ＣＰＣＩバス１５を介して操作員の操作卓画面に通知する動作を適合動作として定めることができる。
【００２９】
仮想プログラム実行部２は、上述した周辺デバイス１２に各ステータスが与えられた状態で、ＣＰＵコア１１に実装されたプログラムを動作させる。プログラムがメモリ１２ａの異常を探知し、操作卓画面に通知を行う動作結果を確認したときには、適合動作と合致するものとして検証結果がオペレータに通知され、または検証結果が記憶される。適合動作と一致しないときには、当該検証結果が通知、または記憶される。さらにステータス入力部４にあらかじめ動作検証を行うべきステータスの組が複数存在するときには、順にステータスの組を与えて各組についてプログラムの動作結果と適合動作の照合を行う。
【００３０】
さらにＣＰＵコア１１に実装されるプログラムは、周辺デバイス１２の異常判定機能を有するものがある。この場合、周辺デバイス１２は正常および異常ステータス下においてプログラムからの異常判定機能に対しての周辺デバイス１２の応答が仮想デバイス実行部３によって行われる。このとき、仮想ソフトウエア実行部２は、異常判定信号の送信と周辺デバイス１２からの応答の確認を行う。適合動作記憶部５においては、プログラムは、周辺デバイス１２異常時の異常判定信号の応答を受信して操作卓画面に周辺デバイス１２の異常を通知することを適合動作として設定しているものとする。仮想ソフトウエア実行部２によってプログラムが同様の動作を行った場合には、プログラムの動作は適切である旨を通知、記憶するものとする。
【００３１】
次に、仮想コントロールユニット１００におけるプログラムの動作検証を行う場合について説明する。仮想コントローラＡ系１６ａおよび仮想コントローラＢ系１６ｂは、個別保守ツール２００から電力プラントを制御するデータ（以下、制御データと称す。）をパソコンＨ／Ｗ９に実装されているＬＡＮポート９０ａまたは９０ｂを介して仮想ＣＰＵ基板１ａあるいは仮想ＣＰＵ基板１ｂにロードして動作する。
【００３２】
仮想コントローラＡ系１６ａおよび仮想コントローラＢ系１６ｂは、一重化システムとして動作するとき、それぞれの系統に実装される仮想コニュケーション基板２１ａ、２１ｂと仮想ＣＰＣＩバス１５を介してデータを入出力する。仮想タイムサーバ１７は１ｓタイマを生成し、仮想タイムサーバＩＦ基板２２ａ、２２ｂに同一の時刻を供給する。
【００３３】
仮想ＣＰＵ基板１０ａまたは１０ｂは、それぞれ仮想タイムサーバＩＦ基板２２ａおよび２２ｂから１ｓ割込みが入り、仮想タイムサーバ１７から供給された時刻を読み出し更新する。さらに二重化システムとして動作するときは、仮想ＣＰＵ基板１０ａ、１０ｂは仮想二重化バス１４を介して相互にデータを入出力し同期して動作する。
【００３４】
このような仮想コントロールユニット１８において、仮想ＣＰＵ基板１０ａ内のプログラムの動作検証を行うとき、ステータス入力部４は同一基板内の周辺デバイス１２に加えて、他系の仮想コントローラＢ系１６ｂや仮想二重化バス１４に正常および異常のステータスを指定し、仮想デバイス実行部３は指定されたステータスを各デバイスに与えて動作模擬を行うことができる。
【００３５】
さらに、適合動作記憶部５には、他系の仮想コントローラＢ系１６ｂや仮想コントローラＢ系１６ｂや仮想二重化バス１４の正常および異常のステータスにおけるプログラムの適切な動作をあらかじめ記憶するものとする。例えば、他系の常用系とて設定されている仮想コントローラＢ系１６ｂに異常が発生した場合、自系の仮想コントローラＡ系１６ａは二重化バス１４を介して異常を探知して常用系を取得する動作を適合動作であると設定することができる。
【００３６】
仮想プログラム実行部２は、他系の仮想コントローラＢ系１６ｂに異常ステータスが指定された状態で、ＣＰＵコア１１に実装されるプログラムを動作させる。仮想コントローラＡ系１６ａが常用系を取得した場合には、適切な動作である旨を通知、記録する。
【００３７】
（効果）
本発明の第１の実施形態によれば、実ＣＰＵ基板に実装するプログラムを実ＣＰＵコアがデコード可能なネイティブなバイナリコードにコンパイルされたプログラムを変更することなく仮想的に模擬したＣＰＵコア１１で実行し、デバイスアクセス用のプログラムを変更することなく仮想ＣＰＵ基板１０上の周辺デバイス１２にアクセスし、周辺デバイス１２に対する動作をさせることができる。
【００３８】
さらに各周辺デバイス１２は、ステータス入力部４によって異常ステータスを与えて模擬動作させ、動作結果を適合動作と照合することによって、実装プログラムを変更することなく周辺デバイス１２の診断処理の実行や異常時の動作結果の検証を行うことができる。
【００３９】
なお、ＯＳ８内のソフトウエア内の１機能であるステータス入力部だけでなく、図２に示すようにＬＡＮポート等によって接続される外部の試験支援ツール３００によって各周辺デバイス１２にステータスを与える構成としてもよい。
【００４０】
（第２の実施形態）
（構成）
以下、本発明の第２の実施形態に係るプログラム検証システムについて図３を参照して説明する。第１の実施形態に係るプログラム検証システムの各部と同一部分には同一符号を付し、同一の構成についての説明は省略する。
【００４１】
図３は、本発明の第２の実施形態に係るプログラム検証システムの概略構成図である。第２の実施形態が第１の実施形態と異なる点は、仮想タイムサーバ１７から時刻を仮想タイムサーバＩＦ基板２２ａ、２２ｂに入力し、時刻を校正する点である。
【００４２】
（作用）
以下、本発明の第２の実施形態の作用について説明する。仮想タイムサーバ１７から１Ｓ割り込みにより仮想タイムサーバＩＦ基板２２ａ、２２ｂの割り込みドライバ３３が起動し時刻を取り込む。基板模擬処理部４０は、割込みドライバから起動され、排他制御して共有メモリ４１に時刻を書き込む。
【００４３】
割込出力処理３２は、基板模擬処理３０から指示を受け仮想ＣＰＣＩバス５に割込みを出力する。仮想ＣＰＣＩバス５は、サードパーティデバイスである仮想ＣＰＣＩブリッジ１２ｂは、ＣＰＵコア１１を介して試験対象となる仮想ＣＰＵ基板１０ａのプログラムの機能の１つである１Ｓ割込処理を起動する。１Ｓ割込処理は、共有メモリ４１のデータを排他的に仮想ＣＰＣＩブリッジ１２ｂおよび仮想ＣＰＣＩバス１５を介して入力して時刻を更新する。
【００４４】
（効果）
本発明の第２の実施形態によれば、仮想ＣＰＵ基板１０ａ、１０ｂは、実機のプログラムを変更することなく仮想タイムサーバ１７からの時刻を実機と同様に１Ｓ毎に入力し、時刻を校正することができ、仮想環境で通常動作の試験が可能となる。特に、ＣＰＵコア１１に実装されるプログラムが所定時刻に異常判定や所定のアプリケーション実行を行うときに、当該システム内で更新された時刻によって自動的に動作させることができる。
【００４５】
さらにステータス入力部４または試験支援ツール３００によって基板模擬処理部４０に時刻の異常値への変更、割込みの停止、共有メモリ４１のアクセス権取得または開放エラー、共有メモリ４１への不正アクセスによるＮＭＩ（Ｎｏｎ  Ｍａｓｋａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ）割込みの発生、基板異常のステータス設定といった異常状態のステータスを与えて模擬動作させることができる。適合動作記憶部５には、実装プログラムが上記異常を探知した場合に操作卓画面の通知や正常なコントローラへの切替等の適合動作を記憶されている。仮想プログラム実行部２は、基板模擬処理部４０の異常ステータス下でプログラムを動作させ、適合動作と照合する。この結果、実機のプログラムを変更することなく試験対象となる仮想ＣＰＵ基板のプログラムの機能の一つであるリモートドライバによる仮想タイムサーバＩＦ基板２２ａ、２２ｂの診断処理の実行や異常模擬の試験が可能となる。
【００４６】
（第３の実施形態）
（構成）
以下、本発明の第３の実施形態に係るプログラム検証システムについて図４を参照して説明する。第１の実施形態に係るプログラム検証システムの各部と同一部分には同一符号を付し、同一の構成についての説明は省略する。
【００４７】
図４は、本発明の第３の実施形態に係るプログラム検証システムの概略構成図である。第３の実施形態が第１の実施形態と異なる点は、仮想ＣＰＵ基板１０ａ、１０ｂが仮想コミュニケーション基板とデータ入出力を行う点である。
【００４８】
（作用）
以下、本発明の第３の実施形態の作用について説明する。試験対象となる仮想ＣＰＵ基板１ａまたは１ｂのプログラムの機能の１つであるリモートドライバは、ＣＰＵコア１１と、仮想ＣＰＣＩブリッジ１２ｂ、仮想ＣＰＣＩバス１５を介して排他的に仮想コミュニケーション基板２１ａまたは２１ｂの共有メモリ４１にデータを出力する。
【００４９】
データには初期化時に出力する制御データと通常運転時に出力するプロセスデータがあり、基板模擬処理２０は、制御データで指定された情報と予め支援ツール３００に試験用に用意された試験シナリオで決まる入力データを共有メモリに設定する。リモートドライバは、共有メモリ４１のアクセス権を取得し、設定されたデータを入力する。
【００５０】
（効果）
本発明の第３の実施形態によれば、仮想ＣＰＵ基板１０ａ、１０ｂは、実機のプログラムを変更することなく仮想コミュニケーション基板とのデータ入出力をすることができ、仮想環境で通常動作の試験が可能となる。
【００５１】
さらにステータス入力部４または試験支援ツール３００によって基板模擬処理部４０に、共有メモリ４１のアクセス権取得や開放エラー、共有メモリ４１への不正アクセスによるＮＭＩ割込みの発生、基板異常のステータス設定といった異常状態のステータスを与えて模擬動作させることができる。適合動作記憶部５には、実装プログラムが上記異常を探知した場合に操作卓画面の通知や正常なコントローラへの切替等の適合動作を記憶されている。仮想プログラム実行部２は、基板模擬処理部４０の異常ステータス下でプログラムを動作させ、適合動作と照合する。結果、実機のプログラムを変更することなく試験対象となる仮想ＣＰＵ基板のプログラムの機能であるリモートドライバによる仮想コミュニケーション基板２１ａ、２１ｂの診断処理の実行や異常模擬の試験が可能となる。
【００５２】
（第４の実施形態）
（構成）
以下、本発明の第４の実施形態に係るプログラム検証システムについて図５を参照して説明する。第１の実施形態に係るプログラム検証システムの各部と同一部分には同一符号を付し、同一の構成についての説明は省略する。
【００５３】
図５は、本発明の第４の実施形態に係るプログラム検証システムの概略構成図である。第４の実施形態が第１の実施形態と異なる点は、仮想ＣＰＵ基板１０ａ、１０ｂが仮想ＣＰＣＩバス１５上に実装する共有メモリ４１を有する仮想基板とのインタフェースを構築する点である。
【００５４】
（作用）
以下、本発明の第４の実施形態の作用について説明する。以下、仮想ＣＰＵ基板１０ａを代表して説明する。試験対象となる仮想ＣＰＵ基板１０ａのプログラムの機能の１つであるリモートドライバは、ＣＰＵコア１１、仮想ＣＰＣＩブリッジ１２ｂを介して仮想ＣＰＣＩバス１５のＣＰＣＩバス管理処理部１５ｂに通知する。ＣＰＣＩバス管理処理部１５ｂは、通知された情報からアクセスする仮想コミュケーション基板を選択し、共有メモリ４１のアクセス権を得る。
【００５５】
リモートドライバはアクセス権の取得を確認し、ＣＰＵコア１１、仮想ＣＰＣＩブリッジ１２ｂを介して仮想ＣＰＣＩバス５の入出力処理部１５ａにデータを出力し、仮想コミュニケーション基板２１ａの共有メモリ４１にデータを出力した後、リモートドライバはＣＰＣＩバス管理処理５０にアクセス権の開放を通知して共有メモリ４１のアクセス権を開放する。
【００５６】
仮想コミュニケーション基板２１ａの基板模擬処理部４０は、制御データで指定された情報とあらかじめ支援ツール３００に試験用に用意された試験シナリオで決まる入力データを共有メモリ４１に設定する。リモートドライバは、データ出力のときと同様にＣＰＣＩバス管理処理部１５ｂに通知して共有メモリ４１のアクセス権を取得し、設定されたデータを入出力処理部１５ａを介して入力した後、ＣＰＣＩバス管理処理部１５ｂに通知して共有メモリ４１のアクセス権を開放する。
【００５７】
（効果）
本発明の第４の実施形態によれば、仮想ＣＰＵ基板１０ａは、実機プログラムを変更することなく仮想ＣＰＣＩバス１５上に実装する共有メモリ４１を有する仮想基板とのインタフェースを構築することができ、仮想環境で通常動作を試験することができる。
【００５８】
さらにステータス入力部４または試験支援ツール３００によって、ＣＰＣＩバス管理処理部１５ｂにＣＰＣＩバス４１への不正アクセスによるＮＭＩ割込みの発生、バスの断線などの異常状態を模擬することができる。適合動作記憶部５には、実装プログラムが上記異常を探知した場合に操作卓画面の通知や正常なコントローラへの切替等の適合動作を記憶されている。仮想プログラム実行部２は、ＣＰＣＩバス管理処理部１５ｂの異常ステータス下でプログラムを動作させ、適合動作と照合する。試験対象となる仮想ＣＰＵ基板１０ａ、１０ｂのプログラムの機能であるリモートドライバによる仮想コミュニケーション基板２１ａ、２１ｂの診断処理の実行や異常模擬の試験が可能となる。
【００５９】
（第５の実施形態）
（構成）
以下、本発明の第５の実施形態に係るプログラム検証システムについて図６を参照して説明する。第１の実施形態に係るプログラム検証システムの各部と同一部分には同一符号を付し、同一の構成についての説明は省略する。
【００６０】
図６は、本発明の第５の実施形態に係るプログラム検証システムの概略構成図である。第５の実施形態が第１の実施形態と異なる点は、仮想ＣＰＵ基板１０ａ、１０ｂが二重化構成され、トラッキング処理および常用動作と待機動作の切替動作を制御する点である。
【００６１】
（作用）
以下、本発明の第５の実施形態の作用について説明する。以下、１０ａを代表して説明する。
【００６２】
試験対象となる仮想ＣＰＵ基板１０ａのプログラムの機能の一つであるトラッキング処理Ｃａは、仮想ＣＰＵコアとオンチップデバイス１０ａ、サードパーティデバイスである仮想ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ）１３９４回路１２ｃにデータを出力した後、データ送出の指示を出す。これにより、仮想１ＥＥＥ１３９４回路１１ｐａは、ホストＯＳ８の標準機能であるソケット８０ａ機能を使用し、パソコンＨ／Ｗ９に実装するＬＡＮポート９０ａからＬＡＮポート９０ｂを介してソケット８０ｂにデータを出力する。
【００６３】
仮想ＣＰＵ基板１０ｂの仮想ＩＥＥＥ１３９４回路１２ｃは、ソケット８０ｂからデータを入力し、仮想ＣＰＵ基板１０ｂのＣＰＵコア１１に割り込みをかける。
【００６４】
仮想ＣＰＵ基板１０ｂのトラッキング処理部４３ｂは、その状態をポーリングすることで、データを受信したことを確認し、仮想ＩＥＥＥ１３９４回路１１ｃ、ＣＰＵコア１１を介してデータを入力する。本データ入力後、同様にして仮想ＣＰＵ基板１０ｂのトラッキング処理４３ｂは、仮想ＣＰＵ基板１０ａのトラッキング処理４３ａに応答するデータを出力する。
【００６５】
仮想コントロールユニット１８が二重化システムとして動作するときは、例えば一方の仮想ＣＰＵ基板１０ａが常用系として演算と入出力を行いプロセス制御する常用動作を行う。他方の仮想ＣＰＵ基板１０ｂは、上述のとおりトラッキング処理により予め制御データで指定した常用系の仮想ＣＰＵ基板１０ａのデータを入力して演算を行う待機動作を行う。
【００６６】
このとき、二つの仮想ＣＰＵ基板１０ａ、１０ｂ間では、カスタムデバイス１２の１つである常用待機ステータス回路１２ｄは、仮想二重化バス１４を介して信号を取り合いして先に常用動作になった仮想ＣＰＵ基板１０ａ、は、他方のＣＰＵ基板１０ｂ側に常用動作を示す信号を出し、他方のＣＰＵ基板１０側の同回路が常用動作にならないようにする。
【００６７】
（効果）
本発明の第５の実施形態によれば、仮想ＣＰＵ基板１０ａは、実機のプログラムを変更することなく二重化構成でのトラッキング処理および常用動作と待機動作の切替動作を制御することができ、仮想環境で二重化構成時の通常動作の試験が可能となる。
【００６８】
さらにステータス入力部４または試験支援ツール３００によって、仮想二重化バス１４、ＩＥＥＥ１３９４回路１２ｃ、および常用／待機ステータス回路１２ｄの異常状態を模擬することができる。適合動作記憶部５には、実装プログラムが上記異常を探知した場合に操作卓画面の通知や正常なコントローラへの切替等を行う適合動作を記憶されている。仮想プログラム実行部２は、上記デバイスの異常ステータス下でプログラムを動作させ適合動作と照合することによって、仮想ＩＥＥＥ１３９４回路１２ｃの診断処理の実行や異常模擬の試験を行うことができる。
【００６９】
（第６の実施形態）
（構成）
以下、本発明の第６の実施形態に係るプログラム検証システムについて図７を参照して説明する。第１の実施形態に係るプログラム検証システムの各部と同一部分には同一符号を付し、同一の構成についての説明は省略する。
【００７０】
図７は、本発明の第６の実施形態に係るプログラム検証システムの概略構成図である。第６の実施形態が第１の実施形態と異なる点は、仮想ＣＰＵ基板１０、１０ｂが仮想コミュニケーション基板２１ａ、２１ｂとインタフェースを有するＰＩＯ（Ｐｒｏｃｅｓｓ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）基板とのデータ入出力を行う点である。
【００７１】
（作用）
以下、本発明の第６の実施形態の作用について説明する。試験対象となる仮想ＣＰＵ基板１０ａ、１０ｂのプログラムの機能の１つであるリモートドライバは、仮想ＣＰＵコア１１、仮想ＣＰＣＩブリッジ１２ｂおよび仮想ＣＰＣＩバス１５を介して排他的に仮想コミュニケーション基板２１ａまたは２１ｂの共有メモリ４１にデータを出力する。
【００７２】
基板模擬処理部４０は、仮想コミュケーション基板２１ａまたは２１ｂに接続するＰＩＯ基板とのデータ入出力を模擬するためＰＩＯ模擬処理部４４を実行し、制御データで指定された情報と支援ツール３００に試験用に用意された試験シナリオで決まる入データを決定し共有メモリ４１に設定する。リモートドライバは、共有メモリ４１のアクセス権を取得し、設定されたデータを入力する。
【００７３】
（効果）
本発明の第６の実施形態によれば、仮想ＣＰＵ基板１０、１０ｂは、実機のプログラムを変更することなく仮想コミュニケーション基板とインタフェースを有するＰＩＯ基板とのデータ入出力ができ、仮想環境で通常動作の試験が可能となる。
【００７４】
さらにステータス入力部４または試験支援ツール３００によって、基板模擬処理部４０にＰＩＯ基板の異常ステータス設定などの異常状態を模擬することができる。適合動作記憶部５には、実装プログラムが上記異常を探知した場合に操作卓画面の通知や正常なコントローラへの切替等の適合動作を記憶されている。仮想プログラム実行部２は、上記デバイスの異常ステータス下でプログラムを動作させ適合動作と照合することによって、試験対象となる仮想ＣＰＵ基板のプログラムの機能であるリモートドライバによるＰＩＯ模擬処理２２がエミュレートするＰＩＯ基板の診断処理の実行や異常模擬の試験を行うことができる。 
【符号の説明】
【００７５】
１・・・プログラム検証システム
２・・・仮想プログラム実行部
３・・・仮想デバイス実行部
４・・・ステータス入力部
５・・・適合動作記憶部
８・・・ホストＯＳ
９・・・パソコンハードウエア（Ｈ／Ｗ）
１０、１０ａ、１０ｂ・・・仮想ＣＰＵ基板
１１、１１ａ、１１ｂ・・・仮想ＣＰＵ
１２・・・周辺デバイス
１２ｃ・・・仮想ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓ）１３９４回路
１２ｄ・・・常用／待機ステータス回路
１４・・・仮想二重化バス
１５・・・仮想ＣＰＣＩ（Ｃｏｍｐａｃｔ  Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス
１５ａ・・・入出力処理
１５ｂ・・・バス管理処理
１６・・・仮想コントローラ
１６ａ・・・仮想コントローラＡ系
１６ｂ・・・仮想コントローラＢ系
１７・・・仮想タイムサーバ
１８・・・仮想コントロールユニット
２１ａ、２１ｂ・・・仮想コミュニケーション基板
２２ａ、２２ｂ・・・仮想タイムサーバインターフェイス（ＩＦ）基板
４０・・・基板模擬処理部
４１・・・共有メモリ
４３ａ、４３ｂ・・・トラッキング処理部
４４・・・ＰＩＯ（Ｐｒｏｃｅｓｓ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）模擬処理部
８０ａ、８０ｂ・・・ソケット
９０ａ、９０ｂ・・・ＬＡＮポート
２００・・・個別保守ツール
３００・・・試験支援ツール 
【図１】
0005753508.tif 000002
【図２】
0005753508.tif 000003
【図３】
0005753508.tif 000004
【図４】
0005753508.tif 000005
【図５】
0005753508.tif 000006
【図６】
0005753508.tif 000007
【図７】
0005753508.tif 000008