(58)【調査した分野】(Int.Cl.,DB名)
前記検証装置の検証部は、更新対象の前記演算部に対して、前記検証用データとして異常系テストのデータを送信し、当該演算部が前記異常系テストの出力値に対応して送信したエラーコードに基づいて、当該演算部の動作が適正か否かを判定する、請求項1から請求項3のいずれか一項に記載の検証システム。
前記検証装置の検証部は、前記複数の演算部のうち1つの演算部に対して、前記検証プログラムを送信するとともに、前記検証プログラムを実行した当該演算部から受信した検証結果が適正であれば、当該演算部に前記更新プログラムを配信する、請求項6に記載の検証システム。
前記検証装置の検証部は、前記複数の演算部のうち1つの演算部に対して、前記検証プログラムを送信するとともに、前記検証プログラムを実行した当該演算部から受信した検証結果が不適正であれば、当該演算部に更新前の前記プログラムを再度配信する、請求項6に記載の検証システム。
前記検証装置の検証部は、更新対象の前記演算部に対して、異常系テスト用の前記検証プログラムを送信し、当該演算部が前記検証プログラムを実行して前記異常系テストの出力値に対応して送信したエラーコードに基づいて、当該演算部の動作が適正か否かを判定する、請求項6から請求項9のいずれか一項に記載の検証システム。
【発明を実施するための形態】
【0008】
以下、実施形態の検証システムおよび検証方法について、図面を参照して説明する。まず、
図1〜
図8を参照して第1実施形態について説明し、次に、
図9〜
図16を参照して第2実施形態について説明する。
【0009】
(第1実施形態)
図1は、第1実施形態の検証システムSの構成例を示すブロック図である。検証システムSは、制御装置1、検証装置2、被制御装置3、および、検出装置4を備えている。
【0010】
制御装置1は、プラント、フィールド機器等を監視・制御するコンピュータ装置であって、通信部101、入力動作切替部102、第1演算部103、第2演算部104、第1記憶部105、第2記憶部106、出力動作切替部107、制御信号出力部108、検証結果出力部109、モード格納部110、および、検出信号入力部111を備える。
【0011】
通信部101は、検証装置2との間でデータの送受信を行うためのインタフェースである。入力動作切替部102は、通信部101、第1演算部103、第2演算部104と接続され、モード格納部110を参照して動作モード(通常モード、検証モードのいずれか)に応じてデータの経路を第1演算部103、第2演算部104の間で切り替える。なお、検証モードとは、制御装置1が被制御装置3の制御を行いながら、検証装置2が制御装置1の更新プログラムの検証を行うモードである。また、通常モードとは、検証モード以外で制御装置1が被制御装置3の制御を行うモードである。
【0012】
第1演算部103は、第1記憶部105に格納された制御プログラム等に基づき、入力情報に対する演算結果を出力する。第1記憶部105は、制御プログラム等を記憶する記憶手段である。
【0013】
第2演算部104は、第2記憶部106に格納された制御プログラム等に基づき、入力情報に対する演算結果を出力する。第2記憶部106は、制御プログラム等を記憶する記憶手段である。なお、以下において、第1演算部103と第2演算部104を特に区別しないときは、符号無しで単に「演算部」と記載する場合もある。
【0014】
出力動作切替部107は、第1演算部103、第2演算部104と接続され、モード格納部110を参照して動作モードに応じてそれらの演算結果の出力先を制御信号出力部108と検証結果出力部109のいずれかに切り替える。
【0015】
制御信号出力部108は、出力動作切替部107から受け取った演算結果である制御信号を被制御装置3に出力する。検証結果出力部109は、出力動作切替部107から受け取った演算結果である検証結果を検証装置2に出力(送信)する。
【0016】
モード格納部110は、現在の動作モードが通常モードと検証モードのいずれであるのかを格納する。制御装置1は、モード格納部110の状態により、通常モードと検証モードの大きく2種類の異なる動作を行う。例えば、モード格納部110が通常モードから検証モードへ遷移すると、入力動作切替部102は、モード格納部110を参照して、検証装置2から受信した検証用データを更新対象の演算部にのみ入力するようにデータの経路を切り替える。また、出力動作切替部107は、モード格納部110を参照して、更新対象の演算部の検証結果を検証結果出力部109へ出力するようデータの経路を切り替える。
【0017】
なお、モード格納部110に保持される動作モードは、ユーザ端末(不図示)や検証装置2からの伝送情報によって変化してもよいし、また、DIPスイッチなどの物理的切り替えによって変化してもよい。検出信号入力部111は、検出装置4からの入力情報を受信する。
【0018】
検証装置2は、制御装置1のプログラムを更新する際に、第1演算部103と第2演算部104のうち一方のプログラムの更新および動作の検証を実施した後、検証結果が適正であれば、他方についてもプログラムの更新および動作の検証を実施するコンピュータ装置である。検証装置2は、通信部21、検証信号入力部22、検証部23、および、記憶部24を備える。
【0019】
通信部21は、制御装置1との間でデータの送受信を行うためのインタフェースである。検証信号入力部22は、制御装置1から出力された検証信号を入力する。
【0020】
検証部23は、制御装置1のプログラムを更新する際にモード格納部110が検証モードに遷移した場合、第1演算部103と第2演算部104の一方に対して、更新プログラムを送信するとともに、検証用データによる動作の検証を実施した後、検証結果が適正であれば、他方についても、更新プログラムを送信するとともに、検証用データによる動作の検証を実施する。また、例えば、検証部23は、演算部の検証結果について、出力値とタイミングのそれぞれが適正であるか否かを判定する。
【0021】
また、例えば、検証部23は、更新対象の演算部に対して、検証用データとして異常系テストのデータを送信し、当該演算部が異常系テストの出力値に対応して送信したエラーコードに基づいて、当該演算部の動作が適正か否かを判定する。また、例えば、検証部23は、更新対象の演算部に対して、更新後の動作が不適正だと判定した場合には、更新前プログラムを再度配信する。
【0022】
記憶部24は、プログラム、更新プログラム、検証用データ、正常系適正値データ、異常系適正値データ、検証結果等を格納する。
【0023】
プログラム(更新前プログラム)と更新プログラムは、制御装置1によって使用される。検証用データは、正常系検証用データと異常系検証用データとから構成される。正常系検証用データとは、正常系テストで検証用に用いられるデータである。正常系テストとは、正常な入力に対して適正な出力がされるかを調べるテストである。
【0024】
一方、異常系検証用データとは、異常系テストで検証用に用いられるデータである。異常系テストとは、異常な入力に対して適正な出力(例えば適正なエラーコードの出力)がされるかを調べるテストである。
【0025】
正常系適正値データは、正常系テストの正解データであり、つまり、正常系テストに関して適正か否かを判定するためのデータである。異常系適正値データは、異常系テストの正解データであり、つまり、異常系テストに関して適正か否かを判定するためのデータである。検証結果は、正常系テストの結果、および、異常系テストの結果である。
【0026】
被制御装置3は、制御装置1によって制御される装置である。検出装置4は、検出信号を出力する各種のセンサである。
【0027】
次に、検証システムSの通常モード時の動作について説明する。
図2は、第1実施形態の検証システムSの通常モード時の動作の説明図である。通常モードでは、入力動作切替部102は、検出装置4からのDI(Digital Input)やAI(Analog Input)といったデータ入力情報を検出信号入力部111経由で受け取ると(S1、S2)、第1演算部103と第2演算部104の両方へ転送する(S3,S4)。
【0028】
第1演算部103は、この入力値(データ入力情報)を用いて、第1記憶部105に格納された制御プログラムに基づき演算し、演算結果を出力動作切替部107に送る(S5)。また、第2演算部104は、この入力値(データ入力情報)を用いて、第2記憶部106に格納された制御プログラム(第1記憶部105に格納された制御プログラムと同じ)に基づき演算し、演算結果を出力動作切替部107に送る(S6)。
【0029】
出力動作切替部107は、受け取った演算結果を制御信号出力部108に送る(S7)。このとき、出力動作切替部107は、受け取った演算結果の二重化比較照合や、先着優先処理などのデータ選択処理を実施してもよい。次に、制御信号出力部108は、演算結果(制御信号)を被制御装置3に送信する(S8)。被制御装置3(アクチュエータなど)は、受信した演算結果(制御信号)によって制御される。なお、通常モードでは、検証装置2は、使用されないため、除外してもよい。
【0030】
次に、検証システムSの検証モード時の動作について説明する。
図3は、第1実施形態の検証システムSの検証モード時の動作の説明図である。ユーザは、制御装置1のプログラムを更新する場合、モード格納部110の動作モードを通常モードから検証モードに切り替える。これによって、入力動作切替部102と出力動作切替部107がデータの経路を切り替える。
【0031】
まず、通常モードと同様の動作は、第1演算部103が実行する(S1→S2→S3→S5→S7→S8)。
【0032】
一方、プログラムの更新、検証の動作時のデータの流れは、
図3の破線で示す通りである。以下、
図4を参照して具体的に説明する。
図4は、第1実施形態の検証システムSの動作例を示すフローチャートである。
【0033】
まず、検証装置2の検証部23は、記憶部24に格納された更新プログラムを制御装置1の第2演算部104に送信する(S101)。第2演算部104は、その更新プログラムを受信(ダウンロード)する(S102)。
【0034】
次に、検証部23は、S103〜S108で正常系テストを実行する。具体的には、検証部23は、記憶部24に格納された正常系検証用データ(検出装置4からの検出信号を模したデータ)を第2演算部104に送信する(S103)。第2演算部104はその正常系検証用データを受信する(S104)。次に、第2演算部104は、更新プログラムと正常系検証用データを用いて制御演算を実行し(S105)、演算結果を検証装置2に出力する(S106)。検証装置2はその演算結果を受信する(S107)。
【0035】
次に、検証部23は、受信した演算結果を用いて正常系比較検証して(S108)、
図5に示す検証結果(正常系テストの検証結果)を記憶部24に格納する。ここで、
図5は、第1実施形態における検証結果の例を示す図である。
図5の検証結果について、左から順に、検証入力値は、正常系検証用データである。なお、この検証入力値は、制御装置1のとり得る最小から最大までのすべてでもよいし、間引いたものであってもよい。想定値は、正解データ(正常系適正値データ)である。読み込み値は、第2演算部104による演算結果である。前回出力との時間差は、実測値であり、許容範囲として「8〜12ms」が設定されている。なお、この許容範囲は、ユーザごとに設定可能でもよいし、ベンダーが仕様として予め定義してもよい。判定は、OK(適正)とNG(不適正)の2択である。
【0036】
次に、正常系比較検証(S108)の動作例について説明する。
図6は、第1実施形態における正常系比較検証の動作例を示すフローチャートである。検証部23は、すべての検証入力値について、S1082〜S1084を実行する(S1081〜S1085)。ただし、S1082とS1083のいずれかでNoとなった場合は、その時点で処理を終了する。
【0037】
S1082において、検証部23は、読み込み値が想定値と同じであるか否かを判定し、Yesの場合はS1083に進み、Noの場合はS1086に進む。S1083において、検証部23は、前回出力との時間差が許容範囲内か否かを判定し、Yesの場合はS1084に進み、Noの場合はS1086に進む。S1084において、検証部23は、検証結果における判定結果としてOKを保存する(
図5)。
【0038】
S1086において、検証部23は、検証結果における判定結果としてNGを保存する(
図5)。その後、検証部23は、記憶部24に格納されている更新前プログラムを第2演算部104に配信する(S1087)。これは、更新プログラムが適正に動作しなかったためである。その後、検証部23は、検証を終了し(S1088)、処理を終了する。なお、このS1088を経由した後は、
図4の処理も中止する。また、動作モードを検証モードから通常モードに戻す。S1085を経由してS108を終了した場合は、
図4の処理に戻る。
【0039】
図4に戻って、S108の後、検証部23は、S109〜S114で異常系テストを実行する。具体的には、検証部23は、記憶部24に格納された異常系検証用データを第2演算部104に送信する(S109)。第2演算部104はその異常系検証用データを受信する(S110)。次に、第2演算部104は、更新プログラムと異常系検証用データを用いてエラー検出を実行し(S111)、エラーコードを検証装置2に送信する(S112)。検証装置2はそのエラーコードを受信する(S113)。
【0040】
前記したように、異常系テストとは、異常な入力に対して適正な出力がされるかを調べるテストである。また、異常系適正値データは、異常系テストの正解データであり、つまり、異常系テストに関して適正か否かを判定するためのデータである。
図7は、第1実施形態における異常系適正値データの例を示す図である。
図7に示すように、異常系適正値データでは、エラーの種類とエラーコードとが対応付けられている。
【0041】
数値が許容範囲外のエラーには、エラーコード「0000」が対応付けられている。数値が許容範囲外のエラーとは、例えば、許容範囲が「0」〜「20」のときに、「21」という数値を受けた場合である。
【0042】
また、データ内容が異常のエラーには、エラーコード「0001」が対応付けられている。データ内容が異常のエラーとは、例えば、データサイズが不適正である場合である。
【0043】
また、暗復号異常のエラーには、エラーコード「0010」が対応付けられている。暗復号異常のエラーとは、例えば、暗号化データを復号化したら必ず先頭データが「0123」であるべきなのに別のデータになっている場合である。
【0044】
図4に戻って、S113の後、検証部23は、受信したエラーコードを用いて異常系比較検証して(S114)、検証結果(不図示)を記憶部24に格納する。次に、異常系比較検証(S114)の動作例について説明する。
図8は、第1実施形態における異常系比較検証の動作例を示すフローチャートである。検証部23は、すべての検証入力データ(異常系検証用データ)について、S1142、S1143を実行する(S1141〜S1144)。ただし、S1142でNoとなった場合は、その時点で処理を終了する。
【0045】
S1142において、検証部23は、受信したエラーコードが適正であるか否かを判定し、Yesの場合はS1143に進み、Noの場合はS1145に進む。S1142では、例えば、数値の許容範囲が「0」〜「20」の場合に「21」という数値が検証入力データであった場合に、エラーコード「0000」を受信すれば適正であり(Yes)、他のデータ(「0000」以外のエラーコード等)を受信すれば不適正である(No)。S1143において、検証部23は、検証結果における判定結果としてOKを保存する。
【0046】
S1145において、検証部23は、検証結果における判定結果としてNGを保存する。その後、検証部23は、記憶部24に格納されている更新前プログラムを第2演算部104に配信する(S1146)。これは、更新プログラムが適正に動作しなかったためである。その後、検証部23は、検証を終了し(S1147)、処理を終了する。なお、このS1147を経由した後は、
図4の処理も中止する。また、動作モードを検証モードから通常モードに戻す。S1144を経由してS114を終了した場合は、
図4の処理に戻る。
【0047】
図4に戻って、S114の後、検証部23は、記憶部24に格納されている更新前プログラムを第2演算部104に送信する(S115)。第2演算部104は、その更新前プログラムを受信(ダウンロード)する(S116)。ここで、第2演算部104を更新前プログラムに戻すのは、これから第1演算部103のプログラムの更新、検証を行うにあたり、その間、通常モードと同様の処理を第2演算部104に実行させるためである。
【0048】
次に、検証部23は、S117〜S130において、第1演算部103のプログラムの更新、検証の処理を行うが、S101〜S114と同様であるため、説明を省略する。
【0049】
S130の後、つまり、第2演算部104、第1演算部103ともにプログラムの更新、検証で問題がなかった場合、検証部23は、記憶部24に格納された更新プログラムを制御装置1の第2演算部104に送信する(S131)。第2演算部104は、その更新プログラムを受信(ダウンロード)する(S132)。これにより、第2演算部104、第1演算部103ともに更新プログラムに更新された。その後、モード格納部110は検証モードから通常モードに遷移する。
【0050】
このように、第1実施形態の検証システムSによれば、制御装置1を停止させることなくプログラムの更新と検証を行うことができる。具体的には、検証装置2の検証部23は、制御装置1のプログラムを更新する際にモード格納部110が検証モードに遷移した場合、第1演算部103と第2演算部104の一方に対して、更新プログラムを送信するとともに、検証用データによる動作の検証を正常系テストと異常系テストの両方について実施した後、検証結果が適正であれば、他方についても同様の動作を実行する。これにより、制御装置1のプログラムを更新するだけでなく、更新後の動作も保障することができる。
【0051】
(第2実施形態)
次に、第2実施形態の検証システムSについて説明する。なお、第1実施形態と同様の構成には同様の符号を付し、重複する説明を適宜省略する。
図9は、第2実施形態の検証システムSの構成例を示すブロック図である。
【0052】
図9の制御装置1は、
図1の制御装置1と比較して、検証結果出力部109が無い点で異なっている。
【0053】
また、
図9の検証装置2は、
図1の検証装置2と比較して、次の点で異なっている。まず、検証信号入力部22が無い。また、記憶部24が正常系検証プログラムと異常系検証プログラムからなる検証プログラムをさらに記憶している。つまり、第2実施形態では、更新プログラムではなく、更新プログラムと演算内容が同一で検証結果送信機能を有する
検証プログラムを用いて検証を行う。検証プログラムの場合、更新プログラムとは異なり、
図11に示すように、制御装置1において演算の結果を出力動作切替部107に伝送しない。また、検証プログラムは、演算結果を保持し、検証入力値と、その検証入力値に基づいた演算結果(出力値)と演算周期を検証装置2へ伝送する機能を有している(
図13)。
【0054】
また、検証装置2は、制御装置1と同一の場所に設置されるローカル機器でもよいし、クラウドサーバなど、遠隔地に設置されるものでもよい。
【0055】
また、例えば、検証部23は、制御装置1のプログラムを更新する際にモード格納部110が検証モードに遷移した場合、第1演算部103と第2演算部104の一方に対して、検証プログラムを送信するとともに、検証プログラムを実行したその一方から受信した検証結果が適正であれば、他方についても、検証プログラムを送信する。
【0056】
また、例えば、検証部23は、第1演算部103と第2演算部104の一方に対して、検証プログラムを送信するとともに、検証プログラムを実行したその一方から受信した検証結果が適正であれば、その一方に更新プログラムを配信する。
【0057】
また、例えば、検証部23は、第1演算部103と第2演算部104の一方に対して、検証プログラムを送信するとともに、検証プログラムを実行したその一方から受信した検証結果が不適正であれば、その一方に更新前プログラムを再度配信する。
【0058】
また、例えば、検証部23は、更新対象の演算部に対して、正常系検証プログラムを送信し、それを実行した当該演算部から受信した計算結果と、記憶部24の正常系適正値データとに基づいて、当該演算部の動作が適正か否かを判定する。
【0059】
また、例えば、検証部23は、更新対象の演算部に対して、異常系検証プログラムを送信し、それを実行した当該演算部から受信した計算結果と、記憶部24の異常系適正値データとに基づいて、当該演算部の動作が適正か否かを判定する。
【0060】
次に、検証システムSの通常モード時の動作について説明する。
図10は、第2実施形態の検証システムSの通常モード時の動作の説明図である。
図10のS21〜S28は、
図2のS1〜S8と同様であるので、説明を省略する。
【0061】
次に、検証システムSの検証モード時の動作について説明する。
図11は、第2実施形態の検証システムSの検証モード時の動作の説明図である。ユーザは、制御装置1のプログラムを更新する場合、モード格納部110の動作モードを通常モードから検証モードに切り替える。これによって、入力動作切替部102と出力動作切替部107がデータの経路を切り替える。
【0062】
まず、通常モードと同様の動作は、第1演算部103が実行する(S21→S22→S23→S25→S27→S28)。
【0063】
一方、プログラムの更新、検証の動作時のデータの流れは、
図11の破線で示す通りである。以下、
図12を参照して具体的に説明する。
図12は、第2実施形態の検証システムSの動作例を示すフローチャートである。
【0064】
まず、検証装置2の検証部23は、記憶部24に格納された検証プログラム(正常系検証プログラム、異常系検証プログラムの両方)を制御装置1の第2演算部104に送信する(S201)。第2演算部104は、その検証プログラムを受信(ダウンロード)する(S202)。
【0065】
次に、検証部23は、S203〜S208で正常系テストを実行する。具体的には、検証部23は、記憶部24に格納された正常系検証用データを第2演算部104に送信する(S203)。第2演算部104はその正常系検証用データを受信する(S204)。次に、第2演算部104は、正常系検証プログラムと正常系検証用データを用いて制御演算を実行し(S205)、演算結果(出力値)を保存(蓄積)してから、ひとまとまりの演算結果として検証装置2に送信する(S206)。検証装置2はその演算結果を受信する(S207)。
【0066】
ここで、
図13は、第2実施形態における正常系保存データ(ひとまとまりの演算結果)の例を示す図である。
図13の正常系保存データについて、左から順に、検証入力値は、正常系検証用データである。演算結果は、検証入力値に基づいて演算した結果である。演算周期は、演算の時間長である。
【0067】
図12に戻って、S207の後、検証部23は、受信した演算結果を用いて正常系比較検証して(S208)、検証結果(
図5と同様)を記憶部24に格納する。この正常系比較検証(S208)の動作例について説明する。
図14は、第2実施形態における正常系比較検証の動作例を示すフローチャートである。
【0068】
検証部23は、すべての検証入力値について、S2082〜S2084を実行する(S2081〜S2085)。ただし、S2082とS2083のいずれかでNoとなった場合は、その時点で処理を終了する。
【0069】
S2082において、検証部23は、演算結果(
図13)が想定値(
図5)と同じであるか否かを判定し、Yesの場合はS2083に進み、Noの場合はS2086に進む。S2083において、検証部23は、演算周期(
図13)が許容範囲(
図5)内か否かを判定し、Yesの場合はS2084に進み、Noの場合はS2086に進む。S2084において、検証部23は、検証結果における判定結果としてOKを保存する。
【0070】
S2086において、検証部23は、検証結果における判定結果としてNGを保存する。その後、検証部23は、記憶部24に格納されている更新前プログラムを第2演算部104に配信する(S2087)。これは、検証プログラムが適正に動作しなかったためである。その後、検証部23は、検証を終了し(S2088)、処理を終了する。なお、このS2088を経由した後は、
図12の処理も中止する。また、動作モードを検証モードから通常モードに戻す。S2085を経由してS208を終了した場合は、
図12の処理に戻る。
【0071】
図12に戻って、S208の後、検証部23は、S209〜S214で異常系テストを実行する。具体的には、検証部23は、記憶部24に格納された異常系検証用データ(異常系テスト番号)を第2演算部104に送信する(S209)。第2演算部104はその異常系検証用データを受信する(S210)。次に、第2演算部104は、異常系検証プログラムと異常系検証用データを用いてエラー検出を実行し(S211)、エラーコードを保存(蓄積)してから、ひとまとまりの演算結果として検証装置2に送信する(S212)。検証装置2はその演算結果を受信する(S213)。
【0072】
なお、S206やS212での第2演算部104から検証装置2へのデータの送信タイミングは、処理の所定単位ごとでもよいし、一定数のデータサイズが保存された場合でもよいし、また、すべての処理が終わった場合でもよい。
【0073】
ここで、
図15(a)は、第2実施形態における検証プログラムの一部の例を示す図である。
図15(b)は、第2実施形態における異常系保存データ(ひとまとまりの演算結果)の例を示す図である。この検証プログラムにおいて、正常な処理では、bとcの加算によりaを算出し(
図15(a)のL1)、aとdが一致する(
図15(a)のL5、L6)。そして、異常系テスト番号「1」のテスト(TEST1)では、aに1を加算することで(
図15(a)のL3)、a≠dという環境を創作可能になる(
図15(a)のL7〜L9)。なお、
図15(a)のL8の「ERROR」はエラーコード(例えば「0000」)を意味する。このような異常系テストを複数用意することで、
図15(b)に示すような異常系保存データ(ひとまとまりの演算結果)を作成可能となる。また、検証装置2の記憶部24の異常系適正値データには、この
図15(b)に示す情報が正解テーブルとして保存されている。なお、このような検証プログラムを用いれば、
図12におけるS209、S210の処理を省略できる。
【0074】
図12に戻って、S213の後、検証部23は、受信した演算結果(エラーコード)を用いて異常系比較検証して(S214)、検証結果(不図示)を記憶部24に格納する。次に、異常系比較検証(S214)の動作例について説明する。
図16は、第2実施形態における異常系比較検証の動作例を示すフローチャートである。検証部23は、すべての異常系テスト番号のテストについて、S2142、S2143を実行する(S2141〜S2144)。ただし、S2142でNoとなった場合は、その時点で処理を終了する。
【0075】
S2142において、検証部23は、エラーコードが適正であるか否かを判定し、Yesの場合はS2143に進み、Noの場合はS2145に進む。S2143において、検証部23は、検証結果における判定結果としてOKを保存する。
【0076】
S2145において、検証部23は、検証結果における判定結果としてNGを保存する。その後、検証部23は、記憶部24に格納されている更新前プログラムを第2演算部104に配信する(S2146)。これは、検証プログラムが適正に動作しなかったためである。その後、検証部23は、検証を終了し(S2147)、処理を終了する。なお、このS2147を経由した後は、
図12の処理も中止する。また、動作モードを検証モードから通常モードに戻す。S2144を経由してS214を終了した場合は、
図12の処理に戻る。
【0077】
図12に戻って、S214の後、検証部23は、記憶部24に格納されている更新前プログラムを第2演算部104に送信する(S215)。第2演算部104は、その更新前プログラムを受信(ダウンロード)する(S216)。ここで、第2演算部104を更新前プログラムに戻すのは、これから第1演算部103のプログラムの更新、検証を行うにあたり、その間、通常モードと同様の処理を第2演算部104に実行させるためである。
【0078】
次に、検証部23は、S217〜S230において、第1演算部103のプログラムの更新、検証の処理を行うが、S201〜S214と同様であるため、説明を省略する。
【0079】
S230の後、つまり、第2演算部104、第1演算部103ともにプログラムの更新、検証で問題がなかった場合、検証部23は、記憶部24に格納された更新プログラムを制御装置1の第2演算部104と第1演算部103に送信する(S231)。第2演算部104、第1演算部103は、その更新プログラムを受信(ダウンロード)する(S232、S233)。これにより、第2演算部104、第1演算部103ともに更新プログラムに更新された。その後、モード格納部110は検証モードから通常モードに遷移する。
【0080】
このように、第2実施形態の検証システムSによれば、制御装置1を停止させることなくプログラムの更新と検証を行うことができる。具体的には、検証装置2の検証部23は、制御装置1のプログラムを更新する際にモード格納部110が検証モードに遷移した場合、第1演算部103と第2演算部104の一方に対して、検証プログラムを送信するとともに、正常系テストと異常系テストの両方について実施した後、検証結果が適正であれば、他方についても同様の動作を実行する。これにより、制御装置1のプログラムを更新するだけでなく、更新後の動作も保障することができる。また、制御装置1の検証の際に制御装置1からの実際の出力値を使用しないため、離れた場所に検証装置2を設置でき、利便性が向上する。
【0081】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0082】
例えば、制御装置1の演算部が3つ以上の場合であっても、同様に、それぞれの演算部について順番にプログラムの更新および動作の検証を実施することで、制御装置1を停止させることなくプログラムの更新と検証を行うことができる。