(57)【要約】【課題】ネットワークを介して接続されたマスター装置および複数のスレーブ装置を含む制御システムにおいて、各スレーブ装置に適した周期でデータを送信することのできる構成を提供する。【解決手段】マスター装置は、スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を含む。実行手段がプログラムを実行することで第１のデータおよび第２のデータが算出される。マスター装置は、第１のデータに対する制御周期の整数倍である第１の送信周期の設定と、第２のデータに対する制御周期の整数倍であって第１の送信周期より長い第２の送信周期の設定とに従って、第１の送信周期毎に第１のデータをパケットに割り当てるとともに、第２の送信周期毎に第２のデータをパケットに割り当てる割り当て手段を含む。【選択図】図９
2015154280.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御システムであって、
マスター装置と、
ネットワークを介して前記マスター装置と接続された複数のスレーブ装置とを備え、
前記マスター装置は、予め定められた制御周期の１または複数毎に前記ネットワーク上にパケットを送出するとともに、前記複数のスレーブ装置の各々は、前記マスター装置からのパケットを順次転送するように構成されており、
前記マスター装置は、
前記スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を備え、前記実行手段が前記プログラムを実行することで第１のデータおよび第２のデータが算出され、
前記第１のデータに対する前記制御周期の整数倍である第１の送信周期の設定と、前記第２のデータに対する前記制御周期の整数倍であって前記第１の送信周期より長い第２の送信周期の設定とに従って、前記第１の送信周期毎に前記第１のデータを前記パケットに割り当てるとともに、前記第２の送信周期毎に前記第２のデータを前記パケットに割り当てる割り当て手段とを備え、
前記マスター装置は、送信先のスレーブ装置を示す情報とともに、前記第１のデータおよび前記第２のデータのそれぞれをパケットに格納し、
前記複数のスレーブ装置の各々は、前記マスター装置からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出する、制御システム。
【請求項２】
前記割り当て手段は、前記各パケットに許容される最大データサイズを超えないように、前記第１のデータおよび前記第２のデータのそれぞれをどのパケットに割り当てるかを決定する、請求項１に記載の制御システム。
【請求項３】
前記割り当て手段は、送信周期が設定された送信対象の複数のデータのうち、その送信周期が短いデータから順に、パケットへの割り当て方を決定する、請求項１または２に記載の制御システム。
【請求項４】
前記第２のデータは、複数のデータ要素を含み、
前記割り当て手段は、
前記第２のデータに対して同期して送信することが設定されている場合には、前記第２のデータに含まれる複数のデータ要素が同一のパケットに割り当てられ、
前記第２のデータに対して同期して送信することが設定されていない場合であって、前記第２のデータに含まれる複数のデータ要素が同一のパケットに割り当てられるように、前記第２のデータのパケットへの割り当て方を決定する、請求項１〜３のいずれか１項に記載の制御システム。
【請求項５】
前記割り当て手段は、送信対象の複数のデータのうち、同期して送信することが設定されているデータを他のデータに優先して、パケットへの割り当て方を決定する、請求項４に記載の制御システム。
【請求項６】
前記割り当て手段は、各パケットにおける割り当てられたデータの占有状態を通知する手段を含む、請求項１〜５のいずれか１項に記載の制御システム。
【請求項７】
前記割り当て手段は、前記第１のデータおよび前記第２のデータを、前記制御周期と、前記第１の送信周期と、前記第２の送信周期とを含む予め定められた通信パラメータに従う割り当て方の決定ができない場合に、当該通信パラメータの変更を促す通知を行なう手段を含む、請求項１〜６のいずれか１項に記載の制御システム。
【請求項８】
制御対象を制御するための制御システムに向けられた開発支援装置であって、
前記制御システムは、マスター装置と、ネットワークを介して前記マスター装置と接続された複数のスレーブ装置とを備え、
前記マスター装置は、予め定められた制御周期毎に前記ネットワーク上にパケットを送出するとともに、前記複数のスレーブ装置の各々は、前記マスター装置からのパケットを順次転送するように構成されており、
前記開発支援装置は、
前記マスター装置が前記スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行することで第１のデータおよび第２のデータを算出するように設定されている場合に、前記第１のデータに対する前記制御周期の整数倍である第１の送信周期の設定と、前記第２のデータに対する前記制御周期の整数倍であって前記第１の送信周期より長い第２の送信周期の設定とを含む通信パラメータを受け付ける手段と、
前記第１の送信周期毎に前記第１のデータが前記パケットに割り当てられるとともに、前記第２の送信周期毎に前記第２のデータが前記パケットに割り当てられるように割り当て方を決定する割り当て決定手段とを備える、開発支援装置。
【請求項９】
ネットワークを介して複数のスレーブ装置と接続される制御装置であって、予め定められた制御周期の１または複数毎に前記ネットワーク上にパケットを送出するとともに、前記複数のスレーブ装置の各々は、前記制御装置からのパケットを順次転送するように構成されており、
前記制御装置は、
前記スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を備え、前記実行手段が前記プログラムを実行することで第１のデータおよび第２のデータが算出され、
前記第１のデータに対する前記制御周期の整数倍である第１の送信周期の設定と、前記第２のデータに対する前記制御周期の整数倍であって前記第１の送信周期より長い第２の送信周期の設定とに従って、前記第１の送信周期毎に前記第１のデータを前記パケットに割り当てるとともに、前記第２の送信周期毎に前記第２のデータを前記パケットに割り当てる割り当て手段とを備え、
前記制御装置は、送信先のスレーブ装置を示す情報とともに、前記第１のデータおよび前記第２のデータのそれぞれをパケットに格納し、
前記複数のスレーブ装置の各々は、前記マスター装置からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出する、制御装置。
【請求項１０】
制御対象を制御するための制御システムに向けられた開発支援装置であって、
前記制御システムは、マスター装置と、ネットワークを介して前記マスター装置と接続された複数のスレーブ装置とを備え、
前記マスター装置は、予め定められた制御周期の１または複数毎に前記ネットワーク上にパケットを送出するとともに、前記複数のスレーブ装置の各々は、前記マスター装置からのパケットを順次転送するように構成されており、
前記マスター装置は、前記スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を備え、前記実行手段が前記プログラムを実行することで第１のデータおよび第２のデータが算出され、
前記開発支援装置は、前記第１のデータに対する前記制御周期の整数倍である第１の送信周期の設定と、前記第２のデータに対する前記制御周期の整数倍であって前記第１の送信周期より長い第２の送信周期の設定とに従って、前記第１の送信周期毎に前記第１のデータが前記パケットに割り当てられるとともに、前記第２の送信周期毎に前記第２のデータが前記パケットに割り当てられるように割り当て方を決定する、開発支援装置。
【請求項１１】
制御対象を制御するための制御システムにおける制御方法であって、
前記制御システムは、マスター装置と、ネットワークを介して前記マスター装置と接続された複数のスレーブ装置とを備え、
前記制御方法は、
前記マスター装置が予め定められた制御周期の１または複数毎に前記ネットワーク上にパケットを送出するとともに、前記複数のスレーブ装置の各々が前記マスター装置からのパケットを順次転送するステップと、
前記マスター装置が前記スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行するステップとを備え、前記プログラムの実行によって第１のデータおよび第２のデータが算出され、
前記第１のデータに対する前記制御周期の整数倍である第１の送信周期の設定と、前記第２のデータに対する前記制御周期の整数倍であって前記第１の送信周期より長い第２の送信周期の設定とに従って、前記第１の送信周期毎に前記第１のデータを前記パケットに割り当てるとともに、前記第２の送信周期毎に前記第２のデータを前記パケットに割り当てるステップと、
前記マスター装置が送信先のスレーブ装置を示す情報とともに、前記第１のデータおよび前記第２のデータのそれぞれをパケットに格納するステップと、
前記複数のスレーブ装置の各々が前記マスター装置からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出するステップとを備える、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御するための制御システムおよびそれに向けられる開発支援装置および制御装置、ならびに制御方法に関する。
【背景技術】
【０００２】
多くの生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ（Programmable Logic Controller；以下「ＰＬＣ」とも称す）などからなる制御システムによって制御される。このような制御システムでは、フィールドの各所にリモート装置を配し、それぞれのリモート装置に対して指令値を与えるとともに、それぞれのリモート装置からフィールド情報を収集する。このような指令値やフィールド情報の伝送は、フィールドネットワークを介して行なわれる。
【０００３】
制御システム内には、互いに異なる機能を提供するリモート装置が存在し、指令値を更新する周期などもそれぞれの機能に適合させることが好ましい。
【０００４】
このようなネットワークを介したデータの受け渡しにおいて、帯域幅に対応して、その優先度に応じてデータの配列などを最適化する技術が開示されている（例えば、特開２０１２−０９４９４４号公報（特許文献１））。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−０９４９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の特開２０１２−０９４９４４号公報（特許文献１）に開示される通信帯域制御装置では、通信ドライバとタスクという１対多関係のデータ受け渡しにおいて、送信要求の重要度によるきめ細やかな帯域の指定を実現するものである。これに対して、上述のような制御システムでは、制御周期および帯域が予め定められたネットワークが採用される。そのため、データ毎に帯域を動的に指定するといった先行技術の技術思想を適用することはできない。
【０００７】
本発明は、このような課題を鑑みてなされたものであり、ネットワークを介して接続されたマスター装置および複数のスレーブ装置を含む制御システムにおいて、各スレーブ装置に適した周期でデータを送信することのできる構成を提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明のある局面に係る制御対象を制御するための制御システムは、マスター装置と、ネットワークを介してマスター装置と接続された複数のスレーブ装置とを含む。マスター装置は、予め定められた制御周期の１または複数毎にネットワーク上にパケットを送出するとともに、複数のスレーブ装置の各々は、マスター装置からのパケットを順次転送するように構成されている。マスター装置は、スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を含む。実行手段がプログラムを実行することで第１のデータおよび第２のデータが算出される。マスター装置は、第１のデータに対する制御周期の整数倍である第１の送信周期の設定と、第２のデータに対する制御周期の整数倍であって第１の送信周期より長い第２の送信周期の設定とに従って、第１の送信周期毎に第１のデータをパケットに割り当てるとともに、第２の送信周期毎に第２のデータをパケットに割り当てる割り当て手段を含む。マスター装置は、送信先のスレーブ装置を示す情報とともに、第１のデータおよび第２のデータのそれぞれをパケットに格納し、複数のスレーブ装置の各々は、マスター装置からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出する。
【０００９】
好ましくは、割り当て手段は、各パケットに許容される最大データサイズを超えないように、第１のデータおよび第２のデータのそれぞれをどのパケットに割り当てるかを決定する。
【００１０】
好ましくは、割り当て手段は、送信周期が設定された送信対象の複数のデータのうち、その送信周期が短いデータから順に、パケットへの割り当て方を決定する。
【００１１】
好ましくは、第２のデータは、複数のデータ要素を含む。割り当て手段は、第２のデータに対して同期して送信することが設定されている場合には、第２のデータに含まれる複数のデータ要素が同一のパケットに割り当てられ、第２のデータに対して同期して送信することが設定されていない場合であって、第２のデータに含まれる複数のデータ要素が同一のパケットに割り当てられるように、第２のデータのパケットへの割り当て方を決定する。
【００１２】
さらに好ましくは、割り当て手段は、送信対象の複数のデータのうち、同期して送信することが設定されているデータを他のデータに優先して、パケットへの割り当て方を決定する。
【００１３】
好ましくは、割り当て手段は、各パケットにおける割り当てられたデータの占有状態を通知する手段を含む。
【００１４】
好ましくは、割り当て手段は、第１のデータおよび第２のデータを、制御周期と、第１の送信周期と、第２の送信周期とを含む予め定められた通信パラメータに従う割り当て方の決定ができない場合に、当該通信パラメータの変更を促す通知を行なう手段を含む。
【００１５】
本発明の別の局面によれば、制御対象を制御するための制御システムに向けられた開発支援装置が提供される。制御システムは、マスター装置と、ネットワークを介してマスター装置と接続された複数のスレーブ装置とを含む。マスター装置は、予め定められた制御周期毎にネットワーク上にパケットを送出するとともに、複数のスレーブ装置の各々は、マスター装置からのパケットを順次転送するように構成されている。開発支援装置は、マスター装置がスレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行することで第１のデータおよび第２のデータを算出するように設定されている場合に、第１のデータに対する制御周期の整数倍である第１の送信周期の設定と、第２のデータに対する制御周期の整数倍であって第１の送信周期より長い第２の送信周期の設定とを含む通信パラメータを受け付ける手段と、第１の送信周期毎に第１のデータがパケットに割り当てられるとともに、第２の送信周期毎に第２のデータがパケットに割り当てられるように割り当て方を決定する割り当て決定手段とを含む。
【００１６】
本発明のさらに別の局面に係るネットワークを介して複数のスレーブ装置と接続される制御装置は、予め定められた制御周期の１または複数毎にネットワーク上にパケットを送出するとともに、複数のスレーブ装置の各々は、制御装置からのパケットを順次転送するように構成されている。制御装置は、スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を含む。実行手段がプログラムを実行することで第１のデータおよび第２のデータが算出される。制御装置は、第１のデータに対する制御周期の整数倍である第１の送信周期の設定と、第２のデータに対する制御周期の整数倍であって第１の送信周期より長い第２の送信周期の設定とに従って、第１の送信周期毎に第１のデータをパケットに割り当てるとともに、第２の送信周期毎に第２のデータをパケットに割り当てる割り当て手段とを含む。制御装置は、送信先のスレーブ装置を示す情報とともに、第１のデータおよび第２のデータのそれぞれをパケットに格納し、複数のスレーブ装置の各々は、マスター装置からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出する。
【００１７】
本発明のさらに別の局面によれば、制御対象を制御するための制御システムに向けられた開発支援装置が提供される。制御システムは、マスター装置と、ネットワークを介してマスター装置と接続された複数のスレーブ装置とを含む。マスター装置は、予め定められた制御周期の１または複数毎にネットワーク上にパケットを送出するとともに、複数のスレーブ装置の各々は、マスター装置からのパケットを順次転送するように構成されている。マスター装置は、スレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行する実行手段を備え、実行手段がプログラムを実行することで第１のデータおよび第２のデータが算出される。開発支援装置は、第１のデータに対する制御周期の整数倍である第１の送信周期の設定と、第２のデータに対する制御周期の整数倍であって第１の送信周期より長い第２の送信周期の設定とに従って、第１の送信周期毎に第１のデータがパケットに割り当てられるとともに、第２の送信周期毎に第２のデータがパケットに割り当てられるように割り当て方を決定する。
【００１８】
本発明のさらに別の局面によれば、制御対象を制御するための制御システムにおける制御方法が提供される。制御システムは、マスター装置と、ネットワークを介してマスター装置と接続された複数のスレーブ装置とを含む。制御方法は、マスター装置が予め定められた制御周期の１または複数毎にネットワーク上にパケットを送出するとともに、複数のスレーブ装置の各々がマスター装置からのパケットを順次転送するステップと、マスター装置がスレーブ装置における入出力に関連する処理を含むプログラムを繰り返し実行するステップとを含む。プログラムの実行によって第１のデータおよび第２のデータが算出される。制御方法は、第１のデータに対する制御周期の整数倍である第１の送信周期の設定と、第２のデータに対する制御周期の整数倍であって第１の送信周期より長い第２の送信周期の設定とに従って、第１の送信周期毎に第１のデータをパケットに割り当てるとともに、第２の送信周期毎に第２のデータをパケットに割り当てるステップと、マスター装置が送信先のスレーブ装置を示す情報とともに、第１のデータおよび第２のデータのそれぞれをパケットに格納するステップと、複数のスレーブ装置の各々がマスター装置からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出するステップとを含む。
【発明の効果】
【００１９】
本発明のある局面に係る制御システムによれば、各スレーブ装置に適した周期でデータを送信することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係るＰＬＣシステムの全体構成を示す模式図である。
【図２】本実施の形態に係るＰＬＣシステムに含まれるＣＰＵユニットの装置構成を示す模式図である。
【図３】本実施の形態に係るＰＬＣシステムに含まれるリモート装置の装置構成の一例を示す模式図である。
【図４】本実施の形態に係るＰＬＣシステムにおける処理の概要を説明するための図である。
【図５】本実施の形態に係るＰＬＣシステムに含まれるパケット生成の処理について説明するための図である。
【図６】本実施の形態に係るＰＬＣシステムで用いられる通信パラメータの一例を示す図である。
【図７】図６に示す通信パラメータに従うパケットの生成処理の一例を説明するための図である。
【図８】図７（ｃ）に示す出力情報がパケットに割り当てられた状態におけるパケット占有時間の合計および占有率を示す図である。
【図９】本実施の形態に係るＰＬＣシステムにおける処理手順を示すフローチャートである。
【図１０】本実施の形態に係るＰＬＣシステムにおけるパケットのデータ構造例を示す図である。
【図１１】本実施の形態の変形例に係るＰＬＣシステムの全体構成を示す模式図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２２】
本実施の形態では、制御システムの一例として、ＰＬＣを中心とするシステムについて例示する。但し、このような制御システムとしては、ＰＬＣだけではなく、各種の産業用コンピュータを中心として構成を採用することもできる。さらに、技術の進展によって、新たな処理装置（演算装置）が開発された場合には、そのような新たな処理装置を採用することもできる。
【００２３】
＜Ａ．ＰＬＣシステムの全体構成＞
まず、制御システムの一形態である、本実施の形態に係るＰＬＣシステム１の全体構成について説明する。図１は、本実施の形態に係るＰＬＣシステム１の全体構成を示す模式図である。
【００２４】
図１を参照して、ＰＬＣシステム１は、制御対象を制御するための制御システムであって、メイン処理装置２と、複数のリモート装置４０＿１，４０＿２，４０＿３，…，４０＿Ｎ（以下、「リモート装置４０」と総称する場合もある。）とを含む。メイン処理装置２およびリモート装置４０は、ＰＬＣシステム１の少なくとも一部を構成する制御装置であり、フィールドネットワーク４を介して接続されている。
【００２５】
フィールドネットワーク４を介した通信は、メイン処理装置２によって主体的に制御される。具体的には、メイン処理装置２は、予め定められたタイミングまたは規則に従って、フィールドネットワーク４上を順次伝送されるデータを送信する。以下の説明においては、フィールドネットワーク４上を順次伝送されるデータを「パケット」とも称す。このような意味において、メイン処理装置２を「マスター装置」と称し、リモート装置４０＿１，４０＿２，４０＿３，…，４０＿Ｎの各々を「スレーブ装置」とも称す。つまり、制御システムであるＰＬＣシステム１は、メイン処理装置２（マスター装置）と、フィールドネットワーク４を介してメイン処理装置２（マスター装置）と接続された複数のリモート装置４０（スレーブ装置）とを含む。
【００２６】
メイン処理装置２は、制御対象を制御するために必要なプログラム（後述するように、ユーザプログラムやシステムプログラムなどを含む）を実行することで、リモート装置４０からの入力信号（以下、「フィールド情報」とも称す。）を収集する処理、収集したフィールド情報に基づいて制御演算を行なう処理、制御演算によって算出された指令値をリモート装置４０へ出力する処理などを実現する。
【００２７】
メイン処理装置２は、その装置構成として、ＣＰＵユニット１０と、１つ以上のＩＯユニット２０と、電源ユニット３０とを含む。ＣＰＵユニット１０およびＩＯユニット２０は、図示しない内部バスを介して互いにデータ通信可能に接続されている。電源ユニット３０は、ＣＰＵユニット１０およびＩＯユニット２０へ適切な電圧の電力を供給する。
【００２８】
ＣＰＵユニット１０は、制御対象を制御するために必要なプログラムを実行する演算部と、フィールドネットワーク４を介したリモート装置４０との通信を制御するための通信処理部１１０とを含む。
【００２９】
ＣＰＵユニット１０には、各種プログラムのインストール、デバッキング、プログラム実行状態のモニターなどを行なうための開発支援装置５００が接続されてもよい。開発支援装置５００は、典型的には、汎用コンピュータ上で支援プログラムが実行されることで実現される。支援プログラムには、ＣＰＵ１０をエミュレートして、各種プログラムを模擬的に実行できる機能などが含まれる場合もある。
【００３０】
リモート装置４０は、外部のスイッチやセンサからのフィールド情報を受信し、フィールドネットワーク４を介して、その受信したフィールド情報号をメイン処理装置２へ送信する。併せて、リモート装置４０は、メイン処理装置２からフィールドネットワーク４を介して受信した指令値を、外部のリレーやアクチュエータへ出力する。あるいは、リモート装置４０は、フィールドネットワーク４を介して受信した指令値に従って自身で動作するものであってもよい。例えば、リモート装置４０としては、演算機能を持たない単純なＩＯユニット、演算機能を有するＩＯユニット、サーボドライバのようなアクチュエータを含む装置、などが想定される。
【００３１】
図１には、リモート装置４０がサーボドライバである場合を示し、リモート装置４０＿１，４０＿２，４０＿３，…，４０＿Ｎには、それぞれサーボモータ４２＿１，４２＿２，４２＿３，…，４２＿Ｎ（以下、「サーボモータ４２」と総称する場合もある。）が接続されており、メイン処理装置２からの指令に応じて、各リモート装置を通じて対応するサーボモータが制御される。
【００３２】
ＣＰＵユニット１０の通信処理部１１０は、メイン処理装置２（マスター装置）および複数のリモート装置４０（スレーブ装置）が扱うデータを含むデータ列（パケット）のフィールドネットワーク４上での巡回的な伝送を管理するように構成されている。このパケットは、予め定められた制御周期の１または複数毎に送信される。すなわち、メイン処理装置２（マスター装置）は、予め定められた制御周期の１または複数毎にフィールドネットワーク４上にパケットを送信するとともに、複数のリモート装置４０（スレーブ装置）の各々は、メイン処理装置２（マスター装置）からのパケットを順次転送するように構成される。
【００３３】
本明細書において、「制御周期」は、ユーザプログラムの処理時間を意味し、予め定められた一定周期の場合もあるし、実行されるユーザプログラムの量などに応じて、動的に変更される場合もある。
【００３４】
図１には、いわゆるリング形式のフィールドネットワークを模式的に示すが、デイジーチェーン接続のフィールドネットワークであってもよい。つまり、本実施の形態に係るフィールドネットワークとしては、データ列（パケット）を予め定められた制御周期の１または複数毎に伝送できる構成であれば、どのような構成を採用してもよい。
【００３５】
＜Ｂ．ＣＰＵユニット１０の装置構成＞
次に、本実施の形態に係るＰＬＣシステム１に含まれるＣＰＵユニット１０の装置構成について説明する。図２は、本実施の形態に係るＰＬＣシステム１に含まれるＣＰＵユニット１０の装置構成を示す模式図である。
【００３６】
図２を参照して、ＣＰＵユニット１０は、通信処理部１１０に加えて、演算部であるプロセッサ１００と、主メモリ１０２と、不揮発性メモリ１０４と、内部バスコントローラ１０８とを含む。これらのコンポーネントは、内部バス１０９を介して、互いにデータ通信可能に構成される。
【００３７】
プロセッサ１００は、制御に係るプログラムを実行する。プロセッサ１００は、不揮発性メモリ１０４などから必要なプログラムを読み出すとともに、主メモリ１０２に展開して実行する。不揮発性メモリ１０４は、制御に係るプログラムとして、ユーザプログラム１０５およびシステムプログラム１０６を格納している。プロセッサ１００のプログラムの実行に係るデータは、主メモリ１０２内のワークエリア１０３に格納される。
【００３８】
内部バスコントローラ１０８は、図示しない内部バスを介してＩＯユニット２０と接続され、プロセッサ１００とＩＯユニット２０との間のデータ（フィールド情報および指令値）の遣り取りを仲介する。
【００３９】
通信処理部１１０は、フィールドネットワーク４を介してリモート装置４０と接続され、ＣＰＵユニット１０とリモート装置４０との間のデータ（フィールド情報および指令値）の遣り取りを仲介する。より具体的には、通信処理部１１０は、通信コントローラ１１２と、共有メモリ１１４と、送信バッファ１２０と、送信回路１２２と、受信バッファ１３０と、受信回路１３２とを含む。
【００４０】
送信バッファ１２０および送信回路１２２は、通信処理部１１０から外部装置へのフレーム送信に係る処理を実現し、受信バッファ１３０および受信回路１３２は、外部装置から通信処理部１１０へのフレーム送信に係る処理を実現する。通信処理部１１０は、共有メモリ１１４を有しており、プロセッサ１００は、算出した指定値を共有メモリ１１４に書き込むとともに、共有メモリ１１４からフィールド情報を読み出す。つまり、共有メモリ１１４に書き込まれた指令値は、送信バッファ１２０へ転送され、送信バッファ１２０からリモート装置４０へ送信される。また、リモート装置４０から取得されたフィールド情報は、受信バッファ１３０で受信された後、共有メモリ１１４へ転送される。
【００４１】
通信処理部１１０における一連の処理は、通信コントローラ１１２によって実行される。より具体的には、通信コントローラ１１２は、プロセッサ１００などからの指令に従って、パケットを生成し送信されるとともに、受信されたパケットから必要な情報を抽出したりする。
【００４２】
通信処理部１１０は、ソフトウェアを用いて、その一部または全部を実現してもよい。あるいは、ＡＳＩＣ（Application Specific Integrated Circuit：特定用途向集積回路）やＦＰＧＡ（Field-Programmable Gate Array）などのハード回路を用いて、その一部または全部を実現してもよい。
【００４３】
＜Ｃ．リモート装置４０の装置構成＞
次に、本実施の形態に係るＰＬＣシステム１に含まれるリモート装置４０の装置構成について説明する。図３は、本実施の形態に係るＰＬＣシステム１に含まれるリモート装置４０の装置構成の一例を示す模式図である。
【００４４】
本実施の形態に係るリモート装置４０としては、各種の構成を採用することができるが、図３には、演算機能およびＩＯ機能を有する構成例を示す。図３を参照して、リモート装置４０は、演算処理部４００と、入力回路４０２と、出力回路４０４と、通信処理部４１０とを含む。
【００４５】
演算処理部４００は、フィールドネットワーク４を介して送信されたパケットに基づいて、予め定められた処理を実行するとともに、処理の結果得られるパケットを、フィールドネットワーク４を介して送信させる。
【００４６】
入力回路４０２は、フィールド側から入力された信号（フィールド情報）を演算処理部４００へ出力する。出力回路は、演算処理部４００から与えられた指令値に応じた信号をフィールド側へ出力する。
【００４７】
通信処理部４１０は、フィールドネットワーク４を介してＣＰＵユニット１０と接続され、リモート装置４０とＣＰＵユニット１０との間のデータ（フィールド情報および指令値）の遣り取りを仲介する。より具体的には、通信処理部４１０は、通信コントローラ４１２と、共有メモリ４１４と、送信バッファ４２０と、送信回路４２２と、受信バッファ４３０と、受信回路４３２とを含む。これらのコンポーネントは、上述の通信コントローラ１１２、共有メモリ１１４、送信バッファ１２０、送信回路１２２、受信バッファ１３０、および、受信回路１３２（いずれも図２）と同様の機能を有しているので、詳細な説明は繰り返さない。但し、スレーブ装置の一部である通信処理部４１０でのパケットを受信した際の処理、および、パケットを送信する際の処理については、マスター装置の一部であるＣＰＵユニット１０の通信処理部１１０での処理とは異なっている。
【００４８】
リモート装置４０（演算処理部４００、入力回路４０２、出力回路４０４、および通信処理部４１０）については、ソフトウェアを用いてその機能の全部または一部を実現してもよいが、ＡＳＩＣやＦＰＧＡなどのハード回路を用いて、その一部または全部を実現するのが好ましい。
【００４９】
＜Ｄ．フィールドネットワーク４＞
次に、フィールドネットワーク４における通信処理について説明する。
【００５０】
フィールドネットワーク４での通信方式としては、予め定められた制御周期の１または複数毎にパケット伝送が可能な（つまり、リアルタイム通信可能な）方式が好ましい。一例として、フィールドネットワーク４としては、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）の具体例としては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）、ＰＲＯＦＩＮＥＴ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどがある。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。例えば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ（登録商標）などを用いてもよい。
【００５１】
＜Ｅ．概要＞
次に、本実施の形態に係るＰＬＣシステム１における処理の概要について説明する。図４は、本実施の形態に係るＰＬＣシステム１における処理の概要を説明するための図である。図４（ａ）は、関連技術に係るパケットのデータ構造を示す図であり、図４（ｂ）は、本実施の形態に係るパケットのデータ構造を示す図である。
【００５２】
一般的なフィールドネットワークでは、図４（ａ）に示すように、各パケットに格納されるデータ種類は一律になっている。つまり、各パケットは、同一のデータ構造を有しており、同一種類のデータセットが予め定められた制御周期の１または複数毎に送信されることになる。図４（ａ）に示す例では、各パケットは、いずれもスレーブ１〜スレーブ６のそれぞれに向けられるデータを含むことになる。
【００５３】
例えば、図１に示すような複数のサーボモータ４２を用いて、多軸制御を行なおうとすれば、各軸についての指令値を各パケットに格納する必要があり、そのデータ長が長くなる。すなわち、制御対象の軸数が多くなるほど、制御周期Ｔ１（つまり、リモート装置４０における制御周期）はその軸数に比例して長くなる。
【００５４】
しかしながら、現実的には、高速な応答が必要な軸とそうではない軸とが混在することも多い。このような軸数の多いシステムでは、高速な応答ではない軸に対しても、より高速な応答が必要な軸と同程度の制御周期で指令値が送信されるため、かえって高速な応答が必要な軸に対して制約が生じ得る。
【００５５】
図４（ａ）に示すような比較的軸数が多い構成では、すべての軸に対する指令値のセットで１パケットを構成して転送されるため、軸数に比例して制御周期はＴ１になっている。言い換えれば、各サーボモータ４２では、制御周期Ｔ１より高速な応答を実現できないことになる。
【００５６】
これに対して、本実施の形態においては、各リモート装置４０における速度要求に応じて、制御周期を実質的に可変にする。すなわち、複数のサーボモータ４２を制御する構成においては、要求される応答時間に応じた制御周期を軸毎に設定し、その設定された制御周期に応じたパケットを生成する。これにより、設定されたそれぞれの制御周期を実現する。
【００５７】
例えば、図４（ｂ）の例では、各パケットの制御周期をＴ２とした場合において、スレーブ１およびスレーブ２に対する制御周期はＴ２に設定され、スレーブ３〜スレーブ６に対する制御周期はＴ２×２に設定されるとする。各パケットは、スレーブ１およびスレーブ２に対する指令値をいずれも含むが、スレーブ３〜スレーブ６に対する指令値は、２回のうち一方のパケットにのみ含まれることになる。つまり、スレーブ３およびスレーブ４に対する指令値は奇数番目のパケットにのみ含まれ、スレーブ５およびスレーブ６に対する指令値は偶数番目のパケットにのみ含まれる、といった具合である。
【００５８】
このようなパケットを生成することで、スレーブ１およびスレーブ２では、制御周期Ｔ２と同じ制御周期を実現でき、スレーブ３〜スレーブ６では、制御周期Ｔ２の２倍の制御周期を実現できる。つまり、図４（ｂ）に示す例では、高速な応答が必要な軸は制御周期Ｔ毎に通信し、そうではない軸は複数回に一回通信することで、一回あたりのパケットのデータサイズを低減でき、それによって制御周期をより短くすることができるので、高速な応答を実現できる。
【００５９】
以下に説明するように、本実施の形態においては、制御システム内のスレーブ装置の数および各スレーブ装置における制御周期の要求に応じて、各パケットに格納されるデータ構造を周期毎に動的に変化させることで、要求を満たす制御を実現する。
【００６０】
＜Ｆ．パケット生成処理＞
次に、本実施の形態に係るＰＬＣシステム１におけるパケット生成の処理について説明する。図５は、本実施の形態に係るＰＬＣシステム１に含まれるパケット生成の処理について説明するための図である。
【００６１】
図５を参照して、ユーザプログラム１０５は、複数の処理Ａ，Ｂ，Ｃ，Ｄを含み、各処理が互いに独立して予め定められた制御周期で繰り返し実行されるとする。ここでは、複数の処理Ａ，Ｂ，Ｃ，Ｄの送信周期は、それぞれＡｓ，Ｂｓ，Ｃｓ，Ｄｓであるとする。処理Ａ，Ｂ，Ｃ，Ｄの各々は、リモート装置４０などから収集したフィールド情報を入力として用いるとともに、その実行によって、出力情報Ａ（ｎ），Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）（但し、ｎは１以上の整数）を算出する。なお、説明の便宜上、配列形式で出力情報を定義するが、必ずしも配列形式で格納される必要はなく、任意の配置および形式で格納されてもよい。出力情報Ａ（ｎ），Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）は、主メモリ１０２内のワークエリア１０３に格納され、対応する処理の制御周期で逐次更新される。つまり、メイン処理装置２（マスター装置）は、リモート装置４０（スレーブ装置）における入出力に関連する処理を含むユーザプログラム１０５を繰り返し実行するプロセッサ１００（実行手段）を含む。プロセッサ１００（実行手段）は、ユーザプログラム１０５を実行することで複数種類のデータを算出する。
【００６２】
ワークエリア１０３に格納される出力情報は、予め定められた割り当て設定１５０に従って選択され、パケットＮｔ１，Ｎｔ２，Ｎｔ３，Ｎｔ４，…が順次生成される。図５に示す例では、処理Ａによって算出される出力情報Ａ（ｎ）は、生成される各パケットに割り当てられる。つまり、出力情報Ａ（ｎ）は、パケットの制御周期毎に送信される。これに対して、出力情報Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）の通信頻度（制御周期／送信周期）は、出力情報Ａ（ｎ）の１／３に設定されている。つまり、出力情報Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）は、３回のうち１回の割合で送信されることになる。言い換えれば、出力情報Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）は、パケットの制御周期の３倍に相当する周期で更新されることになる。
【００６３】
このように、処理の種別および／または出力情報の内容に応じて、リモート装置４０に対して与えるデータの通信頻度（周期）を最適化することで、各パケットのデータサイズが過度に大きくなり、制御周期を短くできないという事態を回避することができる。つまり、フィールドネットワーク４が予め用意している通信帯域を有効に利用して、リモート装置４０の数が多い場合であっても、高速な応答が必要なリモート装置４０に対しては、より短い制御周期で指令値を与えることができる。
【００６４】
上述の説明では、ユーザプログラム１０５に含まれる処理によって算出される出力情報Ａ（ｎ），Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）をメイン処理装置２から複数のリモート装置４０へ送信する処理例について説明したが、メイン処理装置２がそれぞれのリモート装置４０からフィールド情報を収集する処理にも同様に適用できる。リモート装置４０からフィールド情報を収集する場合には、対象のリモート装置４０に対して、フィールド情報を取得するためのコマンド（以下、「データリフレッシュ命令」とも称す。）を送信することになる。そのため、このデータリフレッシュ命令を、上述のように、処理の種別および／または必要なフィールド情報などに応じて、適切な制御周期で送信することで、フィールドネットワーク４が予め用意している通信帯域を有効に利用して、高速な応答にも対応するデータ通信を実現できる。
【００６５】
＜Ｇ．パケットへの割り当て処理の具体例＞
次に、具体例を用いて、パケットへの割り当て処理の一例について説明する。送信対象の出力情報のパケットへの割り当て処理、つまり割り当て設定１５０を決定する処理は、典型的には、ＣＰＵユニット１０のプロセッサ１００が実行する。但し、ＣＰＵユニット１０に接続される開発支援装置５００などのオフライン環境で実行してもよい。
【００６６】
（ｇ１：通信パラメータ）
図６は、本実施の形態に係るＰＬＣシステム１で用いられる通信パラメータの一例を示す図である。図６を参照して、例えば、複数の処理Ａ，Ｂ，Ｃ，Ｄが繰り返し実行されるとし、各処理の実行周期である送信周期Ａｓ，Ｂｓ，Ｃｓ，Ｄｓは、それぞれ２５０μｓｅｃ，５００μｓｅｃ，１０００μｓｅｃ，１０００μｓｅｃであるとする。
【００６７】
処理Ａ，Ｂ，Ｃ，Ｄは、それぞれ出力情報Ａ（ｎ），Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）を出力するとする。各出力情報に含まれるデータ数Ａｃ，Ｂｃ，Ｃｃ，Ｄｃは、それぞれ３，４，４，１であるとする。つまり、出力情報Ａ（ｎ）は、３つのデータ要素Ａ（１），Ａ（２），Ａ（３）を含んでおり、出力情報Ｂ（ｎ）およびＣ（ｎ）は、いずれも４つのデータ要素Ｂ（１），Ｂ（２），Ｂ（３），Ｂ（４）およびデータ要素Ｃ（１），Ｃ（２），Ｃ（３），Ｃ（４）をそれぞれ含んでおり、出力情報Ｄ（ｎ）は、１つのデータ要素Ｄ（１）からなる。
【００６８】
出力情報Ａ（ｎ），Ｂ（ｎ），Ｃ（ｎ），Ｄ（ｎ）にそれぞれ対応するパケット占有時間Ａｐ，Ｂｐ，Ｃｐ，Ｄｐは、対応するデータ要素をパケットに割り当てた際に必要となる占有時間を示し、各データ要素の長さや型に応じて変化し得る。つまり、パケット占有時間は、対応するデータ要素のデータサイズを意味し、制御周期Ｔｃは、１パケットあたり送信できる最大データサイズを意味する。
【００６９】
但し、パケット占有時間に代えて、データ要素のデータサイズをそのまま用いて評価してもよい。つまり、制御周期Ｔｃを用いて、各パケットに割り当て可能なデータサイズ（最大データサイズ）を先に決定するとともに、割り当て対象の各データ要素のデータサイズを用いて、割り当て方法を決定してもよい。
【００７０】
図６に示す例では、出力情報Ａ（ｎ）およびＤ（ｎ）についてのパケット占有時間ＡｐおよびＤｐは、いずれも３０μｓｅｃであり、出力情報Ｂ（ｎ）およびＣ（ｎ）についてのパケット占有時間ＢｐおよびＣｐは、いずれも３５μｓｅｃである。
【００７１】
制御周期Ｔｃは、パケットの生成周期を示す。処理Ａ，Ｂ，Ｃ，Ｄのそれぞれについての通信頻度Ａｆ，Ｂｆ，Ｃｆ，Ｄｆは、制御周期Ｔｃを基準として、パケットにどの程度対応する出力情報を割り当てるかを示す値である。例えば、処理Ａについての通信頻度Ａｆは、０．５であり、２回のパケットが送信される毎にいずれかのパケットに対応する出力情報Ａ（ｎ）をコピーすることを意味する。また、処理Ｂについての通信頻度Ｂｆは、０．２５であり、４回のパケットが送信される毎にいずれかのパケットに対応する出力情報Ｂ（ｎ）をコピーすることを意味する。また、処理ＣおよびＤについての通信頻度ＣｆおよびＤｆは、いずれも０．１２５であり、８回のパケットが送信される毎にいずれかのパケットに対応する出力情報Ｃ（ｎ）およびＤ（ｎ）をそれぞれコピーすることを意味する。したがって、出力情報Ａ（ｎ）の送信周期は制御周期Ｔｃ×２であり、出力情報Ｂ（ｎ）の送信周期は制御周期Ｔｃ×４であり、出力情報Ｃ（ｎ）およびＤ（ｎ）の送信周期は制御周期Ｔｃ×８であるように、データ要素のパケットへの割り当てを行なう必要がある。
【００７２】
図６に示す通信パラメータのうち、「同期」の欄は、対応する出力情報内のデータセットを同一のパケットで送信する必要があるか否かを示す。例えば、出力情報Ａ（ｎ）およびＤ（ｎ）については、「同期」が「必要」であると指定されており、これらの出力情報内のデータセットは、同一のパケットに割り当てられる。つまり、これらの出力情報内のデータセットを同期して送信することが設定されている。これに対して、出力情報Ｂ（ｎ）およびＣ（ｎ）については、「同期」が「必要ではない」であると指定されており、これらの出力情報内のデータセットについては、一部のデータと残りのデータとが異なるパケットに割り当てられることが許容される。例えば、３軸のモーション制御などでは、各軸に対する指令を同時に更新する必要があり、このようなアプリケーションに用いられる出力情報については、同期が必要であると設定される。これに対して、それぞれ独立した制御に用いられる出力情報であれば、同一のタイミングで更新される必要はなく、このような場合には、同期は必要ではないと設定される。
【００７３】
（ｇ２：パケットの生成処理）
図７は、図６に示す通信パラメータに従うパケットの生成処理の一例を説明するための図である。図７（ａ）〜（ｃ）を参照して、図６に示す通信パラメータに従って、どのように割り当て設定が決定されるのかを説明する。
【００７４】
なお、最も高い通信頻度（制御周期／最も短い送信周期）＞１である場合には、現状の制御周期では、要求を満足できないので、送信周期、パケット占有時間、制御周期などを見直す必要がある。
【００７５】
まず、図６に示す通信パラメータに基づいて、要求される通信頻度が高い（つまり、要求される送信周期が短い）出力情報が優先的に割り当て方が決定される。但し、同期が必要である出力情報が含まれる場合には、それらの出力情報が優先される。
【００７６】
図６に示す通信パラメータでは、出力情報Ａ（ｎ）およびＤ（ｎ）に対して同期が必要であると設定されており、これらの同期が必要な出力情報のうち、出力情報Ａ（ｎ）には、より高い通信頻度が設定されている。そのため、第１番目に、同期が必要であって、通信頻度が最も高い出力情報Ａ（ｎ）のデータセット全体を、通信頻度Ａｆ（＝制御周期Ｔｃ／送信周期）の逆数に１回の頻度で割り当てるように割り当て方を決定する。図６に示す例では、出力情報Ａ（ｎ）の通信頻度は０．５であるので、出力情報Ａ（ｎ）は制御周期Ｔｃの２回に１回の頻度でパケットに割り当てられる。つまり、出力情報Ａ（ｎ）に含まれる３つのデータ要素Ａ（１），Ａ（２），Ａ（３）が単一のデータパケットに割り当てられる。
【００７７】
併せて、各パケットにデータ要素が割り当てられた際に、当該パケットにおけるパケット占有時間の合計が制御周期Ｔｃを超えないように最適化される。
【００７８】
図７（ａ）には、奇数番目のパケット、つまりパケットＮｔ１，Ｎｔ３，Ｎｔ５，Ｎｔ７，Ｎｔ９，Ｎｔ１１，Ｎｔ１３，…の各々に、出力情報Ａ（ｎ）に含まれる３つのデータ要素Ａ（１），Ａ（２），Ａ（３）が割り当てられる例を示す。
【００７９】
図７（ａ）に示す状態において、奇数番目の各パケットにおける出力情報Ａ（ｎ）についてのパケット占有時間の合計は、パケット占有時間Ａｐ×データ数Ａｃ＝９０μｓｅｃとなり、パケット占有時間Ａｐ×データ数Ａｃ＜制御周期Ｔｃ（１２５μｓｅｃ）の条件を満たすことになる。
【００８０】
２番目に、もう一つの同期が必要な出力情報Ｄ（ｎ）のデータセット全体を、通信頻度Ｄｆの逆数に１回の頻度で割り当てるように割り当て方を決定する。出力情報Ｄ（ｎ）の通信頻度は０．１２５であるので、出力情報Ｄ（ｎ）は制御周期Ｔｃの８回に１回の頻度でパケットに割り当てられる。図７（ａ）に示す状態において、奇数番目のパケットにはまだ余裕があるので、パケットＮｔ１，Ｎｔ９，…の各々に、出力情報Ｄ（ｎ）に含まれる１つのデータ要素Ｄ（１）が割り当てられる例を示す。
【００８１】
この状態において、１，９，１７，…番目の各パケットにおけるパケット占有時間の合計は、パケット占有時間Ａｐ×データ数Ａｃ＋パケット占有時間Ｄｐ×データ数Ｄｃ＝１２０μｓｅｃとなり、制御周期Ｔｃ（１２５μｓｅｃ）の条件を満たすことになる。
【００８２】
上述のような、同期が必要である出力情報を割り当てた時点で、パケット占有時間の合計に関する条件が成立しない場合には、送信周期、パケット占有時間、制御周期などを見直す必要がある。
【００８３】
このように、メイン処理装置２（マスター装置）は、出力情報Ａ（ｎ）（第１のデータ）に対する制御周期Ｔｃの整数倍（×２）である第１の送信周期の設定と、出力情報Ｄ（ｎ）（第２のデータ）に対する制御周期Ｔｃの整数倍（×８）であって第１の送信周期より長い第２の送信周期の設定とに従って、各パケットに許容される最大データサイズ（制御周期Ｔｃ）を超えないように、制御周期毎に送出されるパケットのいずれかに出力情報Ｄ（ｎ）（第１のデータ）を第１の送信周期毎に割り当てるとともに、制御周期Ｔｃ１毎に送出されるパケットのいずれかに出力情報Ｄ（ｎ）（第２のデータ）を第２の送信周期毎に割り当てるように割り当て方を決定する機能を含む。このとき、割り当て機能は、送信周期が設定された送信対象の複数のデータのうち、その送信周期が短いデータから順に、パケットへの割り当てを行なう。
【００８４】
次に、同期が必要ではない出力情報のうち、通信頻度が高いものから順次、パケットに割り当てられる。図６に示す通信パラメータでは、３番目に、同期が必要ではなく、通信頻度が最も高い出力情報Ｂ（ｎ）に含まれるデータ要素Ｂ（１），Ｂ（２），Ｂ（３），Ｂ（４）を割り当てるように割り当て方を決定する。ここで、データ要素Ｂ（１），Ｂ（２），Ｂ（３），Ｂ（４）の各々を、通信頻度Ｂｆ（＝制御周期Ｔｃ／送信周期）の逆数に１回の頻度で割り当てるように割り当て方を決定する。但し、各データ要素が異なるパケットに割り当てられてもよい。このとき、割り当てられる頻度が指定された値になること、および、各パケットにおけるパケット占有時間の合計が制御周期を超えないこと、の２つの条件を満足するように、割り当てが行なわれる。すなわち、各パケットにおける占有率（パケット占有時間の合計／制御周期Ｔｃ）が、１を超えないように、出力情報Ｂが順次割り当てられる。なお、出力情報Ｂは同期が必要ではないので、要求された通信頻度を確保できれば、同の一パケットにすべてのデータ要素を配置する必要はない。
【００８５】
例えば、図７（ａ）に示す状態において、データ要素Ｂ（１）をパケットＮｔ１に割り当てると、パケット占有時間の合計は、パケット占有時間Ａｐ×データ数Ａｃ＋パケット占有時間Ｄｐ×データ数Ｄｃ＋パケット占有時間Ｂｐ×（データ数Ｂｃ−３）＝１５５μｓｅｃ＞制御周期Ｔｃとなり、条件を満足しない。そのため、データ要素Ｂ（１）は、次のパケットＮｔ２に割り当てられる。
【００８６】
図７（ｂ）には、出力情報Ｂ（ｎ）に含まれるデータ要素Ｂ（１），Ｂ（２），Ｂ（３），Ｂ（４）のすべてが割り当てられた状態を示す。この状態において、データ要素Ｂ（１），Ｂ（２），Ｂ（３）は、パケットＮｔ２，Ｎｔ６，Ｎｔ１０，…の各々に割り当てられる。
【００８７】
図７（ｂ）に示す状態において、２，６，１０，…番目の各パケットにおけるパケット占有時間の合計は、パケット占有時間Ｂｐ×（データ数Ｂｃ−１）＝１０５μｓｅｃとなり、パケット占有時間Ｂｐ×（データ数Ｂｃ−１）＜制御周期Ｔｃ（１２５μｓｅｃ）の条件を満たすことになる。
【００８８】
ここで、パケット占有時間Ｂｐ×データ数Ｂｃ＝１４０＞制御周期Ｔｃ（１２５μｓｅｃ）となるので、データ要素Ｂ（４）をデータ要素Ｂ（１），Ｂ（２），Ｂ（３）と同じパケットＮｔ２に割り当てることはできない。さらに、奇数番目であるパケットＮｔ３については、そのパケット占有時間の合計が制限値に近いので、データ要素Ｂ（４）は、必然的にパケットＮｔ４へ割り当てられる。以下同様にして、データ要素Ｂ（４）は、パケットＮｔ４，Ｎｔ８，Ｎｔ１２，…の各々に割り当てられる。
【００８９】
次に、出力情報Ｃ（ｎ）に含まれるデータ要素Ｃ（１），Ｃ（２），Ｃ（３），Ｃ（４）の割り当て方を決定する。ここで、データ要素Ｃ（１），Ｃ（２），Ｃ（３），Ｃ（４）の各々を、通信頻度Ｃｆ（＝制御周期Ｔｃ／送信周期）の逆数に１回の頻度で割り当てるように決定する。但し、各データ要素が異なるパケットに割り当てられてもよい。このとき、割り当てられる頻度が指定された値になること、および、各パケットにおけるパケット占有時間の合計が制御周期を超えないこと、の２つの条件を満足するように、割り当てが行なわれる。すなわち、各パケットにおける占有率（パケット占有時間の合計／制御周期Ｔｃ）が、１を超えないように、出力情報Ｃが順次割り当てられる。なお、出力情報Ｃは同期が必要ではないので、要求された通信頻度を確保できれば、同の一パケットにすべてのデータ要素を配置する必要はない。
【００９０】
図７（ｂ）に示す状態において、パケットＮｔ１，Ｎｔ２，Ｎｔ３については、そのパケット占有時間の合計が制限値に近いので、出力情報Ｃ（ｎ）は、必然的にパケットＮｔ４へ割り当てられる。このとき、出力情報Ｃ（ｎ）の割り当てられるデータ要素が２つであれば、パケット占有時間Ｂｐ×（データ数Ｂｃ−３）＋パケット占有時間Ｃｐ×（データ数Ｃｃ−２）＝１０５＜制御周期Ｔｃが成立するが、出力情報Ｃ（ｎ）の割り当てられるデータ要素が３つになると、パケット占有時間Ｂｐ×データ数Ｂｃ＋パケット占有時間Ｃｐ×（データ数Ｃｃ−１）＝１４０＞制御周期Ｔｃとなるので、データ要素は２つしか割り当てることができない。
【００９１】
パケットＮｔ５，Ｎｔ６，Ｎｔ７については、そのパケット占有時間の合計が制限値に近いので、出力情報Ｃ（ｎ）の残りのデータ要素は、パケットＮｔ８へ割り当てられる。パケットＮｔ８において、パケット占有時間Ｂｐ×（データ数Ｂｃ−３）＋パケット占有時間Ｃｐ×（データ数Ｃｃ−２）＝１０５＜制御周期Ｔｃが成立する。
【００９２】
図７（ｃ）には、出力情報Ａ（ｎ），出力情報Ｂ（ｎ），出力情報Ｃ（ｎ），出力情報Ｄ（ｎ）に含まれるデータ要素のすべてが割り当てられた状態を示す。割り当て設定１５０（図５）は、この割り当て状態を定義する。
【００９３】
なお、上述のような、同期が必要ではないいずれかの出力情報を割り当てた時点で、パケット占有時間の合計に関する条件が成立しない場合には、送信周期、パケット占有時間、制御周期などを見直す必要がある。
【００９４】
図８は、図７（ｃ）に示す出力情報がパケットに割り当てられた状態におけるパケット占有時間の合計および占有率を示す図である。図８に示すように、いずれのパケットにおいても、パケット占有時間の合計は、合計が制御周期Ｔｃ（１２５μｓｅｃ）を超えておらず、その結果、占有率はいずれも１未満であることが判る。
【００９５】
上述したように、アプリケーションによっては、出力情報に含まれる複数のデータ要素に対して、同期が必要であるか否かを設定できることが好ましい。つまり、出力情報が複数のデータ要素を含む場合には、割り当て機能は、当該出力情報に対して同期して送信することが設定されている場合には、当該出力情報に含まれる複数のデータ要素を同一のパケット（すなわち、単一のパケットまたは共通のパケット）に割り当てるように割り当て方を決定する。一方、割り当て機能は、出力情報に対して同期して送信することが設定されていない場合であって、当該出力情報に含まれる複数のデータ要素を同一のパケットに割り当てることができないときには、複数のデータ要素を複数のパケットに亘って割り当てるように割り当て方を決定する。ここで、割り当て機能は、送信対象の複数の出力情報のうち、同期して送信することが設定されている出力情報を他のデータに優先して、パケットへの割り当てを行なう。
【００９６】
以上のような手順によって、各出力情報が指定された通信頻度で送信されるとともに、パケット占有時間の合計などの条件が満足されるように、各出力情報が適宜割り当てられる。
【００９７】
＜Ｈ．処理手順＞
以下、本実施の形態に係るＰＬＣシステム１における処理手順について説明する。図９は、本実施の形態に係るＰＬＣシステム１における処理手順を示すフローチャートである。なお、図９には、上述したようなデータ送信に関連する処理のみを例示的に示す。図９に示す各ステップは、典型的には、メイン処理装置２のＣＰＵユニット１０のプロセッサ１００によって実行される。但し、開発支援装置５００において、オフラインで仮想的に以下の各ステップを実行することもできる。つまり、開発支援装置５００は、メイン処理装置２のＣＰＵユニット１０と実質的に同等の機能を有している。
【００９８】
まず、プロセッサ１００は、ユーザプログラム１０５および各種設定を受け付けて、不揮発性メモリ１０４に格納する（ステップＳ２）。続いて、プロセッサ１００は、ユーザプログラム１０５に含まれる各処理によって算出される出力情報を指定された通信頻度で送信するための割り当て処理（以下に説明するステップＳ１０〜Ｓ３４）を実行する。
【００９９】
より具体的には、プロセッサ１００は、ユーザなどから指定された通信パラメータ（図６など参照）を読み出して送信対象の出力情報を特定する（ステップＳ１０）。続いて、プロセッサ１００は、読み出した通信パラメータを参照して、送信対象の出力情報のうち、同期が必要であると設定されている出力情報が存在するか否かを判断する（ステップＳ１２）。同期が必要であると設定されている出力情報が存在する場合（ステップＳ１２においてＹＥＳの場合）には、プロセッサ１００は、同期が必要であると設定されている出力情報のうち、最も通信頻度が高い出力情報を選択する（ステップＳ１４）。そして、プロセッサ１００は、割り当てられる頻度が指定された通信頻度と一致すること、および、各パケットにおけるパケット占有時間の合計が制御周期を超えないこと、の２つの条件を満足するように、選択された出力情報のいずれかのパケットへの割り当てを試みる（ステップＳ１６）。プロセッサ１００は、選択された出力情報のすべてのパケットへの割り当てが成功したか否かを判断する（ステップＳ１８）。
【０１００】
選択された出力情報のすべてをパケットへ割り当てることができなかった場合（ステップＳ１８においてＮＯの場合）には、指定された通信パラメータを実現できない旨、および、送信周期、パケット占有時間、制御周期などの見直しが必要である旨をユーザへ通知する（ステップＳ３２）。そして、処理は終了する。
【０１０１】
これに対して、選択された出力情報のすべてのパケットへの割り当てが成功した場合（ステップＳ１８においてＹＥＳの場合）には、プロセッサ１００は、同期が必要であると設定されている出力情報のうち、パケットへの割り当てが完了していないものがあるか否かを判断する（ステップＳ２０）。同期が必要であると設定されている出力情報のうち、パケットへの割り当てが完了していないものがある場合（ステップＳ２０においてＹＥＳの場合）には、パケットへの割り当てが完了していない出力情報のうち、最も通信頻度が高い出力情報を選択する（ステップＳ２２）。そして、プロセッサ１００は、ステップＳ１６以下の処理を繰り返す。
【０１０２】
これに対して、同期が必要であると設定されている出力情報のすべてについて、パケットへの割り当てが完了している場合（ステップＳ２０においてＮＯの場合）、または、同期が必要であると設定されている出力情報が存在しない場合（ステップＳ１２においてＮＯの場合）には、プロセッサ１００は、パケットへの割り当てが完了していない出力情報が存在するか否かを判断する（ステップＳ２４）。
【０１０３】
パケットへの割り当てが完了していない出力情報が存在する場合（ステップＳ２４においてＹＥＳの場合）には、プロセッサ１００は、パケットへの割り当てが完了していない出力情報のうち、最も通信頻度が高い出力情報を選択する（ステップＳ２６）。そして、プロセッサ１００は、割り当てられる頻度が指定された通信頻度と一致すること、および、各パケットにおけるパケット占有時間の合計が制御周期を超えないこと、の２つの条件を満足するように、選択された出力情報のいずれかのパケットへの割り当てを試みる（ステップＳ２８）。プロセッサ１００は、選択された出力情報のすべてのパケットへの割り当てが成功したか否かを判断する（ステップＳ３０）。
【０１０４】
選択された出力情報のすべてのパケットへの割り当てが成功しなかった場合（ステップＳ３０においてＮＯの場合）には、処理はステップＳ３２へ進む。
【０１０５】
これに対して、選択された出力情報のすべてをパケットへ割り当てることができなかった場合（ステップＳ３０においてＹＥＳの場合）には、プロセッサ１００は、ステップＳ２４以下の処理を繰り返す。
【０１０６】
最終的に、出力情報のすべてについて、パケットへの割り当てが完了している場合（ステップＳ２４においてＮＯの場合）には、プロセッサ１００は、割り当て完了の状態を示す割り当て設定１５０を生成し、格納する（ステップＳ３４）。
【０１０７】
その後、何らかの明示的または暗示的な指示に応答して、プロセッサ１００は、制御対象を制御するために必要なプログラム（ユーザプログラム１０５およびシステムプログラム１０６を含む）の実行を開始する（ステップＳ４０）。そして、プロセッサ１００は、プログラムの実行により算出された情報を、ステップＳ３４において格納した割り当て設定１５０に従って割り当て方を決定することで、パケットを制御周期毎に生成する（ステップＳ４２）。以下、ステップＳ４０およびＳ４２の処理が繰り返される。
【０１０８】
＜Ｉ．ユーザ支援機能＞
上述した、パケットへの割り当て処理では、基本的には、設定された通信パラメータに従って、それぞれの出力情報を自動的に各パケットに割り当てる処理について説明した。これに加えて、割り当て後の結果に対して、さらなる最適化を支援する機能について説明する。具体的には、予め設定された通信パラメータでは設定できないような場合に、どのように修正すればよいかをガイドするような機能ついて説明する。また、予め設定された通信パラメータに対して、さらに制御周期を短縮できるか否かをユーザへ通知するような機能について説明する。これらの機能を実装することは、ユーザ支援やユーザビリティの観点から好ましい。
【０１０９】
例えば、一旦割り当てられた結果について、図８に示すような、各パケットにおけるパケット占有時間の合計を算出する。図８に示すような各パケットにおけるパケット占有時間の合計を任意の形式（リスト形式やグラフ表示）でユーザへ提示するようにしてもよい。つまり、本実施の形態に係る割り当て処理は、各パケットにおける割り当てられたデータの占有状態（例えば、占有率や占有時間）を通知する処理を含む。
【０１１０】
出力情報を同期させてパケットへの割り当て方を決定する場合、いずれかのパケットにおいて、そのパケット占有時間の合計が制御周期を超えると、エラーとして判断される。つまり、本実施の形態に係る割り当て処理は、割り当て対象のデータ要素を、制御周期や送信周期を含む予め定められた通信パラメータに従って割り当てができない場合に、当該通信パラメータの変更を促す通知を行なう処理を含む。
【０１１１】
このような場合には、以下のような手法によって、エラーが生じないように調整が行なわれてもよい。
【０１１２】
（１）各パケットにおけるパケット占有時間の合計に適合するように、制御周期を長くする。この場合には、ユーザに対して、制御周期をどの程度まで長くすればエラーが解消するのかといったメッセージを通知してもよい。つまり、算出された各パケットにおけるパケット占有時間の合計の最大値を提示して、制御周期をその最大値より長くなるようにガイドする。あるいは、制御周期を自動的に長くするようにしてもよい。
【０１１３】
（２）制御周期に適合するように、各パケットにおけるパケット占有時間の合計を短くする。この場合には、各パケットに割り当てる出力情報を減らし、パケット占有時間の合計を短縮することになる。あるいは、同期の対象になっている出力情報の設定を変更するという対処が可能である）。
【０１１４】
また、フィールドネットワーク４を効率的に利用することを考えると、図８に示す、出力情報がパケットに割り当てられた状態におけるパケット占有時間の合計および占有率を示す結果を参照しつつ、以下のようなアプローチをとることができる。
【０１１５】
・同期が必要であると設定されている出力情報が割り当てられている奇数番目のパケットＮｔ１，Ｎｔ３，Ｎｔ５，Ｎｔ７…のパケット占有率のうち最も高い値を１に近づけることができる。
【０１１６】
・各出力情報のパケット占有時間を延ばすことや、制御周期を短くすることができる。
・パケット占有率が１に近づくまで、出力情報（例えば、出力情報Ｅ）を追加することができる。
【０１１７】
・パケット占有率が１に近づくまで、パケット占有時間を長くして送信する情報量を増加させることができる。
【０１１８】
＜Ｊ．スレーブ装置におけるデータ受信処理＞
上述したように、本実施の形態に係るＰＬＣシステム１では、制御周期毎に送出されるパケットに格納されるデータの構造は画一的なものではなく、動的に変化する。そのため、各パケットに含まれる各データの宛先も画一的なものではない。そのため、このように、その格納されるデータが時間的に変化するパケットを受信する各スレーブ装置におけるデータ受信処理について説明する。
【０１１９】
図１０は、本実施の形態に係るＰＬＣシステム１におけるパケットのデータ構造例を示す図である。図１０（ａ）には、一般的なデータ構造の一例を示す。図１０（ａ）に示すデータ構造のパケットは、ヘッダ３０２と、データエリア群３０４と、フッタ３０６とを含む。データエリア群３０４は、宛先のスレーブ装置の別に区分されており、送信対象のデータが格納されるようになっている。図１０（ａ）に示すパケットを受信した各スレーブ装置は、データエリア群３０４のうち、自局に割り当てられているデータエリアが既知であるので、その割り当てられているデータエリアから自局宛のデータを抽出する。
【０１２０】
図１０（ｂ）には、本実施の形態に係るＰＬＣシステム１において用いられるパケットのデータ構造を示す。上述したように、本実施の形態においては、各パケットの格納されるデータの宛先が時間とともに変化するので、各パケットのヘッダ３０２に宛先として有効なスレーブ装置を指定するための識別情報３０３が格納されている。
【０１２１】
図１０（ｂ）に示すパケットを受信した各スレーブ装置は、ヘッダ３０２内の識別情報３０３を参照して、データエリア群３０４のうち、自局に割り当てられているデータエリアが存在するか否かを判断するとともに、どこが自局に割り当てられているデータエリアであるかを特定する。図１０（ｂ）に示す例では、識別情報３０３として、「０」と「１」とからなるフラグが用いられており、先頭から１番目および２番目に位置するスレーブ装置、つまりスレーブ装置１およびスレーブ装置２宛のデータが格納されていることが示されている。これに対して、３番目および４番目のフラグはいずれも「０」にセットされているので、３番目および４番目に位置するスレーブ装置、つまりスレーブ装置３およびスレーブ装置４宛のデータが格納されていることが示されている。そのため、スレーブ装置３およびスレーブ装置４は、図１０（ｂ）に示すようなパケットを受信したとしても、何らのデータも抽出せず、次段のスレーブ装置へそのまま転送する。
【０１２２】
一方、先頭から５番目および６番目に位置するスレーブ装置、つまりスレーブ装置５およびスレーブ装置６は、自局宛のデータが格納されていることを特定し、対応するデータエリアから自局宛のデータを抽出する。
【０１２３】
このように、識別情報３０３を用いることで、各パケットに含まれるデータの宛先が時間とともに変化するような場合であっても、目的のスレーブ装置へ対象のデータを確実に送信することができる。つまり、メイン処理装置２（マスター装置）は、送信先のリモート装置４０（スレーブ装置）を示す識別情報３０３とともに、それぞれのデータをパケットに格納する。そして、リモート装置４０（スレーブ装置）の各々は、メイン処理装置２（マスター装置）からのパケットに含まれるデータのうち、自装置を宛先とするデータのみを抽出する。
【０１２４】
図１０（ｃ）には、本実施の形態に係るＰＬＣシステム１において用いられるパケットの別のデータ構造を示す。図１０（ｃ）に示すデータ構造は、図１０（ａ）に示すデータ構造と類似しているが、データエリア群３０４の各データエリアのサイズを動的に変更できるようになっている。つまり、送信すべきデータがないスレーブ装置に対して、その対応するデータエリアに無効を示すデータ（例えば、ｎｕｌｌコードが入力される）。各スレーブ装置は、自局に割り当てられたデータエリアにｎｕｌｌコードが入力されていれば、自局宛のデータが存在しないと判断し、何らのデータも抽出することなく、次段のスレーブ装置へそのまま転送する。
【０１２５】
なお、データの宛先を各パケットのヘッダ３０２ではなく、データエリア群３０４の各データエリアに格納してもよい。
【０１２６】
このようなデータ構造を採用することで、データエリア群３０４の枠組みを維持したまま、パケットサイズを動的に変化させて、要求に応じた制御周期を実現することができる。
【０１２７】
＜Ｋ．変形例＞
上述の実施の形態においては、いわゆるリング形式のフィールドネットワークを例示したが、デイジーチェーン形式のフィールドネットワークにも適用できる。このようなデイジーチェーン形式のフィールドネットワークについて、図１１を参照して例示する。
【０１２８】
図１１は、本実施の形態の変形例に係るＰＬＣシステム１Ａの全体構成を示す模式図である。図１１を参照して、ＰＬＣシステム１Ａは、メイン処理装置２（マスター装置）と、１つ以上のリモート装置４０（スレーブ装置）とを含み、これらは、デイジーチェーン形式のフィールドネットワークを介して接続されている。フィールドネットワークでは、マスター装置から各スレーブ装置へパケットが順次転送され（ダウンパケット）、終端部で折り返した後、各スレーブ装置からマスター装置へパケットが順次転送される（アップパケット）。
【０１２９】
このようなデイジーチェーン形式を採用した場合には、ＣＰＵユニット１０は、デイジーチェーン形式に適合した通信処理部１１０Ａを有することになる。その他の構成や処理などについては、上述したものと同様であるので、詳細な説明は繰り返さない。
【０１３０】
また、上述の実施の形態およびその変形例では、フィールドネットワークにおけるデータ伝送について例示したが、ＰＬＣ内における、ＣＰＵユニット１０とＩＯユニット２０とを繋ぐ内部バスにも適用できる。
【０１３１】
＜Ｌ．その他の形態＞
本実施の割り当て機能の実装形態については、上述した構成例に限定されることなく、各種の構成が可能である。制御装置であるメイン処理装置２（マスター装置）に割り当て機能の全部を実装してもよいし、開発支援装置５００に割り当て機能のほぼ全部を実装してもよい。あるいは、メイン処理装置２（マスター装置）と開発支援装置５００と互いに通信しながら、割り当て機能を実現するような構成であってもよい。適用先のシステム構成やコスト面などに応じて、適切な実装形態が採用される。
【０１３２】
＜Ｍ．利点＞
本実施の形態によれば、同一のネットワークに接続された複数のスレーブ装置のそれぞれに対して、各スレーブ装置が担当する機能や処理に応じた更新頻度でマスター装置から必要なデータを送信できるので、予め定められたネットワークの帯域を有効に利用できる。また、不要なデータをネットワーク上に送出する必要がないので、制御周期を短くして、より高速な通信を実現できる。
【０１３３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１３４】
１，１Ａ  ＰＬＣシステム、２  メイン処理装置、４  フィールドネットワーク、１０  ＣＰＵ、１０  ＣＰＵユニット、２０  ＩＯユニット、３０  電源ユニット、４０  リモート装置、４２  サーボモータ、１００  プロセッサ、１０２  主メモリ、１０３  ワークエリア、１０４  不揮発性メモリ、１０５  ユーザプログラム、１０６  システムプログラム、１０８  内部バスコントローラ、１０９  内部バス、１１０，１１０Ａ，４１０  通信処理部、１１２，４１２  通信コントローラ、１１４，４１４  共有メモリ、１２０，４２０  送信バッファ、１２２，４２２  送信回路、１３０，４３０  受信バッファ、１３２，４３２  受信回路、１５０  割り当て設定、４００  演算処理部、４０２  入力回路、４０４  出力回路、５００  開発支援装置。
【図１】
2015154280.tif 000003
【図２】
2015154280.tif 000004
【図３】
2015154280.tif 000005
【図４】
2015154280.tif 000006
【図５】
2015154280.tif 000007
【図６】
2015154280.tif 000008
【図７】
2015154280.tif 000009
【図８】
2015154280.tif 000010
【図９】
2015154280.tif 000011
【図１０】
2015154280.tif 000012
【図１１】
2015154280.tif 000013