(57)【特許請求の範囲】
【請求項１】
制御対象の状態入力を取り込んで演算処理を行い、その演算処理結果を交番信号に変換するとともに、その交番信号に基づいてシステムを安全側に制御するフェールセーフコントローラにおいて、
予め設定された制御周期毎に発生される制御周期開始トリガに応答して前記状態入力を取り込んで演算処理を行いその演算処理結果を出力するとともに前記制御周期開始トリガを出力する制御演算部と、
前記制御周期開始トリガが入力されたときに前記演算処理結果を取り込んで保持するレジスタと、
タイマ割込みによって前記レジスタに保持された前記演算処理結果を取り込んで交番信号に変換し、その交番信号を前記制御対象を制御するための制御出力として出力する交番信号出力部と、
前記交番信号を監視して、前記制御演算部に異常が発生していることが分かったときは交番信号の出力を抑止する出力監視部と、を備えたことを特徴とするフェールセーフコントローラ。
【請求項２】
請求項１に記載のフェールセーフコントローラにおいて、前記交番信号出力部は、前記演算処理結果が前記システムの危険側のとき交番信号に変換し、その交番信号を前記制御対象を制御するための制御出力として出力し、前記演算処理結果が前記システムの安全側のとき前記演算処理結果を前記制御対象を制御するための制御出力としてそのまま出力し、前記出力監視部は前記交番信号が前記制御周期を越えて継続したとき、前記制御演算部に異常が発生していると判断して前記交番信号の出力を抑止することを特徴とするフェールセーフコントローラ。
【請求項３】
請求項１又は２に記載のフェールセーフコントローラにおいて、前記出力監視部は、前記交番信号の交番回数を計測する計測手段と、交番回数の上限値を設定する上限値設定手段と、前記計測手段で計測した交番回数が前記上限値設定手段で設定された交番回数の上限値に達したときに、前記交番信号の出力を停止する出力制御手段とを有することを特徴とするフェールセーフコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はフェールセーフコントローラに係り、特に、制御対象を制御するための制御出力として、交番信号を用いたフェールセーフコントローラに関する。
【０００２】
【従来の技術】
信号機や踏切の制御装置においては、制御装置の故障が発生してシステムを停止せざるを得ない場合に、システムとして安全な状態で（例えば信号機を赤にする、踏切を閉じた状態にする）停止させる必要がある。
【０００３】
システムの安全性を高めるための手法として、鉄道分野のように制御周期の長い制御システムでは制御出力として交番信号（交流信号のようなもの）を用いる手法がある。以下、この手法について図９を用いて説明する。
【０００４】
フェールセーフコントローラ１は、制御対象６の状態を入力３として取り込み、制御演算処理を実行する。フェールセーフコントローラ１は、演算処理の結果を一定周期の交番信号または固定値信号に変換して制御出力２として出力する。制御出力２は整流回路４に入力され、整流回路４は、一定周期の交番信号が入力されたときのみ論理値１を出力し、それ以外の信号が入力された場合には論理値０を出力する。制御対象６は、整流回路４の出力が論理値０のときに安全な状態に駆動され、整流回路４の出力が論理値１のときに危険が伴う状態に駆動される。したがって、コントローラ１の出力２は、交番信号であるときに危険側出力と定義され、固定値信号であるときに安全側出力と定義される。
【０００５】
コントローラ１に異常が発生した場合、制御出力２としては論理値１または論理値０として固定されることが多いが、固定値信号は安全側出力とみなされるので、制御対象６が危険側に駆動されることはなく、システムを安全な状態に保つことができる。
【０００６】
この交番信号を生成する方法としては、図１０に示すように、制御演算処理プログラム中に、交番信号周期毎に交番信号を生成する交番出力処理ルーチンを埋め込む手法がある（これは、通常、シングルスレッド構造と呼ばれている）。交番出力処理は、その制御周期の間の出力が危険側出力であるならば、出力の値の反転出力（１の場合に０に、０の場合に１にする）を繰り返し、制御周期の間の出力が安全側であるならば、出力の値を制御周期の間一定にする。システムに異常が発生し、制御演算処理が停止すると、交番出力処理も同時に停止し、出力は固定値となり安全側出力が出続けるので、システムの安全性は保たれる。
【０００７】
【発明が解決しようとする課題】
しかしながら、図１０に示した手法では、制御演算処理プログラムを作成した後に、交番信号周期毎にプログラムを分割し、交番出力処理ルーチンを埋め込む必要がある。またプログラムの変更をする場合において、交番信号周期がずれないように、再度プログラムの分割を行う必要が生じる。
【０００８】
このように従来の技術では、制御周期や制御演算処理内容の一部の変更であっても、プログラム分割が必要となるため、プログラムの生産効率が非常に悪くなってしまう。また、交番信号の周期は、制御演算周期に比べ十分小さいことが要求されるため、制御演算処理に交番出力処理を埋め込むためには、多大な労力が必要とされる。
【０００９】
また、フェールセーフコントローラにおいても低価格化の要求が高まっており、開発費や開発期間の削減が重要である。このため、システムの共通化が必須となっている。共通化を実現するためには、各応用への展開が容易に可能となるようなシステム構成が必要である。そのためにも、交番信号出力処理を容易にする方法が望まれている。
【００１０】
本発明の目的は、演算処理プログラムの作成・変更を容易に行うことができ、システムの生産性向上を図ることが可能なフェールセーフコントローラを提供することである。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の発明は、制御対象の状態入力を取り込んで演算処理を行い、その演算処理結果を交番信号に変換するとともに、その交番信号に基づいてシステムを安全側に制御するフェールセーフコントローラにおいて、予め設定された制御周期毎に発生される制御周期開始トリガに応答して前記状態入力を取り込んで演算処理を行いその演算処理結果を出力するとともに前記制御周期開始トリガを出力する制御演算部と、前記制御周期開始トリガが入力されたときに前記演算処理結果を取り込んで保持するレジスタと、タイマ割込みによって前記レジスタに保持された前記演算処理結果を取り込んで交番信号に変換し、その交番信号を前記制御対象を制御するための制御出力として出力する交番信号出力部と、前記交番信号を監視して、前記制御演算部に異常が発生していることが分かったときは交番信号の出力を抑止する出力監視部とを備えたことを特徴としている。
【００１２】
上記構成によれば、交番信号の出力処理を行う出力部が制御演算部から分離されるため、制御演算部は交番信号の出力処理を意識することなく演算処理プログラムの作成・変更を容易に行うことができ、演算処理系の生産性が向上する。
【００１３】
上記構成のように制御演算部から交番信号出力部を分離すると、制御演算部で異常が発生し、交番信号を発生させる指令が制御演算部から交番信号出力部に対して出続けた場合、フェールセーフコントローラは危険側出力を出力し続ける可能性がある。ところが、請求項１に記載の発明では、出力監視部が交番信号を監視して、制御演算部に異常が発生していることが分かったときは交番信号の出力を抑止するので、システムの安全性を保つことができる。
【００１４】
交番信号の出力処理のタイミングを合わせるために、前記制御演算部は、前記交番信号出力部に対して、交番信号に変換する処理の開始を指示する制御周期開始トリガを送るように構成されている。
【００１５】
また、前記交番信号出力部には、交番信号の周期を設定するタイマからタイマ割込みが送信される。
【００１６】
交番信号を監視して交番信号の出力を抑止するには請求項３のように構成することができる。すなわち、請求項３に記載の発明は、前記出力監視部は、前記交番信号出力部が出力した交番信号の交番回数を計測する計測手段と、交番回数の上限値を設定する上限値設定手段と、前記計測手段で計測した交番回数が前記上限値設定手段で設定された交番回数の上限値に達したときに、前記制御出力の出力を停止する出力制御手段とを有することを特徴としている。
【００１７】
なお、前記上限値設定手段を、設定した交番回数の上限値を変更できるよう構成することもできる。また前記出力制御手段を、前記計測手段で計測した交番回数が前記上限値設定手段で設定された交番回数の上限値に達したとき、その旨を外部に通達するように構成することもできる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら説明する。
図１は本発明に係るフェールセーフコントローラの全体構成を示している。図において、フェールセーフコントローラ１は制御対象の状態入力３を取り込んで制御演算処理を実行し、その演算処理結果を交番信号または固定値信号に変換して制御出力２として出力する。このようなフェールセーフコントローラ１は、例えば踏切制御システムでは、踏切への列車の接近を踏切制御装置に通達する踏切制御子や、踏切装置に故障が発生した場合に踏切故障を通達する踏切故障検出器などの入力装置からの入力情報に合わせて、列車の接近・通過を光と音で警報する踏切警報機や、道路の通行を遮断する踏切遮断機等を制御するために設置される。
【００１９】
フェールセーフコントローラ１は、制御演算部１０と出力部１１とから構成されている。制御演算部１０は制御演算処理を実行して演算出力１２を出力するとともに、制御周期のはじめに、制御周期開始トリガ１３としてパルス信号を出力し、出力部２に制御周期の開始を通達する。制御周期開始トリガ１３は、出力部１１内の交番信号出力部１１１と出力監視部１１２にそれぞれ入力される。
【００２０】
出力部１１は、交番信号の周期を設定するタイマ１１０と、演算出力１２を基に交番信号を生成する交番信号出力部１１１と、交番信号出力部１１１からの交番出力１１４を監視して制御出力２の出力／停止を制御する出力監視部１１２とから構成されている。
【００２１】
タイマ１１０は、交番信号の周期毎にタイマ割込み１１３を出力する。従来のシングルスレッド構造では、制御演算部の処理の流れにより交番信号周期を管理しているため、制御演算部と交番出力処理部を独立に動作させることができなかった。本実施の形態では、交番信号の周期はタイマ１１０により管理されるため、出力部１１は、タイマ割込み１１３により、制御演算部１０での演算処理とは非同期に交番信号を出力することが可能となる。
【００２２】
交番信号出力部１１１は、演算出力１２の値を制御周期開始トリガ１３が入力される毎に取り込む。また交番信号出力部１１１は、タイマ割込み１１３が入力される毎に、取り込んだ演算結果が論理値１の場合には、タイマ割込み１１３が入力される以前の出力の値を反転し（１を０に、０を１にする）、論理値０の場合には、タイマ割込み１１３が入力される以前の出力の値を維持して、交番出力１１４として出力する。
【００２３】
出力監視部１１２は、制御周期開始トリガ１３により交番出力１１４の観測を開始し、実際に制御対象に渡される制御出力２の出力を制御する。
【００２４】
制御演算部１０は、出力部１１に対して演算出力１２と制御周期開始トリガ１３を受け渡すだけで、出力部１１からの干渉は受けない。また、出力部１１は、タイマ１１０からのタイマ割込み１１３により交番信号生成処理を実行する。このため、制御演算部１０は、出力の信号変換を意識する必要はなくなり、制御演算部１０と出力部１１とを非同期に動作させることができる。
【００２５】
図２は、図１に示した制御演算部１０及び出力部１１の動作のタイムチャートである。制御演算部１０は、制御周期のはじめに制御周期開始トリガ１３を出力する。次に、制御演算を行うために、制御対象の状態入力３を取り込む。取り込んだ値を基にして制御演算が実行され、演算が終了すると演算出力１２を出力する。次の制御周期に遷移する時には、制御周期開始トリガ１３が出力され、以降では同様の処理が繰り返される。
【００２６】
出力部１１は、制御周期開始トリガ１３が入力されると、前制御周期の演算出力１２を取り込む。そして、出力部１１は、タイマ割込み１１３によって、取り込んだ演算結果の値を交番信号に変換する処理が起動される。
このように、同一の制御周期の間は、制御演算部１０と出力部１１は互いに干渉することなく、それぞれ独立に動作する。
【００２７】
図３は、図１に示した交番信号出力部１１１の構成図である。交番信号出力部１１１は、図３に示すように、演算出力１２の値を保持するレジスタ１１１０と、交番信号を生成して交番出力１１１４を出力する交番出力生成部１１１１と、出力された交番出力１１１４を保持する出力レジスタ１１１２とから構成されている。
【００２８】
レジスタ１１１０は、制御周期開始トリガ１３が入力されたときに、演算出力１２の値を取り込む。そしてレジスタ１１１０は、取り込んだ演算出力１２の値を、再度、制御周期開始トリガ１３が入力されるまで保持する。すなわち、一つの制御周期の間は、レジスタ１１１０の値は変化せず、次の制御周期へ遷移する場合においてのみレジスタ１１１０の値が変化する。
出力レジスタ１１１２は、出力レジスタ１１１２への交番出力１１１４が変化するまで交番出力１１４の値を保持する。
【００２９】
交番出力生成部１１１１は、タイマ割込み１１３により動作が起動する。以下図４のフローチャートを参照して交番出力生成部１１１１の動作を説明する。交番出力生成部１１１１は、ステップ１１１１０において、レジスタ１１１０からの出力１１１３の値が論理値１か、または論理値０かを判断する。論理値１である場合には、ステップ１１１１１において、出力レジスタ１１１２に保持されている値を反転（論理値１のとき論理値０に、論理値０のとき論理値１に）する。論理値０である場合には、出力レジスタ１１１２に保持されている値を変化させず、出力レジスタ１１１２へ入力する。以上の処理が実行された後、割り込み処理が終了する。このようにして、交番出力生成部１１１１は、レジスタに保持された演算結果を交番信号または固定値信号に変換することができる。
【００３０】
出力レジスタ１１１２への入力値の変化は、タイマ割り込み１１３により交番出力生成部１１１１の動作が起動したときであるので、交番出力１１４の信号周期は、タイマ割り込み１１３の発生間隔により決定される。
【００３１】
図５は、図１に示した出力監視部１１２の構成図である。出力監視部１１２は、交番出力１１４の交番回数を計測するカウンタ１１２１と、予め設定された交番回数の上限値１１２４を保持する設定レジスタ１１２０と、カウンタ１１２１からの値１１２５と予め設定されたカウンタ上限値１１２４とを比較する大小比較器１１２２と、交番信号の出力／停止を制御する出力制御部１１２３とから構成されている。なお、ここでは、カウンタ１１２１は計測手段を、設定レジスタ１１２０は上限値設定手段を、大小比較器１１２２と出力制御部１１２３は出力制御手段をそれぞれ構成している。
【００３２】
カウンタ１１２１は、交番出力１１４が出力されている場合に、交番出力１１４の立ち上がりを見て、交番信号の出力回数を計測する。カウンタ１１２１は、制御周期開始トリガ１３が１パルス入力されると値がリセットされる。大小比較器１１２２は、カウンタ１１２１からの値１１２５が、設定レジスタ１１２０からの上限値１１２４よりも大きくなった場合に、出力停止信号１１２６を論理値１として出力する。
【００３３】
出力停止信号１１２６は出力制御部１１に入力され、出力制御部１１は、出力停止信号１１２６が論理値１となると、制御出力２として交番信号が出力されることを抑止する。このとき、カウンタ１１２１は計測動作を継続しており、カウンタ１１２１からの値１１２５はカウンタ上限値１１２４よりも大きい状態を維持し続ける。このため、大小比較器１１２２は出力停止信号１１２６を論理値１として出力し続け、これによって、制御出力２は固定値を、すなわち安全側出力として出力され続ける。
【００３４】
カウンタ１１２１からの値１１２５がカウンタ上限値１１２４よりも大きくなるのは、制御周期以上の時間が経過しても制御周期開始トリガ１３からパルス信号が出力されず、カウンタ１１２１がリセットされない状態である。この状態を、制御演算部１０に異常が発生した状態と見なすことにより、システムの安全性を確保することができる。
【００３５】
ここで、カウンタ上限値１１２４が小さいと、制御周期の途中でカウンタ１１２１の値１１２５がカウンタ上限値１１２４より大きくなり、システムに異常がないにも関わらず出力が停止される可能性がある。そこで、制御周期をＴｃ、交番信号周期をＴｘとし、カウンタ上限値をＮｒとすると、
Ｎｒ＞（Ｔｃ／Ｔｘ）
の条件を満たすようにＮｒを設定することにより、制御周期の間の交番信号出力が保証される。
【００３６】
また、出力停止信号１１２６を、外部に送信することにより、出力監視部１１２で検出した異常を上位の制御装置に通達したり、システムの電源を遮断したりするように構成することも可能である。
【００３７】
図６は、図５に示したカウンタ１１２１の動作と、出力に関する各信号を時系列で表したタイムチャートである。図６において、Ｔ１のタイミングで制御周期開始トリガ１３の立ち下がりを見て、カウンタ１１２１の値がリセットされる。Ｔ１で演算出力１４の値が１であるので、交番出力１１４は交番信号が出力される。カウンタ１１２１は、交番出力１１４の交番回数を計測する。Ｔ２のタイミングまでに、カウンタの値は設定値に達しないため、Ｔ２まで制御出力２は交番信号を出力し続ける。
【００３８】
Ｔ２で制御周期開始トリガ１３の立ち下がりを検出すると、カウンタ１１２１の値は再びリセットされる。Ｔ２で演算出力１４の値が０であるので、交番出力１１４は固定した値（図では０固定）が出力される。カウンタ１１２１は、交番出力１１４の信号変化がないために計測を行わず、カウンタ１１２１の値は増加しない。
【００３９】
次に、Ｔ３のタイミングからＴ１のタイミングと同様にカウンタ１１２１の値の増加が開始するが、ここで制御演算部１０において異常が発生し、演算処理が停止すると、制御周期が経過しても制御周期開始トリガ１３が現れず、カウンタ１１２１が計測を続ける。
【００４０】
そして、Ｔ４のタイミングでカウンタ１１２１からの値１１２５が設定値１１２４よりも大きくなると、Ｔ４以降は出力停止信号１１２６に論理値１が出力される。制御出力２は、Ｔ４まで交番信号を出力しているが、出力停止信号１１２６によりＴ４以降の制御出力２は論理値０を出力し続け、システムは安全側に保たれる。
【００４１】
最も単純な応用例としては、システム自身の健全性を交番信号で出力する事が考えられる。この場合は、特別な制御演算は必要なく、演算出力１４は常に論理値１であり、制御演算部１０は制御周期毎に制御周期開始トリガ１３としてパルス信号を出力するだけでよい。これにより交番出力部１１は交番信号を出力し続ける。システムに異常が発生し、制御演算部１０の処理が停止すると、制御周期開始トリガ１３が出力されなくなるため、出力監視部１１２により交番信号出力が抑止される。したがって、交番信号の出力の有無で、システムの健全性を知ることができる。
【００４２】
以上の説明では本発明をハードウェア的に実施した例を示したが、図７のように各構成要素をソフトウェアとして実現することも可能である。この場合、アプリケーションプログラム７０の一部に制御演算部７００を、ＯＳ／ミドルウェア７１の一部に交番出力部７１０と出力監視部７１１とを、ハードウェア７２の一部にタイマ７２０をそれぞれ割り当てる。アプリケーションプログラム７０は状態入力７５に基づいて一定制御周期で処理を実行しており、ハードウェア７２内部のタイマ７２０により交番周期毎にタイマ割込み７６が発生し、割込み処理として、演算出力７３を参照して交番出力処理が実行される。ＯＳ／ミドルウェア７１は、割込み処理の実行回数を計測することにより、出力監視処理が実行され、出力７４の出力／停止を制御することが可能である。
【００４３】
図８は、図７に示したシステム構成における制御演算部７００と交番出力部７１０の動作のタイムチャートである。制御演算部７００の実行中に、交番信号周期毎のタイマ割込み７６により、交番出力部７１０に処理が移行する。交番出力部７１０の処理が終了すると制御演算部７００に処理が復帰する。交番信号周期はタイマ割込み７６によって管理されるため、制御演算部７００は、交番周期毎の出力処理を意識する必要はない。したがって、タイマ割込み７６を用いることにより、制御演算部７００と交番出力部７１０とは、互いに非同期に動作することが可能である。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、交番信号の出力処理を行う出力部が制御演算部から分離されるため、制御演算部は交番信号の出力処理を意識することなく演算処理プログラムの作成・変更を行うことができ、システムの生産性向上を図ることが可能となる。
【００４５】
また、出力部は交番出力を監視して、制御演算部に異常が発生していると分かったときには交番出力を停止するので、システムの安全性を確保することが可能となる。
【図面の簡単な説明】
【図１】本発明に係るフェールセーフコントローラの全体構成図である。
【図２】図１に示した制御演算部及び出力部の動作のタイムチャートである。
【図３】図１に示した交番出力部の詳細構成図である。
【図４】図３に示した交番出力生成部での交番信号生成のフローチャートである。
【図５】図１に示した出力監視部の詳細構成図である。
【図６】図５に示したカウンタの動作及び信号のタイムチャートである。
【図７】本発明をソフトウェアとして実施した場合の一例を示した図である。
【図８】図７に示した制御演算部及び交番出力部の動作のタイムチャートである。
【図９】交番信号出力を用いてシステムを安全側に制御する一例を示した図である。
【図１０】従来の交番信号出力方法（シングルスレッド構造）を示した図である。
【符号の説明】
１  フェールセーフコントローラ
２  制御出力
３  状態入力
６  制御対象
１０  制御演算部
１１  出力部
１２  演算出力
１３  制御周期開始トリガ
１１０  タイマ
１１１  交番信号出力部
１１２  出力監視部
１１３  タイマ割込み
１１４  交番出力
１１１０  レジスタ
１１１１  交番出力生成部
１１１２  出力レジスタ
１１２０  設定レジスタ
１１２１  カウンタ
１１２２  大小比較器
１１２３  出力制御部
【図１】
0004243742.tif 000002
【図２】
0004243742.tif 000003
【図３】
0004243742.tif 000004
【図４】
0004243742.tif 000005
【図５】
0004243742.tif 000006
【図６】
0004243742.tif 000007
【図７】
0004243742.tif 000008
【図８】
0004243742.tif 000009
【図９】
0004243742.tif 000010
【図１０】
0004243742.tif 000011