(57)【要約】      （修正有）【課題】タクト時間を短縮し、制御システム全体の高精度化および生産性の向上を図る。【解決手段】ＣＰＵモジュール１２２は、リフレッシュ周期が等しい入出力モジュールをグループ化するグループ化部１７２と、グループ化されたグループ毎に、リフレッシュタイミングが偏らないようにリフレッシュ周期の位相を分散させるスケジュール部１７４と、分散された位相に基づいて複数の入出力モジュールをリフレッシュするリフレッシュ実行部１７６とを備える。【選択図】図３
2014120187.tif 000002
【特許請求の範囲】
【請求項１】
リフレッシュ周期が、プログラムの実行周期であるタクト時間と整数値との積で表され、該整数値が個々に設定される複数のスレーブモジュールと、
前記スレーブモジュールそれぞれに設定されたリフレッシュ周期に応じて、該スレーブモジュールをリフレッシュするマスターモジュールと、
を備えた制御システムであって、
前記マスターモジュールは、
前記リフレッシュ周期が等しいスレーブモジュールをグループ化するグループ化部と、
グループ化されたグループ毎に、リフレッシュタイミングが偏らないように前記リフレッシュ周期の位相を分散させるスケジュール部と、
分散された位相に基づいて前記複数のスレーブモジュールをリフレッシュするリフレッシュ実行部と、
を備えることを特徴とする制御システム。
【請求項２】
前記スケジュール部は、前記グループ内における前記スレーブモジュールの前記リフレッシュ周期の位相を前記タクト時間ずつシフトさせることを特徴とする請求項１に記載の制御システム。
【請求項３】
前記スケジュール部は、前記グループ内の前記スレーブモジュールの総数が前記整数値より大きい場合、該スレーブモジュールの総数を該整数値で除算した商に該整数値を乗じた数のスレーブモジュールについて、前記リフレッシュ周期の位相を均等に分散させ、該除算した余りのスレーブモジュールについて、リフレッシュタイミングが偏らないように該リフレッシュ周期の位相を分散させることを特徴とする請求項１または２に記載の制御システム。
【請求項４】
複数のスレーブモジュールに個々に設定され、プログラムの実行周期であるタクト時間と整数値との積で表されたリフレッシュ周期に応じて、該スレーブモジュールをリフレッシュするマスターモジュールであって、
前記リフレッシュ周期が等しいスレーブモジュールをグループ化するグループ化部と、
グループ化されたグループ毎に、リフレッシュタイミングが偏らないように前記リフレッシュ周期の位相を分散させるスケジュール部と、
分散された位相に基づいて前記複数のスレーブモジュールをリフレッシュするリフレッシュ実行部と、
を備えることを特徴とするマスターモジュール。
【請求項５】
リフレッシュ周期が、プログラムの実行周期であるタクト時間と整数値との積で表され、該整数値が個々に設定される複数のスレーブモジュールと、該スレーブモジュールを制御するマスターモジュールを用いて、該スレーブモジュールそれぞれに設定されたリフレッシュ周期に応じて、該マスターモジュールが該スレーブモジュールをリフレッシュするリフレッシュ方法であって、
前記マスターモジュールは、
前記リフレッシュ周期が等しいスレーブモジュールをグループ化し、
グループ化したグループ毎に、リフレッシュタイミングが偏らないように前記リフレッシュ周期の位相を分散させ、
分散した位相に基づいて前記複数のスレーブモジュールをリフレッシュすることを特徴とするリフレッシュ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスターモジュールが複数のスレーブモジュールそれぞれをリフレッシュする制御システム、マスターモジュール、および、リフレッシュ方法に関する。
【背景技術】
【０００２】
大規模な制御システムでは、システムの構築やメンテナンスの容易性の観点からコントローラの階層構造がとられ、階層間はネットワークにより接続される。例えば、制御システムでは、１の管理装置に対して複数のプログラマブルコントローラがネットワークを介して接続され、それぞれのプログラマブルコントローラに１または複数の被制御機器が接続される。そして、プログラマブルコントローラは、上位の管理装置から制御指令を受けて、その制御指令を解析し、下位の被制御機器を制御する。
【０００３】
また、プログラマブルコントローラでは、ＣＰＵモジュール、通信モジュール、入出力モジュール、電源モジュールといった複数種類のモジュールが分散配置され、それぞれのモジュール数を調整することで、メンテナンスやシステムの拡張を容易にしている。したがって、プログラマブルコントローラにおいて下位の被制御機器を制御する場合、ＣＰＵモジュールが、上位の管理装置から制御指令を受けて制御指令を解析し、入出力モジュールを通じて被制御機器に制御指令を伝達する。
【０００４】
上記入出力モジュールでは、ＣＰＵモジュールと被制御機器との情報交換のため（ＣＰＵモジュールに被制御機器の検知結果を入力したり、被制御機器に制御指令を出力するため）リフレッシュが必要となる。上記ＣＰＵモジュールは、同プログラマブルコントローラに含まれる複数の入出力モジュール全てのリフレッシュを実行管理する。
【０００５】
例えば、リフレッシュ周期を概算し、その概算されたリフレッシュ周期で入出力モジュールをリフレッシュし、そのリフレッシュ周期が適当であるか否かを判定しながらリフレッシュ周期を調整する技術が開示されている（例えば、特許文献１）。
【０００６】
ところで、ＣＰＵモジュールと入出力モジュールとが、Ｅｔｈｅｒｎｅｔ（登録商標）等、１の通信時には帯域が占有されてしまうネットワークで接続されている場合、複数の入出力モジュールを一度にリフレッシュすることができない。したがって、複数の入出力モジュールのいずれに対してリフレッシュを行うか、その順番をスケジューリングし、ＣＰＵモジュールは、かかるスケジュールに従って入出力モジュールを管理していた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６２−２７１５９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
入出力モジュールは、ＣＰＵモジュールと被制御機器の情報交換タイミングによって、リフレッシュが必要な時間間隔が異なる。ＣＰＵモジュールは、不要なリフレッシュを回避すべく、入出力モジュール毎に定められたリフレッシュ周期に基づいて、リフレッシュのスケジューリングを行う。
【０００９】
しかし、複数の入出力モジュールのリフレッシュタイミングを単純に分散させてスケジューリングすると、複数の入出力モジュールのリフレッシュタイミングが重なり、ＣＰＵモジュールにおけるプログラムの実行周期であるタクト時間を超過する場合が生じうる。したがって、全ての入出力モジュールのリフレッシュタイミングが重なった場合でもタクト時間を超過しないように、タクト時間を十分に長くとる必要がある。
【００１０】
しかし、近年、制御システムの大規模化および複雑化により入出力モジュールの数が増える傾向にある。このとき上記のようなスケジューリングでは、増設した入出力モジュールの分だけ単純にタクト時間が長期化されることになる。一方で、制御システムの高精度化および生産性の向上も望まれ、タクト時間の短縮化が希求されている。
【００１１】
そこで、本発明は、このような課題に鑑み、タクト時間を短縮し、制御システム全体の高精度化および生産性の向上を図ることが可能な制御システム、マスターモジュール、および、リフレッシュ方法を提供することを目的としている。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、リフレッシュ周期が、プログラムの実行周期であるタクト時間と整数値との積で表され、整数値が個々に設定される複数のスレーブモジュールと、スレーブモジュールそれぞれに設定されたリフレッシュ周期に応じて、スレーブモジュールをリフレッシュするマスターモジュールと、を備えた本発明の制御システムでは、マスターモジュールは、リフレッシュ周期が等しいスレーブモジュールをグループ化するグループ化部と、グループ化されたグループ毎に、リフレッシュタイミングが偏らないようにリフレッシュ周期の位相を分散させるスケジュール部と、分散された位相に基づいて複数のスレーブモジュールをリフレッシュするリフレッシュ実行部と、を備えることを特徴とする。
【００１３】
スケジュール部は、グループ内におけるスレーブモジュールのリフレッシュ周期の位相をタクト時間ずつシフトさせてもよい。
【００１４】
スケジュール部は、グループ内のスレーブモジュールの総数が整数値より大きい場合、スレーブモジュールの総数を整数値で除算した商に整数値を乗じた数のスレーブモジュールについて、リフレッシュ周期の位相を均等に分散させ、除算した余りのスレーブモジュールについて、リフレッシュタイミングが偏らないようにリフレッシュ周期の位相を分散させてもよい。
【００１５】
上記課題を解決するために、複数のスレーブモジュールに個々に設定され、プログラムの実行周期であるタクト時間と整数値との積で表されたリフレッシュ周期に応じて、スレーブモジュールをリフレッシュする本発明のマスターモジュールは、リフレッシュ周期が等しいスレーブモジュールをグループ化するグループ化部と、グループ化されたグループ毎に、リフレッシュタイミングが偏らないようにリフレッシュ周期の位相を分散させるスケジュール部と、分散された位相に基づいて複数のスレーブモジュールをリフレッシュするリフレッシュ実行部と、を備えることを特徴とする。
【００１６】
上記課題を解決するために、リフレッシュ周期が、プログラムの実行周期であるタクト時間と整数値との積で表され、整数値が個々に設定される複数のスレーブモジュールと、スレーブモジュールを制御するマスターモジュールを用いて、スレーブモジュールそれぞれに設定されたリフレッシュ周期に応じて、マスターモジュールがスレーブモジュールをリフレッシュする本発明のリフレッシュ方法では、マスターモジュールが、リフレッシュ周期が等しいスレーブモジュールをグループ化し、グループ化したグループ毎に、リフレッシュタイミングが偏らないようにリフレッシュ周期の位相を分散させ、分散した位相に基づいて複数のスレーブモジュールをリフレッシュすることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、タクト時間を短縮し、制御システム全体の高精度化および生産性の向上を図ることが可能となる。
【図面の簡単な説明】
【００１８】
【図１】制御システムを構成する各装置の概略的な関係を示した外観図である。
【図２】制御システムの概略的な構成を示した説明図である。
【図３】ＣＰＵモジュールのハードウェア構成の一例を示す図である。
【図４】リフレッシュ周期リストを説明するための説明図である。
【図５】グループ化部の動作を説明するための説明図である。
【図６】スケジュール部の動作を説明するための説明図である。
【図７】スケジュール部の動作を説明するための説明図である。
【図８】スケジュール部の他の動作を説明するための説明図である。
【図９】スケジュール部の他の動作を説明するための説明図である。
【図１０】リフレッシュ方法の処理の流れを示したフローチャートである。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示にすぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【００２０】
大規模なプラント等に適用される制御システムでは、そのシステム全体の処理の複雑さや物理的配置の関係により、複数の制御ユニットによる制御アプリケーションの分割制御が行われる。ここで、制御ユニットは、主として、プログラマブルコントローラ、および、プログラマブルコントローラに制御される被制御機器との組み合わせを示す。制御システムでは、このような制御ユニットが複数準備され、当該制御システム全体の制御を担う管理装置に接続される。以下、制御システムを構成する各装置を説明する。
【００２１】
（制御システム１００）
図１は、制御システム１００を構成する各装置の概略的な関係を示した外観図であり、図２は、制御システム１００の概略的な構成を示した説明図である。制御システム１００は、管理装置１１０と、１または複数のプログラマブルコントローラ１２０と、１または複数の被制御機器１３０とを含んで構成される。また、管理装置１１０と複数のプログラマブルコントローラ１２０とは、例えば、ギガ（Ｇ）ベース等のＥｔｈｅｒｎｅｔ（登録商標）によるネットワーク配線１４０によって互いに接続される。さらに、複数のプログラマブルコントローラ１２０と複数の被制御機器１３０とは、例えば、専用の接続配線１４２を通じて通信可能に接続されている。
【００２２】
管理装置１１０は、制御システム１００全体がアプリケーションに定められた工程の流れに沿って動作するように、複数のプログラマブルコントローラ１２０を一括して制御する。例えば、管理装置１１０は、個々のプログラマブルコントローラ１２０からステータス情報や制御結果を収集したり、その収集した内容に応じて、個々のプログラマブルコントローラ１２０に各種制御指令を出力したりする。
【００２３】
プログラマブルコントローラ１２０は、ＰＬＣ（Programmable Logic Controller）とも呼ばれ、図２に示すように、ＣＰＵモジュール１２２、通信モジュール１２４、入出力（Ｉ／Ｏ）モジュール１２６、電源モジュール１２８等の複数のモジュールを含んで構成される。また、電源モジュール１２８を除く各モジュール同士は、管理装置１１０との接続同様、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）によるネットワーク配線１４０によって互いに接続される。
【００２４】
ここで、ＣＰＵモジュール１２２は、アプリケーションを実現するために、それぞれの制御ユニット用に分割された実行プログラムを管理装置１１０からダウンロードし、その実行プログラムを遂行したり、制御ユニットの動作状況を不図示のモニタに表示したりする。その際、管理装置１１０から受信した制御指令、入出力モジュール１２６を通じて入力された被制御機器１３０のセンサ検出結果等に基づいて被制御機器１３０を制御する。また、ＣＰＵモジュール１２２は、自己の状態を示すステータス情報、センサの検出結果、制御結果等のデータを管理装置１１０に送信する。
【００２５】
通信モジュール１２４は、Ｅｔｈｅｒｎｅｔ（登録商標）を通じて、管理装置１１０、他のプログラマブルコントローラ１２０、および、他のモジュールに接続され、それぞれと通信を確立することができる。
【００２６】
入出力モジュール１２６は、被制御機器１３０に対して入出力の管理を行う。例えば、被制御機器１３０がセンサであれば、センサ検出結果を収集し、電動機であれば、ディスクリートで表される制御指令を送信するとともに、その制御結果を収集する。電源モジュール１２８は、ＣＰＵモジュール１２２、通信モジュール１２４、入出力モジュール１２６等の各モジュールに電力を供給する。
【００２７】
図１に戻って、被制御機器１３０は、ＦＡ（Factory Automation）における様々な状態を検知するセンサ、そのセンサの検知結果に応じて動作する電動機、エンコーダ等の電気機器で構成される。
【００２８】
このような制御システム１００は、様々な制御対象に適用できる。例えば、生産実行システム（ＭＥＳ：Manufacturing Execution System）に制御システム１００を適用した場合、被制御機器１３０としての、モーションコントロールユニット、センタシーラユニット（Center Sealer Unit）、および、フィルムユニット(Film Unit)等の生産機器にプログラマブルコントローラ１２０を接続する。
【００２９】
例えば、プログラマブルコントローラ１２０は、入出力モジュール１２６等から生産機器の動作状態を読み出し、モータドライバ等を通じて生産機器内の電動機を回転制御する。管理装置１１０は、各プログラマブルコントローラ１２０単位の情報の収集および制御指令の送信を実行する。こうして、制御システム１００全体として、工程管理、品質管理、製造量管理等の生産支援管理を総合的に行うことが可能となる。
【００３０】
（リフレッシュ処理）
ところで、プログラマブルコントローラ１２０内の入出力モジュール１２６では、ＣＰＵモジュール１２２と被制御機器１３０との情報交換のためリフレッシュが必要となる。ここでは、リフレッシュ対象であるスレーブモジュールとして、入出力モジュール１２６を例示し、その入出力モジュール１２６（スレーブモジュール）に対してリフレッシュを実行するマスターモジュールとしてＣＰＵモジュール１２２を挙げる。本実施形態では、ＣＰＵモジュール１２２が、同プログラマブルコントローラ１２０に含まれる複数の入出力モジュール１２６全てのリフレッシュを実行管理する。
【００３１】
上述したように、プログラマブルコントローラ１２０内では、入出力モジュール１２６同士でリフレッシュ周期が異なる場合がある。このように入出力モジュール１２６間でリフレッシュ周期が異なると、全ての入出力モジュール１２６のリフレッシュタイミングが重なる可能性がある。この場合、全てのリフレッシュタイミングが重なった場合を想定してタクト時間を決めなくてはならないので、タクト時間が不必要に長くなる。例えば、１の入出力モジュール１２６のリフレッシュに１００μｓｅｃの時間を要するとすると、タクト時間は、入出力モジュール１２６の総数、例えば、１２を乗じた１．２ｍｓｅｃ以上に設定しなければならない。
【００３２】
タクト時間が長くなると、被制御機器１３０の制御周期が長くなるので、リアルタイム性を要する制御システム１００の精度が劣化し、生産性が落ちることとなる。そこで、本実施形態では、入出力モジュール１２６のリフレッシュ周期を適切にスケジューリングする。
【００３３】
入出力モジュール１２６は、それぞれリフレッシュが必要な時間間隔が異なるので、画一的な処理のため、この時間間隔をタクト時間の整数倍に合わせる。具体的に、リフレッシュを要する最大時間間隔以下で、整数値が最大になるリフレッシュ周期を各入出力モジュール１２６に割り当てる。したがって、入出力モジュール１２６のリフレッシュ周期は、それぞれ、タクト時間と整数値との積で表される。ＣＰＵモジュール１２２は、入出力モジュール１２６それぞれに設定されたリフレッシュ周期に応じて、各入出力モジュール１２６をリフレッシュする。
【００３４】
リフレッシュ周期がタクト時間と整数値の積で表される場合において、整数値が異なる、すなわち、リフレッシュ周期が異なる場合は、各入出力モジュール１２６のリフレッシュタイミングが重なり得る。本実施形態では、整数値が等しい、すなわち、リフレッシュ周期が等しいものが複数ある場合に、リフレッシュ周期が等しいグループの中でリフレッシュタイミングを分散させることを特徴とする。この場合、グループ内では、リフレッシュタイミングが異なる状態が維持されるので、少なくとも、リフレッシュ周期が等しい入出力モジュール１２６については、リフレッシュタイミングが極力重ならないようにすることができる。
【００３５】
上記の考え方を用いて、入出力モジュール１２６全てのリフレッシュ周期をスケジューリングすることで、タクト時間を短縮し、制御システム１００全体の高精度化および生産性の向上を図ることができる。以下、プログラマブルコントローラ１２０の、特にＣＰＵモジュール１２２について詳述する。
【００３６】
（ＣＰＵモジュール１２２）
図３は、ＣＰＵモジュール１２２のハードウェア構成の一例を示す図である。図３に示すＣＰＵモジュール１２２は、入力部１５０と、出力部１５２と、通信部１５４と、ＲＯＭ１５６と、ＲＡＭ１５８と、ＣＰＵ１６０とを含んで構成される。このうち、入力部１５０と、出力部１５２と、ＲＯＭ１５６と、ＲＡＭ１５８と、ＣＰＵ１６０とは共通バス１６２によりデータ移動可能に接続されている。ここでは、本実施形態に関係のあるリフレッシュ処理について説明し、本実施形態と関係のない事項は省略する。
【００３７】
入力部１５０は、キーボードや、マウス、タッチパネル等のポインティングデバイス、音声入力デバイス等に接続され、例えば、ユーザによるプログラムの実行等、各種操作を受け付ける。出力部１５２は、液晶ディスプレイ、有機ＥＬ(Electro Luminescence)ディスプレイ等に接続され、本実施形態における処理を行うＣＰＵモジュール１２２を操作するのに必要な各種ウィンドウ、データ、制御プログラムの進行状況や制御結果等を表示させる。
【００３８】
通信部１５４は、Ｅｔｈｅｒｎｅｔ（登録商標）を通じて、通信モジュール１２４と通信を確立し、その通信モジュール１２４を通じて、管理装置１１０、他のプログラマブルコントローラ１２０、および、入出力モジュール１２６と通信することができる。
【００３９】
ＲＯＭ１５６は、上述した基本プログラムや実行プログラムを格納する。また、補助記憶装置として、ハードディスク等のストレージ手段を有していてもよい。ＲＡＭ１５８は、基本プログラムや実行プログラムの一部や、実行プログラムを遂行することにより生じるデータ（例えば、ステータス情報、センサの検出結果、制御結果等）を一時的に格納する。また、ＲＡＭ１５８では、後述するリフレッシュ周期リストも保持される。
【００４０】
ＣＰＵ１６０は、ＯＳ（Operating System）等の基本プログラムおよび実行プログラムに基づいて、各種演算やデータの入出力等、ＣＰＵモジュール１２２全体の処理を制御する。また、ＣＰＵ１６０は、ＲＯＭ１５６に格納された実行プログラムを遂行し、ワークエリアとしてのＲＡＭ１５８を利用することで、タクト時間取得部１７０、グループ化部１７２、スケジュール部１７４、リフレッシュ実行部１７６といった機能部として機能する。以下、各機能部を説明する。
【００４１】
タクト時間取得部１７０は、管理装置１１０から、自己のプログラマブルコントローラ１２０に属する１または複数の入出力モジュール１２６に関するリフレッシュ周期を示したリフレッシュ周期リストを取得する。このように、管理装置１１０は、プログラマブルコントローラ１２０単位で、全ての入出力モジュール１２６のリフレッシュ周期を管理している。
【００４２】
図４は、リフレッシュ周期リスト１９０を説明するための説明図である。ここでは、ＣＰＵモジュール１２２が属するプログラマブルコントローラ１２０に、１２の入出力モジュール１２６が含まれる例を挙げて説明する。
【００４３】
図４のリフレッシュ周期リスト１９０には、各入出力モジュール１２６を示す識別子（ここでは数値）と、整数値とが対応付けられている。ここで、リフレッシュ周期は、予め定められたタクト時間×整数値となる。
【００４４】
グループ化部１７２は、リフレッシュ周期リスト１９０を参照し、自己のプログラマブルコントローラ１２０に属する１または複数の入出力モジュール１２６から、リフレッシュ周期が等しい入出力モジュール１２６をグループ化する。
【００４５】
図５は、グループ化部１７２の動作を説明するための説明図である。グループ化部１７２は、リフレッシュ周期リスト１９０から順次入出力モジュール１２６を抽出し、整数値を基準に入出力モジュール１２６を振り直す。すると、図５のように、整数値１〜１０に各入出力モジュール１２６が割り当てられる。ここでは、整数値１に１つ（識別子＝３）の入出力モジュール１２６がグループ化され、整数値２に３つ（識別子＝１、２、８）の入出力モジュール１２６がグループ化され、整数値４に３つ（識別子＝４、５、６）の入出力モジュール１２６がグループ化され、整数値６に３つ（識別子＝１０、１１、１２）の入出力モジュール１２６がグループ化され、整数値８に２つ（識別子＝７、９）の入出力モジュール１２６がグループ化される。
【００４６】
スケジュール部１７４は、グループ毎に、リフレッシュタイミングが偏らないようにリフレッシュ周期の位相を分散させる。上述したように、本実施形態では、整数値が等しい、すなわち、リフレッシュ周期が等しい入出力モジュール１２６が複数ある場合に、リフレッシュ周期が等しいグループの中でリフレッシュタイミングが偏らないように位相を分散させる。こうすることで、グループ内では、リフレッシュタイミングが異なる状態が維持されるので、少なくとも、リフレッシュ周期が等しい入出力モジュール１２６については、リフレッシュタイミングが極力重ならないようにすることができる。
【００４７】
図６および図７は、スケジュール部１７４の動作を説明するための説明図である。ここでは、説明の便宜上、タクト時間の整数倍にあたるリフレッシュタイミングに、その整数値を付している。
【００４８】
スケジュール部１７４は、グループ内における入出力モジュール１２６のリフレッシュ周期の位相をタクト時間ずつシフトさせる。例えば、整数値が２である入出力モジュール１２６は３つ（識別子＝１、２、８）あるので（図５参照）、その３つの入出力モジュール１２６の位相を図６（ａ）に「◎」で示すように、タクト時間ずつシフトさせて配置する。そして、配置した時点を起点にして、図６（ａ）で「○」で示すように、各入出力モジュール１２６を周期的にリフレッシュする。ここでは、識別子＝１、２、８の入出力モジュール１２６のリフレッシュ周期が等しいので、タクト時間分のシフトが維持され、リフレッシュタイミングは、図６（ａ）に重畳数で示されるように、最大で２つの入出力モジュール１２６しか重ならない。
【００４９】
また、整数値が４である入出力モジュール１２６は３つ（識別子＝４、５、６）あるので（図５参照）、その３つの入出力モジュール１２６の位相を図６（ｂ）に「◎」で示すように、タクト時間ずつシフトさせて配置する。そして、配置した時点を起点にして、図６（ｂ）で「○」で示すように、各入出力モジュール１２６を周期的にリフレッシュする。ここでは、識別子＝４、５、６の入出力モジュール１２６のリフレッシュ周期が等しいので、タクト時間分のシフトが維持され、リフレッシュタイミングが重なることはない。
【００５０】
このようにして、全ての入出力モジュール１２６を配置すると、図７のようなスケジュールが生成される。図７の重畳数で示されるように、リフレッシュタイミングは、最大で６つの入出力モジュール１２６しか重ならない。したがって、リフレッシュタイミングが最大６つ重なることのみを想定したタクト時間を設定することができる。例えば、１の入出力モジュール１２６のリフレッシュに１００μｓｅｃを要するとしたら、従来では、タクト時間を、１００μｓｅｃに入出力モジュール１２６の総数を乗じて１．２ｍｓｅｃとしなければならなかったところ、本実施形態では、最大の重畳数である６を乗じた６００μｓｅｃに抑えることができる。
【００５１】
また、ここでは、複数の入出力モジュール１２６の位相をタクト時間ずつシフトさせて配置する例を挙げたが、リフレッシュ周期内であれば、どのように分散させてもよく、間欠的に位相を配置してもよい。
【００５２】
ところで、図６および図７の例では、３つの入出力モジュール１２６の位相を図６に「◎」で示すように、単純にタクト時間ずつシフトさせて配置した。しかし、リフレッシュ周期は、入出力モジュール１２６毎に定められたリフレッシュが必要な時間間隔であるため、図６（ａ）における識別子８の入出力モジュール１２６のように、リフレッシュ周期（タクト時間×２）以上の時間、リフレッシュを行わないと不具合の原因になる場合がある。
【００５３】
その場合、スケジュール部１７４は、グループ内の入出力モジュール１２６の総数が整数値より大きい場合、入出力モジュール１２６の総数を整数値で除算した商に整数値を乗じた数の入出力モジュール１２６について、リフレッシュ周期の位相を均等に分散させ、除算した余りの入出力モジュール１２６について、リフレッシュタイミングが偏らないように、すなわち、除算した余りの入出力モジュール１２６同士が重ならないように、リフレッシュ周期の位相を分散させる。
【００５４】
図８および図９は、スケジュール部１７４の他の動作を説明するための説明図である。例えば、スケジュール部１７４は、総数３を整数値２で除算して、商１と余り１を導出する。そして、スケジュール部１７４は、商１に整数値２を乗じた数の入出力モジュール１２６、ここでは、識別子＝１、２の入出力モジュール１２６を図８のように均等に分散させる。また、スケジュール部１７４は、余り１に対応する識別子＝８の入出力モジュール１２６を、図８のように、リフレッシュ周期内で適当に配置する。
【００５５】
ここでも、図６（ａ）同様、識別子＝１、２、８の入出力モジュール１２６のリフレッシュ周期が等しいので、タクト時間分のシフトが維持され、リフレッシュタイミングは、図８に重畳数で示されるように、最大で２つの入出力モジュール１２６しか重ならない。このようにして、全ての入出力モジュール１２６を配置すると、図９のようなスケジュールが生成される。ここでは、リフレッシュ周期以上の時間、リフレッシュを行わない入出力モジュール１２６がなくなるので、不具合の可能性を断つことができる。
【００５６】
かかる構成では、リフレッシュ周期が等しいグループ内において、リフレッシュ周期の位相が等しい入出力モジュール１２６の総数（重畳数）の上限と下限との差が１以下となる。例えば、図８に示した整数値が２である入出力モジュール１２６のグループ内において、リフレッシュ周期の位相が等しい入出力モジュール１２６の総数は、重畳数で示したように２か１のいずれかとなり、上限２と下限１との差は１となる。また、グループ内の入出力モジュールの総数が整数値の倍数になる場合、すなわち、総数を整数値で除算したときに余りが生じない場合は、リフレッシュ周期の位相が等しい入出力モジュール１２６の総数（重畳数）は全て等しくなるので、上限と下限との差は０となる。
【００５７】
リフレッシュ実行部１７６は、分散された位相に基づき、図７や図９のスケジュールに従って、ＣＰＵモジュール１２２が入出力モジュール１２６に被制御機器１３０への出力データを配信するための出力配信メッセージ、および、入出力モジュール１２６からＣＰＵモジュール１２２に被制御機器１３０の入力データを収集するための入力収集メッセージを含むフレームを送信して、複数の入出力モジュール１２６をリフレッシュする。
【００５８】
上述した実施形態によると、リフレッシュ周期の位相が等しい（リフレッシュタイミングが重なる）入出力モジュール１２６の総数は、図５に示した、リフレッシュ周期が等しいグループ数に依存する。ただし、グループ内の入出力モジュール１２６の総数をその整数値で除算したときに商が生じる（１以上である）場合、その商の分だけ、リフレッシュ周期の位相が等しい入出力モジュール１２６の総数が増える。例えば、上述した例では、グループ数は５となり（整数値＝１、２、４、６、８）、リフレッシュ周期の位相が等しい入出力モジュール１２６の総数の候補数が５となる。そして、整数値２のグループについてはグループ内の入出力モジュール１２６の総数３が整数値２より大きいので、その商１が候補数５に加えられる。こうして導出されたリフレッシュ周期の位相が等しい入出力モジュール１２６の総数６がリフレッシュに要する最大時間を示すことになる。したがって、１の入出力モジュール１２６のリフレッシュに要する時間に、かかる総数を乗じることで最小のタクト時間を導出することができる。
【００５９】
（リフレッシュ方法）
以下、制御システム１００の具体的なリフレッシュ方法について説明する。
【００６０】
図１０は、リフレッシュ方法の処理の流れを示したフローチャートである。まず、タクト時間取得部１７０は、管理装置１１０から、自己のプログラマブルコントローラ１２０に属する１または複数の入出力モジュール１２６に関するリフレッシュ周期リスト１９０を取得する（Ｓ２００）。
【００６１】
続いて、グループ化部１７２は、リフレッシュ周期リスト１９０から１の入出力モジュール１２６を抽出し（Ｓ２０２）、その整数値に対応するグループに対応付ける（Ｓ２０４）。そして、グループ化部１７２は、リフレッシュ周期リスト１９０に含まれる入出力モジュール１２６全てのグループへの対応付けが完了したか否か判定する（Ｓ２０６）。その結果、入出力モジュール１２６全てのグループへの対応付けが完了していれば（Ｓ２０６におけるＹＥＳ）、ステップＳ２０８に処理を移行し、未だ、対応付けが完了していない入出力モジュール１２６があれば（Ｓ２０６におけるＮＯ）、ステップＳ２０２からの処理を繰り返す。こうして、リフレッシュ周期が等しい入出力モジュール１２６がグループ化される。
【００６２】
次に、スケジュール部１７４は、グループ化部１７２がグループ化した複数のグループのうち１のグループを抽出し（Ｓ２０８）、そのグループ内に含まれる入出力モジュール１２６の総数がグループの整数値より大きいか否か判定する（Ｓ２１０）。その結果、入出力モジュール１２６の総数が整数値より大きいと（Ｓ２１０におけるＹＥＳ）、ステップＳ２１２に処理を移行し、総数が整数値以下であれば（Ｓ２１０におけるＮＯ）、ステップＳ２１４に処理を移行する。
【００６３】
入出力モジュール１２６の総数が整数値より大きいと、スケジュール部１７４は、リフレッシュタイミングが偏らないように、すなわち、入出力モジュール１２６同士が重ならないように、リフレッシュ周期の位相を分散させる（Ｓ２１２）。また、入出力モジュール１２６の総数が整数値以下であれば、スケジュール部１７４は、入出力モジュール１２６の総数を整数値で除算した商に整数値を乗じた数の入出力モジュール１２６について、リフレッシュ周期の位相を均等に分散させ、除算した余りの入出力モジュール１２６について、リフレッシュタイミングが偏らないように、すなわち、除算した余りの入出力モジュール１２６同士が重ならないように、リフレッシュ周期の位相を分散させる（Ｓ２１４）。
【００６４】
そして、スケジュール部１７４は、グループ化された全てのグループについてリフレッシュタイミングの配置が完了したか否か判定する（Ｓ２１６）。その結果、全てのグループについて配置が完了していれば（Ｓ２１６におけるＹＥＳ）、ステップＳ２１８に処理を移行し、未だ、配置されていないグループがあれば（Ｓ２１６におけるＮＯ）、ステップＳ２０８からの処理を繰り返す。こうして、リフレッシュタイミングが均されることになる。
【００６５】
続いて、リフレッシュ実行部１７６は、分散された位相に基づき、複数の入出力モジュール１２６のリフレッシュを開始する（Ｓ２１８）。
【００６６】
以上、説明した、制御システム１００によると、リフレッシュタイミングが時間方向に均され、リフレッシュタイミングが重なる入出力モジュール１２６を削減できるので、タクト時間を短縮することができ、ひいては、制御システム１００全体の高精度化および生産性の向上を図ることが可能となる。
【００６７】
また、タクト時間が固定されている場合、追加可能な入出力モジュール１２６を増やすことができる。
【００６８】
また、コンピュータを、制御システム１００、ＣＰＵモジュール１２２として機能させるプログラムや当該プログラムを記録した、コンピュータで読み取り可能なフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ、ＤＶＤ、ＢＤ等の記憶媒体も提供される。ここで、プログラムは、任意の言語や記述方法にて記述されたデータ処理手段をいう。
【００６９】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる実施形態に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【００７０】
例えば、上述した実施形態においては、マスターモジュールとしてＣＰＵモジュール１２２を、スレーブモジュールとして入出力モジュール１２６を例に挙げて説明したが、かかる場合に限らず、リフレッシュの実行元や実行先となる様々なモジュールをマスターモジュールやスレーブモジュールとして適用することができる。
【００７１】
なお、本明細書のリフレッシュ方法の各工程は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいはサブルーチンによる処理を含んでもよい。
【産業上の利用可能性】
【００７２】
本発明は、マスターモジュールが複数のスレーブモジュールそれぞれをリフレッシュする制御システム、マスターモジュール、および、リフレッシュ方法に利用することができる。
【符号の説明】
【００７３】
１００  …制御システム
１２２  …ＣＰＵモジュール（マスターモジュール）
１２６  …入出力モジュール（スレーブモジュール）
１７０  …タクト時間取得部
１７２  …グループ化部
１７４  …スケジュール部
１７６  …リフレッシュ実行部
【図１】
2014120187.tif 000003
【図２】
2014120187.tif 000004
【図３】
2014120187.tif 000005
【図４】
2014120187.tif 000006
【図５】
2014120187.tif 000007
【図６】
2014120187.tif 000008
【図７】
2014120187.tif 000009
【図８】
2014120187.tif 000010
【図９】
2014120187.tif 000011
【図１０】
2014120187.tif 000012