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