(57)【要約】【課題】ＦＰＵ例外が発生した際に詳細なエラー解析を可能とするプラント制御技術を提供する。【解決手段】プラント制御装置１０は、外部機器１１から整数データ及び浮動小数データからなるプラントデータを取り込む外部インターフェース１２と、浮動小数データを格納するアドレス範囲の設定に基づいてプラントデータが浮動小数データと整数データとに区別して格納されるメモリ１３と、プラントデータを含む演算データの読み取りまたは書き込みのためにメモリ１３にアクセスし、制御プログラムの演算を実行する演算部１８と、演算時において浮動小数データが格納されたアドレス範囲にアクセスされた場合には、アクセスされた演算データのアドレス及びデータ値を含むアクセス情報を記録するアクセス情報記録部２０と、演算時において浮動小数点演算例外が発生した際に、記録されたアクセス情報をアクセス履歴として取得するアクセス履歴取得部２１と、を備える。【選択図】  図１
2015153290.tif 000002
【特許請求の範囲】
【請求項１】
外部機器から整数データ及び浮動小数データからなるプラントデータを取り込む外部インターフェースと、
前記浮動小数データを格納するアドレス範囲の設定に基づいて前記プラントデータが前記浮動小数データと前記整数データとに区別して格納されるメモリと、
前記プラントデータを含む演算データの読み取りまたは書き込みのために前記メモリにアクセスし、制御プログラムの演算を実行する演算部と、
前記演算時において前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた場合には、前記アクセスされた前記演算データのアドレス及びデータ値を含むアクセス情報を記録するアクセス情報記録部と、
前記演算時において浮動小数点演算例外が発生した際に、記録された前記アクセス情報をアクセス履歴として取得するアクセス履歴取得部と、を備えること特徴とするプラント制御装置。
【請求項２】
前記アクセス履歴取得部は、最初に前記浮動小数点演算例外が発生した際の前記アクセス履歴のみを取得することを特徴とする請求項１に記載のプラント制御装置。
【請求項３】
前記アクセス情報記録部は、前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた前記演算データが実数フォーマットでない異常な前記データ値であるか否かを判定し、異常値である場合は前記アクセスされた前記演算データのアドレス及びデータ値を異常データ情報として前記アクセス情報とは別に記録し、
前記アクセス履歴取得部は、浮動小数点演算例外が発生した際に、前記アクセス情報とともに前記異常データ情報をアクセス履歴として取得すること特徴とする請求項１または請求項２に記載のプラント制御装置。
【請求項４】
外部機器から整数データ及び浮動小数データからなるプラントデータを取り込むステップと、
前記浮動小数データを格納するアドレス範囲の設定に基づいて前記プラントデータが前記浮動小数データと前記整数データとに区別してメモリに格納されるステップと、
前記プラントデータを含む演算データの読み取りまたは書き込みのために前記メモリにアクセスし、制御プログラムの演算を実行するステップと、
前記演算時において前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた場合には、前記アクセスされた前記演算データのアドレス及びデータ値を含むアクセス情報を記録するステップと、
前記演算時において浮動小数点演算例外が発生した際に、記録された前記アクセス情報をアクセス履歴として取得するステップと、を含むことを特徴とするプラント制御方法。
【請求項５】
コンピュータに、
外部機器から整数データ及び浮動小数データからなるプラントデータを取り込むステップ、
前記浮動小数データを格納するアドレス範囲の設定に基づいて前記プラントデータが前記浮動小数データと前記整数データとに区別してメモリに格納されるステップ、
前記プラントデータを含む演算データの読み取りまたは書き込みのために前記メモリにアクセスし、制御プログラムの演算を実行するステップ、
前記演算時において前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた場合には、前記アクセスされた前記演算データのアドレス及びデータ値を含むアクセス情報を記録するステップ、
前記演算時において浮動小数点演算例外が発生した際に、記録された前記アクセス情報をアクセス履歴として取得するステップ、を実行させることを特徴とするプラント制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プラント制御技術に関する。
【背景技術】
【０００２】
火力プラント、原子力プラント等の様々な産業プラントでは、プラントを安定的に運転・動作させるためプラント制御装置が設けられている。この制御装置は、ネットワーク上の外部機器から複数のプラントデータを入力し制御プログラム（制御ロジック）を用いて演算処理を実行する。そして、実行結果に基づいて制御信号を出力してプラント制御を実施している。
【０００３】
一般的に、プラント制御に用いられる制御プログラムは、ラダー・ロジックやシーケンシャル・ファンクション・チャート等のグラフィカルな言語を用いて、複数の命令コードから作成される。
作成された制御プログラムは、プラント制御装置で解読可能なコード（ニーモニック）に変換されてプラント制御装置にダウンロードされ、解読実行される。
【０００４】
ところで、制御プログラムを実行する際、非数（ＮＡＮ）や無限大等といった制御演算用の入力値として相応しくない異常値が外部機器から入力された場合、実数演算時に浮動小数点演算例外（ＦＰＵ（Ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  Ｕｎｉｔ）例外）のエラーが発生する。そして、制御プログラムを構成する命令コードの組み合わせによっては、ＦＰＵ例外によるエラーが多発することとなる。
【０００５】
通常のコンピュータでは、ＦＰＵ例外が発生した際には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）による割り込み処理が実施される。しかし、プラント制御において割り込み処理が多発すると、制御動作のリアルタイム性を確保できなくなるおそれがある。
【０００６】
そこで、プラント制御装置では、ＦＰＵ例外による割り込み処理をマスクし、一定範囲の演算毎、例えば１命令コード（四則演算やＰＩＤといった制御プログラムで最小実行単位の命令コードを意味する）毎にＦＰＵ例外の発生をチェックして、エラー発生の有無を検出する。そして、ＦＰＵ例外の発生内容及びエラーが発生した命令コードの位置を記録する。
【０００７】
そして、プラントの保安員は、プラントの制御動作を停止させること無く、ＦＰＵ例外の発生内容及びエラーが発生した命令コードの位置からエラーが発生した原因の解析を行う。
【０００８】
従来から、プラント制御動作に影響を与えることなくＦＰＵ例外を検出する様々な技術が検討されてきた（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−３１８７０６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の方法では、外部機器の異常等によって短い制御周期のみでＦＰＵ例外が発生した場合、ＦＰＵ例外が発生した命令コードより前段の命令コードにおける演算内容が不明であるため、詳細な原因解析が行えないという課題があった。
【００１１】
具体的な例を挙げてこの課題を説明する。以下に示すＡからＣの３つの命令コードで構成される制御プログラムが実行された場合について検討する。
【００１２】
Ａ：ＰＩＤ（外部入力値（１），Ｋｐ（定数），Ｋｉ（定数），Ｋｄ（定数））
Ｂ：｜外部入力値（２）−β（定数）｜
Ｃ：Ｂの演算結果×Ｃの演算結果
【００１３】
外部機器の異常等により外部入力値（１）が“∞”、外部入力値（２）が“β”となった場合、命令コードＣで“∞×０”が実行され、無効演算が発生する。
【００１４】
外部機器からの異常入力が恒常的に発生している場合は、異常原因の特定可能となるものの、異常入力が１制御周期のみ、すなわち（正常値）→（∞）→（正常値）と変化した場合、従来の方法では命令コードＣで“∞×０”が発生したということまでしか確認できない。
【００１５】
つまり、ＦＰＵ例外が発生した命令コードＣより前段の演算内容が判明しないため、外部入力値（１）で“∞”が入力されたのか、あるいは命令コードＡの出力結果が“∞”となったかということまでは判断できず、ＦＰＵ例外発生の原因を特定することはできなかった。
【００１６】
本発明はこのような事情を考慮してなされたもので、ＦＰＵ例外が発生した際に詳細なエラー解析を可能とするプラント制御技術を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本実施形態のプラント制御装置は、外部機器から整数データ及び浮動小数データからなるプラントデータを取り込む外部インターフェースと、前記浮動小数データを格納するアドレス範囲の設定に基づいて前記プラントデータが前記浮動小数データと前記整数データとに区別して格納されるメモリと、前記プラントデータを含む演算データの読み取りまたは書き込みのために前記メモリにアクセスし、制御プログラムの演算を実行する演算部と、前記演算時において前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた場合には、前記アクセスされた前記演算データのアドレス及びデータ値を含むアクセス情報を記録するアクセス情報記録部と、前記演算時において浮動小数点演算例外が発生した際に、記録された前記アクセス情報をアクセス履歴として取得するアクセス履歴取得部と、を備えることを特徴とする。
【００１８】
本実施形態のプラント制御方法は、外部機器から整数データ及び浮動小数データからなるプラントデータを取り込むステップと、前記浮動小数データを格納するアドレス範囲の設定に基づいて前記プラントデータが前記浮動小数データと前記整数データとに区別してメモリに格納されるステップと、前記プラントデータを含む演算データの読み取りまたは書き込みのために前記メモリにアクセスし、制御プログラムの演算を実行するステップと、前記演算時において前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた場合には、前記アクセスされた前記演算データのアドレス及びデータ値を含むアクセス情報を記録するステップと、前記演算時において浮動小数点演算例外が発生した際に、記録された前記アクセス情報をアクセス履歴として取得するステップと、を含むことを特徴とする。
【００１９】
本実施形態のプラント制御プログラムは、コンピュータに、外部機器から整数データ及び浮動小数データからなるプラントデータを取り込むステップ、前記浮動小数データを格納するアドレス範囲の設定に基づいて前記プラントデータが前記浮動小数データと前記整数データとに区別してメモリに格納されるステップ、前記プラントデータを含む演算データの読み取りまたは書き込みのために前記メモリにアクセスし、制御プログラムの演算を実行するステップ、前記演算時において前記浮動小数データが格納された前記アドレス範囲に前記アクセスされた場合には、前記アクセスされた前記演算データのアドレス及びデータ値を含むアクセス情報を記録するステップ、前記演算時において浮動小数点演算例外が発生した際に、記録された前記アクセス情報をアクセス履歴として取得するステップ、を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ＦＰＵ例外が発生した際に詳細なエラー解析を可能とするプラント制御技術を提供することを目的とする。
【図面の簡単な説明】
【００２１】
【図１】本実施形態に係るプラント制御装置の構成図。
【図２】（Ａ）浮動小数領域設定部で設定された、浮動小数データを格納するアドレス範囲の一例を示す図、（Ｂ）アクセス情報記録部で順次記録されるアクセス情報の一例を示す図。
【図３】（Ａ）制御プログラムの一例を示す図、（Ｂ）制御プログラムの命令コード３においてＦＰＵ例外が発生した際に取得されるアクセス履歴を示す図。
【図４】第一実施形態に係るプラント制御装置の動作を示すフローチャート。
【図５】第二実施形態に係るプラント制御装置の動作を示すフローチャート。
【図６】第三実施形態に係るプラント制御装置の動作を示すフローチャート。
【図７】アクセス情報記録部において記録されるアクセス情報及び異常データ情報の一例を示す図。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態を添付図面に基づいて説明する。
（第一実施形態）
図１に示す実施形態に係るプラント制御装置１０（以下、制御装置１０とする）は、外部機器１１から整数データ及び浮動小数データからなるプラントデータを取り込む外部インターフェース１２と、浮動小数データを格納するアドレス範囲の設定に基づいてプラントデータが浮動小数データと整数データとに区別して格納されるメモリ１３と、プラントデータを含む演算データの読み取りまたは書き込みのためにメモリ１３にアクセスし、制御プログラムの演算を実行する演算部１８と、演算時において浮動小数データが格納されたアドレス範囲にアクセスされた場合には、アクセスされた演算データのアドレス及びデータ値を含むアクセス情報を記録するアクセス情報記録部２０と、演算時において浮動小数点演算例外が発生した際に、記録されたアクセス情報をアクセス履歴として取得するアクセス履歴取得部２１と、を備える。
【００２３】
制御装置１０は、プラント制御に係るプラントデータ（例えば、タービンの回転速度や原子炉圧力等）を外部機器１１から取り込み、プラントデータを用いて制御プログラムを実行し、実行結果に基づいた制御信号を外部機器１１に出力する。外部機器１１から取り込まれる様々なプラントデータは、整数データ及び浮動小数データから構成される。
【００２４】
そして、制御装置１０は、プラントデータの取り込み、制御信号の出力から成る一連の動作を一定周期ごとに繰り返してプラント制御を実施している。
なお、外部機器１１と制御装置１０とのデータの授受は、外部インターフェース１２を介して行われる。
【００２５】
メモリ１３は、プラント制御ＯＳコード格納領域１４、演算データ格納領域１５、制御プログラム格納領域１６、を備えている。
【００２６】
プラント制御ＯＳコード格納領域１４は、制御装置１０におけるデータ入出力や演算を制御するプラント制御ＯＳが格納される。
【００２７】
演算データ格納領域１５は、制御プログラムの演算処理に用いられ、随時読み取りまたは書き込みが行われる演算データが格納される。演算データには、外部機器１１から入力されるプラントデータ、演算処理用の計算データ、演算結果等が含まれる。
【００２８】
制御プログラム格納領域１６は、複数の命令コードから構成される制御用の制御プログラム（制御ロジック）が格納される。なお、プラント制御ＯＳ及び制御プログラムは保守ツール（図示省略）を介して制御装置１０にダウンロードされる。
【００２９】
制御部１７は、制御装置１０の起動時にプラント制御ＯＳを実行して、プラント制御ＯＳにしたがって制御装置１０におけるデータ入出力や演算を制御する。また、プラント制御ＯＳは、制御プログラムの１命令コードごとにＦＰＵ例外の発生有無をチェックする。
【００３０】
制御部１７は、プラントデータを用いて制御プログラムの演算を実行する演算部１８を備えている。
演算部１８は、メモリ１３の制御プログラム格納領域１６から制御プログラムを読み込み、制御プログラムを解読する。そして、演算データの読み取りまたは書き込みのために演算データ格納領域１５にアクセスし、順次命令コードを演算して制御プログラムを実行する。
【００３１】
メモリコントローラ２２は、浮動小数領域設定部１９、アクセス情報記録部２０、アクセス履歴取得部２１、を備えている。
【００３２】
演算部１８は、メモリコントローラ２２を介して、制御プログラムを読み込み、演算データの読み取りまたは書き込みを行う。
【００３３】
浮動小数領域設定部１９は、メモリ１３の演算データ格納領域１５において浮動小数データを格納するアドレス範囲を設定する。
浮動小数データを格納するアドレス範囲を設定することにより、演算データは浮動小数データと整数データとに区別して演算データ格納領域１５に格納される。なお、アドレス範囲の設定は、制御装置１０の起動開始時にプラント制御ＯＳにより行われる。
【００３４】
図２（Ａ）は、浮動小数領域設定部１９で設定されたアドレス範囲の一例を示す図である。
浮動小数領域設定部１９には、演算データ格納領域１５におけるアドレスの開始位置及び終了位置が設定されており、このアドレス範囲内に浮動小数データが格納される。
【００３５】
メモリコントローラ２２は、外部インターフェース１２で取り込まれたプラントデータを演算データ格納領域１５に格納する。このとき、プラントデータは、浮動小数領域設定部１９におけるアドレス範囲の設定に基づいて、浮動小数データと整数データとに区別して演算データ格納領域１５に格納される。
なお、外部インターフェース１２によるプラントデータの取り込み動作は、制御周期ごとに一括して実施される。
【００３６】
演算部１８は、プラントデータの演算データ格納領域１５への格納後に、制御プログラムの演算を実行する。
アクセス情報記録部２０は、制御プログラムの演算時に、演算部１８が浮動小数データの格納されたアドレス範囲（浮動小数データ格納領域）にアクセスした場合、アクセスされた演算データのアドレス及びデータ値をアクセス情報として記録する。
【００３７】
アクセス情報記録部２０は、演算部１８が浮動小数データ格納領域にアクセスしたか否かを、浮動小数領域設定部１９で設定されたアドレス範囲を参照して判断する。
【００３８】
また、アクセス情報記録部２０は、アクセスされた演算データの入出力方向、言い換えると演算データの読み取りまたは書き込みのいずれかが行われたかをアクセス情報として記録しても良い。
【００３９】
アクセス情報記録部２０は、制御プログラムの実行終了まで、演算部１８が浮動小数データ格納領域にアクセスするたびにアクセス情報を順次記録していく。これにより、アクセス情報記録部２０には、制御プログラムの演算順に、演算部１８が浮動小数データ格納領域にアクセスした履歴が作成される。
【００４０】
図２（Ｂ）は、アクセス情報記録部２０で記録されるアクセス情報の一例を示す図である。
アクセス情報記録部２０は、制御プログラムの演算順に、演算部１８から浮動小数データ格納領域にアクセスされたメモリ１３上のアドレス、データ値及び入出力方向をアクセス情報として順次記録している。
【００４１】
なお、演算部１８の浮動小数データ格納領域への全アクセス回数は制御プログラムの内容により可変となるが、アクセス情報記録部２０に記録可能なアクセス情報の段数（個数）は演算部１８による全アクセス回数より多い段数を確保することが望ましい。
【００４２】
アクセス履歴取得部２１は、制御プログラムの演算時にＦＰＵ例外が発生した際に、ＦＰＵ例外発生までにアクセス情報記録部２０で記録されたアクセス情報をアクセス履歴として取得する。また、アクセス履歴取得部２１は、制御プログラムの演算時に、複数のＦＰＵ例外が発生する場合には、ＦＰＵ例外が発生するごとにアクセス履歴を取得する。
【００４３】
ここで、制御プログラムを例示して具体的に説明する。
図３（Ａ）は、制御プログラムの一例を示す図であり、この制御プログラムは命令コード１〜３から構成され、命令コード１〜３の順に演算が実行される。
【００４４】
命令コード１は、浮動小数データ１、２及び整数データ１を入力し、演算結果である浮動小数データ３を出力する。続いて、命令コード２は、浮動小数データ４、５及び整数データ２を入力し、演算結果である浮動小数データ６を出力する。そして、命令コード３は、浮動小数データ３、６を入力し、演算結果である浮動小数データ７を出力する。
【００４５】
そして、アクセス情報記録部２０は、制御プログラムの演算実行順に、演算部１８が浮動小数データ格納領域にアクセスするたびにアクセス情報を順次記録する。
【００４６】
図３（Ｂ）は、命令コード３においてＦＰＵ例外が発生した際に、アクセス履歴取得部２１において取得されるアクセス履歴を示している。
アクセス履歴取得部２１には、命令コード３でＦＰＵ例外が発生するまでにアクセス情報記録部２０で記録されたアクセス情報がアクセス履歴として取得される。このアクセス履歴によって、ＦＰＵ例外が発生した命令コード３より前段の命令コード１〜２における実数演算の内容が再現可能となる。これにより、非数や無限大等といった異常データの発生位置が判明するため、ＦＰＵ例外発生の原因が特定できる。
【００４７】
図４は、第一実施形態に係る制御装置１０の動作を示すフローチャートである（適宜、図１参照）。
【００４８】
外部インターフェース１２は、外部機器１１からプラントデータの一括取り込みを行う（Ｓ１０）。
メモリコントローラ２２は、外部インターフェース１２で取り込まれたプラントデータを浮動小数データと整数データとに区別し、メモリ１３の演算データ格納領域１５に格納する（Ｓ１１）。
【００４９】
演算部１８は、メモリ１３の制御プログラム格納領域１６から制御プログラムを読み込み、制御プログラムを解読して、制御プログラムの実行を開始する（Ｓ１２）。
そして、演算部１８は、演算データの読み取りまたは書き込みのために演算データ格納領域１５にアクセスし、命令コードを演算する（Ｓ１３）。
【００５０】
アクセス情報記録部２０は、演算部１８が浮動小数データ格納領域にアクセスした場合にはアクセス情報を記録する（Ｓ１４）。
【００５１】
アクセス履歴取得部２１は、プラント制御ＯＳによりＦＰＵ例外の発生が検出された際は、ＦＰＵ例外発生までに記録されたアクセス情報をアクセス履歴として取得する（Ｓ１５：ＹＥＳ、Ｓ１６）。なお、ＦＰＵ例外の発生が検出されない場合は、アクセス履歴を取得しない（Ｓ１５：ＮＯ）。
【００５２】
制御プログラムを構成する全命令コードの演算が完了するまで、Ｓ１３〜Ｓ１６を繰り返す（Ｓ１７：ＮＯ）。全命令コードの演算が完了した場合は終了する（Ｓ１７：ＹＥＳ）。
【００５３】
このように、制御プログラムの演算時に、演算部１８が浮動小数データ格納領域に対してアクセスした場合にアクセス情報を記録し、ＦＰＵ例外発生した際に記録されたアクセス情報をアクセス履歴として取得する。
【００５４】
プラントの保安員は、この取得されたアクセス履歴を用いてエラー解析を行うことで、ＦＰＵ例外が発生する前段以前における実数演算の内容を再現することができる。これにより、非数や無限大等といった異常データの発生位置が判明するため、ＦＰＵ例外発生の原因が特定できる。
【００５５】
（第二実施形態）
図５は、第二実施形態に係る制御装置１０の動作を示すフローチャートである。なお、全体の構成図は図１と同一となるため、第一実施形態と重複する構成、動作について説明を省略する。
【００５６】
第一実施形態と異なる点は、アクセス履歴取得部２１は、最初にＦＰＵ例外が発生した際のアクセス履歴のみを取得する点にある。
【００５７】
制御プログラムを構成する命令コードの組み合わせによっては、制御プログラムの演算時に複数のＦＰＵ例外が順次検出されることになる。第二実施形態では、アクセス履歴取得部２１は、最初にＦＰＵ例外が発生した際のアクセス履歴のみを取得する。
【００５８】
つまり、第一実施形態では、ＦＰＵ例外が発生する度にアクセス履歴取得部２１はアクセス履歴を取得していたが、第二実施形態ではＦＰＵ例外発生の起点となる初回のＦＰＵ例外が発生した場合のみアクセス履歴を取得する。
【００５９】
なお、アクセス情報記録部２０は、最初にＦＰＵ例外が発生した後はアクセス情報の記録を停止する構成としても良い。
【００６０】
例えば、図３（Ａ）に示された制御プログラムにおいて、命令コード１の浮動小数データ１に非数等の異常なデータが入力された場合、命令コード１及び命令コード３でＦＰＵ例外が発生する。
【００６１】
この場合、第一実施形態では命令コード１及び命令コード３で発生した２つのＦＰＵ例外に対してアクセス履歴が取得されるが、第二実施形態では命令コード１で発生した最初のＦＰＵ例外に対してアクセス履歴が取得される。
【００６２】
図５に示すフローチャートに戻って説明を続ける（適宜、図１参照）。
外部インターフェース１２は、外部機器１１からプラントデータの一括取り込みを行う（Ｓ２０）。メモリコントローラ２２は、外部インターフェース１２で取り込まれたプラントデータを浮動小数データと整数データとに区別し、メモリ１３の演算データ格納領域１５に格納する（Ｓ２１）。
【００６３】
演算部１８は、メモリ１３の制御プログラム格納領域１６から制御プログラムを読み込み、制御プログラムを解読して、制御プログラムの実行を開始する（Ｓ２２）。
そして、演算部１８は、演算データの読み取りまたは書き込みのために演算データ格納領域１５にアクセスし、命令コードを演算する（Ｓ２３）。
【００６４】
アクセス情報記録部２０は、演算部１８が浮動小数データ格納領域にアクセスした場合にはアクセス情報を記録する（Ｓ２４）。
【００６５】
アクセス履歴取得部２１は、発生したＦＰＵ例外が最初のものでない場合、即ちすでにＦＰＵ例外が発生しているならばアクセス履歴の取得を行わない（Ｓ２５：ＮＯ）。一方、最初のＦＰＵ例外ならば、ＦＰＵ例外までのアクセス情報をアクセス履歴として取得する（Ｓ２５：ＹＥＳ、Ｓ２６）。
【００６６】
制御プログラムを構成する全命令コードの演算が完了するまで、Ｓ２３〜Ｓ２６を繰り返す（Ｓ２７：ＮＯ）。全命令コードの演算が完了した場合は終了する（Ｓ２７：ＹＥＳ）。
【００６７】
なお、アクセス情報記録部２０は、最初にＦＰＵ例外が発生した後はアクセス情報の記録を停止し、アクセス履歴取得部２１は、全命令コードの演算が完了した後に、アクセス履歴を取得する構成としても良い。
【００６８】
このように、外部機器１１の浮動小数データの入力異常等によりＦＰＵ例外が多数発生した場合でも、起点となった最初のＦＰＵ例外に対するアクセス履歴のみが取得される。これにより、保安員によるＦＰＵ例外の起点の特定が不要となり、エラー原因となる異常データの発生位置を早期に特定することが可能となる。
【００６９】
第二実施形態では、制御プログラムの実行時に１回だけアクセス履歴を取得する構成となるが、制御プログラムはプラントの機能系統毎に分割されている場合が多く、この場合は機能系統毎にそれぞれアクセス履歴を取得しても良い。
【００７０】
（第三実施形態）
図６は、第三実施形態に係る制御装置１０の動作を示すフローチャートである。なお、全体の構成図は図１と同一となるため、第一実施形態と重複する構成、動作について説明を省略する。
【００７１】
第一実施形態と異なる点は、アクセス情報記録部２０は、浮動小数データが格納されたアドレス範囲にアクセスされた演算データが実数フォーマットでない異常なデータ値であるか否かを判定し、異常値である場合はアクセスされた演算データのアドレス及びデータ値を異常データ情報としてアクセス情報とは別に記録し、アクセス履歴取得部２１は、浮動小数点演算例外が発生した際に、アクセス情報とともに異常データ情報をアクセス履歴として取得する点にある。
【００７２】
アクセス情報記録部２０は、メモリ１３の浮動小数データ格納領域に対してアクセスされる際に、アクセスされた演算データが実数フォーマットであるかを判定する。なお、演算データが非数等で無い正常な実数フォーマットであるか否かの判定は、コンパレータ等により実現する。
【００７３】
そして、アクセス情報記録部２０は、演算データが実数フォーマットでない異常値である場合には、アクセスされた演算データのアドレス及びデータ値を異常データ情報としてアクセス情報とは別に記録する。
【００７４】
図７は、アクセス情報記録部２０において記録されるアクセス情報及び異常データ情報の一例を示す図である。
異常なデータ値と判定された演算データのアドレス及びデータ値が、アクセス情報とは別に記録されている。なお、異常データ情報は、外部インターフェース１２においてプラントデータの取り込みが実行されるタイミングでクリアされる。
【００７５】
図６に示すフローチャートに戻って説明を続ける（適宜、図１参照）。
外部インターフェース１２は、外部機器１１からプラントデータの一括取り込みを行う（Ｓ３０）。メモリコントローラ２２は、外部インターフェース１２で取り込まれたプラントデータを浮動小数データと整数データとに区別し、メモリ１３の演算データ格納領域１５に格納する（Ｓ３１）。
【００７６】
演算部１８は、メモリ１３の制御プログラム格納領域１６から制御プログラムを読み込み、制御プログラムを解読して、制御プログラムの実行を開始する（Ｓ３２）。
そして、演算部１８は、演算データの読み取りまたは書き込みのために演算データ格納領域１５にアクセスし、命令コードを演算する（Ｓ３３）。
【００７７】
アクセス情報記録部２０は、演算部１８が浮動小数データ格納領域にアクセスした場合にはアクセス情報を記録する（Ｓ３４）。
【００７８】
さらに、アクセス情報記録部２０は、アクセスした演算データが実数フォーマットでない異常値であるか否かを判定し、異常値の場合は異常データ情報を記録する（Ｓ３５：ＹＥＳ、Ｓ３６）。なお、演算データが正常な実数フォーマットの場合は、異常データ情報を記録しない（Ｓ３５：ＮＯ）。
【００７９】
アクセス履歴取得部２１は、プラント制御ＯＳによりＦＰＵ例外の発生が検出された際は、ＦＰＵ例外発生までのアクセス情報及び異常データ情報をアクセス履歴として取得する（Ｓ３７：ＹＥＳ、Ｓ３８）。なお、ＦＰＵ例外の発生が検出されない場合は、アクセス履歴を取得しない（Ｓ３７：ＮＯ）。
【００８０】
制御プログラムを構成する全命令コードの演算が完了するまで、Ｓ３３〜Ｓ３８を繰り返す（Ｓ３９：ＮＯ）。全命令コードの演算が完了した場合は終了する（Ｓ３９：ＹＥＳ）。
【００８１】
また、アクセス情報記録部２０は、外部機器１１から取り込まれたプラントデータがメモリコントローラ２２を介して最初にメモリ１３に格納される際に、異常値であるか否かを判定し、異常値の場合は異常データ情報を記録しても良い。
【００８２】
アクセス情報記録部２０で記録できるアクセス情報の段数に制限があり、アクセス情報の段数以上に浮動小数データ格納領域に対する演算部１８のアクセス回数が多い場合、アクセス履歴を遡っても異常な演算データを確認することができない場合がある。この場合であっても、異常データ情報を参照することにより、異常な演算データを特定することが可能となる。
【００８３】
以上述べた各プラント制御装置によれば、制御プログラムの演算実行時において、メモリ上の浮動小数データ格納領域にアクセスされた場合にアクセス情報を記録し、ＦＰＵ例外発生した際に記録されたアクセス情報をアクセス履歴として取得することにより、ＦＰＵ例外が発生した場合に詳細なエラー解析が可能となる。
【００８４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８５】
１０  プラント制御装置
１１  外部機器
１２  外部インターフェース
１３  メモリ
１４  プラント制御ＯＳコード格納領域
１５  演算データ格納領域
１６  制御プログラム格納領域
１７  制御部
１８  演算部
１９  浮動小数領域設定部
２０  アクセス情報記録部
２１  アクセス履歴取得部
２２  メモリコントローラ
【図１】
2015153290.tif 000003
【図２】
2015153290.tif 000004
【図３】
2015153290.tif 000005
【図４】
2015153290.tif 000006
【図５】
2015153290.tif 000007
【図６】
2015153290.tif 000008
【図７】
2015153290.tif 000009