(57)【特許請求の範囲】
【請求項１】
マルチタスクを行う第一の処理装置及び第二の処理装置を有し、
前記第一の処理装置で実行されるタスクは、その処理結果及び前記第二の処理装置で実行されるタスクの処理結果を照合し、
一致している場合は前記処理結果を出力し、
不一致の場合は前記処理結果の出力を停止し、
前記第二の処理装置で実行されるタスクは、その処理結果及び前記第一の処理装置で実行されるタスクの処理結果を照合する二重系の制御装置において、
前記第一の処理装置で実行されるタスクは前記照合の後から次のタスクのためのデータ入力の前の時間帯で、タスク切り換えを禁止し、
前記第二の処理装置で実行されるタスクは前記照合の後から次のタスクのためのデータ入力の前の時間帯で、タスク切り換えを禁止すること
を特徴とする二重系の制御装置。
【請求項２】
請求項１に記載の二重系の制御装置において、
タスクの各々は、該タスクに対応する識別番号を備え、
前記第一の処理装置で実行されるタスクは、タスク切り換えを禁止する前記時間帯で、かつ前記処理結果の出力を行う前に、前記識別番号を比較し、
前記識別番号が一致している場合に、前記照合の結果に応じて前記処理結果の出力を行うこと
を特徴とする二重系の制御装置。
【請求項３】
請求項２に記載の二重系の制御装置において、
前記第一の処理装置で実行されるタスクは、タスク切り換えを禁止する前記時間帯で、かつ前記処理結果の出力を行う前に、前記識別番号を比較し、
前記識別番号が不一致の場合に、前記識別番号の比較結果を消去し、タスク切り換えを許可すること
を特徴とする二重系の制御装置。
【請求項４】
請求項３に記載の二重系の制御装置において、
前記第一の処理装置で実行されるタスク及び前記第二の処理装置で実行されるタスクの各々は、前記タスク切り換えの許可を行った後、
前記タスク切り換えの禁止、前記識別番号の比較を行うこと
を特徴とする二重系の制御装置。
【請求項５】
請求項２ないし請求項４のいずれか一つに記載の二重系の制御装置において、
前記第一の処理装置で実行されるタスクは、前記処理結果の出力を行った後であって、タスク切り替えを許可する前に、
前記識別番号の比較結果を消去すること
を特徴とする二重系の制御装置。
【請求項６】
請求項１ないし請求項５のいずれか一つに記載の二重系の制御装置において、
前記第一の処理装置で実行されるタスク及び前記第二の処理装置で実行されるタスクの各々は、
照合をする際に、相手の処理装置の演算処理が終了するまで、前記相手の処理結果の読み出しを繰り返すこと
を特徴とする二重系の制御装置。
【請求項７】
マルチタスクを行う第一の処理装置及び第二の処理装置の二重系の制御方法において、
前記第一の処理装置で実行されるタスクは、その処理結果及び前記第二の処理装置で実行されるタスクの処理結果を照合し、
一致している場合にタスクの切り換えを禁止し、
前記第一の処理装置及び前記第二の処理装置の各々の処理するタスクに備えられ、該タスクを識別可能な識別番号を各々比較し、
一致している場合には所定の処理を行ってタスク切り替えを許可し、
不一致の場合には前記識別番号の比較結果を消去してタスク切り替えを許可すること
を特徴とする二重系の制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置及びその制御方法に関する。
【背景技術】
【０００２】
高い安全性が求められる制御装置では、フェールセーフな仕組みが用いられる。例えば、処理装置を二重化し、各々の装置の処理結果を照合・比較し、処理結果が一致した場合にのみ外部に出力する技術がある。この場合、片方の装置が故障した場合には外部に誤った出力がされないため、安全性が担保される。
【０００３】
本技術分野の背景技術として、特開２００３−１７７８０１号公報（特許文献１）がある。この公報には「自己診断を行うと共に、他の制御演算部から取り込んだ演算結果信号と自己演算結果信号との相互診断を行い、これらの正常／異常の自己診断結果と正常／異常の相互診断結果とを外部判定回路に送出する診断手段と、を具え、ＰＩ／Ｏユニットは、被制御対象と各制御演算部とをつなぐ経路毎に直列に第１、第２の開閉路が介在し、第１の開閉路は対応する制御演算部の出力手段が実制御系となるべき制御信号により閉となり、待機系のとき開となる様に制御を受け、外部判定回路は、各制御演算部に対応した判定部を具え、各判定部は、対応する制御演算部からの自己診断結果と非対応の制御演算部からの自己診断結果と相互診断結果とを取込み、対応制御演算部の自己診断結果が異常のときに又は非対応の制御演算部の自己診断結果の全てが正常でかつ非対応の制御演算部での当該対応の制御演算部への相互診断結果の全てが異常のときに、対応するＰＩ／Ｏユニットの第２開閉路をそれ迄の閉から開とする制御信号を発生するものとする」とある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１７７８０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前記特許文献１には、複数の制御演算部で同一の処理を実行し、結果を照合（相互診断）することで誤動作を検知して外部へのデータの出力を停止することにより、制御演算部の故障による誤ったデータの出力を防止する多重化装置が記載されている。
【０００６】
しかし、特許文献１の多重化装置では、複数のタスクを時分割で処理するマルチタスク処理を行った場合に、タスク切り換えによって複数の処理装置間で外部へのデータの出力もしくは出力の停止あるいは外部からのデータの入力に必要な処理を行う時刻にずれが生じ、誤った処理が行われる可能性がある。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、例えば特許請求の範囲に記載の構成を採用する。
【０００８】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、マルチタスクを行う第一の処理装置及び第二の処理装置を有し、第一の処理装置の処理結果及び第二の処理装置の処理結果を照合し、一致している場合は処理結果を出力し、不一致の場合は処理結果の出力を停止する二重系の制御装置において、第一の処理装置及び第二の処理装置の各々は、所定の処理を行う前後の時間帯で、タスク切り換えを禁止することを特徴とする
【発明の効果】
【０００９】
本発明によれば、タスク切り換えによって複数の処理装置間で外部へのデータの出力、あるいは出力の停止、あるいは外部からのデータの入力処理の時刻にずれが生じるのを抑制し、信頼性を向上させる制御装置を提供できる。
【００１０】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】本発明を適用した制御システムの構成図の第１の例である。
【図２】図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第１の実施例である。
【図３】図２の処理フローを採用した場合に、１つのタスクを実行中に別のタスクが起動された時の処理の実行順序の例である。
【図４】図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第２の実施例である。
【図５】図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第３の実施例である。
【図６】図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第４の実施例である。
【図７】図４の処理フローを採用した場合に、出力番号比較が一致せず無限ループとなるケースの処理の実行順序の例である。
【図８】図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第５の実施例である。
【図９】図８の処理フローを採用した場合に、図７の無限ループとなるケースを防止できることを示す図である。
【図１０】本発明を適用した制御システムの構成図の第６の実施例である。
【図１１】図１０の制御システムの処理装置１００１、１００２で１つのタスクを実行する時の処理フローの例である。
【図１２】本発明を適用した制御システムの構成図の第７の実施例である。
【図１３】図１２の制御システムの処理装置１２０１、１２０２で１つのタスクを実行する時の処理フローの例である。
【発明を実施するための形態】
【００１２】
まず、具体例を用いて、マルチタスクを行う従来の多重系処理装置のケースを説明する。
【００１３】
複数の制御演算部Ａ、Ｂ、Ｃの各々でタスク１とタスク２という２つのタスクを実行するケースを考える。タスク２はタスク１より優先度が高く、タスク１の実行中にタスク２を起動する条件が成立した場合には、タスク１の処理を中断してタスク２の処理を開始するものとする。タスク２の起動する条件としては、タイマによる一定周期の起動や、ＰＩ／Ｏユニットからの割り込みによる起動などが考えられる。
【００１４】
複数の制御演算部Ａ、Ｂ、Ｃの各々の間には動作タイミングのずれがあるため、制御演算部Ａではタスク１の相互診断終了、相互診断結果の出力、ＰＩ／Ｏユニットへのデータの出力を行ってからタスク２の起動が行われるのに対し、制御演算部Ｂ、Ｃでは相互診断終了後、相互診断結果の出力より前にタスク２の起動が行われる可能性がある。この場合、制御演算部Ｂ、Ｃで相互診断により制御演算部Ａの異常を検出していた場合でも相互診断結果の出力が行われないため、ＰＩ／Ｏユニットへのインタフェースの接点が閉じたままとなり、制御演算部Ａからの異常なデータがＰＩ／Ｏユニットに出力される可能性がある。
【００１５】
更に、制御演算に用いるデータの入力タイミングに関する問題もある。複数の制御演算部の間には動作タイミングのずれがあるため、制御演算部Ａでは入力を行ってからタスク２が起動されるのに対し、制御演算部Ｂ、Ｃでは入力を行う前にタスク２が起動される可能性がある。この場合、制御演算部Ｂ、Ｃではタスク２が終了してタスク１に戻った後に入力が行われるが、制御演算部Ａとは入力を行う時刻に大きな差があるため、入力値に大きな乖離が生じ、制御演算部Ａが異常であると誤って判定される可能性がある。
【００１６】
上述のようにマルチタスク処理を行う多重系の処理を行う際に、タスクの割り込みによって各系で処理タスクが異なる場合がある。そこで本願は、処理タスクを揃えて実行すべき処理動作の前後で、自系のタスク切換を一時的に禁止することで、システム全体の処理タスク及び処理動作のタイミングを揃えるという技術思想に基づくものである。また、タスク切換を禁止中に、他系と処理タスク・データが異なっている場合は、自系のタスク切換を許可することで、他系との処理タスクを揃える点も更にポイントである。
【００１７】
以下、実施例を図面を用いて説明する。
【実施例１】
【００１８】
図１は、本発明を適用した制御システムの構成図の第１の実施例である。
【００１９】
本実施例の制御システムは、第１の処理装置１０１、第２の処理装置１０２、出力停止スイッチ１３１、スイッチ制御回路１３４、制御端末１３２、機器１３３を有する。
【００２０】
第１の処理装置１０１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、送信回路１１４、受信回路１１５、インタフェース回路１１６を有する。
【００２１】
第２の処理装置１０２は、ＣＰＵ１２１、ＲＡＭ１２２、ＲＯＭ１２３、受信回路１２５、インタフェース回路１２６を有する。ＣＰＵ１１１、及びＣＰＵ１２１は複数のタスクを時分割で処理するマルチタスク処理を行う機能を有する。
【００２２】
受信回路１１５は、伝送路１４５を介して制御端末１３２からデータを受け取り、バス１１７を介してＲＡＭ１１２に書き込む。
【００２３】
ＣＰＵ１１１はＲＯＭ１１３に格納されたプログラムに従い、以下の処理を実行する。ＣＰＵ１１１はまず、受信回路１１５がＲＡＭ１１２に書き込んだデータをバス１１７を介して読み出し、予め定められた制御処理を行った後、処理結果をバス１１７を介してＲＡＭ１１２に書き込む。
【００２４】
ＣＰＵ１１１はまた、バス１１７、インタフェース回路１１６、伝送路１４９、インタフェース回路１２６、バス１２７を介して、ＲＡＭ１２２に格納されたＣＰＵ１２１の処理結果を読み出し、自身の処理結果と照合する。なお、照合する処理結果には、どのタスクの処理結果であるかを示す情報や、１つのタスクで複数回照合を行う場合にはそれらを識別するための情報を含むものとする。これらの情報は、後述するデータの識別番号と等価な情報となるが、情報の表現方法はデータの識別番号と同じでも良いし、識別可能であれば異なっていても良い。処理結果がいずれのタスクのものかが分かればよいので、タスク自体に対応する識別番号を含ませても良いし、ＣＰＵ１１１、１２１がタスクを処理する際に出力結果に対応するタスクを識別可能な識別番号を付加、或いは別個に出力してもよい。
【００２５】
照合が終了すると、ＣＰＵ１１１は、インタフェース回路１１６、伝送路１４７を介して照合結果をスイッチ制御回路１３４に書き込む。照合結果が一致を示している場合は、ＣＰＵ１１１は、ＲＡＭ１１２に書き込んだ処理結果から、予め定められた形式にのっとった送信データを生成し、ＲＡＭ１１２に書き込む。一方、照合結果が不一致を示している場合は、ＣＰＵ１１１は、処理を停止する。
【００２６】
ＣＰＵ１１１はまた、後述する処理フローに従い、タスクの識別番号やデータの識別番号をＲＡＭ１１２に書き込む。ＣＰＵ１１１はまた、後述する処理フローに従い、バス１１７、インタフェース回路１１６、伝送路１４９、インタフェース回路１２６、バス１２７を介して、ＲＡＭ１２２に格納されたタスクの識別番号やデータの識別番号を読み出す。
【００２７】
なお、本実施例ではＣＰＵ１１１で実行するソフトウェアにより処理結果の照合を行うが、ハードウェアで照合を行う方法も考えられる。これによって、処理速度を向上することが可能である。
【００２８】
また、本実施例ではＣＰＵ１１１で実行するソフトウェアによりＲＡＭ１２２に格納されたＣＰＵ１２１の処理結果を読み出すが、ハードウェアでＲＡＭ１２２に格納された処理結果をＲＡＭ１１２に転送し、ＣＰＵ１１１はＲＡＭ１１２に転送されたＣＰＵ１２１の処理結果を読み出すという方法も考えられる。これによって、処理速度を向上することが可能である。
【００２９】
インタフェース回路１１６は、バス１１７を介してＣＰＵ１１１から要求を受け取ると、伝送路１４９、インタフェース回路１２６、バス１２７を介して、ＲＡＭ１２２に格納された処理結果、タスクの識別番号、またはデータの識別番号を読み出し、ＣＰＵ１１１に出力する。インタフェース回路１１６はまた、ＣＰＵ１１１から要求を受け取ると、伝送路１４７を介して照合結果をスイッチ制御回路１３４に書き込む。インタフェース回路１１６はまた、伝送路１４９を介してインタフェース回路１２６から要求を受け取ると、ＲＡＭ１１２に格納された処理結果、タスクの識別番号、またはデータの識別番号を読み出し、インタフェース回路１２６に出力する。
【００３０】
送信回路１１４は、ＣＰＵ１１１からバス１１７を介して送信要求を受け取ると、ＣＰＵ１１１がＲＡＭ１１２に書き込んだ送信データをバス１１７を介して読み出し、伝送路１４１を介して出力停止スイッチ１３１に送信する。
【００３１】
受信回路１２５、インタフェース回路１２６の動作はそれぞれ、受信回路１１５、インタフェース回路１１６の動作と同様である。
【００３２】
ＣＰＵ１２１の動作もＣＰＵ１１１の動作とほぼ同じであるが、生成した送信データは使用されないため、送信データの生成を省略することも可能である。
【００３３】
スイッチ制御回路１３４は、伝送路１４７を介してインタフェース回路１１６から受け取った照合結果と、伝送路１４８を介してインタフェース回路１２６から受け取った照合結果に基づき、送信停止スイッチ１３１の制御信号を信号線１４４に出力する。
【００３４】
送信停止スイッチ１３１は、インタフェース回路１１６とインタフェース回路１２６から受け取った照合結果の両方が一致であった場合にＯＮに制御され、いずれか一方、または両方が不一致であった場合はＯＦＦに制御される。
【００３５】
送信停止スイッチ１３１は、信号線１４４から受け取った制御信号に応じてスイッチのＯＮ／ＯＦＦを制御する。スイッチがＯＮの場合、伝送路１４１から受け取った送信データがそのまま伝送路１４２に出力される。スイッチがＯＦＦの場合、伝送路１４２には何も出力せず、伝送路１４２はアイドル状態となる。
【００３６】
制御端末１３２は、伝送路１４２から受け取ったデータに予め定められた処理を行い、機器１３３の制御信号を生成して信号線１４３に出力する。制御端末１３２はまた、予め定められた時間伝送路１４２にデータが出力されない場合には、処理装置１０１、または処理装置１０２に異常が発生したと判断し、機器１３３を安全に停止させるための制御信号を信号線１４３に出力する。制御端末１３２はまた、信号線１４６を介して機器１３３の状態を示す信号を取り込み、予め定められた処理を行った後、伝送路１４５に送信する。
【００３７】
本実施例は制御端末を１つしか有していないが、複数の制御端末を有することも可能である。その場合、必要に応じて伝送路１４２、１４５に中継回路を設ける場合もある。同様に、本発明では二重系の制御装置を用いて説明をしているが、３重系以上の複数の制御装置を用いたものにも適用可能である。
【００３８】
図２は、図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第１の例である。以下、処理装置１０１の動作を説明する。
【００３９】
ステップ２０１では、受信回路１１５がＲＡＭ１１２に書き込んだデータをＣＰＵ１１１がバス１１７を介して読み出す。
【００４０】
ステップ２０２では、ＣＰＵ１１１が予め定められた制御処理を行い、処理結果をバス１１７を介してＲＡＭ１１２に書き込む。
【００４１】
ステップ２０３では、ＣＰＵ１１１がバス１１７、インタフェース回路１１６、伝送路１４９、インタフェース回路１２６、バス１２７を介して、ＲＡＭ１２２に格納されたＣＰＵ１２１の処理結果を読み出し、ＣＰＵ１２１がステップ２０２の処理を終了したかど
うかを確認する。ＣＰＵ１２１がステップ２０２の処理を終了していた場合には、ＲＡＭ
１２２から読み出したＣＰＵ１２１の処理結果と自身の処理結果と照合する。ＣＰＵ１２
１がステップ２０２の処理を終了していなかった場合は、終了するまでＲＡＭ１２２に格
納されたＣＰＵ１２１の処理結果を読み出しを繰り返す。
【００４２】
ステップ２０４では、ＣＰＵ１１１がタスク切り換えを禁止する処理を行う。タスク切り換えは通常ＣＰＵ１１１に内蔵されたタイマや受信回路１１５などからの割り込みが原因で発生するため、ＣＰＵ１１１を割り込み禁止状態とすることでタスク切り換えを禁止することができる。タスク切り換えが禁止されると、タスク切り替え禁止状態の間は、ＣＰＵは処理を開始したタスクの処理を続ける。別の方法として、ＲＡＭ１１２にタスク切り換えを許可するか禁止するかの情報を保持するエリアを設け、タスク切り換えを制御するソフトウェア、またはハードウェアがその情報を参照して必要に応じてタスク切り換えを抑止する方法も考えられる。
【００４３】
ステップ２０５では、ＣＰＵ１１１が、出力するデータの識別番号をバス１１７を介してＲＡＭ１１２に書き込む。データの識別番号の割り振り方としては、少なくとも現在どのタスクを実行中であるかを識別できる必要がある。また、データの識別番号が書き込まれていない状態を表現できることが必要である。なお、ここでは１つのタスクで１回しか出力を行わない例を示したが、１つのタスクで複数回出力を行っても良い。但し、処理装置１０１と処理装置１０２の間の照合処理が正しく行われるためには、複数回の出力の実行順序は処理装置１０１と処理装置１０２で同一である必要がある。その場合、複数回の出力でデータの識別番号は同じものを用いても良いし、違うものを用いても良い。これは、同一のタスクの出力であれば、照合の処理で同一のデータであることの確認が行われるため、データ識別番号で区別する必要が無いためである。
【００４４】
ステップ２０６では、ＣＰＵ１１１がバス１１７、インタフェース回路１１６、伝送路１４９、インタフェース回路１２６、バス１２７を介して、ＲＡＭ１２２に格納された処理装置１０２のデータ識別番号を読み出す。
【００４５】
ステップ２０７では、ＣＰＵ１１１が自装置のデータ識別番号と処理装置１０２のデータ識別番号を比較する。一致していた場合には、ステップ２０８に進み、不一致の場合はステップ２１２に進む。
【００４６】
ステップ２０８では、ＣＰＵ１１１がインタフェース回路１１６、伝送路１４７を介して照合結果をスイッチ制御回路１３４に書き込む。照合結果が一致を示している場合は、ステップ２０９に進む。照合結果が不一致を示している場合は処理を停止する。
【００４７】
ステップ２０９では、ＣＰＵ１１１がＲＡＭ１１２に書き込んだ処理結果から、予め定められた形式にのっとった送信データを生成し、ＲＡＭ１１２に書き込む。その後、ＣＰＵ１１１はバス１１７を介して送信回路１１４に送信要求を出力する。送信回路１１４は送信要求を受け取ると、ＣＰＵ１１１がＲＡＭ１１２に書き込んだ送信データをバス１１７を介して読み出し、伝送路１４１を介して出力停止スイッチ１３１に送信する。
【００４８】
ステップ２１０では、ＣＰＵ１１１がＲＡＭ１１２に書き込んだデータの識別番号を消去する。データの識別番号の消去は、データの識別番号が書き込まれていない状態を示す値を書き込むことによって行う。
【００４９】
ステップ２１１では、タスク切り換えを許可する処理を行う。ステップ２０４でＣＰＵ１１１を割り込み禁止状態とした場合には、割り込み許可状態とする。ステップ２０４でＲＡＭ１１２にタスク切り換えを禁止する情報を書き込んだ場合には、この情報をタスク切り換えを許可する値に書き換える。ステップ２１１が終了すると、本タスクの１回分の処理は終了となる。
【００５０】
ステップ２１２の処理内容は、ステップ２１０の処理内容と同様である。
【００５１】
ステップ２１３の処理内容は、ステップ２１１の処理内容と同様である。ステップ２１３が終了するとステップ２０４に進む。
【００５２】
処理装置１０２の動作も同様である。但し、処理装置１０２には送信回路は存在しないため、ＣＰＵ１２１からの送信要求は出力されない。また、ＣＰＵ１２１が生成した送信データは使用されないため、送信データ生成は行わなくても良い。
【００５３】
図３は、図２の処理フローを採用した場合に、１つのタスクを実行中に別のタスクが起動された時の処理の実行順序の例である。この例では、タスク２の優先度がタスク１より高く、タスク１を実行中にタスク２に切り換わり、タスク２が終了した後にタスク１に戻る。処理装置１０２の方がタスク２の起動が早く行われている。
【００５４】
時刻ａにおいて、処理装置１０１で出力データ識別番号の比較を行うが、処理装置１０２のデータ識別番号は未格納の状態であるため、不一致となる。その後タスク切り換えが許可された時点で処理装置１０１はタスク２への切り換えが発生し、処理装置１０２と同じタスクを実行することが可能となる。
【００５５】
時刻ｃにおいて、処理装置１０１、１０２で出力データ識別番号の比較を行い、両者ともタスク２を実行中であるためデータ識別番号が一致し、照合結果書込以降の処理に進むことができる。
【００５６】
時刻ｄにおいて、処理装置１０１、１０２で出力データ識別番号の比較を行い、両者ともタスク１を実行中であるためデータ識別番号が一致し、照合結果書込以降の処理に進むことができる。
【００５７】
図３に示したとおり、処理装置１０１と処理装置１０２でタスク切り換えのタイミングが異なっていた場合でも、照合結果書込以降の処理は処理装置１０１と処理装置１０２でほぼ同じ時刻に行うことができる。
【実施例２】
【００５８】
図４は、図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第２の実施例を示す図である。図２と同じ符号のステップの処理は、図２と同様である。
【００５９】
図２の処理フローでは、ステップ２０８で照合結果をスイッチ制御回路１３４に書き込んだ後、照合結果を消去する処理を行っていないが、図４の処理フローでは、図２の処理フローに対し、ステップ４１４の照合結果を消去する処理を追加したものである。ステップ４１４では、ＣＰＵ１１１がインタフェース回路１１６、伝送路１４７を介して照合結果を消去するための値をスイッチ制御回路１３４に書き込む。照合結果を消去するための値とは、出力停止スイッチ１３１をＯＦＦにするための値であり、不一致を示す値と同一でも良いし、別の値でも良い。
【００６０】
制御装置１０１と制御装置１０２が正常に動作している期間は、出力停止スイッチ１３１がＯＮのままとなるが、本実施例では、この状態で制御装置１０１が異常となり誤ったデータを伝送路１４１に出力してしまう誤動作があった場合であっても、制御端末１３１で誤ったデータを遮断することができ、より安全性が向上する効果がある。
【実施例３】
【００６１】
図５は、図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第３の実施例である。図２、図４と同じ符号のステップの処理は、図２、図４と同様である。
【００６２】
図４の処理フローでは、出力は処理装置１０１、１０２でほぼ同時刻に行われるが、入力は同時刻に行われるとは限らない。図５では、ステップ２０１の入力を行う前に、タスク切り換えを禁止する処理を行う点が図４と異なる。
【００６３】
ステップ５１５、５１６、５１７、５１８、５１９、５２０、５２１はぞれぞれ、図４のステップ２０４、２０５、２０６、２０７、２１２、２１３、２１０と処理内容は同様である。但し、出力データの識別番号ではなく入力データの識別番号を使用する。入力データの識別番号の決め方は、図２の出力データの識別番号の決め方と同様である。本フローにより、入力も処理装置１０１、１０２でほぼ同時刻に行われることを保証することが可能である。
【実施例４】
【００６４】
図６は、図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第４の実施例を示す図である。図２、図４、図５と同じ符号のステップの処理は、図２、図４、図５と同様である。
【００６５】
図６では、入力を行った後に一度タスク切り換えを許可する点が図５と異なる。これにより、図５の処理フローに対して、ステップ５１５からステップ２１１の期間で、優先度の高いタスクをより早く実行させることが可能となる。
【００６６】
ステップ６２２、６２３は図５のステップ５２１、２１１と処理内容は同様であり、ステップ２０１の入力処理の直後に行われる点が異なる。ステップ６２３でタスクの切り換えを許可することにより、ステップ５１５からステップ６２３の期間により優先度の高いタスクの起動要求があった場合は、ステップ６２３実行後の優先度の高いタスクを実行可能となるため、優先度の高いタスクの起動時刻の遅延を必要最小限とすることが可能である。
【００６７】
図６の処理フローでは、入力データの識別番号と出力データの識別番号を使用するが、両者が区別できるのが好ましい。そのためには、入力と出力で異なる値を割り当てるか、ＲＡＭ１１２、１２２の格納場所を異なる場所とすればよい。
【実施例５】
【００６８】
図８は、図１の制御システムの処理装置１０１、１０２で１つのタスクを実行する時の処理フローの第５の実施例である。図２、図４と同じ符号のステップの処理は、図２、図４と同様である。
【００６９】
まず図７を用いて、図４の処理フローを採用した場合に、出力番号比較が一致せず無限ループとなるケースの処理の実行順序の例を示す。
【００７０】
このケースは、処理装置１０２の照合処理の終了タイミングが処理装置１０１より遅れた場合である。時刻ａ、ｃ、ｅでは処理装置１０１が出力データ識別番号の比較を行うが、処理装置１０２の識別番号が消去された状態を読み出して比較しているため、不一致となる。時刻ｂ、ｄ、ｆでは処理装置１０２が出力データ識別番号の比較を行うが、処理装置１０１の識別番号が消去された状態を読み出して比較しているため、不一致となる。以降同様の処理が継続され、無限ループとなる。
【００７１】
図８は、図７の無限ループを防止するための処理フローを示している。
ステップ８２５では、ＣＰＵ１１１がＲＡＭ１１２の所定の場所にタスク識別番号を書き込む。その際、このタスクを実行するために中断された別のタスクがあると、中断されたタスクのタスク識別番号が失われてしまうため、中断されたタスクのタスク識別番号を保存しておく必要がある。
【００７２】
ステップ８２４は、中断されたタスクのタスク識別番号を保存するための処理であり、ＲＡＭ１１２に書き込まれているタスク識別番号をＣＰＵ１１１が読み出し、ＲＡＭ１１２の退避エリアにコピーする。
【００７３】
ステップ８２８は、ステップ８２４で保存した、中断されたタスクのタスク識別番号をもとに戻す処理である。ステップ８２４でＲＡＭ１１２の退避エリアにコピーされたタスク識別番号をＣＰＵ１１１が読み出し、ＲＡＭ１１２の所定の場所に書き込む。
【００７４】
ステップ８２６では、ＣＰＵ１１１がバス１１７、インタフェース回路１１６、伝送路１４９、インタフェース回路１２６、バス１２７を介して、ＲＡＭ１２２に格納された処理装置１０２のタスク識別番号とデータ識別番号を読み出す。処理時間の短縮のため、タスク識別番号とデータ識別番号は１度に読み出せるデータワードの上位ビットと下位ビットに格納するなど、１度の読み出しで両者が読み出せることが好ましい。タスク識別番号とデータ識別番号が１度の読み出しで読み出せない場合は、ステップ８２６ではデータ識別番号のみを読み出し、ステップ８２７でタスク識別番号を読み出す方法も考えられる。
【００７５】
ステップ８２７では、ＣＰＵ１１１が自装置のタスク識別番号と処理装置１０２のタスク識別番号を比較する。一致、あるいは自装置のタスクの優先度が高い場合には、ステップ８２６に進み、自装置のタスクの優先度が低い場合はステップ２１２に進む。
【００７６】
図９は、図８の処理フローを採用した場合に、図７の無限ループとなるケースを防止できることを示す図である。
【００７７】
時刻ａで処理装置１０１でデータ識別番号の比較を行い不一致となるが、時刻ｂでタスク識別番号の比較を行い一致するため、処理装置１０１はデータ識別番号の消去を行わない。このため、処理装置１０２でデータ識別番号が書き込まれると、データ識別番号の比較で一致となり（時刻ｃ、ｄ）、照合結果書込みの処理に進むことができる。
【００７８】
なお、図８では、図４をベースに無限ループを防止する様に変更を加えたが、図２、図５、図６をベースにして同様に無限ループを防止する処理フローを構築することが可能である。
【実施例６】
【００７９】
図１０は、本発明を適用した制御システムの構成図の第６の実施例である。図１と同じ符号の構成要素は、図１と同様である。
【００８０】
本実施例では、図１のスイッチ制御回路１３４を削除し、出力停止スイッチ１３１をインタフェース回路１０２６からの信号線１０４４で制御する様にした点が特徴である。
【００８１】
インタフェース回路１０１６は、図１のインタフェース回路１１６と同様であるが、図１のスイッチ制御回路１３４に接続された伝送路１４７が削除されているところが異なる。
【００８２】
インタフェース回路１０２６は、図１のインタフェース回路１２６と同様であるが、図１のスイッチ制御回路１３４に接続された伝送路１４８が出力停止スイッチ１３１に接続された信号線１０４４に変更された点が異なる。インタフェース回路１０２６は、ＣＰＵ１２４からバス１２７を介して出力停止スイッチ制御要求を受け取ると、要求で指示された値を信号線１０４４に出力する。
【００８３】
図１１は、図１０の制御システムの処理装置１００１、１００２で１つのタスクを実行する時の処理フローの例である。図２と同じ符号のステップの処理は、図２と同様である。
【００８４】
この処理フローは、図４のステップ２０８、４１４をステップ１１２９、１１３０に置き換えたものである。
【００８５】
ステップ１１２９は処理装置１００２のみで行われる処理であり、ＣＰＵ１２４がバス１２７を介してインタフェース回路１０２６に出力停止スイッチ制御要求を出力し、出力停止スイッチ１３１がＯＮとなる値を信号線１０４４に出力する。
【００８６】
ステップ１１３０は処理装置１００２のみで行われる処理であり、ＣＰＵ１２４がバス１２７を介してインタフェース回路１０２６に出力停止スイッチ制御要求を出力し、出力停止スイッチ１３１がＯＦＦとなる値を信号線１０４４に出力する。
【００８７】
なお、図１１は図４の処理フローをベースとしているが、図２、５、６をベースとして同様の変更を行うことで図１０に対応した処理フローを構築することも可能である。
【実施例７】
【００８８】
図１２は、本発明を適用した制御システムの構成図の第７の実施例である。図１と同じ符号の構成要素は、図１と同様である。
【００８９】
本実施例では、図１のスイッチ制御回路１３４を照合回路１２３５に置き換えた点が特徴である。
【００９０】
インタフェース回路１２１６は、図１のインタフェース回路１１６と同様であるが、図１のスイッチ制御回路１３４に接続された伝送路１４７が削除されているところが異なる。
【００９１】
インタフェース回路１２２６は、図１のインタフェース回路１２６と同様であるが、図１のスイッチ制御回路１３４に接続された伝送路１４８が削除されているところが異なる。
【００９２】
送信回路１２２４は送信回路１１４と同様である。
【００９３】
照合回路１２３５は、処理装置１２０１、１２０２の送信データを伝送路１２４１、１２５０から受け取り、両者が一致している場合は出力停止スイッチ１３１がＯＮとなる値を信号線１２４４に出力し、不一致の場合は出力停止スイッチ１３１がＯＦＦとなる値を信号線１２４４に出力する。
【００９４】
図１３は、図１２の制御システムの処理装置１２０１、１２０２で１つのタスクを実行する時の処理フローの例である。図２と同じ符号のステップの処理は、図２と同様である。
【００９５】
この処理フローは、図４の処理フローからステップ２０３、２０８、４１４を削除し、ステップ２０９をステップ１３３１に置き換えたものである。
【００９６】
ステップ１３３１は、図２のステップ２０９と同様であるが、処理装置１３０１だけでなく、処理装置１３０２でも送信回路１２２４から送信データを出力する処理を行う。
【００９７】
なお、図１３は図４の処理フローをベースとしているが、図５、６をベースとして同様の変更を行うことで図１２に対応した処理フローを構築することがも可能である。
【符号の説明】
【００９８】
１０１  第１の処理装置
１０２  第２の処理装置
１３１  出力停止スイッチ
１３２  制御端末
１３４  スイッチ制御回路
２０４  タスク切り換えを禁止するステップ
２０５  データ識別番号を書き込むステップ
２０６  他装置の書き込んだデータ識別番号を読み出すステップ
２０７  自装置と他装置のデータ識別番号を比較するステップ
２０８  照合結果を書き込むステップ
２０９  データを出力するステップ
２１２  出力データ識別番号を消去するステップ
２１３  タスク切り換えを許可するステップ
８２５  タスク識別番号を書き込むステップ
８２６  他装置の書き込んだタスク識別番号とデータ識別番号を読み出すステップ
８２７  自装置と他装置のタスク識別番号を比較するステップ
【図１】
0006302775.tif 000002
【図２】
0006302775.tif 000003
【図３】
0006302775.tif 000004
【図４】
0006302775.tif 000005
【図５】
0006302775.tif 000006
【図６】
0006302775.tif 000007
【図７】
0006302775.tif 000008
【図８】
0006302775.tif 000009
【図９】
0006302775.tif 000010
【図１０】
0006302775.tif 000011
【図１１】
0006302775.tif 000012
【図１２】
0006302775.tif 000013
【図１３】
0006302775.tif 000014