(57)【要約】【課題】  制御変数が変化した際に、その変化の原因となった制御変数を自動的に検出し人手による解析を不要にできる制御装置を提供することである。【解決手段】  複数の命令語が図式言語で記述された制御プログラムを実行する制御プログラム実行回路１４は、前回のスキャン実行時と今回のスキャン実行時における命令語毎の入力情報を入力情報メモリ２０に記憶すると共に、前回の演算後と今回の演算後の出力情報を出力情報メモリ２１に記憶させ、前回と今回の入出力情報を比較して、ある出力情報が変化した原因を探索する。【選択図】  図１
2006039799.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令語が図式言語で記述された制御プログラムを実行する制御プログラム実行回路を有した制御装置において、前記制御プログラム実行回路は、スキャン実行時における命令語毎の入力情報を記憶する入力情報メモリと、演算後の出力情報を記憶する出力情報メモリとを備え、前回のスキャン実行時と今回のスキャン実行時における命令語毎の入力情報を前記入力情報メモリに記憶すると共に前回の演算後と今回の演算後の出力情報を前記出力情報メモリに記憶させ、ある出力情報が変化した原因を探索できるようにしたことを特徴とする制御装置。
【請求項２】
前記制御プログラム実行回路は、前記出力情報が変化した際に前記入力情報メモリに記憶された入力情報及び前記出力情報メモリに記憶された出力情報を他のメモリへ移動させ記憶させることを特徴とする請求項１記載の制御装置。
【請求項３】
前記制御プログラム実行回路は、前記出力情報の変化の原因を探索する際に、制御プログラムを逆順にコンパイルして実行することを特徴とする請求項１記載の制御装置。
【請求項４】
前記制御プログラム実行回路は、制御プログラムを逆順にコンパイルして実行する際に使用する命令のオペランドに、前記入力情報メモリと前記出力情報メモリとを使用し、前記命令の実行により、前記出力情報が変化した原因を探索することを特徴とする請求項３記載の制御装置。
【請求項５】
前記制御プログラム実行回路は、制御プログラムの命令のうちタイマ命令やファンクションブロック命令への入力が変化した際に、前記入力情報メモリに記憶された入力情報及び前記出力情報メモリに記憶された出力情報を他のメモリへ移動させることを特徴とする請求項１記載の制御装置。
【請求項６】
前記制御プログラム実行回路は、制御プログラムのインターロック条件に使用する変数領域を制限することで前回スキャン時の変数の保存を容易にしたことを特徴とする請求項１記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセスを制御する制御装置に関する。
【背景技術】
【０００２】
例えば、鉄鋼、製紙プラントや自動車産業などの組立作業を含むＦＡ分野、化学プラントなどのＰＡ分野、そして上下水道システム他の公共システムなどの産業用システム等のプロセスの制御には、演算制御装置で制御プログラムを実行させる制御装置が広く使用されている。
【０００３】
一般に、プロセスを制御する制御装置では制御変数が変化した際にその原因を解析する必要が生じることが多い。これは、出力に対するインターロック条件が成立しなくなったり、エラーが発生したりした際にどのような変数の変化やまたは制御プログラムの不適合が原因でその現象が発生したのかを解析する必要があるからである。
【０００４】
図１０は、制御装置で出力変数の変化を解析する際の制御プログラムの一例の説明図である。図１０において、Ｘ１、Ｘ３、Ｘ４、Ｘ６、Ｘ８、Ｘ９はａ接点、Ｘ２、Ｘ５はｂ接点、Ｙ７、Ｙ１１はコイルである。いま、今回１となっている（ＯＮしている）Ｙ７が１から０に変化したとした場合に、その原因は、Ｘ１、Ｘ４、Ｘ５、Ｘ６のように今回の出力が１である接点命令の出力のどれかが０になったからだと考えられる。従来の制御装置では、制御変数が変化した際に、その時点での制御変数の内容を保存しておき、オペレータが制御プログラムを辿ることにより解析を行っていた。
【０００５】
故障診断を有した制御装置としては、状態遷移に要する時間を監視することで異常を判断し、各状態遷移が順不同に発生する箇所または監視箇所相互に相関関係を有する箇所を含む場合であっても異常が監視できるようにしたものがある（例えば特許文献１参照）。
【特許文献１】特開平４−１１３７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１のものでは、故障とみなされる出力の原因を探索する機能を有していないので、制御変数の変化時に解析対象の制御変数の値を保存する必要があり、また、人手で変化の原因を解析する必要がある。従って、制御プログラムが複雑になると解析が困難であり、非常に時間を要する。
【０００７】
本発明の目的は、制御変数が変化した際に、その変化の原因となった制御変数を自動的に検出し人手による解析を不要にできる制御装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明の制御装置は、複数の命令語が図式言語で記述された制御プログラムを実行する制御プログラム実行回路を有した制御装置において、前記制御プログラム実行回路は、スキャン実行時における命令語毎の入力情報を記憶する入力情報メモリと、演算後の出力情報を記憶する出力情報メモリとを備え、前回のスキャン実行時と今回のスキャン実行時における命令語毎の入力情報を前記入力情報メモリに記憶すると共に前回の演算後と今回の演算後の出力情報を前記出力情報メモリに記憶させ、ある出力情報が変化した原因を探索できるようにしたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、前回のスキャン実行時と今回のスキャン実行時における命令語毎の入力情報を入力情報メモリに記憶させ、前回の演算後と今回の演算後の出力情報を出力情報メモリに記憶させるので、注目する制御変数の内容が変化した原因を探索できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を説明する。図１は本発明の実施の形態に係わる制御装置のブロック構成図である。制御装置１はプロセスから入出力モジュール２を介してプロセス信号を入力し、各種の制御演算を行って必要に応じて演算結果等の情報をモニタ装置３に出力する。
【００１１】
入出力モジュール２から入力されたプロセス信号は、Ｉ／Ｏインターフェース１７を介してシステムバス１９に送信される。ＣＰＵ１１はプログラムメモリ１２に記憶されたプログラムに従ってシステムバス１９に接続された各要素を制御する。制御プログラム実行回路１４は制御プログラムメモリ１５に記憶された制御プログラムを実行する。制御データメモリ１６には制御プログラムの実行に必要な制御データが記憶され、制御プログラム実行回路１４で実行された演算結果は必要に応じてデータメモリ１３に記憶されると共に通信インターフェース１８を介してモニタ装置３に出力される。データメモリ１３には必要に応じてプロセス信号も記憶される。
【００１２】
制御プログラム実行回路１４は、入力情報メモリ２０及び出力情報メモリ２１とを備えており、入力情報メモリ２０には制御プログラムのスキャン実行時における命令語毎の入力情報が記憶され、出力情報メモリ２１には制御プログラムの演算後の命令語毎の出力情報が記憶される。
【００１３】
図２は制御プログラム実行回路１４のブロック構成図である。制御プログラム実行回路１４は、アドレスバッファ２２及びデータバッファ２３がシステムバス１９に接続され、アドレスバッファ２２は命令カウンタ２４及びバス制御回路２５により接続されている。また、データバッファ２３はデータレジスタ２６及び命令レジスタ２７に接続され、命令デコーダ２８は命令レジスタ２７及び演算回路２９に接続され、データレジスタ２６も演算回路２９に接続されている。演算回路２９には分流スタック３０及び合流スタック３１が接続され、さらに、入力情報メモリ２０ａ、２０ｂ及び出力情報メモリ２１ａ、２１ｂが接続されている。
【００１４】
図３は、制御プログラム実行回路１４が実行する制御プログラムの一例を示す説明図である。図３では複数の命令語が図式言語で記述された制御プログラムを示しており、制御プログラム実行回路１４がこのようなラダー回路を実行する際に、各ラダー命令の入力情報を入力情報メモリ２０ａ、２０ｂに記憶し、各ラダー命令の出力情報を出力情報メモリ２１ａ、２１ｂに記憶する。２組の入力情報メモリ２０ａ、２０ｂと出力情報メモリ２１ａ、２１ｂとを設けているのは、前回のスキャン実行時の入出力情報と今回のスキャン実行時の入出力情報とを保存できるようにしておくためである。
【００１５】
図４は、入力情報メモリ２０の構成図である。図３に示したラダー回路を命令毎にメッシュ状に区分し、それに対応させて各ラダー命令が行と列で指定されるセルに配置されるように構成する。ここでは、各ラダー命令が行と列で指定されるセルに配置されるような図式言語を仮定しているが、その他の配置の図式言語でも同様に構成可能である。また、入力情報メモリ２０と出力情報メモリ２１との形式は同じである。
【００１６】
制御プログラム実行回路１４は、ラダー命令の実行時にラダー命令への入力情報と演算後の出力情報とを入力情報メモリ２０及び出力情報メモリ２１へ格納する。そして、注目する出力変数の内容が変化した際に、２組の入力情報メモリ２０ａ、２０ｂと出力情報メモリ２１ａ、２１ｂとの内容を利用して、出力変数の変化の原因を探索することになる。
【００１７】
また、制御プログラム実行回路１４は、出力情報が変化した際に入力情報メモリ２０に記憶された入力情報及び出力情報メモリ２１に記憶された出力情報を他のメモリ、例えばデータメモリ１３へ移動させ記憶させる。
【００１８】
図５はその際に使用する変化検出命令の説明図である。この変化検出命令は、通常のコイル命令と同様の動作を行うと共に、入力情報が変化した際に、その時点での２組の入力情報メモリ２０ａ、２０ｂおよび出力情報メモリ２１ａ、２１ｂの内容を制御装置１の別メモリ（例えばデータメモリ１３の一部）へコピーして退避させる。変化検出命令は、入力が０から１への変化を検出する命令と１から０への変化を検出する少なくとも２種の命令とを用意する。ここでは、Ｃ０命令が１から０への出力変化を検出し、Ｃ１命令が０から１への出力変化を検出するものとする。
【００１９】
これにより、注目する制御変数に対して出力を行うコイル命令などをこの変化検出命令に置換することで、制御変数への入力の変化を検出することが可能となり、その時点における変化検出命令以前の動作状況をすべて保存することが可能となる。従って、下流の手段で制御変数の変化原因を探索することが可能となる。
【００２０】
次に、制御プログラム実行回路１４は、出力情報の変化の原因を探索する際に、制御プログラムを逆順にコンパイルすると共に、接点命令やコイル命令を変換検出原因探索用の命令に変換する。この接点命令やコイル命令を変換検出原因探索用の命令に変換した原因探索用制御プログラムを実行させることにより、変換原因となった命令およびオペランドを自動的に検出可能とする。
【００２１】
図６は元の制御プログラムの一例の説明図であり、図７は図６の制御プログラムを逆順にコンパイルした原因探索用制御プログラムの一例の説明図である。ただし、図７で使用されている接点命令やコイル命令は逆順実行用の特殊命令である。この場合、逆順にコンパイルされた制御プログラムに使用する命令を表１のように構成する。表１には、制御装置１が使用する逆順実行用命令の動作説明を記載している。
【表１】
2006039799.tif 000003
【００２２】
例えば、通常のＡ接点やＢ接点は逆順実行用の接点命令に変換され、逆順実行用の接点命令の動作は、制御変数が１から０に変化した際の原因を検出する場合には、命令のオペランドに入力情報メモリ２０や出力情報メモリ２１を使用する。
【００２３】
今回のスキャン実行用の出力情報メモリ２１ｂから今回の出力を読み出し、前回のスキャン実行用の出力情報メモリ２１ａから前回の出力を読み出し、今回のスキャン実行用の入力情報メモリ２０ｂから今回の入力を読み出す。そして前回の出力が１で今回の出力が０、かつ今回入力が１かどうかを判定する。このような命令が発見されれば、その命令が出力変数を１から０に変化させた原因の一つと考えられるので、その命令およびオペランドを原因の一つとして表示用リストに追加する。
【００２４】
これらの命令はモニタ装置３に送信され、オペレータ用に表示される。以上の説明では、なるべく上流の原因を発見するために、今回の入力情報が１であることも条件としているが、単に原因となる候補を探索するだけであれば、単純に出力情報の変化だけを比較するだけで十分である。このようにして発見されたオペランドが入出力変数（入出力装置に対応する変数）や伝送変数であれば、それらが出力変数の変化の原因といえるが、オペランドが内部変数の場合には、それらの内部変数を１から０に変化させた原因が他にもあると考えられるので、さらにその内部変数に出力している命令を検索し、その上流に向かって探索を続ける（実際には逆順にコンパイルしてあるので、発見された出力命令から順に実行していけばよいことになる）。ここでは、出力変数が１から０になった場合についてだけ説明するが、０から１に変化した場合についても同様に探索可能である。
【００２５】
次に、逆順にコンパイルした制御プログラムを実行する際に、単純なラダー命令については、前回の出力と今回の出力及び今回の入力を判定するだけでオペランドの内容の変化が検出可能であるが、オフディレイタイマの出力などのように入力の影響が時間遅れを伴って出力に現れる場合には特別な処理が必要となる。オフディレイタイマ命令などの入力の変化を捕らえるためには、全スキャン実行における全命令の入出力情報を記憶させておくのも一方法であるが、膨大なメモリ容量を要するので現実的ではない。
【００２６】
ここでは、変化検出命令（CHGDTCT命令）を使用することとする。変化検出命令（CHGDTCT命令）は、入力が変化した際に入力情報メモリと出力情報メモリのコピーを作成する機能をもつ。図８は変化検出命令（CHGDTCT命令）を使用した制御プログラムの説明図である。
【００２７】
図８に示すように、時間的に遡って変化検出を行いたい命令の入力側に本命令を配置しておき、対象とする命令の入力が変化した際に、その時点での入力情報メモリと出力情報メモリの内容を別メモリへ保存し、全命令の入出力情報を対象とした命令の情報を保存しておく。そして、後の逆コンパイルプログラム実行時に、オフディレイタイマ命令が出力変数の変化要因だった場合に、変化検出命令（CHGDTCT命令）で保存しておいた入出力情報を使用してさらに上流の命令での変化要因を探索していくことが可能となる。
【００２８】
このように、注目する制御変数の内容が変化した原因を専用命令を使用した制御プログラムを逆順に実行することで探索可能となり、制御プログラムの動作解析にかかる労力を軽減できる。
【００２９】
次に、図９は、制御プログラム実行回路により制御プログラムのインターロック条件に使用する変数領域を制限する場合のシーケンス回路の説明図である。図９では、Ｑ５という出力を作成するためのシーケンス回路を示している。ここで、Ｑ５の出力のためのインターロック条件となっている変数は全て変数名“ＩＬ”で始まる変数としている。インターロック用の制御プログラム作成時に、このように指定された変数だけを使用することで、前回スキャン時の変数の内容をコピーする作業を軽減することが可能である。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態に係わる制御装置のブロック構成図。
【図２】本発明の実施の形態における制御プログラム実行回路のブロック構成図。
【図３】本発明の実施の形態における制御プログラム実行回路が実行する制御プログラムの一例を示す説明図。
【図４】本発明の実施の形態における入力情報メモリの構成図。
【図５】本発明の実施の形態における制御プログラム実行回路により出力情報が変化した際に入出力情報メモリ入出力情報を他のメモリへ移動させ記憶させる際に使用する変化検出命令の説明図。
【図６】本発明の実施の形態における制御プログラム実行回路により出力情報の変化の原因を探索する際に制御プログラムを逆順にコンパイルするときの元の制御プログラムの一例の説明図。
【図７】図６の制御プログラムを逆順にコンパイルした原因探索用制御プログラムの一例の説明図。
【図８】本発明の実施の形態における制御プログラム実行回路で実行する変化検出命令（CHGDTCT命令）を使用した制御プログラムの説明図。
【図９】本発明の実施の形態における制御プログラム実行回路により制御プログラムのインターロック条件に使用する変数領域を制限する場合のシーケンス回路の説明図。
【図１０】従来の制御装置で出力変数の変化を解析する際の制御プログラムの一例の説明図。
【符号の説明】
【００３１】
１…制御装置、２…モニタ装置、３…入出力モジュール、１１…ＣＰＵ、１２…プログラムメモリ、１３…データメモリ、１４…制御プログラム実行回路、１５…制御プログラムメモリ、１６…制御データメモリ、１７…Ｉ／Ｏインタフェース、１８…通信インタフェース、１９…システムバス、２０…入力情報メモリ、２１…出力情報メモリ、２２…アドレスバッファ、２３…データバッファ、２４…命令カウンタ、２５…バス制御回路、２６…データレジスタ、２７…命令レジスタ、２８…命令デコーダ、２９…演算回路、３０…分流スタック、３１…合流スタック
【図１】
2006039799.tif 000004
【図２】
2006039799.tif 000005
【図３】
2006039799.tif 000006
【図４】
2006039799.tif 000007
【図５】
2006039799.tif 000008
【図６】
2006039799.tif 000009
【図７】
2006039799.tif 000010
【図８】
2006039799.tif 000011
【図９】
2006039799.tif 000012
【図１０】
2006039799.tif 000013