(57)【要約】【課題】制御プログラムの変更管理を容易にするプラント制御技術を提供する。【解決手段】プラント制御装置１０は、基板を介して入出力する複数の信号に線番を設定する線番設定部１２と、線番のそれぞれをメモリ空間の第一アドレスに割り当てるアドレス割当部１３と、信号のそれぞれの値を格納するメモリ空間の第二アドレスのそれぞれに対応して設定されたポインタを管理するポインタ管理テーブル１４と、ポインタを線番のそれぞれに割り当てて、第一アドレスに格納するポインタ割当部１５と、線番を変数として作成された制御プログラムの線番に対応する部分をポインタに書き換えるプログラム編集部１８と、書き換えられた制御プログラムを読み込んで、ポインタ管理テーブル１４を参照してポインタに対応する第二アドレスに格納された信号の値に基づいて演算処理する演算処理部１６と、を備えることを特徴とする。【選択図】  図１
2015014883.tif 000002
【特許請求の範囲】
【請求項１】
基板を介して入出力する複数の信号のそれぞれに線番を設定する線番設定部と、
前記線番のそれぞれをメモリ空間の第一アドレスに割り当てるアドレス割当部と、
前記信号のそれぞれの値を格納するメモリ空間の第二アドレスのそれぞれに対応して設定されたポインタを管理するポインタ管理テーブルと、
前記ポインタを前記線番のそれぞれに割り当てて、前記第一アドレスに格納するポインタ割当部と、
前記線番を入出力変数として作成された制御プログラムの前記線番に対応する部分を前記ポインタに書き換えるプログラム編集部と、
書き換えられた前記制御プログラムを読み込んで、前記ポインタ管理テーブルを参照して前記ポインタに対応する前記第二アドレスに格納された前記信号の値に基づいて演算処理する演算処理部と、
を備えることを特徴とするプラント制御装置。
【請求項２】
前記線番のそれぞれに割り当てられた前記第一アドレス及び前記ポインタの設定情報を記録するポインタ割当データと、
前記線番の変更を行う際に、前記ポインタ割当データに記録されている前記線番のみを当該変更に応じて更新する線番更新部と、
をさらに備えることを特徴とする請求項１に記載のプラント制御装置。
【請求項３】
前記ポインタのそれぞれは、メモリ空間上の模擬用アドレスが設定され、２つの設定値のいずれかに設定されるフラグ情報を有し、
前記演算処理部は、出力変数となる前記ポインタの前記フラグ情報が第１設定値のときは前記ポインタに対応する前記第二アドレスに出力値を書き込こみ、第２設定値のときは前記ポインタに対応する前記模擬用アドレスに出力値を書き込んで演算処理することを特徴とする請求項１または請求項２に記載のプラント制御装置。
【請求項４】
前記ポインタのそれぞれは、メモリ空間の模擬用アドレスが設定され、２つの設定値のいずれかに設定されるフラグ情報を有し、
前記演算処理部は、入力変数となる前記ポインタの前記フラグ情報が第１設定値のときは前記ポインタに対応する前記第二アドレスに格納された値を読み込み、前記フラグ情報が第２設定値のときは前記ポインタに対応する前記模擬用アドレスに格納された値を読み込んで演算処理することを特徴とする請求項１または請求項２に記載のプラント制御装置。
【請求項５】
前記ポインタのそれぞれは、メモリ空間上の模擬用アドレスが設定され、３つの設定値のいずれかに設定されるフラグ情報を有し、
前記演算処理部は、入出力変数となる前記ポインタの前記フラグ情報が第１設定値のときは前記ポインタに対応する前記第二アドレスに格納された値を読み込みまたは前記第二アドレスに出力値を書き込み、入力変数となる前記ポインタの前記フラグ情報が第２設定値のときは前記ポインタに対応する前記模擬用アドレスに格納された値を読み込み、出力変数となる前記ポインタの前記フラグ情報が第３設定値のときは前記ポインタに対応する前記模擬用アドレスに出力値を書き込んで演算処理することを特徴とする請求項１または請求項２に記載のプラント制御装置。
【請求項６】
基板を介して入出力する複数の信号のそれぞれに線番を設定するステップと、
前記線番のそれぞれをメモリ空間の第一アドレスに割り当てるステップと、
前記信号のそれぞれの値を格納するメモリ空間の第二アドレスのそれぞれに対応して設定されたポインタをポインタ管理テーブルで管理するステップと、
前記ポインタを前記線番のそれぞれに割り当てて、前記第一アドレスに格納するステップと、
前記線番を変数として作成された制御プログラムの前記線番に対応する部分を前記ポインタに書き換えるステップと、
書き換えられた前記制御プログラムを読み込んで、前記ポインタ管理テーブルを参照して前記ポインタに対応する前記第二アドレスに格納された前記信号の値に基づいて演算処理するステップと、
を含むことを特徴とするプラント制御方法。
【請求項７】
コンピュータに、
基板を介して入出力する複数の信号のそれぞれに線番を設定するステップと、
前記線番のそれぞれをメモリ空間の第一アドレスに割り当てるステップ、
前記信号のそれぞれの値を格納するメモリ空間の第二アドレスのそれぞれに対応して設定されたポインタをポインタ管理テーブルで管理するステップ、
前記ポインタを前記線番のそれぞれに割り当てて、前記第一アドレスに格納するステップ、
前記線番を変数として作成された制御プログラムの前記線番に対応する部分を前記ポインタに書き換えるステップ、
書き換えられた前記制御プログラムを読み込んで、前記ポインタ管理テーブルを参照して前記ポインタに対応する前記第二アドレスに格納された前記信号の値に基づいて演算処理するステップを、実行させることを特徴とするプラント制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プラント制御技術に関する。
【背景技術】
【０００２】
火力プラント、原子力プラント等の様々な産業プラントでは、プラントを安定的に運転・動作させるためプラント制御装置が設けられている。この制御装置は、外部から複数のプロセス信号を入力し制御プログラムを用いて演算処理を実行する。そして、実行結果に基づいて制御信号を出力してプラント制御を実施している。
【０００３】
一般的に、制御装置を入出力する複数の信号には、制御装置内のメモリ領域が割り当てられて各信号の値が格納される。そして、各信号のメモリ空間での配置情報（アドレス情報）はシステム構成データとして管理される。
一方、制御プログラムは、複数の命令コードから構成されるロジック演算情報とともに、システム構成データを参照して演算で使用する信号のアドレス情報を保持している。
そして、制御プログラムの実行処理は、保持しているアドレス情報を用いて信号の値が格納されているメモリ領域にアクセスを行いながら命令コードに従って行われる。
【０００４】
また、制御装置では、制御動作のテストや制御プログラムの機能確認等を実施するため、模擬の設定値を用いてプラント制御のシミュレーションを実施する場合がある。
【０００５】
このシミュレーションは、制御プログラム内の命令コードを書き換えて、この命令コードによる演算結果を模擬対象となる線番に出力する動作を一時的に停止させる。その後、模擬対象となる線番に模擬値を設定して実施される。なお、線番とは、制御装置に実装された基板を介して入出力する信号を相互に識別するための識別子（信号名）を意味する。
【０００６】
従来から、制御装置に実装される制御プログラムの作成、実行、書き換え、内容把握等、制御プログラムを効率的に実行・管理する様々な技術が開示されている。（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３３０９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述の制御装置では、制御プログラム内で変数情報となる信号のアドレス情報が、システム構成データで管理されている。つまり、システム構成データと制御プログラムとが直接紐付いた構成をとっている。
このため、例えば制御装置に実装される基板の追加、削除等が実施され、システム構成データが変更された際には、各信号のアドレス情報が変更されるため、制御プログラムを修正してアドレス情報を更新する必要が生じていた。
【０００９】
これにより、ロジック情報自体には変更が無いにも関わらず、制御プログラムの修正を行わなければならず、制御プログラムの変更管理を複雑なものとしていた。
【００１０】
また、シミュレーションを実施する際に、制御プログラムの命令コードを書き換えて実施する方法では、制御プログラムの変更管理（プログラムを元に戻す作業）が必要になる。
さらに、シミュレーション実施中に制御装置の停止、故障等が発生して再起動した場合、書き換え後の命令コードのままで動作してしまい、演算結果が正常に出力されないで制御動作を開始してしまう恐れがあった。
【００１１】
また、制御プログラムの命令コードを書き換えて、模擬対象となる線番への出力を一時的に停止する方法では、ユーザが定義・設定可能な線番でのみ模擬値の設定が可能であり、制御装置が固有で有する線番には模擬値を設定できないという課題があった。
【００１２】
本発明はこのような事情を考慮してなされたもので、制御プログラムの変更管理を容易にするプラント制御技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本実施形態のプラント制御装置は、基板を介して入出力する複数の信号のそれぞれに線番を設定する線番設定部と、前記線番のそれぞれをメモリ空間の第一アドレスに割り当てるアドレス割当部と、前記信号のそれぞれの値を格納するメモリ空間の第二アドレスのそれぞれに対応して設定されたポインタを管理するポインタ管理テーブルと、前記ポインタを前記線番のそれぞれに割り当てて、前記第一アドレスに格納するポインタ割当部と、前記線番を変数として作成された制御プログラムの前記線番に対応する部分を前記ポインタに書き換えるプログラム編集部と、書き換えられた前記制御プログラムを読み込んで、前記ポインタ管理テーブルを参照して前記ポインタに対応する前記第二アドレスに格納された前記信号の値に基づいて演算処理する演算処理部と、を備えることを特徴とするプラント制御装置。
【発明の効果】
【００１４】
本発明によれば、制御プログラムの変更管理を容易にするプラント制御技術が提供される。
【図面の簡単な説明】
【００１５】
【図１】第一実施形態に係るプラント制御装置の構成図。
【図２】第一実施形態に係るプラント制御装置に実装された基板構成を示した概略図。
【図３】（Ａ）線番設定データの構成図、（Ｂ）アドレス割当データの構成図。
【図４】（Ａ）ポインタ管理テーブルの構成図、（Ｂ）ポインタ割当データの構成図。
【図５】本実施形態に係るユーザメモリ内の配置を表した説明図。
【図６】（Ａ）制御ロジック図の一例を示したもの、（Ｂ）制御ロジック図をＣＡＳテキストイメージで表した図、（Ｃ）線番部分をポインタに書き換えたソースイメージを表した図。
【図７】（Ａ）制御プログラムの線番部分をポインタに書き換えるまでの制御フローを示すフローチャート、（Ｂ）演算処理部による処理フローを示すフローチャート。
【図８】第一実施形態に係るプラント制御装置の変形例を示した構成図。
【図９】（Ａ）第二実施形態に適用されるポインタ管理テーブルの構成図、（Ｂ）ユーザメモリ内の配置を表した説明図。
【図１０】第二実施形態に係る演算フローを示す説明図。
【図１１】第二実施形態に係る演算処理部による処理フローを示すフローチャート。
【図１２】（Ａ）第三実施形態に適用されるポインタ管理テーブルの構成図、（Ｂ）第三実施形態に係る演算処理部による処理フローを示すフローチャート。
【図１３】（Ａ）第四実施形態に適用されるポインタ管理テーブルの構成図、（Ｂ）第四実施形態に係る演算処理部による処理フローを示すフローチャート。
【発明を実施するための形態】
【００１６】
（第一実施形態）
以下、本発明の実施形態を添付図面に基づいて説明する。
図１に示す第一実施形態に係るプラント制御装置１０（以下、制御装置１０とする）は、基板を介して入出力する複数の信号のそれぞれに線番を設定する線番設定部１２と、線番のそれぞれをメモリ空間の第一アドレスに割り当てるアドレス割当部１３と、信号のそれぞれの値を格納するメモリ空間の第二アドレスのそれぞれに対応して設定されたポインタを管理するポインタ管理テーブル１４と、ポインタを線番のそれぞれに割り当てて、第一アドレスに格納するポインタ割当部１５と、線番を変数として作成された制御プログラムの線番に対応する部分をポインタに書き換えるプログラム編集部１８と、書き換えられた制御プログラムを読み込んで、ポインタ管理テーブル１４を参照してポインタに対応する第二アドレスに格納された信号の値に基づいて演算処理する演算処理部１６と、を備えることを特徴とする。
【００１７】
また、制御装置１０は、外部機器２３から処理対象となるプロセス信号を入力して、演算処理部１６において演算処理を実行する。そして、この実行結果に基づいて制御信号を外部機器２３に出力してプラント制御を実施するものである。
【００１８】
制御装置１０は、入出力部１１、線番設定部１２、アドレス割当部１３、ポインタ管理テーブル１４、ポインタ割当部１５、演算処理部１６、メモリ１７、プログラム編集部１８、線番更新部２２、とを備える。
保守ツール２４は、制御装置１０の外部に設けられて、通信手段（図示省略）を介して制御装置１０とのデータ通信を行う機能を有する。制御装置１０に実装される制御プログラムは、保守ツール２４から転送される。
【００１９】
メモリ１７は、演算処理部１６を介して随時読み取り、書き込みされるデータが格納されるユーザメモリ１７ａと、制御プログラムを格納するプログラム格納メモリ１７ｂと、から構成されるメモリ領域を有する。
【００２０】
入出力部１１は、制御装置１０に実装された複数の入出力基板（以下、基板と省略する）を介して、外部機器２３との間で入出力する信号、演算処理部１６で用いられる信号等プラント制御に用いられる信号の入出力を行う。
【００２１】
図２は、制御装置１０に実装された基板構成を例示した図である。制御ユニット（ユニット：０）、デジタルＩＯユニット（ユニット：５）、アナログＩＯユニット（ユニット：６）から構成され、各ユニットに設けられたスロットに各種基板が挿入されている。
【００２２】
線番設定部１２は、制御装置１０に実装された基板を介して入出力する複数の信号を相互に識別するため、これら信号のそれぞれに対して線番を設定する。
具体的には、実装された基板構成に関する情報に基づき、信号の入出力点に係る属性（ユニット、スロット、基板名、データ種別、基板タイプ、ＩＯ点数等）に対応付けて線番を設定することにより、各信号に対して線番が設定される。この線番は、複数の信号を相互に識別する識別子（信号名）となるため、ユニークなものを設定する必要がある。
【００２３】
入出力点の属性に対応付けて設定された線番の設定情報は、線番設定データ１９として記録・保存される。
図３（Ａ）は、図２で示した基板構成に基づき線番が設定された場合の線番設定データ１９のデータ構成を示している。各信号の入出力点に係る属性（基板が挿入されたユニット及びスロット、基板名、基板を入出力する信号のデータ種別、基板タイプ及びＩＯ点数）に対応付けて線番が設定されている。ここでは、各基板で設定される線番のうち、先頭の線番のみを表示している。
【００２４】
アドレス割当部１３は、線番設定部１２で設定された線番のそれぞれに対して、ユーザメモリ１７ａのメモリ領域を確保する。そして、確保されたメモリ領域の位置を示す第一アドレスを各線番に割り当てる。
【００２５】
各線番に対する第一アドレスの割り当てにおける設定情報は、アドレス割当データ２０として記録・保存される。
図３（Ｂ）は、図３（Ａ）で設定された線番に対して第一アドレスが割り当てられたアドレス割当データ２０のデータ構成を示している。
【００２６】
ここで、ポインタ管理テーブル１４について説明する。
各線番の値（信号の値）のそれぞれは、ユーザメモリ１７ａのメモリ領域を確保され格納される。なお、アドレス割当部１３で第一アドレスを割り当てのために確保されたメモリ領域とは異なるメモリ領域が確保される。
【００２７】
そして、各線番の値が格納されたメモリ上の位置を示す第二アドレスのそれぞれに対応させてポインタが設定される。このポインタは、各線番の値が格納された第二アドレスを相互に識別する識別子となる。
【００２８】
ポインタ管理テーブル１４は、第二アドレスと第二アドレスに割り当てられたポインタとの対応を管理する管理データである。このポインタ管理テーブル１４は、書き換え可能なデータであり、保守ツール２４（あるいは制御装置１０）により管理される。
【００２９】
そして、各線番の値が格納された第二アドレスが変更された場合には、この変更に従ってポインタ管理テーブル１４の書き換えが行われる。
例えば、入出力基板の構成が変更され、基板構成の変更に伴い第二アドレスが変更された際には、当該変更に合わせてポインタ管理テーブル１４は書き換えられる。
【００３０】
図４（Ａ）は、ポインタ管理テーブル１４のデータ構成を示している。各第二アドレスにポインタが割り当てられている。ここで示すように、第二アドレスに格納されるデータの種類ごとに管理テーブルを別々に分けても良い。
【００３１】
ポインタ割当部１５は、ポインタ管理テーブル１４を参照し、各線番に対して、それぞれの線番値が格納された第二アドレスに対応するポインタを割り当てる。そして、割り当てられたポインタは、前述の第一アドレスに格納される。
【００３２】
各線番に対するポインタの割り当てについての設定情報は、ポインタ割当データ２１として記録・保存される。このポインタ割当データ２１には、各線番に対する第一アドレスの割り当てについての設定情報も併せて保存される。
図４（Ｂ）は、ポインタ割当データ２１のデータ構成を示し、各線番に対してポインタが割り当てられている。
【００３３】
図５は、ユーザメモリ１７ａの配置を具体的に表した説明図である。
線番Ａ００１〜Ａ００３について、第一アドレスが割り当てられ、この第一アドレスにはポインタが格納される。そして、ポインタに対応する第二アドレスには、線番Ａ００１〜Ａ００３の値が格納される。
【００３４】
プログラム編集部１８は、線番を入出力変数として作成された制御プログラムを保守ツール２４から入力する。
そして、ポインタ割当部１５で各線番に割り当てたポインタに基づいて、制御プログラムの線番部分をポインタに書き換える。そして、この書き換えた制御プログラムをプログラム格納メモリ１７ｂに格納する。
【００３５】
したがって、プログラム格納メモリ１７ｂに格納される制御プログラムは、命令コードから構成されるロジック演算情報とポインタ情報（変数情報）を保持することとなる。
【００３６】
図６（Ａ）は、保守ツール２４で作成された制御ロジック図（制御プログラム）の一例を示したものである。
制御ロジック図は、結線により組み合わされた複数の命令コードから構成される。各命令コードは、信号の値を入力及び出力する端子を備え、これら端子には変数情報として線番が設定されている。
【００３７】
図６（Ｂ）は、図６（Ａ）の制御ロジック図をＣＡＳテキストイメージで表したものである。
図６（Ｃ）は、プログラム編集部１８によって、線番部分をポインタに書き換えられた制御プログラムのソースイメージを表している。この書き換えられた制御プログラムがプログラム格納メモリ１７ｂに格納される。
【００３８】
演算処理部１６は、プログラム格納メモリ１７ｂから制御プログラムを読み込む。そして、ポインタ管理テーブル１４を参照して、制御プログラムのポインタを第二アドレスに変換する。
【００３９】
そして、演算処理部１６は、変換した第二アドレスに格納された線番の値を用いて命令コードに従って演算処理を実行していく。
【００４０】
このように、演算処理部１６における制御プログラムの実行は、線番の値が格納されたメモリアドレス（第二アドレス）に直接アクセスして行うのでは無く、ポインタを介して間接的に行われる。
【００４１】
このため、実装された基板構成の変更等により、線番の値が格納されたアドレス情報（第二アドレス）が変更された場合であっても、ポインタと第二アドレスとの関係を管理するポインタ管理テーブル１４のみを書き換えることにより、演算処理の実行が可能となる。
【００４２】
したがって、実装された基板構成の変更等により、線番の値が格納されたアドレス情報が変更された場合であっても、制御プログラム自体を修正する必要がないため、制御プログラムの変更管理を容易なものにすることができる。
【００４３】
線番更新部２２は、線番設定部１２で設定された線番のみを変更する際に、ポインタ割当データ２１に記録されている線番のみを変更に応じて更新するものである。
また、線番更新部２２は、線番設定データ１９及びアドレス割当データ２０に記録されている線番についても、同様に線番部分の更新を行う。
【００４４】
線番を変更する際に、制御装置１０のシステム構成に係るデータであるポインタ割当データ２１の線番部分を直接更新することにより、再度線番設定部１２、アドレス割当部１３、及びポインタ割当部１５を介してポインタ割当データ２１を作成する手間を省略することができる。
【００４５】
また、線番の更新後においても、線番とポインタとの対応関係は変わらないため、制御プログラムをプログラム編集部１８で再度書き換えてプログラム格納メモリ１７ｂに格納する必要は無い。
【００４６】
図７（Ａ）は、制御プログラムの線番部分をポインタに書き換えるまでの制御フローを示すフローチャートである（適宜、図１参照）。
線番設定部１２は、実装された基板を入出力する各信号に線番を設定する（Ｓ１０）。
続けて、アドレス割当部１３は、設定された線番のそれぞれにユーザメモリ１７ａのメモリ領域を確保して、第一アドレスの割り当てを行う（Ｓ１１）。
【００４７】
次に、ポインタ割当部１５は、各線番の値を格納されたメモリ上の位置を示す第二アドレスとポインタとの対応を管理するポインタ管理テーブル１４を参照する（Ｓ１２）。
そして、各線番に対して、その線番の値が格納された第二アドレスに対応するポインタの割り当てを行う（Ｓ１３）。
【００４８】
プログラム編集部１８は、保守ツール２４から入力した制御プログラムの線番部分をポインタに書き換える（Ｓ１４）。そして、書き換えた制御プログラムをプログラム格納メモリ１７ｂに格納する。
【００４９】
図７（Ｂ）は、演算処理部１６による演算フローを示すフローチャートである。
演算処理部１６は、プログラム格納メモリ１７ｂから制御プログラムの読み込む（Ｓ１５）。
【００５０】
続けて、演算処理部１６は、ポインタ管理テーブル１４を参照して（Ｓ１６）、制御プログラムのポインタ部分を第二アドレスに変換する（Ｓ１７）。そして、変換された第二アドレスに格納された値に基づいて演算処理を実行する（Ｓ１８）。
【００５１】
このように、制御プログラムの実行は、ポインタを介して間接的に行われる。つまり、基板構成の変更等により、線番の値が格納されたアドレス情報（第二アドレス）が変更された場合でも、ポインタと第二アドレスとの関係を管理するポインタ管理テーブル１４のみを書き換えることにより、演算処理の実行が可能となる。このため、制御プログラム自体を修正する必要がないため、制御プログラムの変更管理を容易なものにすることができる。
【００５２】
図８は、本実施形態に係る制御装置１０の変形例を示している。各構成の動作、作用は
図１で示したものと同様となるため、同一の符号を付して適宜説明を省略する。
【００５３】
保守ツール２４は、線番設定部１２と、アドレス割当部１３と、ポインタ管理テーブル１４と、ポインタ割当部１５と、プログラム編集部１８と、線番更新部２２と、を備えている。
【００５４】
保守ツール２４は、制御装置１０との通信手段を介して、制御装置１０に実装された基板構成に関する情報を入力する。そして、線番設定部１２は、制御装置１０に実装された基板構成に関する情報に基づき、基板を入出力する信号に対して線番を設定する。
【００５５】
そして、アドレス割当部１３は、設定された線番に対して、ユーザメモリ１７ａの第一アドレスを割り当てる。
ポインタ割当部１５は、保守ツール２４で作成したポインタ管理テーブル１４を参照して、各線番にポインタを割り当てる。なお、ポインタ割当データ２１は、制御装置１０のシステム構成に係るデータとして制御装置１０に出力され保存される。
【００５６】
プログラム編集部１８は、線番を変数として作成した制御プログラムの線番部分をポインタに書き換える。そして、書き換えた制御プログラムを制御装置１０に出力する。
また、作成したポインタ管理テーブル１４は、制御装置１０に出力される。
【００５７】
制御装置１０は、書き換えられた制御プログラムを保守ツール２４から入力して、プログラム格納メモリ１７ｂに格納する。
そして、制御装置１０の演算処理部１６は、入力したポインタ管理テーブル１４を参照して、演算処理を実行する。
【００５８】
このように、制御装置１０が備えていた構成を保守ツール２４が備えることにより、制御装置１０を簡易な構成にしつつ、図１の構成と同一の効果を得ることができる。
【００５９】
（第二実施形態）
図９（Ａ）は、第二実施形態に適用されるポインタ管理テーブル１４のデータ構成を例示したものである。なお、制御装置１０の構成は、図１と同一となるため図示を省略し、第一実施形態と重複する動作については説明を省略する（適宜、図１を参照）。
【００６０】
第一実施形態に適用されるポインタ管理テーブル１４と異なる点について説明する（図４（Ａ））。
ポインタのそれぞれには、シミュレーション（以下、模擬とする）実施時に用いる模擬用アドレスが設定される。模擬用アドレスは、模擬のために確保されたユーザメモリ１７ａ領域のアドレス情報を示している。
さらに、ポインタのそれぞれは、任意の２つの設定値のいずれかに設定されるフラグ情報を有する。
【００６１】
ここでは、フラグ情報は、“Ｎｏ”または“Ｗｒｉｔｅ”が設定されるものとし、第１設定値を“Ｎｏ”として、第２設定値を“Ｗｒｉｔｅ”とする。
【００６２】
各ポインタに対応する第二アドレス、模擬用アドレス及びフラグ情報の設定は、ポインタ管理テーブル１４で管理され、フラグ情報は保守ツール２４（あるいは制御装置１０）から変更することができる。
【００６３】
演算処理部１６は、出力変数となるポインタのフラグ情報が、第１設定値のとき（“Ｎｏ”のとき）は、ポインタに対応する第二アドレスに出力値を書き込んで演算処理を実行していく。
一方、ポインタのフラグ情報が、第２設定値のとき（“Ｗｒｉｔｅ”のとき）は、ポインタに対応する模擬用アドレスに出力値を書き込んで演算処理を実行していく。
【００６４】
図９（Ｂ）は、模擬用アドレスを設定した場合における、ユーザメモリ１７ａの配置を示している。模擬用アドレスには、模擬を実施する際に用いられる各線番（ポインタ）の値が格納されている。
【００６５】
図１０は、模擬を実施する際の演算処理部１６による具体的な処理フローを表している。
ここでは、ポインタ“００１１”（線番：Ａ００２）の第二アドレスに模擬値を格納し、この模擬値を命令コード２の入力値として模擬を行う場合について検討する。
【００６６】
まず、演算処理部１６は、命令コード１の処理終了後、ポインタ管理テーブル１４を参照して、ポインタ“００１１”のフラグ情報を確認する。
【００６７】
ポインタ“００１１”のフラグ情報が“Ｗｒｉｔｅ”に設定されているため、ポインタ管理テーブル１４から模擬用アドレスを読み取る。
そして、演算処理部１６は、命令コード１の出力値（演算結果）を模擬用アドレスに書き込む。
【００６８】
そして、演算処理部１６は、ポインタ“００１１”の第二アドレスに格納されている模擬値を入力値として命令コード２の処理を実行する。
【００６９】
このように、命令コード１の出力値を模擬用アドレスに書き込むことで、第二アドレスへの出力を回避できる。このため、第二アドレスに設定した模擬値が、命令コード１の出力値により書き換えられることは無く、模擬を実行することができる。
【００７０】
したがって、制御プログラムの命令コードを書き換えて出力ロックを行う必要がないため、制御プログラムを修正することなく模擬を実施することができる。
【００７１】
また、模擬実施中に制御装置１０の停止、故障等が発生し、再起動した場合であってっても、制御プログラムの命令コードを変更していないため、演算結果が正常に出力されない等の誤動作を防止することができる。
【００７２】
図１１は、第二実施形態に係る演算処理部１６による、命令コードの処理フローを示している。
まず、演算処理部１６は、ポインタ管理テーブル１４を参照して、命令コードの入力側ポインタに対応する第二アドレスを読み込む（Ｓ２０）。
そして、読み込んだ第二アドレスから入力値を読み込んで（Ｓ２１）、命令処理を実行する（Ｓ２２）。
【００７３】
命令処理終了後、演算処理部１６は、ポインタ管理テーブル１４を参照して、フラグ情報を確認する（Ｓ２３）。
そして、フラグ情報に“Ｗｒｉｔｅ”が設定されている場合は（Ｓ２３：ＹＥＳ）、出力側ポインタに対応する模擬用アドレスを読み込む（Ｓ２５）。
一方、フラグ情報に“Ｎｏ”が設定されている場合は（Ｓ２３：Ｎｏ）、出力側ポインタに対応する第二アドレスを読み込む（Ｓ２４）。
【００７４】
そして、演算処理部１６は、読み込んだアドレスに出力値の書き込みを行い（Ｓ２６）、命令コードを終了する。
【００７５】
第二アドレスに模擬値を設定して模擬を行う際に、フラグ情報に“Ｗｒｉｔｅ”を設定して、命令コードの出力値を模擬用アドレスに書き込む。これにより、第二アドレスに設定した模擬値が、命令コードの出力値により書き換えられることは無い。
したがって、制御プログラムの命令コードを書き換えて出力ロックを行わないで、つまり制御プログラムを修正しないで模擬を実施することができる。
【００７６】
（第三実施形態）
図１２（Ａ）は、第三実施形態に適用されるポインタ管理テーブル１４のデータ構成を示している。
【００７７】
ポインタのそれぞれは、任意の２つの設定値のいずれかに設定されるフラグ情報を有している。
ここでは、フラグ情報は、“Ｎｏ”または“Ｒｅａｄ”が設定されるものとし、第１設定値を“Ｎｏ”として、第２設定値を“Ｒｅａｄ”とする。
【００７８】
演算処理部１６は、入力変数となるポインタのフラグ情報が、第１設定値のとき（“Ｎｏ”のとき）は、ポインタに対応する第二アドレスに格納されている値を読み込んで演算処理を実行していく。
一方、ポインタのフラグ情報が、第２設定値のとき（“Ｒｅａｄ”のとき）は、ポインタに対応する模擬用アドレスに格納されている値を読み込んで演算処理を実行していく。
【００７９】
具体的な動作について図１０を用いて説明する。
ここでは、ポインタ“００１０”（線番：Ａ００１）の模擬用アドレスに模擬値を格納し、この模擬値を命令コード１の入力値として模擬を行う場合について検討する。なお、ポインタ“００１０”のフラグ情報は、“Ｒｅａｄ”が設定されているとする。
【００８０】
まず、演算処理部１６は、ポインタ管理テーブル１４を参照して、ポインタ“００１０”のフラグ情報を確認する。
【００８１】
ポインタ“００１０”のフラグ情報が“Ｒｅａｄ”に設定されているため、ポインタ管理テーブル１４から模擬用アドレスを読み取る。
そして、演算処理部１６は、模擬用アドレスに格納された模擬値を入力値として命令コード１を実行する。
【００８２】
線番：Ａ００１が制御装置１０でのみ設定される固有線番である場合、第二アドレスに模擬値を設定しても制御装置１０によって書き込まれてしまい、模擬を実施することはできない。
このように、フラグ情報を設定して、模擬用アドレスに格納された模擬値を読み込むことにより、制御装置１０でのみ設定される固有線番について模擬を実施することが可能となる。
【００８３】
図１２（Ｂ）は、第三実施形態に係る演算処理部１６による、命令コードの処理フローを示している。
まず、演算処理部１６は、ポインタ管理テーブル１４を参照して、フラグ情報を確認する（Ｓ３０）。
【００８４】
そして、フラグ情報に“Ｒｅａｄ”が設定されている場合は（Ｓ３０：ＹＥＳ）、入力側ポインタに対応する模擬用アドレスを読み込む（Ｓ３２）。
一方、フラグ情報に“Ｎｏ”が設定されている場合は（Ｓ３０：Ｎｏ）、入力側ポインタに対応する第二アドレスを読み込む（Ｓ３１）。
【００８５】
そして、演算処理部１６は、読み込んだアドレスから入力値を読み込んで（Ｓ３３）、命令処理を実行する（Ｓ３４）。
【００８６】
演算処理部１６は、ポインタ管理テーブル１４を参照して、命令コードの出力側ポインタに対応する第二アドレスを読み込む（Ｓ３５）。
そして、読み込んだアドレスに出力値の書き込みを行い（Ｓ３６）、命令コードを終了する。
【００８７】
フラグ情報を“Ｒｅａｄ”に設定して、模擬用アドレスに格納された模擬値を読み込むことにより、制御装置１０でのみ設定される固有線番について模擬を実施することが可能となる。
【００８８】
（第四実施形態）
図１３（Ａ）は、第四実施形態に適用されるポインタ管理テーブル１４のデータ構成を示している。第二実施形態と同様な構成については、記載を省略して説明する（適宜、図１参照）。
【００８９】
ポインタのそれぞれは、任意の３つの設定値のいずれかに設定されるフラグ情報を有している。
ここでは、フラグ情報は、“Ｎｏ”、“Ｒｅａｄ”及び“Ｗｒｉｔｅ”のいずれか一つが設定されるものとし、第１設定値を“Ｎｏ”として、第２設定値を“Ｒｅａｄ”とし、第３設定値を“Ｗｒｉｔｅ”とする。
【００９０】
演算処理部１６は、入出力変数となるポインタのフラグ情報が第１設定値のとき（“Ｎｏ”のとき）は、ポインタに対応する第二アドレスに格納された値を読み込みまたは第二アドレスに出力値を書き込んで演算処理を行う。
【００９１】
一方、入力変数となるポインタのフラグ情報が第２設定値のとき（“Ｒｅａｄ”のとき）は、ポインタに対応する模擬用アドレスに格納された値を読み込んで演算処理を行う。
【００９２】
一方、出力変数となるポインタのフラグ情報が第３設定値のときは（“Ｗｒｉｔｅ”のとき）、ポインタに対応する模擬用アドレスに出力値を書き込んで演算処理を行う。
【００９３】
これにより、入力側及び出力側の変数となるポインタ全てについて模擬値を設定して、
模擬することが可能となる。
【００９４】
図１３（Ｂ）は、第四実施形態に係る演算処理部１６による、命令コードの処理フローを示している。
まず、演算処理部１６は、ポインタ管理テーブル１４を参照して、フラグ情報を確認する（Ｓ４０）。
【００９５】
そして、フラグ情報に“Ｒｅａｄ”が設定されている場合は（Ｓ４０：ＹＥＳ）、入力側ポインタに対応する模擬用アドレスを読み込む（Ｓ４２）。
一方、フラグ情報に“Ｎｏ”が設定されている場合は（Ｓ４０：Ｎｏ）、入力側ポインタに対応する第二アドレスを読み込む（Ｓ４１）。
【００９６】
そして、演算処理部１６は、読み込んだアドレスから入力値を読み込んで（Ｓ４３）、命令処理を実行する（Ｓ４４）。
【００９７】
命令処理終了後、演算処理部１６は、ポインタ管理テーブル１４を参照して、フラグ情報を確認する（Ｓ４５）。
【００９８】
そして、フラグ情報に“Ｗｒｉｔｅ”が設定されている場合は（Ｓ４５：ＹＥＳ）、出力側ポインタに対応する模擬用アドレスを読み込む（Ｓ４７）。
一方、フラグ情報に“Ｎｏ”が設定されている場合は（Ｓ４５：Ｎｏ）、出力側ポインタに対応する第二アドレスを読み込む（Ｓ４６）。
【００９９】
そして、演算処理部１６は、読み込んだアドレスに出力値の書き込みを行い（Ｓ４８）、命令コードを終了する。
フラグ情報を“Ｒｅａｄ”または“Ｗｒｉｔｅ”を設定することにより、入力側及び出力側の変数となるポインタ全てについて模擬値を設定して、模擬することが可能となる。
【０１００】
以上述べた各プラント制御装置（変形例を含む）によれば、各線番に対して、線番の値を格納したアドレスに対応するポインタを割り当て、制御プログラムの変数をポインタに変換し、ポインタ管理テーブルを参照して制御プログラムを実行することにより、線番の値が格納されたアドレス情報が変更された場合であっても、制御プログラム自体を修正する必要がないため、制御プログラムの変更管理を容易なものにすることができる。
【０１０１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０２】
１０  プラント制御装置
１１  入出力部
１２  線番設定部
１３  アドレス割当部
１４  ポインタ管理テーブル
１５  ポインタ割当部
１６  演算処理部
１７  メモリ
１７ａ  ユーザメモリ
１７ｂ  プログラム格納メモリ
１８  プログラム編集部
１９  線番設定データ
２０  アドレス割当データ
２１  ポインタ割当データ
２２  線番更新部
２３  外部機器
２４  保守ツール
【図１】
2015014883.tif 000003
【図２】
2015014883.tif 000004
【図３】
2015014883.tif 000005
【図４】
2015014883.tif 000006
【図５】
2015014883.tif 000007
【図６】
2015014883.tif 000008
【図７】
2015014883.tif 000009
【図８】
2015014883.tif 000010
【図９】
2015014883.tif 000011
【図１０】
2015014883.tif 000012
【図１１】
2015014883.tif 000013
【図１２】
2015014883.tif 000014
【図１３】
2015014883.tif 000015