(57)【要約】【課題】プログラマブルコントローラの動作上の安全性を図る。【解決手段】プログラムメモリ９からＤＭＡコントローラ１５ａ−１５ｃで各ＲＡＭ１３ａ−１３ｃにシーケンスプログラムを転送すると共に、各ＣＰＵ１１ａ−１１ｃは、対応する各ＲＡＭ１３ａ−１３ｃに格納するシーケンスプログラムの実行においては、同一命令をサイクルごとにずらして同時並行的に実行し、同一命令に対する各ＣＰＵの実行結果はサイクルごとで同一結果が多数側となるＣＰＵの実行結果に従う。【選択図】図１
2010271960.tif 000002
【特許請求の範囲】
【請求項１】
シーケンスプログラムを格納するプログラムメモリと、
このプログラムメモリに格納するシーケンスプログラムを各々実行する複数のＣＰＵと、
各ＣＰＵごとに対応して設けた各ＲＡＭと、
このプログラムメモリに直接アクセスして当該プログラムメモリに格納するシーケンスプログラムを各ＲＡＭに直接転送するＤＭＡコントローラと、
を含み、
プログラム実行において、プログラムメモリからＤＭＡコントローラで各ＲＡＭにシーケンスプログラムを転送すると共に、各ＣＰＵは、対応する各ＲＡＭに格納するシーケンスプログラムの実行においては、同一命令をサイクルごとにずらして同時並行的に実行し、同一命令に対する各ＣＰＵの実行結果はサイクルごとで同一結果が多数側となるＣＰＵの実行結果に従うようにした、ことを特徴とするプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数ＣＰＵによりシーケンスプログラム実行上の安全を図るようにしたプログラマブルコントローラに関するものである。
【背景技術】
【０００２】
プログラマブルコントローラは、ユーザによりラダー言語で記述されて作成されたラダープログラムを実行してそれに接続された各種機械や装置等の制御機器をシーケンス制御するようになっている。プログラマブルコントローラは、制御機器の状態に対応したスイッチやセンサ等の入力機器のＯＮ／ＯＦＦ情報を入力し、ラダープログラムに沿って論理演算を実行すると共に、得られた演算結果に従い、リレー，バルブ，アクチュエータ等の出力機器に対し、ＯＮ／ＯＦＦ情報の信号を出力することで制御機器の制御を実行するようになっている。そして、このプログラマブルコントローラでは、プログラムメモリにラダープログラムを格納すると共にＣＰＵによりこのラダープログラム上の命令をフェッチさせて実行させることで、センサ等の入力機器からの入力信号に基づいてアクチュエータ等の出力機器に出力信号を出力して制御対象をシーケンス制御することが行われている。
【０００３】
このようなプログラマブルコントローラにおいては、ＣＰＵがラダープログラムを実行する上での安全を図ることが好ましい。そのため、本出願人は、ＣＰＵを単一のＣＰＵとしてそのプログラム実行結果に依存するのではなく、ＣＰＵを複数設けると共に、各ＣＰＵそれぞれに同一のラダープログラムを実行させると共に各ＣＰＵの実行結果に基づいてラダープログラムの実行上の安全を図ることを考えた。
【０００４】
しかしながら、複数のＣＰＵにプログラマブルコントローラ内のプログラムメモリから同一命令をフェッチさせ、そのフェッチした同一命令を実行させることはできないので、多数決論理で正常ＣＰＵの判断に従い、異常ＣＰＵの判断を退けることでシステムの安全構築を図ることはできない。
【０００５】
なお、複数のＣＰＵを並列運転し、それらＣＰＵの演算制御状態が一致するＣＰＵ数の多いＣＰＵを正常、少ないＣＰＵを異常と判断するようにして多数決論理でプログラム実行上の安全を図るプログラマブルコントローラは特許文献１で提案されている。しかしながら、この特許文献１では、複数のＣＰＵが同一命令を実行するかどうかの開示はない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０６−１６１７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、本発明では、複数のＣＰＵにより同一命令を実行させる一方、その同一命令に対する各実行結果のうち、多数側の実行結果に従うようにしてプログラマブルコントローラの動作上の安全性を図るようにしたものである。
【課題を解決するための手段】
【０００８】
本発明によるプログラマブルコントローラシステムは、シーケンスプログラムを格納するプログラムメモリと、このプログラムメモリに格納するシーケンスプログラムを各々実行する複数のＣＰＵと、各ＣＰＵごとに対応して設けた各ＲＡＭと、このプログラムメモリに直接アクセスして当該プログラムメモリに格納するシーケンスプログラムを各ＲＡＭに直接転送するＤＭＡコントローラと、を含み、プログラム実行において、プログラムメモリからＤＭＡコントローラで各ＲＡＭにシーケンスプログラムを転送すると共に、各ＣＰＵは、対応する各ＲＡＭに格納するシーケンスプログラムの実行においては、同一命令をサイクルごとにずらして同時並行的に実行し、同一命令に対する各ＣＰＵの実行結果はサイクルごとで同一結果が多数側となるＣＰＵの実行結果に従うようにした、ことを特徴とするものである。
【０００９】
本発明では、プログラムメモリからＤＭＡコントローラで各ＲＡＭにシーケンスプログラムを転送すると共に、各ＣＰＵは、対応する各ＲＡＭに格納するシーケンスプログラムを実行することができるので、シーケンスプログラム上の同一命令をサイクルごとにずらして実行することができると共に、各ＣＰＵそれぞれの実行結果は、同一結果が多数側ＣＰＵの実行結果に従うので、システムの安全構築を図ることができる。
【発明の効果】
【００１０】
本発明によれば、複数のＣＰＵにより同一命令を実行させると共に、各ＣＰＵにおける同一命令に対する各実行結果のうち、多数側の実行結果に従うようにしたので、プログラマブルコントローラの動作上の安全性を図ることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は本発明の実施の形態にかかるプログラマブルコントローラの構成を示す図である。
【図２】図２はＣＰＵの実行動作を示す図である。
【発明を実施するための形態】
【００１２】
以下、添付した図面を参照して、本発明の実施の形態に係るプログラマブルコントローラを詳細に説明する。図１を参照して、実施の形態のプログラマブルコントローラは、ＣＰＵモジュール１、Ｉ／Ｏモジュール３、通信モジュール５等により構成されている。これらモジュールはバス７により接続されている。
【００１３】
ＣＰＵモジュール１は、シーケンスプログラムを格納するプログラムメモリ９と、このプログラムメモリ９に格納するシーケンスプログラムを各々実行する複数のＣＰＵ１１ａ−１１ｃと、各ＣＰＵ１１ａ−１１ｃごとに対応して設けた各ＲＡＭ１３ａ−１３ｃと、このプログラムメモリ９に直接アクセスして当該プログラムメモリ９に格納するシーケンスプログラムを各ＲＡＭに直接転送するＤＭＡコントローラ１５ａ−１５ｃと、を含む。
【００１４】
各ＣＰＵ１１ａ−１１ｃ、各ＲＡＭ１３ａ−１３ｃおよび各ＤＭＡコントローラ１５ａ−１５ｃは、それぞれ、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）１７ａ−１７ｃにより構成することができる。ＦＰＧＡ１７ａ−１７ｃは、論理回路を記述する回路情報を読み込むことで、内部の論理回路間の結線を自由に構成することができるものである。勿論、各ＣＰＵ１１ａ−１１ｃ、各ＲＡＭ１３ａ−１３ｃおよび各ＤＭＡコントローラ１５ａ−１５ｃをＦＰＧＡ１７ａ−１７ｃにより構成することが必須となるものではない。
【００１５】
図２を参照して各ＣＰＵ１１ａ−１１ｃの動作を説明する。
【００１６】
サイクル１では、ＣＰＵ１１ａがＲＡＭ１３ａからシーケンスプログラム内の命令１をフェッチする（ＦＥ１）。ＣＰＵ１１ｂ、ＣＰＵ１１ｃはＲＡＭ１３ｂ，１３ｃからシーケンスプログラム内の命令１をフェッチしない。ＲＡＭ１３ａに格納のシーケンスプログラムとＲＡＭ１３ｂ，１３ｃに格納のシーケンスプログラムとは同一プログラムである。
【００１７】
サイクル２では、ＣＰＵ１１ａはサイクル１でフェッチした命令１を実行する（ＥＸ１）と共に、ＲＡＭ１３ａから命令２をフェッチする（ＦＥ２）。ＣＰＵ１１ｂはＲＡＭ１３ｂから命令１をフェッチする（ＦＥ１）。ＣＰＵ１１ｃはＲＡＭ１３ｃから命令１をフェッチしない。
【００１８】
サイクル３では、ＣＰＵ１１ａがサイクル２でフェッチした命令２を実行する（ＥＸ２）と共に、ＲＡＭ１３ａから命令３をフェッチする（ＦＥ３）。ＣＰＵ１１ｂはサイクル２でフェッチした命令１を実行する（ＥＸ１）と共に、ＲＡＭ１３ｂから命令２をフェッチする（ＦＥ２）。ＣＰＵ１１ｃはＲＡＭ１３ｃから命令１をフェッチする（ＦＥ１）。
【００１９】
このサイクル１−３が終了すると、ＣＰＵ１１ａ，ＣＰＵ１１ｃはＣＰＵ１１ａの命令１に対する実行結果（ＥＸ１）と、ＣＰＵ１１ｂの命令１に対する実行結果（ＥＸ１）とを比較する。それら両結果が一致すると、ＣＰＵ１１ａ，１１ｂは共に正常にプログラムを実行しているとして、次のサイクル４に進む。しかし、ＣＰＵ１１ａ，１１ｂの命令１に対する実行結果が一致しないときは、少なくともいずれか一方のＣＰＵ１１ａ，１１ｂが異常である。また、いずれか他方が正常であるとの保証も得られない。そこで、この場合では、次のサイクル４に進まず、システム停止する。
【００２０】
一方、サイクル１−３が終了して、ＣＰＵ１１ａ、１１ｂそれぞれの命令１に対する実行結果が共に一致して、サイクル４に進むと、サイクル４では、ＣＰＵ１１ａが命令３を実行する（ＥＸ３）と共に、ＲＡＭ１３ａから命令４をフェッチする（ＦＥ４）。ＣＰＵ１１ｂは命令２を実行する（ＥＸ２）と共に、ＲＡＭ１３ｂから命令３をフェッチする（ＦＥ３）。ＣＰＵ１１ｃは命令１を実行する（ＥＸ１）と共に、ＲＡＭ１３ｃから命令２をフェッチする（ＦＥ２）。
【００２１】
このサイクル４が終了すると、ＣＰＵ１１ａ−１１ｃの命令１に対する実行結果（ＥＸ１）を比較し、一致する場合、次のサイクル５へ進む。３つのＣＰＵ１１ａ−１１ｃ三者の命令１に対する実行結果が一致した場合は、これら三者は正常であり命令１は正常に実行されていると判断できる。しかし、３つのＣＰＵ１１ａ−１１ｃ三者の命令１に対する実行結果が一致しない場合、ＣＰＵ１１ａ−１１ｃの結果を多数決で判断する。例えば、ＣＰＵ１１ａが一致しない（×）、ＣＰＵ１１ｂ、１１ｃが一致する（○）では、ＣＰＵ１１ｂ，１１ｃが共に正常であり、命令１を正常に実行していると判断される。
【００２２】
以上により、本実施の形態では、プログラムメモリ９からＤＭＡコントローラ１５ａ−１５ｃで各ＲＡＭ１３ａ−１３ｃにシーケンスプログラムを転送すると共に、各ＣＰＵ１１ａ−１１ｃは、対応する各ＲＡＭ１３ａ−１３ｃに格納するシーケンスプログラムを実行するようにしたので、各ＣＰＵ１１ａ−１１ｃは同一のシーケンスプログラムを実行することができると共に、各ＣＰＵそれぞれのシーケンスプログラム上の同一命令の実行結果は、実行結果が同一である多数側ＣＰＵの実行結果、すなわち、正常ＣＰＵによる実行結果に従うことになり、プログラマブルコントローラを用いた制御システムの安全構築を図ることができる。
【符号の説明】
【００２３】
１  ＣＰＵモジュール
９  プログラムメモリ
１１ａ−１１ｃ  ＣＰＵ
１３ａ−１３ｃ  ＲＡＭ
１５ａ−１５ｃ  ＤＭＡコントローラ
１７ａ−１７ｃ  ＦＰＧＡ
３  Ｉ／Ｏモジュール
５  通信モジュール
【図１】
2010271960.tif 000003
【図２】
2010271960.tif 000004