(57)【要約】【課題】動作上の信頼性が高い高信頼性コントローラを提供すること。【解決手段】本プログラマブルコントローラ１は、同じプログラムを逐次分担実行する複数のＣＰＵ２ａ，２ｂ，２ｃと、各ＣＰＵに共通に用いられるバス４と、上記プログラムを格納しバス４に接続されたメモリ５とを有すると共に、上記各ＣＰＵとバスとの間に介在し各ＣＰＵによるプログラムの逐次分担実行のためのバスアクセス調停を行うと共に、フェッチのためのバスアクセスに規定外のＣＰＵが存在するときは、残りのＣＰＵで上記プログラムの逐次分担実行が可能なようにバス調停を行うバス調停部３、を備える。【選択図】図１
2009042889.tif 000002
【特許請求の範囲】
【請求項１】
同じプログラムを逐次分担実行する複数のＣＰＵと、各ＣＰＵに共通に用いられるバスと、上記プログラムを格納しバスに接続されたメモリと、上記各ＣＰＵとバスとの間に介在し各ＣＰＵによるプログラムの逐次分担実行のためのバス調停を行うと共に、フェッチのためのバスアクセスに規定外のバスサイクルが存在するときは、残りのＣＰＵで上記プログラムの逐次分担実行が可能なようにバス調停を行うバス調停部と、を備えたことを特徴とするコントローラ。
【請求項２】
上記プログラムが、制御システムをシーケンス制御するためのシーケンスプログラムである、ことを特徴とする請求項１に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（マイクロプロセッサ）を備えたプログラマブルコントローラ等のコントローラに関するものである。
【背景技術】
【０００２】
例えば、プログラマブルコントローラは生産工場等に設置されるファクトリーオートメーション（ＦＡ）の制御装置として用いられている。このプログラマブルコントローラは、内部にＣＰＵ、Ｉ／Ｏメモリ、プログラムメモリ等を有し、このＣＰＵは、センサ等の入力機器からの入力信号をＩ／Ｏメモリに取り込むＩＮリフレッシュ処理を行い、プログラムメモリ内のシーケンスプログラムに基づき演算実行し、その演算実行結果をＩ／Ｏメモリに書き込んでアクチュエータ等の出力機器に出力するＯＵＴリフレッシュ処理を行ったり、その他の周辺処理を行う一連の処理をサイクリックに繰り返す（例えば特許文献１参照）。
【０００３】
シーケンスプログラムには各種あり、例えばラダー図方式、ステージ方式、ＳＦＣ方式等によるシーケンスプログラムがある。そしてこれらシーケンスプログラムのうち、例えば、シーケンスプログラムは、ラダー図を用いて作成されるプログラムであり、たとえば、パーソナルコンピュータを用いて作成される。パーソナルコンピュータにおいて作成されたシーケンスプログラムは、パーソナルコンピュータ内でニ−モニックコードに変換され、ニ−モニックプログラムが生成される。
【０００４】
そして、パーソナルコンピュータをプログラマブルコントローラに接続し、ニ−モニックプログラムをパーソナルコンピュータからプログラマブルコントローラに送ると、そのニ−モニックプログラムがプログラマブルコントローラ内でマシンコードに変換され、プログラマブルコントローラ内のプログラムメモリに記憶される。これにより、プログラマブルコントローラは、プログラムメモリ内に記憶されているマシンコードに変換されたプログラムに基づいて制御装置の動作を制御することが可能になる。
【０００５】
以上のプログラマブルコントローラにおいて、その動作上の信頼性を高くすることが要望されている。しかし、その多くは、ＣＰＵに動作異常があれば、そのことを外部に報知したり、あるいは、動作異常を事前に検知するなどであり、いずれにしても、ＣＰＵ等に異常があれば、プログラマブルコントローラとしては、負荷を制御することができず、プログラマブルコントローラを用いた各種制御システムではその制御の破綻を来たすこととなってしまう。このような制御では、例えば、宇宙産業等のごとく、プログラマブルコントローラの交換や補修等が困難な地域、空間、その他では、極めて不都合である。
【特許文献１】特開２００５−２５９０７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、本発明により解決すべき課題は、複数のＣＰＵを備えて動作上の信頼性を高くした高信頼性コントローラを提供することである。
【課題を解決するための手段】
【０００７】
本発明によるコントローラは、同じプログラムを逐次分担実行する複数のＣＰＵと、各ＣＰＵに共通に用いられるバスと、上記プログラムを格納しバスに接続されたメモリと、上記各ＣＰＵとバスとの間に介在し各ＣＰＵによるプログラムの逐次分担実行のためのバス調停を行うと共に、フェッチのためのバスアクセスに規定外のバスサイクルが存在するときは、残りのＣＰＵで上記プログラムの逐次分担実行が可能なようにバス調停を行うバス調停部とを備えたことを特徴とするものである。
【０００８】
逐次分担実行とはプログラムを構成する複数のプログラム要素のうち各ＣＰＵが１ないし複数のプログラム要素の実行を分担し、各ＣＰＵがそれぞれの分担されたプログラム要素をシーケンシャルに実行することである。このプログラム要素は特に限定しないが、例えば、同じプログラムをメインプログラムとサブプログラムとに分割した場合、メインプログラムを構成するプログラム要素と、サブプログラムを構成するプログラム要素がある。また、単純にプログラムを複数のプログラム要素に均等分割し、各ＣＰＵがそれらプログラム要素を分担し、分担したプログラム要素を逐次実行する場合を含む。
【０００９】
本発明では、バス調停部により、各ＣＰＵが同じプログラムを逐次分担実行するようバス調停し、故障等によりフェッチのためのバスアクセスに規定外のバスサイクルがあれば、残りのＣＰＵでプログラムの逐次分担実行を続行するようバス調停を行うので、１つのＣＰＵが熱などで故障しても、残されたＣＰＵでそのプログラムの分担実行を継続できるから、コントローラとしての信頼性を高くすることができ、結果、そのコントローラを用いた制御システムの高安全性、高信頼性を図ることができるようになる。
【００１０】
上記プログラムは、制御システムをシーケンス制御するためのシーケンスプログラムであることが好ましい。
【発明の効果】
【００１１】
本発明によれば、複数のＣＰＵ間で同じプログラムを逐次分担実行する一方、いずれかのＣＰＵに故障等があっても、残りのＣＰＵでプログラムの逐次分担実行ができる結果、当該コントローラの動作上の信頼性が高まり、当該コントローラを用いた制御システムの安全性を高められる。
【発明を実施するための最良の形態】
【００１２】
以下、添付した図面を参照して、本発明の実施の形態に係るコントローラを詳細に説明する。実施の形態ではコントローラの一例としてプログラマブルコントローラに適用する。プログラマブルコントローラは、ＣＰＵ（マイクロプロセッサ）、メモリ、入力部、出力部、電源部等を備える。このプログラマブルコントローラは、機械や装置等を制御するため、センサ等の入力機器やアクチュエータ等の出力機器等に接続されて構成されるが、本実施の形態はバス調停に特徴があるので、それらの図示や説明は略し、簡略化した構成で示している。
【００１３】
図１に、実施の形態のプログラマブルコントローラ１の簡略化した構成、図２に図１のバス調停部の詳細ブロック、図３（ａ）に各ＣＰＵのフェッチのためのバスアクセスが正常で各ＣＰＵでプログラムの逐次分担実行が行われている状態を示し、図３（ｂ）に各ＣＰＵの１つに故障等があってフェッチのためのバスアクセスに規定外のバスサイクルがあるとき、他のＣＰＵで行ってプログラムの逐次分担実行が行われる状態を示す。
【００１４】
図１に示すプログラマブルコントローラ１は、ＣＰＵ２ａ，２ｂ，２ｃと、バス調停部３と、共通バス４と、シーケンスプログラム格納メモリ５（以下、メモリ５という）と、を備える。ＣＰＵ２ａ，２ｂ，２ｃはラダープログラムを実行するよう協調動作するようになっている。プログラマブルコントローラ１には上記したように、入力部、出力部やＣＰＵ２ａ，２ｂ，２ｃの協調動作を制御するプログラムの格納メモリ等は図示を略している。ＣＰＵ２ａ，２ｂ，２ｃはその協調動作制御プログラムに従い、メモリ５に格納しているシーケンスプログラムを実行する。メモリ５はＲＡＭで構成されており、このメモリ５内のラダープログラムは、メインプログラムや、複数のサブプログラムに分割してもよく、これらメインとサブのプログラムをＣＰＵ２ａ，２ｂ，２ｃに逐次（シーケンシャルや順次的と同義）に分担実行させてもよい。これらメインプログラムとサブプログラムのラダープログラムにおける関係は説明を略する。あるいはシーケンスプログラムを単純に複数のプログラム要素に分割し、それらプログラム要素をＣＰＵ２ａ，２ｂ，２ｃに逐次分担実行してもよい。
【００１５】
実施の形態ではＣＰＵ２ａ，２ｂ，２ｃそれぞれが、メモリ５に格納する同一のシーケンスプログラムに対して、１ないし複数のプログラム要素を逐次分担実行することに１つの特徴がある。このプログラム要素の分担実行の形態は各種決めることができ、実施の形態では特に限定されないが、例えば、各ＣＰＵ２ａ，２ｂ，２ｃ均等にプログラム要素１つないし複数ずつ実行させてもよく、あるいはＣＰＵ２ａにはメインプログラム要素を実行させ、他のＣＰＵ２ｂ，２ｃにはサブプログラム要素を実行させる、等である。サブプログラム要素には例えば浮動少数点演算（ＦＰＵ）や比例微分積分演算（ＰＩＤ）、等を処理するプログラムがある。
【００１６】
ＣＰＵ２ａ，２ｂ，２ｃは、バス調停部３を介して共通バス４に接続されている。共通バス４に上記メモリ５が接続されている。
【００１７】
バス調停部３は、ＣＰＵ２ａ，２ｂ，２ｃのバスアクセスを逐次に調停してメモリ５内のシーケンスプログラムへのフェッチ動作を逐次切り換える。例えば、バス調停部３では、シーケンスプログラムを構成するプログラム要素に対する各ＣＰＵ２ａ，２ｂ，２ｃそれぞれによる上記シーケンスプログラムの逐次分担実行を割り当てており、メモリ５に格納のプログラム要素のうち、ＣＰＵ２ａに割り当てられたプログラム要素のフェッチに要するフェッチサイクルタイム（このタイムは、ＣＰＵ２ａに対する共通バス４の開放割当時間に対応）をｔａ、ＣＰＵ２ｂに割り当てられたプログラム要素ののフェッチに要するフェッチサイクルタイムをｔｂ、ＣＰＵ２ｃに割り当てられたプログラム要素のフェッチに要するフェッチサイクルタイムをｔｃと予め設定している。また、バス調停部３は、各ＣＰＵ２ａ，２ｂ，２ｃのプログラムの逐次分担実行の順序として、フェッチ順序をＣＰＵ２ａ→ＣＰＵ２ｂ→ＣＰＵ２ｃ→に予め決めて設定している。そして、バス調停部３は、各ＣＰＵ２ａ，２ｂ，２ｃの上記フェッチ順序からＣＰＵ２ａからの共通バス４の使用要求を許可し、フェッチサイクルタイムｔａだけ、ＣＰＵ２ａに共通バス４の使用を開放し、ＣＰＵ２ａのフェッチ動作を確保する。次にこのフェッチサイクルタイムｔａの経過後は、バス調停部３は、ＣＰＵ２ｂからの共通バス４の使用要求を許可し、フェッチサイクルタイムｔｂだけ、ＣＰＵ２ｂに共通バス４の使用を開放し、ＣＰＵ２ｂのフェッチ動作を確保し、さらにフェッチサイクルタイムｔｂの経過後は、バス調停部３は、ＣＰＵ２ｃからの共通バス４の使用要求を許可し、フェッチサイクルタイムｔｃだけ、ＣＰＵ２ｃに共通バス４の使用を開放し、ＣＰＵ２ｃのフェッチ動作を確保する。こうして、シーケンスプログラムが各ＣＰＵ２ａ，２ｂ，２ｃにより逐次的に分担されて実行される。
【００１８】
上記したＣＰＵ２ａとプログラムメモリ５は点線で、ＣＰＵ２ｂとプログラムメモリ５は一点鎖線で、ＣＰＵ２ｃとプログラムメモリ５は二点鎖線で、それぞれ、共通バス４へのアクセス、メモリ５へのフェッチ動作を行う経路を示している。
【００１９】
バス調停部３は、各ＣＰＵ２ａ，２ｂ，２ｃからメモリ５へのアクセスに例えばＣＰＵ２ａにフェッチに異常があってそのバスサイクルが規定外となるときは該ＣＰＵ２ａを共通バス４から切り離し、残りのＣＰＵ２ｂ，２ｃ間でシーケンスプログラムの逐次分担実行を行わせる。なお、各ＣＰＵ２ａ，２ｂ，２ｃによるフェッチ動作とは各ＣＰＵ２ａ，２ｂ，２ｃがシーケンスプログラムを構成する複数のプログラム要素のうちの１つないし複数のプログラム要素を実行処理する命令コードやデータ等をバス調停部３、共通バス４を経由してメモリ５にアクセスして取出し、取り出した命令コード等を共通バス４、バス調停部３を経由して各ＣＰＵ２ａ，２ｂ，２ｃ内それぞれのレジスタに転送すると共に、その命令を解析し実行するものであり、これには、各ＣＰＵ２ａ，２ｂ，２ｃそれぞれに一定時間要し、この一定時間をフェッチサイクルタイムと称する。
【００２０】
図２を参照してバス調停部３のブロック構成を説明する。なお、図２はバス調停部３を説明の理解のために一例として機能的に示したものであり、この図示の構成に限定されるものでは何等無い。バス調停部３は、入出力部３１、シーケンスプログラム逐次実行管理部３２、フェッチ動作監視部３３、バス使用監視部３４、バス調停メモリ３５、および入出力部３６を有する。上記各部はマイコンにより構成することができる。
【００２１】
入出力部３１は、各ＣＰＵ２ａ，２ｂ，２ｃとの間でデータの入出力を行う。
【００２２】
シーケンスプログラム逐次実行管理部３２は、各ＣＰＵ２ａ，２ｂ，２ｃの協調動作を制御して各ＣＰＵ２ａ，２ｂ，２ｃによるシーケンスプログラムの逐次分担実行を管理している。例えば、各ＣＰＵ２ａ，２ｂ，２ｃそれぞれのシーケンスプログラムの逐次分担実行を行うときのフェッチ動作に要する時間が規定時間超過か否か、フェッチ動作が開始されたか否かなどから、各ＣＰＵ２ａ，２ｂ，２ｃそれぞれにシーケンスプログラムの逐次分担実行に支障があると判断して、その支障のあるＣＰＵを除外し、残りのＣＰＵにてシーケンスプログラムの逐次分担実行を行わせるようにして、当該プログラマブルコントローラ１で制御される制御機械等を含む制御システムを、より安全に運転させることができるように管理する。
【００２３】
フェッチ動作監視部３３は、各ＣＰＵ２ａ，２ｂ，２ｃのフェッチ動作を監視し、そのフェッチ動作監視データをシーケンスプログラム逐次実行管理部３２に与える。シーケンスプログラム逐次実行管理部３２は、そのフェッチ動作監視データから各ＣＰＵ２ａ，２ｂ，２ｃそれぞれの上記フェッチ動作の状態判定を行うことができる。
【００２４】
バス使用監視部３４は各ＣＰＵ２ａ，２ｂ，２ｃによる共通バス４の使用状況を監視し、そのバス使用監視データをシーケンスプログラム逐次実行管理部３２に与える。シーケンスプログラム逐次実行管理部３２は、そのバス使用監視データから各ＣＰＵ２ａ，２ｂ，２ｃのいずれによる共通バス４の使用状態の判定を行うことができる。
【００２５】
バス調停メモリ３５は、バス調停部３のバス調停プログラム等が格納されている。シーケンスプログラム逐次実行管理部３２は、このバス調停プログラムに従い、各ＣＰＵ２ａ，２ｂ，２ｃの共通バス４へのアクセス許可等のバス調停を実行することができる。
【００２６】
図３（ａ）を参照して、バス調停部３に、例えばＣＰＵ２ａから入出力部３１を介してバス使用要求信号が入力されてくると、シーケンスプログラム逐次実行管理部３２では、このバス使用要求信号に対応してバス使用監視部３４からの監視データに従い、共通バス４が空いていると判断すると、ＣＰＵ２ａに共通バス４を開放する。これによって、ＣＰＵ２ａは、共通バス４を使用してメモリ５にアクセスし、プログラム要素Ａのフェッチ動作を行う。フェッチサイクルタイムはｔａであり、このフェッチサイクルタイムｔａの経過後に、バス調停部３は、ＣＰＵ２ｂからのバス使用要求信号に対応してバス使用監視部３４からの監視データに従い、共通バス４が空いていると判断すると、ＣＰＵ２ｂに共通バス４を開放する。これによって、ＣＰＵ２ｂは、共通バス４を使用してメモリ５にアクセスし、プログラム要素Ｂのフェッチ動作を行う。このフェッチサイクルタイムはｔｂである。次のＣＰＵ２ｃの場合も同様であり、プログラム要素Ｃに対するフェッチサイクルタイムはｔｃである。
【００２７】
以上によりシーケンスプログラムが実行されるが、バス調停部３のシーケンスプログラム逐次実行管理部３２では、ＣＰＵ２ａからフェッチが開始されなかったり、あるいはフェッチサイクルタイムがｔａより長すぎたり、短かすぎたりするなど、フェッチが、図３（ｂ）で示すように、規定外の場合では、ＣＰＵ２ａに何等かの故障によりバスアクセスに異常があり、ＣＰＵ２ａが、他のＣＰＵ２ｂ、２ｃとの協調動作ができないと判断して、ＣＰＵ２ａにはプログラム要素Ａのフェッチを行わせず、次のＣＰＵ２ｂに、ＣＰＵ２ａのプログラム要素Ａの逐次分担実行を行わせる。そして、ＣＰＵ２ｃでは、次のプログラム要素Ｂの逐次分担実行を行わせる。こうして、ＣＰＵ２ａに異常等が発生しても、残りのＣＰＵ２ｂ，２ｃによりシーケンスプログラムの逐次分担実行が可能であるから、信頼性が高いプログラマブルコントローラ１を提供することができ、当該プログラマブルコントローラ１を用いた制御システムの高安全性を図ることができるようになる。
【００２８】
実施の形態では、例えば、人工衛星に実施の形態のマルチＣＰＵ搭載のプログラマブルコントローラ１を搭載し、このプログラマブルコントローラ１によって人工衛星の姿勢制御を行うことにより、人工衛星の高信頼性を提供することに寄与できる。例えば、ロボットアームを搭載している人工衛星において、ロボットアームを動作させると、ロボットアームの反作用により姿勢変動を起こす。そのため、人工衛星の姿勢を制御するコントローラで人工衛星の姿勢が一定に保たれるように姿勢制御が必要である。このような人工衛星はその周囲の環境は苛酷であり、また、コントローラの故障の多くはＣＰＵであり、実施の形態のプログラマブルコントローラのごとく、同一のシーケンスプログラムを複数のＣＰＵが実行し、１つのＣＰＵが故障しても、他のＣＰＵが制御を継続できるので、人工衛星の安定性、信頼性を高くすることに寄与できる。
【図面の簡単な説明】
【００２９】
【図１】図１は本発明の実施の形態に係るプログラマブルコントローラの概略構成を示す図である。
【図２】図２は図１のバス調停部の詳細ブロックを示す図である。
【図３】図３（ａ）は、各ＣＰＵのフェッチ動作が正常な場合のフェッチサイクルタイムの関係を示す図、図３（ｂ）は各ＣＰＵの１つにフェッチ動作が異常な場合のフェッチサイクルタイムの関係を示す図である。
【符号の説明】
【００３０】
１  プログラマブルコントローラ
２ａ，２ｂ，２ｃ  ＣＰＵ
３  バス調停部
４  共通バス
５  メモリ
【図１】
2009042889.tif 000003
【図２】
2009042889.tif 000004
【図３】
2009042889.tif 000005