(57)【要約】【課題】  交番信号を出力に持つフェールセーフな制御装置において、安全性を確保しつつ、生産性を向上させる方法を提供する。【解決手段】  制御演算を行う制御演算プログラムと、制御演算プログラムによる演算結果から制御信号を生成する出力プログラムとを記憶したメモリと、タイマの割込み信号に応じて制御演算プログラムの結果を取り込み出力プログラムを実行して演算結果に基づいて制御信号を生成するプロセッサによって構成する。【選択図】図１
2006031727.tif 000002
【特許請求の範囲】
【請求項１】
プログラムおよびデータを格納するメモリと、
上記メモリからプログラムを読み出してこれを実行するプロセッサと、
上記データ処理部に接続され外部との制御信号の授受を行う入出力部と、
あらかじめ設定された第一の周期で上記プロセッサに対する割込み信号を生成するタイマとを有し、
上記メモリは第一の周期よりも長周期の第二の周期で制御演算を行う制御演算プログラムと、上記制御演算プログラムによる演算結果から制御信号を生成する出力プログラムとを記憶し、
上記プロセッサは、上記タイマの割込み信号に応じて上記出力プログラムを実行して、上記制御演算プログラムによる演算結果が真レベルの時に、特定のパターンの信号を制御信号として生成するフェールセーフコントローラ。
【請求項２】
請求項１において、
前記特定のパターンの信号は交番信号であることを特徴とするフェールセーフコントローラ。
【請求項３】
請求項２において、
上記出力プログラムは、上記所定数の特定パターンが出力された後に、制御信号を所定の値に固定するフェールセーフコントローラ。
【請求項４】
請求項１において、
上記出力プログラムは、上記演算プログラムによる演算結果が真レベルの時に、前の出力部の制御信号を反転させ、制御信号とするフェールセーフコントローラ。
【請求項５】
請求項３において、
上記出力プログラムは上記反転回数が予め定められた回数以上となった時に、制御信号を所定の値に固定するフェールセーフコントローラ。
【請求項６】
プログラムおよびデータを格納する複数のメモリと、
上記メモリからプログラムを読み出してこれを実行する複数のプロセッサと、
それぞれの上記プロセッサと接続され、上記プロセッサの入出力信号を比較するバス比較回路と、
それぞれの上記プロセッサと接続され、外部との信号の受け渡しを行う複数の入出力部と、
あらかじめ設定された第一の周期でそれぞれの上記プロセッサに対する割込み信号を生成する複数のタイマとを有し、それぞれの上記プロセッサは同期して同じプログラムを実行するフェールセーフコントローラであって、
それぞれの上記メモリは、第一の周期よりも長周期の第二の周期で制御演算を行う演算制御プログラムと、制御演算プログラムの演算結果によって制御信号を生成する出力プログラムとを有し、
それぞれの上記プロセッサは、上記タイマによる割り込みによって上記出力プログラムを実行して、上記制御演算プログラムによる演算結果が真レベルの時に、特定のパターンの信号を制御信号として出力するフェールセーフコントローラ。
【請求項７】
請求項６において、
前記特定のパターンの信号は交番信号であることを特徴とするフェールセーフコントローラ。
【請求項８】
請求項７において、
上記出力プログラムは、上記所定数の特定パターンが出力された後に、制御信号を所定の値に固定するフェールセーフコントローラ。
【請求項９】
請求項６において、
上記出力プログラムは、上記演算プログラムによる演算結果が真レベルの時に、前の出力部の制御信号を反転させ、制御信号とするフェールセーフコントロー
ラ。
【請求項１０】
請求項９において、
上記出力プログラムは上記反転回数が予め定められた回数以上となった時に、制御信号を所定の値に固定するフェールセーフコントローラ。
【請求項１１】
制御対象と、
上記制御対象の状態を示す信号を入力し、この状態信号に基づいて上記制御対象を制御する制御信号を出力するコントローラとを有するフェールセーフシステムであって、
上記コントローラは、あらかじめ設定された第一の周期で割込み信号を出力するタイマと、第一の周期よりも長周期の第二の周期で制御演算を行う制御演算プログラム及び上記制御演算プログラムによる演算結果から制御信号を生成する出力プログラムとを記憶したメモリと、上記タイマの割込み信号に応じて上記出力プログラムを実行して、上記制御演算プログラムによる演算結果が真レベルの時に制御信号を生成するプロセッサとを有するフェールセーフコントローラシステム。
【請求項１２】
制御対象と、
上記制御対象の状態を示す信号を入力し、この状態信号に基づいて上記制御対象を制御する制御信号を出力するコントローラとを有するフェールセーフシステムであって、
上記コントローラは、あらかじめ設定された第一の周期でそれぞれの上記プロセッサに対する割込み信号を生成する複数のタイマと、第一の周期よりも長周期の第二の周期で制御演算を行う演算制御プログラム及び制御演算プログラムの演算結果によって制御信号を生成する出力プログラムとを記憶した複数のメモリと、上記タイマによる割り込みによって上記出力プログラムを実行して制御信号を出力する複数のプロセッサとを有するフェールセーフコントローラシステム。
【請求項１３】
制御対象の状態を入力し、この入力された制御対象の状態に基づいて制御演算を実行する工程と、
外部からの割り込み信号に基づいて、上記制御演算の結果を取り込み、上記演算の結果に基づいて上記割り込み信号に同期した交番信号を生成する工程とを有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フェールセーフな制御装置の出力方式に関し、特に出力信号として交番信号を用いたフェールセーフ制御装置の出力方式に関する。
【背景技術】
【０００２】
信号機や踏切などの交通システム制御装置あるいは、自動車の電子制御装置においては、制御装置の故障が発生してシステムを停止せざるを得ない場合に、システムとして安全な状態に停止させる必要がある。例えば信号制御では、信号機を赤にすることで、自動車や列車の衝突を防ぐことが出来る。
【０００３】
このような安全性確保の考え方を「フェールセーフ」と呼んでいる。フェールセーフ
（安全）性を実現する上で重要なことは、制御出力をいかにして被制御機器へ伝えるかということである。従来のリレーによる制御では、故障モードが非対称性を持つために、これをより所にして比較的容易にフェールセーフを実現できたが、マイコンによる電子制御装置では、故障が非対称性を持たないために新たな手法が必要とされてきた。この制御出力のフェールセーフ性を高めるための手法として、鉄道分野のように制御周期の長い制御システムでは制御出力として交番信号を用いる手法がある。
【０００４】
このように交番信号を用いるものとして例えば特開平6−332730 号公報には、制御対象となる外部機器と、外部機器からの信号を入力して制御信号を出力するＣＰＵと、ＣＰＵからの制御信号を外部機器へ伝達する駆動回路から構成されたシステムが開示され、CPUからの外部機器を危険側に切替駆動する制御信号を、ソフトウエアによるビット反転で発生したビット列01010101…の交流信号とすることが開示されている。ＣＰＵからの制御信号は駆動回路に入力され、駆動回路はＣＰＵからの信号が交流信号の場合には外部機器を危険側に切替駆動し、交流信号が停止してビット０又はビット１の信号レベルに固定されると、外部機器を安全側に駆動する。
【０００５】
また、従来のフェールセーフコントローラで、交番信号をプログラムで生成する場合、シングルスレッド構造と呼ばれる通常の制御演算プログラム中に交番出力処理ルーチンを埋め込む方法が用いられている。この場合、交番出力処理は、先行する制御周期の結果出力が危険側出力であるならば、結果出力を交番化する。より具体的には、交番出力処理が実行される毎に前回出力を反転（１の場合に０に、０の場合に１）する。一方、制御周期の結果出力が安全側であるならば、交番化しない。
【０００６】
万一、システムに異常が発生し制御演算処理プログラムが停止あるいは暴走すると、ほとんどの場合、正常なフローが実行されることはない。従って交番出力処理も同時に停止し、出力は安全側出力である非交番信号の固定値となり、システムの安全性が保たれる。
【０００７】
【特許文献１】特開平６−３３２７３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述したようなシングルスレッド構造とした手法では、制御演算処理プログラムを作成した後に、交番信号周期毎にプログラムを分割し、交番出力処理ルーチンを埋め込む必要がある。またプログラムの変更をする場合において、交番信号周期がずれないように、再度プログラムの分割を行う必要が生じる。制御周期や制御演算処理内容の一部の変更であっても、プログラム全体の再分割を考慮する必要があるため、プログラムの生産効率が非常に悪くなってしまう。また、一般に交番信号の周期は０.５ 〜２msであり、制御演算の周期は１００〜６００msである。別の見方をすると０.５ 〜２msは、
10MIPS程度のＲＩＳＣプロセッサの機械語５０００〜２万命令の実行時間に相当する。このため交番信号を得るには、たとえば制御演算処理の機械語プログラムを１万命令程度に区切って、交番出力処理を埋め込む面倒な作業を必要とする。また最近では、制御演算処理をＣ言語などの高級言語で記述することが普通であり、コンパイル結果を見通して、交番出力処理を制御演算処理プログラムに埋め込むことは、多大な労力が必要とされる。更に第三者が作成したプログラムを流用することなど不可能である。
【０００９】
一方、フェールセーフコントローラシステムを広範囲に適用するには、開発費や開発期間の削減を行い、低価格化を実現することが重要である。このためには、交番信号処理をハードウエアで実現し、プログラム作成の負担を軽減すること、あるいはアプリケーションプログラムから交番処理を分離し、ＯＳのような共通プログラムに交番処理を集約して、システムの共通化を図ることが必須である。
【００１０】
そこで、本発明の目的は、交番信号処理をハードウエアで実現し、交番信号出力処理を演算処理プログラムと分離することによって、演算処理プログラムの作成・変更時に交番信号出力処理を意識することなく行える手段を提供することにある。
【００１１】
また本発明の別の目的は、ＯＳのような共通プログラムに交番処理を集約して共通ソフトを使用しながらも、シングルスレッド構造と同等レベルの安全な交番信号生成手段を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を実現するために、コントローラは、プログラムおよびデータを格納するメモリと、該メモリからプログラムを読み出してこれを実行するプロセッサと周期的にプロセッサへの割込み信号を生成する出力部起動タイマによって構成される。プログラムは、少なくとも以下の二つの部分を持ち、一つは、制御出力データを算出する制御演算部で、たとえば１００〜６００msの周期を持つ。もう一つは、該制御演算部からの制御出力データを交番信号に変換する出力部である。
【００１３】
出力部は割込み信号によって起動され、該出力部は制御演算部の制御出力データが危険側出力を指定している場合に限って、特定の信号パタンあるいは交番信号を出力する。
【００１４】
また出力部は、出力部起動回数を計測するカウンタとカウンタの上限値を保持するレジスタを有し、該カウンタが定められた上限値を超えた時には出力信号レベルを固定する。制御演算部は、制御周期内に少なくとも１回カウンタをクリアする。
【００１５】
上限値を制御周期内の出力部起動回数より若干多く設定すると、正常動作時には上限値を超えること無い。しかし制御演算部が暴走、あるいは停止したときには、カウンタがクリアされずに上限値を超えてしまい危険側出力である特定の信号パタンあるいは交番信号を抑止する。これによって、システムは安全な状態に保たれる。
【発明の効果】
【００１６】
本発明によれば、演算処理系の生産性を向上させることが可能となる。また、出力データの交番信号化を必要とするアプリケーションプログラムとそれ以外のアプリケーションプログラムを混在させることが出来るので、システムの機能性が向上する。
【発明を実施するための最良の形態】
【００１７】
以下に本発明にかかる第一の実施例を図面を参照して説明する。
【００１８】
図２に本発明を適用したコントローラシステムの全体の構成を示す。本システムは、制御対象５，制御対象５の状態を検出する検出器６，制御対象５への制御信号２の出力及び制御対象５の状態を状態信号３として取り込む入出力回路４，制御対象５の状態を取り込み、制御演算処理を実行し、演算結果を制御信号２として出力するフェールセーフコントローラ１から構成されている。尚、フェールセーフコントローラ１から出力される制御信号２は後述するように交番信号または固定値信号となる。本コントローラシステムを例えば踏切制御装置に適用した場合、踏切への列車の接近を検出する踏切制御子や、踏切装置に故障が発生した場合に踏切故障を通達する踏切故障検出器などが検出器６に相当し、この踏切制御子や踏切故障検出器からの信号を入力して、演算を行い制御信号を出力する踏切制御装置がフェールセーフコントローラ１に相当し、踏切制御装置から制御信号によって列車の接近・通過を光と音で警報する踏切警報機や、道路の通行を遮断する踏切遮断機が制御対象５に相当する。
【００１９】
以下、フェールセーフコントローラ１について詳細に説明する。ここで、説明するフェールセーフコントローラ１は、ハードウエアで実現することを前提としている。フェールセーフコントローラ１は、制御演算を実行する制御演算部１０と、演算制御部１０の出力に応じて制御信号２として交番信号又は固定値信号を出力する出力部１１から構成されている。
【００２０】
出力部１１は、交番信号の周期を定めるタイマ１１０と、制御演算部１０の演算結果
１２を基に交番信号を生成する交番信号出力部１１１と、交番信号出力部１１１の出力信号１１４を監視して制御信号２の出力／停止を制御する出力監視部１１２から構成されている。
【００２１】
また、制御演算部１０は、制御周期のはじめに、制御周期開始トリガ１３としてパルス信号を出力し、出力部１１に制御周期の開始を通達する。制御周期開始トリガ１３は、交番信号出力部１１１と、出力監視部１１２にそれぞれ入力される。
【００２２】
タイマ１１０は、交番信号周期毎に交番周期トリガ１１３を出力する。交番信号出力部１１１は、制御演算部１０の演算結果１２の値を制御周期開始トリガ１３が入力される毎に取り込む。また、交番信号出力部１１１は、交番周期トリガ１１３が入力される毎に、取り込んだ制御演算部１０の演算結果１２が論理値１（真）の場合には、交番周期トリガ１１３が入力される以前の出力の値を反転（１を０に、０を１にする）し、論理値０の場合には、交番周期トリガ１１３が入力される以前の出力の値を維持して、交番出力１１４として出力する。従って、制御演算部１０の演算結果１２として“１”の状態が続くと交番周期トリガ１１３に合わせて交番信号を出力し、演算結果１２として“０”の状態が続くと固定値信号が出力される。
【００２３】
出力監視部１１２は、制御周期開始トリガ１３により交番出力１１４の観測を開始し、実際に制御対象５に出力される制御信号２を制御する。
【００２４】
図４は図２の交番信号出力部１１１の構成を示したものである。交番信号出力部１１１は、制御演算部１０の演算結果１２の値を保持するレジスタ１１１０と、交番信号の生成を行う交番出力生成部１１１１と、交番出力１１４として出力される値を保持する出力レジスタ１１１２より構成される。レジスタ１１１０は、制御周期開始トリガ１３が入力されたときに、制御演算部１０の演算結果１２の値を取り込み、再度、制御周期開始トリガ１３が入力されるまで、値を保持する。従って、一つの制御周期の間は、レジスタ1110の値は変化せず、次の制御周期へ遷移する場合においてのみレジスタ１１１０の値が変化する。出力レジスタ１１１２は、交番周期トリガ１１３毎に交番出力生成部１１１１の出力を取り込む。
【００２５】
交番出力生成部１１１１は排他的論理和ゲートであるEOR1115 によって構成されている。これにより交番出力生成部１１１１は、レジスタ１１１０からの出力１１１３の値が論理値１である場合には、出力レジスタ１１１２に保持されている値を反転し（論理値１のとき論理値０に、論理値０のとき論理値１にする。）、論理値０である場合には、出力レジスタ１１１２に保持されている値をそのまま、出力レジスタ１１１２へ入力する。このようにして、交番出力生成部１１１１は、レジスタ１１１０に保持された制御演算部１０の演算結果１２に基づいて交番信号または固定値信号を生成する。
【００２６】
なお、出力レジスタ１１１２への入力値の変化は、交番周期トリガ１１３により交番出力生成部１１１１の動作が起動したときとなるので、出力信号１１４の信号周期は、交番周期トリガ１１３の発生間隔により決定される。
【００２７】
図５は図２の出力監視部１１２の構成を示したものである。出力監視部１１２は、出力信号１１４の交番回数を計測するカウンタ１１２１と、カウンタ１１２１の値と比較する数値を保持するカウンタ上限値設定レジスタ１１２０と、カウンタ１１２１の値１１２５とカウンタ上限値１１２４の大きさを比較する大小比較器１１２２と、出力信号１１４の出力／停止を制御する出力制御部１１２３から構成される。
【００２８】
カウンタ１１２１は、出力信号１１４が出力されている場合に、交番信号の立ち上がりを見て、交番信号の交番回数を計測する。カウンタ１１２１は、制御周期開始トリガ１３が１パルス入力されると値がリセットされる。従って、制御演算部１０の故障により、制御周期開始トリガ１３が遅延し、カウンタ１１２１の値１１２５がカウンタ上限値設定レジスタ１１２０の上限値１１２４よりも大きくなると、大小比較器１１２２は、出力停止信号１１２６を出力する。出力停止信号１１２６が出力されると、出力制御部１１２３は出力信号１１４の交番信号を抑止し、制御信号２として固定値信号が出力される。つまり、制御周期開始トリガ１３が遅延するとフェールセーフコントローラ１は安全側出力を出力する。尚、出力制御部１１２３は、ＡＮＤゲートで容易に構成できる。
【００２９】
ここで、カウンタの上限値１１２４が小さいと、制御周期の途中でカウンタ１１２１の値１１２５がカウンタの上限値１１２４より大きくなり、システムに異常がないにも関わらず出力が停止されてしまう。そこで、制御周期をＴｃ、交番信号周期をＴｘとし、カウンタ上限値をＮｒとすると、
Ｎｒ＞（Ｔｃ／Ｔｘ）
の条件を満たすようにＮｒを設定することにより、制御周期の間の交番信号出力が保証される。また、出力停止信号１１２６を、外部に送信することにより、出力監視部１１２で検出した異常を上位の制御装置に通達したり、システムの電源を遮断したりするようにすることも可能である。
【００３０】
次に、本実施例の動作について説明する。図３は図２の制御演算部１０及び出力部１１の動作の概略タイムチャートを示したものである。制御演算部１０は、制御周期のはじめに制御周期開始トリガ１３を出力する。次に、制御演算を行うために、制御対象の状態である状態信号３を取り込む。この状態信号３に基づいて、制御演算を実行し、演算が終了すると、演算結果１２を出力する。また、次の制御周期に遷移する時には、制御周期開始トリガ１３を出力し、以降では同様の処理を繰り返す。
【００３１】
出力部１１は、制御周期開始トリガ１３が入力されると、前の制御周期の演算結果１２を取り込む。そして、出力部１１は、交番周期トリガ１１３によって、取り込んだ演算結果１２の値を交番信号に変換する処理を行う。
【００３２】
図６は図５のカウンタの動作と、各部の信号の詳細なタイムチャートを示したものである。正常時の動作は、次の通りである。カウンタ１１２１は、制御周期開始トリガ１３の立ち下がり（図６のＴ１のタイミング）でリセットされる。Ｔ１で演算結果１２の値が
“１”であるので、出力信号１１４は交番周期トリガ１１３が発生する毎に反転し、交番信号となる。カウンタ１１２１は、出力信号１１４の交番回数を計測するが、次の制御周期開始トリガ１３の立ち下がり（図６のＴ２のタイミング）までにカウンタの値は上限値１１２４に達しないため、Ｔ２まで制御信号２として交番信号を出力し続ける。次の制御周期開始トリガ１３の立ち下がり（図６のＴ２のタイミング）を検出すると、カウンタ
１１２１の値は再びリセットされる。Ｔ２で演算結果１２の値が“０”であるので、出力信号１１４は変化せずに、固定した値（図では０固定）が出力される。カウンタ１１２１は、出力信号１１４の信号変化がないために計測を行わず、カウンタ１１２１の値は増加しない。なお、ここでは交番出力そのものを計測したが、交番周期トリガ１１３の回数を計測してもよい。その場合には、演算結果１２の値が“０”あるいは“１”にかかわらず、カウンタ１１２１は増加する。
【００３３】
次に異常時の動作について説明する。カウンタ１１２１の値１１２５がカウンタの上限値１１２４よりも大きくなるのは、制御周期以上の時間が経過しても制御周期開始トリガ１３からパルス信号が出力されず、カウンタ１１２１がリセットされない状態である。
Ｔ３のタイミングからＴ１のタイミングと同様にカウンタ１１２１の値の増加が開始するが、ここで制御演算部１０において異常が発生し、演算処理が停止すると、制御周期が経過しても制御周期開始トリガ１３が現れず、カウンタ１１２１が計測を続ける。Ｔ４のタイミングでカウンタ１１２１の値１１２５が上限値１１２４よりも大きくなると、Ｔ４以降、出力停止信号１１２６がオンする。制御信号２は、Ｔ４まで交番信号を出力しているが、出力停止信号１１２６によりＴ４以降の出力２は論理値０を出力し続け、システムは安全側に保たれる。
【００３４】
以上の説明から、制御演算部１０は、出力部１１に対して演算結果１２と制御周期開始信号１３を受け渡すだけで、出力の信号変換を意識する必要はなくなる。また、出力部
１１は、タイマ１１０からの交番周期トリガ１１３により交番信号生成処理を実行するので、制御演算部１０と出力部１１は独立に動作させることができる。従って、制御演算部１０は、交番出力を意識することがなく作ることが可能となる。
【００３５】
これまで、交番出力をフェールセーフコントローラ１の出力信号として説明してきたが、その他に、フェールセーフコントローラの生死信号として用いる事もできる。この場合、演算結果１２は常に論理値１であり、制御演算部１０は制御周期毎に制御周期開始トリガ１３としてパルス信号を出力するだけでよい。これにより出力部１１は交番信号を出力し続ける。システムに異常が発生し、制御演算部１０の処理が停止すると、制御周期開始トリガ１３が出力されなくなるため、出力監視部１１２により交番信号出力が抑止される。従って、交番信号の出力の有無で、システムの健全性を知ることができる。
【００３６】
次に第二の実施例について、図を用いて説明する。
【００３７】
第一の実施例では、交番信号生成および監視をハードウエアで行う実施例を示したが、以下では、ソフトウェアで実現する例を示す。交番信号生成および監視をソフトウエアで実現した場合、細かな機能調整が可能となったり、経年変化による故障が発生しないなどのメリットがある。
【００３８】
図７は、ソフトウエアで実現する場合の構成の概要を示したものである。この図に示すように制御演算部１０で行っていた処理はアプリケーションプログラム７０の一部となり、交番信号出力部１１１と出力監視部１１２で行っていた処理は、別プログラム（たとえば、ＯＳ７１）で実現する。また、タイマは、ハードウエアで実現する。
【００３９】
図１はソフトウエアで実現する場合のフェールセーフコントローラ１の構成を示したものである。この図に示したフェールセーフコントローラ１を適用したシステムについては図３のフェールセーフコントローラ１と置き換えれば同様の構成となる。本フェールセーフコントローラは、ソフトウエアを実行するプロセッサの異常を検出するために、Ａ系とＢ系の２重系の構造となっている。それぞれの系は、タイマ１１０Ａ（１１０Ｂ），プロセッサ１２０Ａ（１２０Ｂ），メモリ１２１Ａ（１２１Ｂ）がバス１２３Ａ（１２３Ｂ）で接続された構成となっている。また、プロセッサ１２０Ａ，１２０Ｂの異常を検出するためのバス比較回路１２４と安全性を高めるための外部カウンタ１２６，外部へ制御信号を出力するためのＩＯ１２７が、バス１２３Ａ，１２３Ｂに接続されている。
【００４０】
Ａ系のメモリ１２１Ａには、制御演算部１０で行っていた処理を実行するためのアプリケーションプログラム７０と、交番信号出力部１１１と出力監視部１１２で行っていた処理を実行するＯＳ７１のプログラムとが格納されている。プロセッサ１２０Ａは、メモリ１２１Ａに格納されたアプリケーションプログラム７０、ＯＳ(オペレーティングシステム)などのプログラムをメモリバス１２３Ａを介して、読み出し実行する。Ｂ系も同様にプロセッサ１２０Ｂが、メモリ１２１Ｂに格納されたアプリケーションプログラム７０、ＯＳ（オペレーティングシステム）などのプログラムをメモリバス１２３Ｂを介して、読み出し実行する。Ａ系，Ｂ系のプロセッサ１２０Ａ，１２０Ｂは、同一のプログラムを同期して実行するので、バス比較回路１２４は、メモリバス１２３Ａと１２３Ｂのデータを比較してプロセッサ等の動作異常をバス不一致として検出する。不一致と検出された場合、バス比較回路１２４は、エラー信号１２５を出力する。エラー信号１２５はそれぞれのプロセッサ１２０Ａ，１２０Ｂへ入力されたり、また図示していない手段を介してフェールセーフコントローラ１をリセットしたりする。タイマ１１０Ａは、割り込み信号である交番周期トリガ１１３を発生させる周期タイマである。この交番周期トリガ１１３による割り込みレベルはエラー例外を除いた通常割り込みの中で最上位レベルに設定する。カウンタ１３２Ａは、交番信号の出力回数を計測・保持するレジスタで、メモリ上の変数として割り付けられている。カウンタ１２６は、カウンタ１３２Ａ，１３２Ｂと同じ値を保持するメモリ外に設けられるレジスタである。カウンタ１２６は、メモリ上に割り付けられたカウンタ１３２Ａ，１３２Ｂが制御演算部以外のプログラムの暴走によって不用意に書き換えられることに備えて、安全性を向上させるために設けられる。
【００４１】
ＩＯ１２７は、外部機器へ制御信号１２５を出力する出力ポートである。図８，図９，図１０は１ビット分のＩＯ１２４の内部構成を示したものである。
【００４２】
図８のＩＯ１２４について説明する。１２４１はフェールセーフＡＮＤと呼ぶ交番信号の論理積を行う回路であり、Ｄ型フリップフロップで構成される。Ａ系のバス１２３ＡとＢ系のバス１２３Ｂに交番信号が出力された時のみ、信号線１２４４に交番信号が出力される。１２４２は、特開昭64−82704 号に記載されているような交番信号復号回路であり、信号線１２４４上の交番信号を整流して電圧を生成し、リレー１２４３を駆動する。即ち、本ＩＯ１２４では、バス１２３Ａとバス１２３Ｂに交番信号が出力されたときにのみ、リレーが駆動され、危険側制御信号が出力される。なお交番信号復号回路については
１２４５の回路を使用しても良い。
【００４３】
図９は、図８のリレー１２４３の代替として、半導体リレー（ＳＳＲ：ソリッドステートリレー）を用いたＩＯ１２４の構成を示したものである。１２４５は、交番信号復号回路としてトランス１２４６と整流器１２４７を用いたものであり、１２４２の回路を用いても良い。図９においても、バス１２３Ａとバス１２３Ｂに交番信号が出力されたときにのみ、半導体リレーがオンして、危険側制御信号が出力される。
【００４４】
図１０において、１２４２Ａ及び１２４２Ｂは交番信号復号回路であり、バス１２３Ａ及びバス１２３Ｂ上の交番信号を整流して電圧を生成し、半導体リレーをオンする。半導体リレーは、直列接続されており、２つの半導体リレーがオンしたときのみ、リレー1243が駆動され、危険側制御信号が出力される。ここでは、交番出力が２本(１２３Ａと123B)ある場合を示したが、交番出力が１２３Ａあるいは１２３Ｂのいずれか１本しかない場合には、フェールセーフAND1241 や半導体リレー１２４２Ａ，１２４２Ｂの直列接続を省略すれば良い。
【００４５】
尚、本実施例では、バス比較回路１２４を用いた２重化プロセッサの構成を示したが、多数決回路を用いたフェールセーフコントローラでも本発明は適用可能であることは言うまでもない。また、プロセッサだけが２重化されており、メモリはＥＣＣ（エラー訂正コード）等で冗長化されている構成にも本発明は適用可能である。更に、図１に示した１つの系、つまりメモリとプロセッサとタイマによってフェールセーフコントローラ１を実現することができる。この場合は、既に説明したようにメモリに制御演算部１０で行っていた処理を実行するためのアプリケーションプログラム７０と、交番信号出力部１１１と出力監視部１１２で行っていた処理を実行するＯＳ７１のプログラムとを格納しておく。このようなプログラムを格納した場合のプロセッサの動作は、以下に説明するのと同様である。
【００４６】
Ａ系及びＢ系のメモリ１２１Ａ及び１２１Ｂに格納されるプログラム構造を図１１に示す。アプリケーションプログラムの一部である制御演算プログラム部１３０は、演算結果である制御出力データ１３４をＯＳの出力プログラム部１３１に引き渡す。出力プログラム部１３１はタイマ１１０Ａ又はタイマ１１０Ｂの割り込みで起動され、制御出力データ１３４が論理値１の時にのみ、ＩＯ１２７への前回出力値を反転することで交番信号を生成する。更新フラグ１３３は、制御演算プログラム部１３０が、制御周期毎にセットするフラグであり、出力プログラム部１３１がクリアする。カウンタ１３２は、出力プログラム部１３１が起動された回数を格納する計測カウンタである。
【００４７】
出力プログラム部１３１が起動された時、更新フラグ１３３がセットされていれば、カウンタ１３２はクリアされ、同時に更新フラグ１３３もクリアされる。上限値１３７は、カウンタ１３２の取り得る最大値を保持している。カウンタ１３２の値が上限値１３７を超えると、出力プログラム部１３１は交番信号の生成を行わず、ＩＯ１２７に固定値を出力する。
【００４８】
次に本実施例の動作を説明する。図１２は、制御演算プログラム部１３０と出力プログラム部１３１の動作を時間軸（横軸）に沿って示したものである。制御演算プログラム部１３０は、１００〜６００ms程度の制御周期でプログラムを実行しており、交番周期トリガ１１３によるタイマ割り込みは、交番信号の周期（０.５ 〜２ms程度）で発生し、これをトリガとして出力プログラム部１３１が交番信号生成および監視処理を開始する。ここでは、アプリケーションプログラムとして、制御演算プログラム部１３０だけが実行されている例を示しているが、他のアプリケーションプログラムが実行されているときにも、交番周期トリガ１１３によるタイマ割り込みによって周期的に出力プログラム部１３１が起動され、交番信号が生成される。
【００４９】
図１３は制御演算プログラム部１３０の概略フローを示したものである。復電リセットによってフェールセーフコントローラ１が動作を開始すると、ハードウエアの初期化を行う（１４０１）。ハードウエアの初期化を行った後、カウンタ１３２の上限値を１３７に設定する（１４０２）。ここで上限値としては、制御周期に含まれる交番信号の周期以上とすれば良い。続いて制御対象の状態信号を取得し（１４０３）、制御演算を行って
（１４０４）、出力データを制御出力データ１３４に書き込む（１４０５）。出力データの更新を示すために更新フラグ１３３をセットする（１４０６）。以降、制御対象の状態信号の取得から更新フラグ１３３の更新までを制御周期として繰り返す。
【００５０】
次に出力部プログラムについて詳しく説明する。図１４は出力部プログラムを起動する割込み処理のフローを示したものである。割り込みには、入出力装置等からの通常割込み１３５と交番周期タイマからの割込み１３６とエラー検出時のエラー割込み１３７がある。通常割込み１３５発生時の処理は、当業者周知の内容なので詳細な説明を省略する。交番周期タイマ割込み１３６発生時の動作については、図１５を用いて後述する。エラー割込み１３７発生時は、フェールセーフコントローラ１が動作不可能と判断して停止するため、出力プログラム部が起動されなくなり、交番信号が停止する。これによって、制御出力１２５は安全側出力となる。
【００５１】
図１５に出力プログラム部１３１の動作フローを示す。出力プログラム部１３１が割込み処理によって起動されると、更新フラグ１３３が更新されているかをチェックする
（１３１１）。更新フラグ１３３が更新されていれば、出力データ１３４が更新されて、新たな制御周期に入ったと判断して、カウンタ１３２と外部カウンタ１２５をクリアする（１３１２）。更新されていなければ、現在の制御周期中判断し、カウンタが上限値以下か否かをチェックする（１３１３）。オーバフローしていれば、エラー割込みを発せさせフェールセーフコントローラ１を停止する。これによって、交番信号が停止して制御出力１２５は安全側出力となる。
【００５２】
カウンタが上限値以下ならば、出力データ１３４の論理値が１時に前回交番出力１２３を反転させる。通常、出力データ１３４は複数ビット(例えば２バイト)なので、この場合には論理値が１のビットのみ前回交番出力１２３を反転させる。続いて、カウンタ１３２と外部カウンタ１２３をインクリメントして、処理を終了する。
【００５３】
本発明によれば、交番信号を出力する制御装置の演算処理部は、制御周期の中で制御演算出力の更新を行うだけとなり、交番信号周期は交番周期タイマ１１０によって管理されるため、制御演算プログラム部１３０は、交番周期毎の出力処理を意識する必要はない。これによって演算処理系の生産性を向上させることが可能となる。また、出力データの交番信号化を必要とするアプリケーションプログラムとそれ以外のアプリケーションプログラムを混在させることが出来るので、システムの機能性が向上する。
【産業上の利用可能性】
【００５４】
以上に説明した本発明の内容について、例えば、信号機や踏切などの交通システム制御装置あるいは、自動車の電子制御装置に適用することにより、制御装置の故障が発生してシステムを停止せざるを得ない場合に、システムとして安全な状態に停止させることが実現出来る。
【図面の簡単な説明】
【００５５】
【図１】フェールセーフコントローラの構成を示した図である。
【図２】本発明を適用したコントローラシステムの構成を示した図である。
【図３】制御演算部及び出力部の動作を示した図である。
【図４】交番信号出力部の構成を示した図である。
【図５】出力監視部の構成を示した図である。
【図６】フェールセーフコントローラの各部の動作を示した図である。
【図７】ソフトウエアで実現する場合の全体構成の概念を示した図である。
【図８】図１に示したフェールセーフコントローラのＩＯの構成を示した図である。
【図９】図１に示したフェールセーフコントローラのＩＯの他の構成を示した図である。
【図１０】図１に示したフェールセーフコントローラのＩＯの他の構成を示した図である。
【図１１】ソフトウエアで実現する場合のプログラムとデータの流れを示した図である。
【図１２】ソフトウェアで実現する場合のプログラムのタイムチャートを示した図である。
【図１３】ソフトウエアで実現する場合の制御演算部の処理を示した図である。
【図１４】ソフトウエアで実現する場合の割込みに対する処理を示した図である。
【図１５】ソフトウエアで実現する場合の交番出力の処理を示した図である。
【符号の説明】
【００５６】
１…フェールセーフコントローラ、２…制御信号、３…状態信号、１０…制御演算部、１１…出力部、１２…演算結果、１３…制御周期開始トリガ、１１０…タイマ、１１１…交番信号出力部、１１２…出力監視部、１１４…出力信号。
【図１】
2006031727.tif 000003
【図２】
2006031727.tif 000004
【図３】
2006031727.tif 000005
【図４】
2006031727.tif 000006
【図５】
2006031727.tif 000007
【図６】
2006031727.tif 000008
【図７】
2006031727.tif 000009
【図８】
2006031727.tif 000010
【図９】
2006031727.tif 000011
【図１０】
2006031727.tif 000012
【図１１】
2006031727.tif 000013
【図１２】
2006031727.tif 000014
【図１３】
2006031727.tif 000015
【図１４】
2006031727.tif 000016
【図１５】
2006031727.tif 000017