(57)【要約】【課題】制御装置におけるフレームの送信タイミングを保証するための新たな構成を提供する。【解決手段】本開示の一例に係る制御装置は、制御対象を制御するための制御装置であって、プロセッサと、通信回路とを備える。通信回路は、制御対象に対する出力データの送信、および前記制御対象からの入力データの受信を行なう。制御装置は、予め定められた制御周期毎に、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを順次繰り返すことによって、制御対象を制御するように構成される。出力データの送信処理において、プロセッサは、前回の制御周期における制御プログラムの実行により生成された出力データをフレームに格納する処理と、出力データが格納されたフレームを制御対象に送信するように通信回路を制御する処理とを実行するように構成される。プロセッサは、次回の制御周期で実行される、出力データをフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する。【選択図】図６
2019159532.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御装置であって、
プロセッサと、
前記制御対象に対する出力データの送信、および前記制御対象からの入力データの受信を行なう通信回路とを備え、
前記制御装置は、予め定められた制御周期毎に、前記出力データの送信と、前記入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを順次繰り返すことによって、前記制御対象を制御するように構成されており、
前記出力データの送信処理において、前記プロセッサは、
前回の制御周期における前記制御プログラムの実行により生成された前記出力データをフレームに格納する処理と、
前記出力データが格納されたフレームを前記制御対象に送信するように前記通信回路を制御する処理とを実行するように構成されており、
前記プロセッサは、次回の制御周期で実行される、前記出力データをフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する、制御装置。
【請求項２】
前記プロセッサは、
今回の制御周期内で、前記制御プログラムを実行した後に、前記出力データをフレームに格納する処理を実行し、
次回の制御周期が開始されると、前記通信回路を制御する処理を実行する、請求項１に記載の制御装置。
【請求項３】
前記プロセッサは、
今回の制御周期内で、前記出力データをフレームに格納する処理の一部分を実行し、
次回の制御周期が開始されると、前記出力データをフレームに格納する処理の残りの部分、および前記通信回路を制御する処理を順次実行する、請求項１に記載の制御装置。
【請求項４】
前記出力データをフレームに格納する処理は、
前記フレームを生成する処理と、
生成された前記フレームに前記出力データを格納する処理とを含み、
前記制御装置は、上位ネットワークを介して他の装置との間でデータを遣り取りするように構成されており、
制御周期内において、前記制御プログラムの実行後に、前記他の装置とのデータの遣り取りによって前記出力データが更新される場合、前記プロセッサは、
今回の制御周期内で、前記入力データを受信する処理を実行した後であって、前記制御プログラムを実行する前に、前記フレームを生成する処理を実行し、
次回の制御周期が開始されると、前記出力データを格納する処理を実行する、請求項３に記載の制御装置。
【請求項５】
前記出力データをフレームに格納する処理は、
前記フレームを生成する処理と、
生成された前記フレームに前記出力データを格納する処理とを含み、
前記制御装置は、上位ネットワークを介して他の装置との間でデータを遣り取りするように構成されており、
制御周期内において、前記制御プログラムの実行後に、前記他の装置とのデータの遣り取りによって前記出力データが更新される場合、前記プロセッサは、
今回の制御周期内で、前記制御プログラムを実行した後であって、前記他の装置とのデータの遣り取りを実行する前に、前記出力データをフレームに格納する処理を実行し、
次回の制御周期が開始されると、更新された前記出力データを前記フレームに格納する処理、および前記通信回路を制御する処理を順次実行する、請求項３に記載の制御装置。
【請求項６】
制御装置と、
前記制御装置からの制御指令に従って動作する１または複数のデバイスとを備え、
前記制御装置および前記１または複数のデバイスは、互いに時刻同期されたタイマを有しており、
前記制御装置は、
プロセッサと、
前記１または複数のデバイスに対する制御指令の送信、および前記１または複数のデバイスからの入力データの受信を行なう通信回路とを含み、
前記制御装置は、予め定められた制御周期毎に、前記制御指令の送信と、前記入力データの受信と、前記入力データを使用して前記制御指令を生成する制御プログラムの実行とを順次繰り返すことによって、前記１または複数のデバイスを制御するように構成されており、
前記制御指令の送信処理において、前記プロセッサは、
前回の制御周期における前記制御プログラムの実行により生成された前記制御指令をフレームに格納する処理と、
前記制御指令が格納された前記フレームを前記制御対象に送信するように前記通信回路を制御する処理とを実行するように構成されており、
前記プロセッサは、次回の制御周期で実行される、前記制御指令をフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する、制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御対象を制御する制御装置およびそれを備える制御システムに関する。
【背景技術】
【０００２】
生産現場においては、様々なＦＡ（Factory Automation）技術が広く普及している。このようなＦＡシステムは、ＰＬＣ（プログラマブルコントローラ）といった制御装置が用いられる。制御装置は、１または複数のデバイス（典型的には、リモートＩＯ（Input/Output）装置やサーボモータドライバなど）との間でネットワークを介してデータを遣り取りする。
【０００３】
このような制御装置においては、入力データの取得および制御指令の出力を高精度に同期させたいという要求がある。このような要求に応えるために、ネットワークを介して接続されている制御装置およびデバイスは、各々に内蔵されるクロックが互いに時刻同期した状態に維持される。そして、制御装置およびデバイスの各々は、互いに同期したクロックに基づいて、送信タイミングおよび受信タイミングを調整する。
【０００４】
このような時刻同期された構成において、デバイス装置が収集した入力データを制御装置が受信する処理、および、制御装置にて生成された制御指令をデバイスに送信する処理を含む入出力処理が制御周期毎に実行される。例えば、特開２０１２−１９４６６２号公報（特許文献１）は、制御指令の送信と、入力データの受信と、入力データを使用して制御指令を生成する制御プログラム（ユーザプログラムおよびモーション演算プログラム）の実行とを制御周期で繰り返すことによって、制御対象を制御する構成を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１９４６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した制御装置において、入出力処理は、ＣＰＵ（Central Processing Unit）などで構成されたプロセッサによるソフトウェア処理で実現される。ソフトウェア処理においては、プロセッサの処理能力などに依存して、あるデータ量を処理するのに要する処理時間にばらつきが生じることがある。そのため、入出力処理のうち、制御指令が格納されたフレームをデバイスに送信する処理においては、制御装置からネットワークへフレームが送信されるタイミングにばらつきが生じてしまう場合がある。
【０００７】
このような処理時間のばらつきが、処理時間全体のうちの所定の割合を占める場合、処理すべきデータ量が増えるに従って、処理時間のばらつきも大きくなってしまう。したがって、制御指令をデバイスに送信する処理において、プロセッサが処理すべきデータ量が増えると、制御装置からネットワークへフレームが送信されるタイミングのばらつきが増長されることが懸念される。そして、制御装置からネットワークへフレームが送信されるタイミングにばらつきが生じることで、ネットワーク上のデバイスがフレームを受信するタイミングにも影響を及ぼす可能性がある。これにより、複数のデバイス間の同期処理の精度を低下させることが懸念される。
【０００８】
このように、制御装置においては、ソフトウェア処理におけるデータ処理量が、フレームの送信タイミングのばらつき精度に大きな影響を及ぼすことから、フレームの送信タイミングを保証することが難しいという課題がある。
【０００９】
本開示は、制御装置におけるフレームの送信タイミングを保証するための新たな構成を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本開示の一例に係る制御装置は、制御対象を制御するための制御装置であって、プロセッサと、通信回路とを備える。通信回路は、制御対象に対する出力データの送信、および前記制御対象からの入力データの受信を行なう。制御装置は、予め定められた制御周期毎に、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを順次繰り返すことによって、制御対象を制御するように構成される。出力データの送信処理において、プロセッサは、前回の制御周期における制御プログラムの実行により生成された出力データをフレームに格納する処理と、出力データが格納されたフレームを制御対象に送信するように通信回路を制御する処理とを実行するように構成される。プロセッサは、次回の制御周期で実行される、出力データをフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する。
【００１１】
本開示によれば、次回の制御周期で実行される送信処理に含まれるソフトウェア処理の少なくとも一部を、今回の制御周期内で実行するように、送信処理のスケジューリングが実行されるため、次回の制御周期では、送信処理にて実行されるソフトウェア処理のデータ処理量が低減され、ソフトウェア処理に要する処理時間のばらつきが低減されることになる。処理時間のばらつきが低減されることで、フレームが送信されるタイミングのばらつきを低減できるため、フレームの送信タイミングを保証することができる。これにより、ネットワーク上のデバイスがフレームを受信するタイミングが変動することを抑制することができるため、複数のデバイス間の同期処理の精度を確保できる。
【００１２】
また、本開示によれば、既存のプロトコルスタックおよびハードウェアを改造することなく、フレームの送信タイミングを保証することができる。
【００１３】
上述の開示において、プロセッサは、今回の制御周期内で、制御プログラムを実行した後に、出力データをフレームに格納する処理を実行する。プロセッサはさらに、次回の制御周期が開始されると、通信回路を制御する処理を実行する。
【００１４】
この開示によれば、フレームの送信タイミングのばらつきの要因となり得る、出力データをフレームに格納する処理を、制御プログラムを実行した後の残り時間を利用して、前倒しで実行するように、送信処理のスケジューリングが実行される。したがって、次回の制御周期では、制御装置からフレームが送信されるタイミングのばらつきが低減され、結果的にフレームの送信タイミングを保証することが可能となる。
【００１５】
上述の開示において、プロセッサは、今回の制御周期内で、出力データをフレームに格納する処理の一部分を実行する。プロセッサは、さらに、次回の制御周期が開始されると、出力データをフレームに格納する処理の残りの部分、および通信回路を制御する処理を順次実行する。
【００１６】
この開示によれば、次回の制御周期で実行される送信処理に含まれるソフトウェア処理の一部を、今回の制御周期内で実行するように、送信処理のスケジューリングが実行されるため、次回の制御周期では、送信処理にて実行されるソフトウェア処理のデータ処理量が低減される。これにより、プロセッサにおける処理時間のばらつきを抑制できるため、フレームの送信タイミングを保証することができる。
【００１７】
上述の開示において、出力データをフレームに格納する処理は、フレームを生成する処理と、生成されたフレームに出力データを格納する処理とを含む。制御装置は、上位ネットワークを介して他の装置との間でデータを遣り取りするように構成される。制御周期内において、制御プログラムの実行後に、他の装置とのデータの遣り取りによって出力データが更新される場合、プロセッサは、今回の制御周期内で、入力データを受信する処理を実行した後であって、制御プログラムを実行する前に、フレームを生成する処理を実行する。プロセッサは、さらに、次回の制御周期が開始されると、出力データを格納する処理を実行する。
【００１８】
この開示によれば、制御周期内において、上位ネットワークを介して制御装置と他の装置とのデータの遣り取りによって出力データが更新される場合においても、次回の制御周期における送信処理にて実行されるソフトウェア処理のデータ処理量を低減することができる。これにより、プロセッサにおける処理時間のばらつきを抑制できるため、フレームの送信タイミングを保証することができる。
【００１９】
上述の開示において、出力データをフレームに格納する処理は、フレームを生成する処理と、生成されたフレームに出力データを格納する処理とを含む。制御装置は、上位ネットワークを介して他の装置との間でデータを遣り取りするように構成される。制御周期内において、制御プログラムの実行後に、他の装置とのデータの遣り取りによって出力データが更新される場合、プロセッサは、今回の制御周期内で、制御プログラムを実行した後であって、他の装置とのデータの遣り取りを実行する前に、出力データをフレームに格納する処理を実行する。プロセッサは、さらに、次回の制御周期が開始されると、更新された出力データをフレームに格納する処理、および通信回路を制御する処理を順次実行する。
【００２０】
この開示によれば、制御周期内において、上位ネットワークを介して制御装置と他の装置とのデータの遣り取りによって出力データが更新される場合においても、次回の制御周期における送信処理にて実行されるソフトウェア処理のデータ処理量を低減することができる。これにより、プロセッサにおける処理時間のばらつきを抑制できるため、フレームの送信タイミングを保証することができる。
【００２１】
本開示の一例に係る制御システムは、制御装置と、制御装置からの制御指令に従って動作する１または複数のデバイスとを備える。制御装置および１または複数のデバイスは、互いに時刻同期されたタイマを有している。制御装置は、プロセッサと、１または複数のデバイスに対する制御指令の送信、および１または複数のデバイスからの入力データの受信を行なう通信回路とを含む。制御装置は、予め定められた制御周期毎に、制御指令の送信と、入力データの受信と、入力データを使用して制御指令を生成する制御プログラムの実行とを順次繰り返すことによって、１または複数のデバイスを制御するように構成される。制御指令の送信処理において、プロセッサは、前回の制御周期における制御プログラムの実行により生成された制御指令をフレームに格納する処理と、制御指令が格納されたフレームを制御対象に送信するように通信回路を制御する処理とを実行するように構成される。プロセッサは、次回の制御周期で実行される、制御指令をフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する。
【００２２】
本開示によれば、制御装置において、次回の制御周期で実行される送信処理に含まれるソフトウェア処理の少なくとも一部を、今回の制御周期内で実行するように、送信処理のスケジューリングが実行されるため、次回の制御周期では、送信処理にて実行されるソフトウェア処理のデータ処理量が低減され、処理時間のばらつきを低減することができる。これにより、制御装置におけるフレームの送信タイミングが保証されるため、複数のデバイス間の同期処理の精度を確保することができる。
【発明の効果】
【００２３】
本開示の一例によれば、制御周期内におけるフレームの送信タイミングを保証するための新たな構成を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に係る制御システムの全体構成例を模式的に示す図である。
【図２】本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に係る制御装置のソフトウェア構成の一例を示す模式図である。
【図４】比較例に係るタスクの実行スケジュールを示すタイミングチャートである。
【図５】フレームの構成例を示す図である。
【図６】本実施の形態に係るタスクの実行スケジュールの第１の構成例を示すタイミングチャートである。
【図７】本実施の形態に係るタスクの実行スケジュールの第２の構成例を示すタイミングチャートである。
【図８】本実施の形態に係るタスクの実行スケジュールの第３の構成例を示すタイミングチャートである。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う各本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各本実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００２６】
＜Ａ．適用例＞
まず、図１および図２を参照して、本発明が適用される場面の一例について説明する。
【００２７】
図１は、本実施の形態に係る制御システム１の全体構成例を模式的に示す図である。図１には、本実施の形態に係る制御装置１００を中心とした制御システム１を示す。
【００２８】
図１を参照して、制御装置１００は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置１００は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、ＰＬＣ（プログラマブルコントローラ）として具現化されてもよい。制御装置１００は、フィールドネットワーク２を介して各種のフィールド機器５００と接続されてもよい。制御装置１００は、フィールドネットワーク２などを介して、１または複数のフィールド機器５００との間でデータを遣り取りする。一般的に、「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
【００２９】
フィールドネットワーク２は、データの到達時間が保証される、定周期通信を行なうバスまたはネットワークを採用することが好ましい。このような定周期通信を行なうバスまたはネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００３０】
フィールドネットワーク２には、任意のフィールド機器５００を接続することができる。フィールド機器５００は、製造装置や生産ラインなど（以下、「フィールド」とも総称する。）に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。
【００３１】
フィールドネットワーク２として、ＥｔｈｅｒＣＡＴ（登録商標）を採用した場合には、フィールドネットワーク２に接続されるノードのうち少なくとも１つが「マスタ」として機能し、その他のノードが「スレーブ」として機能する。「マスタ」として機能するノードは、フィールドネットワーク２におけるフレームの転送タイミングなどを管理する。
【００３２】
図１に示す例においては、制御装置１００が「マスタ」として機能し、その他のフィールド機器５００が「スレーブ」として機能する。マスタ−スレーブ型の構成を採用するフィールドネットワーク２においては、ノード間で互いに時刻同期されたタイマＴＭＲを有しており、各ノードが有するタイマＴＭＲが示す時刻（実質的には、カウンタ値）に基づいて、フレームの転送タイミングなどが決定される。
【００３３】
図１に示す構成においては、フィールドネットワーク２に接続されるフィールド機器５００は、リモートＩ／Ｏ（Input/Output）装置５１０と、ロボットコントローラ５２２，５２６と、サーボドライバ５４０，５４４とを含む。
【００３４】
ロボットコントローラ５２２，５２６およびサーボドライバ５４０，５４４は、制御装置１００からの制御指令に従って動作する１または複数のアクチュエータ（デバイス）に相当する。サーボドライバ５４０，５４４に対する制御指令は、制御装置１００においてサイクリック実行されるシーケンスプログラムに含まれるモーション指令に従って生成される。
【００３５】
なお、図１には、制御装置１００からの制御指令に従って動作する１または複数のアクチュエータについても、フィールドネットワーク２に接続されている例を示すが、これに限らず、制御装置１００からの制御指令を受けることができれば、どのような接続形態であってもよい。例えば、フィールドネットワーク２に接続されたリモートＩ／Ｏ装置５１０から信号線を介して制御指令を与えるようにしてもよい。
【００３６】
図２は、本実施の形態に係る制御装置１００のハードウェア構成例を示すブロック図である。図２を参照して、本実施の形態に係る制御装置１００は、ＣＰＵユニットと称される演算処理部であり、プロセッサ１０２と、フィールドネットワークコントローラ１３０とを備える。
【００３７】
フィールドネットワークコントローラ１３０は、フィールドネットワーク２を介したフィールド機器５００の間のデータの遣り取りを制御する。このようなデータの遣り取りは、制御装置１００からフィールド機器５００に対する制御指令などのデータ（以下、「出力データ」とも称す。）を送信する処理と、フィールド機器５００において収集または生成されたデータ（以下、「入力データ」とも称す。）を制御装置１００が受信する処理とを含む。フィールドネットワークコントローラ１３０は、「通信回路」の一実施例に対応する。
【００３８】
制御装置１００は、予め定められた制御周期毎に、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを順次繰り返すことによって、フィールド機器５００を制御するように構成されている。
【００３９】
本明細書において、制御プログラムは、ユーザにおける制御目的に応じて作成されるユーザプログラムと、ユーザプログラムと協働してユーザにおける制御目的を実現するシーケンスプログラムとを含む。シーケンスプログラムは、シーケンス命令およびモーション命令のうち少なくとも１つを含み得る。シーケンス命令は、入力値、出力値、内部値などを演算する１または複数の論理回路により記述される１または複数の命令を包含する用語である。モーション命令は、サーボモータなどのアクチュエータに対して、位置、速度、加速度、加加速度、角度、角速度、角加加速度などの数値を制御指令として演算するための１または複数の命令を包含する用語である。
【００４０】
１回の制御周期において、シーケンスプログラムは、ユーザプログラムとともに実行される。制御周期毎にシーケンスプログラムを実行することで出力される制御指令は、典型的には、シーケンス命令に従って決定されるデジタル出力のオン／オフ、ならびに、モーション命令に従って演算されるアナログ出力を含む。
【００４１】
本実施の形態に係る制御装置１００において、プロセッサ１０２は、出力データの送信処理において、（１）前回の制御周期における制御プログラムの実行により生成された出力データ（制御指令）をフレームに格納する処理、および（２）出力データが格納されたフレームをフィールド機器５００に送信するようにフィールドネットワークコントローラ１３０を制御する処理を実行するように構成される。そして、上記構成において、プロセッサは、次回の制御周期で実行される、（１）出力データをフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する構成となっている。
【００４２】
出力データの送信処理のうち（１）出力データをフレームに格納する処理は、プロセッサ１０２によるソフトウェア処理で実現されるため、プロセッサ１０２の処理能力などに依存して、処理時間にばらつきが生じることがある。そのため、制御装置１００からフィールドネットワーク２へフレームが送信されるタイミングにばらつきが生じてしまう場合がある。処理時間のばらつきが、処理時間全体のうちの所定の割合を占める場合には、プロセッサ１０２が処理すべきデータ量が増えるに従って、処理時間のばらつきも大きくなるため、結果的にフレームの送信タイミングのばらつきが増長されてしまうことが懸念される。
【００４３】
このように、制御装置１００におけるフレームの送信タイミングにばらつきが生じると、フィールドネットワーク２上のフィールド機器５００が出力データを受信するタイミングに影響を及ぼすおそれがある。これにより、複数のフィールド機器５００間の同期処理の精度を低下させることが懸念される。このように、制御装置１００においては、ソフトウェア処理におけるデータ処理量が、フレームの送信タイミングのばらつき精度に大きな影響を及ぼすことから、フレームの送信タイミングを保証することが難しいという課題がある。
【００４４】
本実施の形態に係る制御装置１００においては、次回の制御周期で実行される送信処理に含まれるソフトウェア処理の少なくとも一部が、今回の制御周期内で実行するように、送信処理のスケジューリングが行なわれる。これによると、次回の制御周期の開始タイミングにおいて実行される送信処理では、ソフトウェア処理のデータ処理量が低減されるために、処理時間のばらつきを低減することができる。このように処理時間のばらつきが低減されることによって、フレームの送信タイミングのばらつきを低減することができ、結果的に制御周期内におけるフレームの送信タイミングを保証することができる。これによると、フィールドネットワーク２上のフィールド機器５００が出力データを受信するタイミングを保証することができるため、複数のフィールド機器５００間の同期処理の精度を確保することができる。
【００４５】
以下、本発明のより具体的な応用例として、本実施の形態に係る制御システム１のより詳細な構成および処理について説明する。
【００４６】
＜Ｂ．制御システムの全体構成例＞
まず、図１に示す制御システム１の全体構成例についてより詳細に説明する。
【００４７】
図１に示す構成例において、サーボドライバ５４０，５４４は、制御装置１００からの制御指令（例えば、位置指令または速度指令など）に従って、サーボモータ５４２，５４６をそれぞれ駆動する。
【００４８】
ロボットコントローラ５２２はロボット５２０を駆動し、ロボットコントローラ５２６はロボット５２４を駆動する。ロボットコントローラ５２２，５２６は、制御装置１００からの制御指令（位置指令または速度指令など）に従って、軌跡計算および各軸の角度計算などを行なうとともに、計算結果に従って、ロボット５２０，５２４を構成するサーボモータなどを駆動する。
【００４９】
リモートＩ／Ｏ装置５１０は、典型的には、フィールドネットワーク２を介して通信を行なう通信カプラと、入力データの取得および出力データの出力を行なうための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。リモートＩ／Ｏ装置５１０には、入力リレーや各種センサ（例えば、アナログセンサ、温度センサ、振動センサなど）などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
【００５０】
フィールド機器５００としては、これらに限られることなく、入力データを収集する任意のデバイス（例えば、視覚センサなど）、ならびに、出力データに従う何らかの作用を与える任意のデバイス（例えば、インバータ装置など）などを採用することができる。
【００５１】
フィールドネットワーク２を介して、制御装置１００とフィールド機器５００との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数１００μｓｅｃオーダ〜数１０ｍｓｅｃオーダのごく短い周期で更新されることになる。このようなデータの遣り取りは、フィールド機器５００において収集または生成されたデータ（入力データ）を制御装置１００が受信する処理、および、制御装置１００からフィールド機器５００に対する制御指令などのデータ（出力データ）を送信する処理を含む。このような遣り取りされるデータの更新処理が「入出力処理」に相当する。
【００５２】
制御装置１００は、上位ネットワーク６を介して、他の装置に接続されていてもよい。上位ネットワーク６には、一般的なネットワークプロトコルであるイーサネット（登録商標）やＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が採用されていてもよい。より具体的には、上位ネットワーク６には、１または複数のサーバ装置３００または１または複数の表示装置４００が接続されてもよい。
【００５３】
サーバ装置３００としては、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing Execution System）などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク６に接続するようにしてもよい。情報系サービスとしては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行なう処理が想定される。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行なうための機械学習ツールなどが想定される。
【００５４】
表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００５５】
さらに、制御装置１００には、サポート装置２００が接続可能になっている。サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したシーケンスプログラムを制御装置１００へ出力する機能、制御装置１００上で実行されるシーケンスプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００５６】
＜Ｃ．制御装置のハードウェア構成例＞
次に、本実施の形態に係る制御装置１００のハードウェア構成例について説明する。図２は、本実施の形態に係る制御装置１００のハードウェア構成例を示すブロック図である。
【００５７】
図２を参照して、制御装置１００は、ＣＰＵユニットと称される演算処理部であり、プロセッサ１０２と、チップセット１０４と、主メモリ１０６と、ストレージ１０８と、上位ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２０と、フィールドネットワークコントローラ１３０とを含む。
【００５８】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）などで構成される。プロセッサ１０２としては、複数のコアを有する構成を採用してもよいし、プロセッサ１０２を複数配置してもよい。すなわち、制御装置１００は、１または複数のプロセッサ１０２、および／または、１または複数のコアを有するプロセッサ１０２を有している。チップセット１０４は、プロセッサ１０２および周辺エレメントを制御することで、制御装置１００全体としての処理を実現する。主メモリ１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００５９】
プロセッサ１０２は、ストレージ１０８に格納された各種プログラムを読出して、主メモリ１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。ストレージ１０８には、基本的な機能を実現するためのシステムプログラム３４に加えて、制御対象の製造装置や設備に応じて作成されるシーケンスプログラム３２およびユーザプログラム３０、および設定情報４０が格納される。
【００６０】
システムプログラム３４は、制御装置１００として機能を提供するためのソフトウェア群である。具体的には、システムプログラム３４は、スケジューラプログラムと、入出力処理プログラムと、その他のシステムプログラムとを含む。
【００６１】
シーケンスプログラム３２は、実行毎に全体がスキャンされて、実行毎に制御指令を出力できるプログラムを包含する概念である。シーケンスプログラム３２には、シーケンス命令および／またはモーション命令を含み得る。基本的には、シーケンスプログラム３２は、制御対象やアプリケーションに応じて、ユーザによって任意に作成される。
【００６２】
ユーザプログラム３０は、ユーザにおける制御目的に応じて作成される。すなわち、制御システム１を用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。ユーザプログラム３０は、シーケンスプログラム３２と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム３０は、シーケンスプログラム３２によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム３０およびシーケンスプログラム３２を、「制御プログラム」と総称する場合もある。
【００６３】
設定情報４０は、制御装置１００を含む制御システム１の構成や設定を定義する情報を含む。設定情報には、フィールドネットワーク２に接続されているフィールド機器５００に関連付けられた、ユーザプログラムや設定値の情報、および、上位ネットワーク６に接続されている装置に関連付けられた、ユーザプログラムや設定値の情報を含む。
【００６４】
ストレージ１０８には、フィールドネットワーク２における通信の手順や遣り取りを規定する複数のプロトコルの階層からなるプロトコルスタック３６、および、フィールドネットワークコントローラ１３０を制御するデバイスドライバ３８がさらに格納される。
【００６５】
上位ネットワークコントローラ１１０は、上位ネットワーク６を介して、サーバ装置３００や表示装置４００（図１参照）などとの間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００６６】
メモリカードインターフェイス１１４は、メモリカード１１６が着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（シーケンスプログラム３２、ユーザプログラム３０など）を読出すことが可能になっている。
【００６７】
内部バスコントローラ１２０は、制御装置１００に装着されるＩ／Ｏユニット１２との間のデータの遣り取りを制御する。具体的には、内部バスコントローラ１２０は、Ｉ／Ｏユニット１２へ出力されるデータ（出力データ）の送信バッファ、および、Ｉ／Ｏユニット１２から入力されるデータ（入力データ）の受信バッファとして機能する。なお、プロセッサ１０２による演算処理によって生成された出力データは、原始的にはストレージ１０８に格納される。そして、特定のＩ／Ｏユニット１２へ転送されるべき出力データは、ストレージ１０８から読み出されて、送信バッファに一時的に保持される。また、Ｉ／Ｏユニット１２から転送された入力データは、受信バッファに一時的に保持された後、ストレージ１０８に移される。内部バスコントローラ１２０は、さらに、Ｉ／Ｏユニット１２との間で、送信バッファの出力データを送信する処理、および入力データを受信して受信バッファに格納する処理を行なう。典型的には、内部バスコントローラ１２０は、内部バスにおける物理層およびデータリンク層の機能を提供する。
【００６８】
フィールドネットワークコントローラ１３０は、フィールドネットワーク２を介したフィールド機器５００との間のデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１３０は、フィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。具体的には、フィールドネットワークコントローラ１３０は、フィールド機器５００へ出力されるデータ（出力データ）の送信バッファ、および、フィールド機器５００から入力されるデータ（入力データ）の受信バッファとして機能する。なお、プロセッサ１０２による演算処理によって生成された出力データは、原始的にはストレージ１０８に格納される。そして、特定のフィールド機器５００へ転送されるべき出力データは、ストレージ１０８から読み出されて、送信バッファに一時的に保持される。また、フィールド機器５００から転送された入力データは、受信バッファに一時的に保持された後、ストレージ１０８に移される。フィールドネットワークコントローラ１３０は、さらに、フィールド機器５００との間で、送信バッファの出力データを送信する処理、および入力データを受信して受信バッファに格納する処理を行なう。典型的には、フィールドネットワークコントローラ１３０は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００６９】
なお、図２には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７０】
図２に示す制御システム１においては、制御装置１００、サポート装置２００および表示装置４００がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【００７１】
＜Ｄ．制御装置のソフトウェア構成例＞
次に、本実施の形態に係る制御装置１００のソフトウェア構成の一例について説明する。図３は、本実施の形態に係る制御装置１００のソフトウェア構成の一例を示す模式図である。
【００７２】
図３を参照して、制御装置１００のプロセッサ１０２ではスケジューラ１７０が実行される。スケジューラ１７０は、予め定められた制御周期に従って、複数の処理の実行順序や実行中断などを決定する。より具体的には、スケジューラ１７０は、制御プログラム実行処理１７３と、各種処理を含む周辺処理１７４と、入出力処理１７７に対して、予め定められた優先度および制御周期などに従って、処理リソース（プロセッサ時間およびメモリなど）を割り当てる。
【００７３】
制御プログラム実行処理１７３は、ユーザプログラム３０およびシーケンスプログラム３２（制御プログラム）の実行に係る処理を含む。
【００７４】
入出力処理１７７は、フィールドネットワーク２を介して制御装置１００とフィールド機器５００との間で遣り取りされるデータの更新処理である。入出力処理は、入力データを受信して制御装置１００へ転送する処理（以下、「受信処理」とも称す。）、および、制御装置１００からフィールド機器５００に対して出力データを送信する処理（以下、「送信処理」とも称す。）を含む。これらの処理は、プロトコルスタック３６に従って実行される。
【００７５】
さらに、制御装置１００のプロセッサ１０２には、デバイスドライバ３８が実装されており、デバイスドライバ３８がフィールドネットワークコントローラ１３０などを制御する。
【００７６】
スケジューラ１７０は、入出力処理および制御プログラム実行処理のスケジューリングを行なう。入出力処理のうち送信処理のスケジューリングとしては、後述する３種類の送信モード（送信モード１、送信モード２、送信モード３）１７２が用意されている。これら３つの送信モードは、１制御周期内におけるフィールド機器５００へのフレームの送信タイミングが互いに異なるように構成されている。これらの３つの送信モードを全て実装する必要はなく、必要な送信モードのみを実装するようにしてもよい。３つの送信モードに加えて、あるいは、３つの送信モードに代えて、３つの送信モード以外の送信モードを採用してもよい。
【００７７】
なお、上記３つの送信モードのうちどの送信モードを用いるかについては、サポート装置２００において、制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定する際に、設定することができる。
【００７８】
＜Ｅ．タスクの実行スケジュール＞
最初に、図４を参照して、比較例に係るタスクの実行スケジュールについて説明する。図４は、比較例に係るタスクの実行スケジュールを示すタイミングチャートである。
【００７９】
図４を参照して、制御装置１００が実行するタスクとしては、入出力処理（送信処理および受信処理）、ユーザプログラム３０に従う制御指令の出力処理（ユーザプログラム処理）、および、シーケンスプログラム３２に含まれるモーション命令に従う制御指令の出力処理（モーション処理）が設定されている。これらのタスクは、制御周期ごとに実行される。
【００８０】
なお、ユーザプログラム処理は、制御周期毎にユーザプログラム３０を実行して制御指令を演算する処理である。モーション処理は、モーション命令に従って、制御指令を制御周期毎に演算する処理である。これらの制御指令は、ロボットコントローラ５２２，５２６およびサーボドライバ５４０，５４４の少なくとも一部に向けられたものとなる。以下では、ユーザプログラム処理およびモーション処理をまとめて、制御プログラム処理とも称する。
【００８１】
送信処理は、ユーザプログラム３０およびシーケンスプログラム３２の実行によって生成された出力データ（制御指令など）を、フィールドネットワークコントローラ１３０を経てフィールドネットワーク２上のフィールド機器５００に送信する処理である。具体的には、送信処理は、（１）フレーム生成、（２）データ格納、（３）デバイスドライバ、（４）ハードウェアにより構成される。このうち（１）フレーム生成、（２）データ格納、および（３）デバイスドライバは、プロセッサ１０２により実行される。
【００８２】
（１）フレーム生成は、フィールドネットワーク２上を伝送されるフレームを生成する処理である。図５は、フレームの構成例を示す。図５に示すように、フレーム８００は、例えば、プリアンブル部８１、ヘッダ部８２、データ部８３およびフッタ部８４を含む。
【００８３】
プリアンブル部８１は、フレームの開始を表す同期信号を示すプリアンブルが格納される。ヘッダ部８２は、フィールドネットワーク２においてTALKERであるフレームの送信元、フレームのLISTNERである送信先、およびタイプが格納される。送信元および送信先には、各種のアドレスを適用することができる。Ｅｔｈｅｒｎｅｔベースの産業用ネットワークの場合、ヘッダ部８２は、Ｅｔｈｅｒｎｅｔヘッダおよび産業用ネットワークとしてのヘッダにより構成される。Ｅｔｈｅｒｎｅｔヘッダは、送信元、送信先およびＥｔｈｅｒタイプ等を含み、産業用ネットワークとしてのヘッダは、データサイズおよびタイプ等を含む。
【００８４】
データ部８３は、フィールドネットワーク２を介して伝送させるべきデータ（出力データおよび入力データ）が格納される。データ部８３には、制御系データを含む各種のデータが格納され得る。制御系データは、製造装置や設備の制御に用いられるデータであり、ユーザプログラム３０およびシーケンスプログラム３２の実行によって生成された制御指令を含む。データとして制御系データが格納されたフレーム８００は、その送信元は制御装置１００を示し、送信先は任意のフィールド機器５００を示す。
【００８５】
フッタ部８４は、誤り検知のＦＣＳ（Frame Check Sequence）が格納される。Ｅｔｈｅｒｎｅｔベースの産業用ネットワークの場合、フッタ部８４は、Ｅｔｈｅｒｎｅｔフッタにより構成される。フッタ部８４は、さらに産業用ネットワークのフッタを含む場合がある。
【００８６】
なお、図５のフレームの構成は一例であって限定されない。また、本実施の形態では、フィールドネットワーク２を伝送されるデータの形式は、フレームとしているが、フレームに限定されない。
【００８７】
（１）フレーム生成では、プロセッサ１０２は、図５に示したフレーム８００におけるヘッダ部８２およびフッタ部８４を形成する。具体的には、プロセッサ１０２は、ヘッダ部８２に送信元、送信先およびタイプ等を格納する。プロセッサ１０２は、制御装置１００のアドレスを送信元に格納するとともに、制御指令が送信されるべきフィールド機器５００を特定し、該フィールド機器５００のアドレスを送信先に格納する。プロセッサ１０２は、さらに、フッタ部８４にＦＣＳを格納する。なお、Ｅｔｈｅｒｎｅｔベースの産業用ネットワークの場合、プロセッサ１０２は、Ｅｈｔｅｒｎｅｔヘッダおよび産業用ネットワークとしてのヘッダを形成するとともに、Ｅｔｈｅｒｎｅｔフッタおよび産業用ネットワークとしてのフッタを形成する。
【００８８】
（２）データ格納では、プロセッサ１０２は、フレーム８００におけるデータ部８３に各種のデータを格納する。プロセッサ１０２は、前回の制御周期における、ユーザプログラム３０に従う制御指令の出力処理（ユーザプログラム処理）、およびシーケンスプログラム３２に含まれるモーション命令に従う制御指令の出力処理（モーション処理）によって生成された制御指令をフレームのデータ部８３に格納する。このとき、プロセッサ１０２は、同一のフィールド機器５００に送信される複数の出力データを一括して送信できるように、同一のフィールド機器５００に向けられた出力データ群がまとめられるように出力データを再配置する。以下の説明において、（１）フレーム生成および（２）データ格納をまとめて、「出力データをフレームに格納する処理」とも称する。
【００８９】
（３）デバイスドライバでは、プロセッサ１０２は、フィールドネットワークコントローラ１３０を制御する。プロセッサ１０２は、出力データが格納されたフレームをフィールドネットワークコントローラ１３０へ転送する。
【００９０】
（４）ハードウェアでは、フィールドネットワークコントローラ１３０は、転送されたフレームを、フィールドネットワーク２を介して送信先（フィールド機器５００）へ送信する。
【００９１】
受信処理は、フィールドネットワーク２上のフィールド機器５００から転送された入力データを、フィールドネットワークコントローラ１３０を経てプロセッサ１０２に送信する処理である。具体的には、送信先（フィールド機器５００）からフィールドネットワーク２を介して送信された入力データは、フィールドネットワークコントローラ１３０によって受信され、内部の受信バッファに格納される。この受信バッファに格納された入力データは、プロセッサ１０２に転送される。プロセッサ１０２は転送された入力データを主メモリへコピーする。このとき、プロセッサ１０２は、主メモリ１０６にコピーされた入力データを制御プログラムが使用するのに適した形式に再配置する。
【００９２】
フィールドネットワーク２がＥｔｈｅｒＣＡＴ（登録商標）を採用する場合、単一のフレームに、各フィールド機器５００宛ての出力データおよび各フィールド機器５００からの入力データが含まれる。マスタに設定される制御装置１００からフレームが送信されると、送信されたフレームはデイジーチェーン接続されたそれぞれのフィールド機器５００を経由して順次転送される。なお、制御装置１００以外のそれぞれのフィールド機器５００はスレーブに設定される。フレームが末端のフィールド機器５００に到達すると、そこで当該フレームは全二重の通信路を折り返して再びスレーブであるそれぞれのフィールド機器５００を経由して制御装置１００に戻る。各フィールド機器５００においては、往路のフレームをＦＩＦＯ（First In First Out）方式で通過させながら、自スレーブ宛ての出力データを選択的に取り込むとともに、自スレーブで発生した入力データをフレームの適切な位置に書き込む。各スレーブは、帰路のフレームについては、出力データの読み出し、および入力データの書き込みは行なわずに通過させる。
【００９３】
このように、ＥｔｈｅｒＣＡＴ（登録商標）の場合は、単一のフレームを送信および受信することが、フィールドネットワークコントローラ１３０による、プロセッサ１０２から各フィールド機器５００への出力データの転送、および、各フィールド機器５００からプロセッサ１０２への入力データの転送に相当する。
【００９４】
フィールドネットワーク２としてＥｔｈｅｒＣＡＴ（登録商標）を用いる場合、出力データを含むフレームを送信し、そのフレームがスレーブのそれぞれのフィールド機器５００を経由して戻ってきた場合には、そのフレームに入力データが含まれることになる。そのため、実行順序については、送信処理の後に受信処理が実行されることになる。
【００９５】
受信処理が実行された後、プロセッサ１０２は、入力データを用いて、ユーザプログラム処理およびシーケンス処理を順次実行する。すなわち、プロセッサ１０２は、入力データを用いて出力データを生成する制御プログラムを実行する。そして、制御プログラムの実行結果に応じて、プロセッサ１０２は、次の制御周期において出力データの送信および入力データの受信を行なう。
【００９６】
このように、制御装置１００は、出力データの送信（送信処理）と、入力データの受信（受信処理）と、入力データを使用して出力データを生成する制御プログラムの実行（制御プログラム処理）とを順次繰り返すことによって制御対象を制御する。すなわち、プロセッサ１０２は、ストレージ１０８に格納された制御プログラム（ユーザプログラム３０およびシーケンスプログラム３２）を実行し、その実行結果に応じて、フィールドネットワークコントローラ１３０は、制御周期毎に出力データの送信および入力データの受信を行なう。
【００９７】
ここで、図４に示す比較例においては、制御周期が開始すると、送信処理として、プロセッサ１０２は（１）フレーム生成、（２）データ格納、（３）デバイスドライバを順次実行し、フィールドネットワークコントローラ１３０は（４）ハードウェアを構成し、フィールドネットワーク２へフレームを送信する。このうち（１）フレーム生成、および（２）データ格納（すなわち、出力データをフレームに格納する処理）は、プロセッサ１０２によるソフトウェア処理で実行される。そのため、プロセッサ１０２が処理すべきデータ量が増加するに従って、処理時間のばらつきが大きくなる傾向がある。その結果、データ量の増加に伴い、制御装置１００からフィールドネットワーク２へフレームが送信されるタイミングのばらつきが増長されることが懸念される。
【００９８】
このように、比較例では、送信処理におけるデータ処理量が、制御装置１００からフィールドネットワーク２へフレームが送信されるタイミングのばらつき精度に影響を及ぼすことから、フレームの送信タイミングを厳密に保証することが難しいという課題がある。フレームの送信タイミングにばらつきが発生すると、フィールドネットワーク２上のフィールド機器５００がフレームを受信するタイミングに影響を及ぼす可能性があるため、複数のフィールド機器５００間の同期処理の精度を低下させることが懸念される。
【００９９】
そこで、本実施の形態に係る制御装置１００では、送信処理において、プロセッサ１０２は、次回の制御周期で実行される、出力データをフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する。すなわち、次回の制御周期で実行される送信処理に含まれるソフトウェア処理の少なくとも一部を、今回の制御周期内で実行するように、送信処理のスケジューリングが実行される。
【０１００】
これによると、次回の制御周期では、送信処理にて実行されるソフトウェア処理のデータ処理量が低減されることから、ソフトウェア処理に要する処理時間のばらつきが低減されることになる。ソフトウェア処理の処理時間のばらつきが低減されることによって、フレームが送信されるタイミングのばらつきを低減することができる。これにより、フィールドネットワーク２上のフィールド機器５００がフレームを受信するタイミングを保証することができるため、複数のフィールド機器５００間の同期処理の精度を確保することができる。
【０１０１】
以下では、本実施の形態に係る送信処理のスケジューリングについて説明する。図６から図８に示されるタスクの実行スケジュールは、すなわちプロセッサリソースの割当ては、スケジューラ１７０（図３参照）によって実行される。
【０１０２】
送信処理については、スケジューラ１７０は、サポート装置２００で設定された制御装置１００に接続される各種デバイスの構成情報（コンフィギュレーション）に基づいて、３種類の送信モード（送信モード１、送信モード２および送信モード３）を選択的に実行することができる。
【０１０３】
具体的には、送信モード１は、制御装置１００と、上位ネットワーク６に接続される他の装置（サーバ装置３００および表示装置４００など）との間でデータの遣り取りが行なわれない構成に対して適用され得る。一方、送信モード２および送信モード３は、制御装置１００と、上位ネットワーク６に接続される他の装置との間でデータの遣り取りが行なわれる構成に対して適用され得る。
【０１０４】
上位ネットワーク６に接続される他の装置との間のデータの遣り取りは、制御周期内における、制御プログラムを実行した後の残り時間を使って実行される。このデータの遣り取りによって、制御プログラムの実行により生成された出力データが更新される場合がある。この場合、更新された出力データをフレームに格納する必要が生じる。送信モード２および送信モード３は、出力データが更新される場合における送信処理のスケジューリングを規定している。
【０１０５】
なお、スケジューラ１７０は、タスクの実行中において、上記３つの送信モードを適宜選択するという動的スケジューリングを行なわないこととする。これは、３つの送信モードは送信処理に要する時間が互いに異なるため、動的に送信モードを切り替えると、送信処理時間が変動してしまい、結果的にフィールド機器５００がフレームを受信するタイミングを変動させてしまう虞があるためである。
【０１０６】
（ｆ１．送信モード１）
図６は、本実施の形態に係るタスクの実行スケジュールの第１の構成例を示すタイミングチャートである。第１の構成例は、送信モード１が選択されている場合のタスクの実行スケジュールを示す。
【０１０７】
図６を参照して、第１の構成例においては、送信処理を構成する（１）フレーム生成、（２）データ格納、（３）デバイスドライバ、および（４）ハードウェアのうち、（１）フレーム生成、および（２）データ格納は、今回の制御周期内で制御プログラムを実行した後に実行される。そして、次回の制御周期が開始されると、（３）デバイスドライバ、および（４）ハードウェアが実行される。
【０１０８】
図４に示した比較例と図６の第１の構成例とを比較すると、本構成例では、送信処理のうち出力データをフレームに格納する処理は、制御プログラムを実行した後の残り時間を利用して、前倒しで実行されている。
【０１０９】
上述したように、出力データをフレームに格納する処理は、プロセッサ１０２によるソフトウェア処理で実行されるため、データ処理量が増えるに従って処理時間のばらつきが大きくなる傾向がある。そのため、図４の比較例のように、次回の制御周期が開始されたタイミングにおいて、出力データをフレームに格納する処理（（１）フレーム生成、および（２）データ格納）を実行すると、制御装置１００からフレームが送信されるタイミングにばらつきが生じてしまうことが懸念される。
【０１１０】
これに対して、第１の構成例では、送信タイミングのばらつきの要因となり得る、出力データをフレームに格納する処理が、今回の制御周期内において前倒しで実行されるため、次回の制御周期において、制御装置１００からフレームが送信されるタイミングのばらつきが低減される。これにより、フレームの送信タイミングを保証することが可能となるため、複数のフィールド機器５００間の同期処理の精度を確保することができる。
【０１１１】
（ｆ２．送信モード２）
図７は、本実施の形態に係るタスクの実行スケジュールの第２の構成例を示すタイミングチャートである。第２の構成例は、送信モード２が選択されている場合のタスクの実行スケジュールを示す。
【０１１２】
図７を参照して、第２の構成例においては、送信処理を構成する（１）フレーム生成、（２）データ格納、（３）デバイスドライバ、および（４）ハードウェアのうち、（１）フレーム生成は、今回の制御周期内で、受信処理を実行した後であって、ユーザプログラムを実行する前に実行される。そして、次回の制御周期が開始されると、（２）データ格納、（３）デバイスドライバおよび（４）ハードウェアが順次実行される。
【０１１３】
第２の構成例においては、制御プログラムを実行して出力データが生成される前に、フレームが生成されるため、（１）フレーム生成の段階では、フレームのデータ部にはダミーデータ（制御を指定しないデータ）が一時的に格納される。そして、ダミーデータが格納された後、ユーザプログラム処理およびモーション処理が順次実行される。
【０１１４】
モーション処理が実行された後、上位ネットワーク６を介して、制御装置１００と他の装置（サーバ装置３００および表示装置４００など）との間でデータの遣り取りが行なわれる。このデータの遣り取りによって、出力データが更新される場合がある。
【０１１５】
第２の構成例では、次回の制御周期が開始されると、（２）データ格納として、プロセッサ１０２は、フレームに格納されているダミーデータを、制御プログラムにより生成された出力データに書き換える処理を実行する。この出力データは、上位ネットワーク６を介した他の装置との通信によって更新されたデータを含んでいる。出力データが格納された後、（３）デバイスドライバ、および（４）ハードウェアが順次実行される。
【０１１６】
第２の構成例においては、ソフトウェア処理のうち（１）フレーム生成が前倒しで実行されるため、図４の比較例に比べて、次回の制御周期における送信処理にて実行されるソフトウェア処理のデータ処理量が低減される。ソフトウェア処理のデータ処理量が低減されることによって、処理時間のばらつきも低減されるため、フレームが送信されるタイミングのばらつきを低減することができる。これにより、フィールドネットワーク２上のフィールド機器５００がフレームを受信するタイミングを保証することができるため、複数のフィールド機器５００間の同期処理の精度を確保することが可能となる。
【０１１７】
（ｆ３．送信モード３）
図８は、本実施の形態に係るタスクの実行スケジュールの第３の構成例を示すタイミングチャートである。第３の構成例は、送信モード３が選択されている場合のタスクの実行スケジュールを示す。
【０１１８】
図８を参照して、第３の構成例においては、送信処理を構成する（１）フレーム生成、（２）データ格納、（３）デバイスドライバ、および（４）ハードウェアのうち、（１）フレーム生成および（２）データ格納は、今回の制御周期内において制御プログラムを実行した後に実行される。ただし、本構成例では、制御プログラムを実行した後に、上位ネットワーク６を介して制御装置１００と他の装置との間でデータの遣り取りが行なわれるため、出力データが更新される場合がある。そのため、次回の制御周期が開始されると、最初に、更新された出力データをフレームに格納する処理が実行される。出力データが格納された後、（３）デバイスドライバ、および（４）ハードウェアが順次実行される。
【０１１９】
第３の構成例においては、ソフトウェア処理のうち（１）フレーム生成および（２）データ格納が前倒しで実行されるため、図４の比較例に比べて、次回の制御周期における送信処理にて実行されるソフトウェア処理のデータ処理量が低減される。ソフトウェア処理のデータ処理量が低減されることによって、処理時間のばらつきも低減されるため、フレームが送信されるタイミングのばらつきを低減することができる。これにより、フィールドネットワーク２上のフィールド機器５００がフレームを受信するタイミングを保証することができるため、複数のフィールド機器５００間の同期処理の精度を確保することが可能となる。
【０１２０】
なお、第３の構成例では、第２の構成例に比較して、次回の制御周期の開始タイミングにおけるデータ処理量がさらに低減される。したがって、制御周期内におけるフレームが送信されるタイミングをより厳密に保証することができる。
【０１２１】
＜Ｈ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
制御対象を制御するための制御装置（１）であって、
プロセッサ（１０２）と、
前記制御対象に対する出力データの送信、および前記制御対象からの入力データの受信を行なう通信回路（１３０）とを備え、
前記制御装置は、予め定められた制御周期毎に、前記出力データの送信と、前記入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを順次繰り返すことによって、前記制御対象を制御するように構成されており、
前記出力データの送信処理において、前記プロセッサは、
前回の制御周期における前記制御プログラムの実行により生成された前記出力データをフレームに格納する処理と、
前記出力データが格納された前記フレームを前記制御対象に送信するように前記通信回路を制御する処理とを実行するように構成されており、
前記プロセッサは、次回の制御周期で実行される、前記出力データをフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する、制御装置。
［構成２］
前記プロセッサは、
今回の制御周期内で、前記制御プログラムを実行した後に、前記出力データをフレームに格納する処理を実行し、
次回の制御周期が開始されると、前記通信回路を制御する処理を実行する、構成１に記載の制御装置。
［構成３］
前記プロセッサは、
今回の制御周期内で、前記出力データをフレームに格納する処理の一部分を実行し、
次回の制御周期が開始されると、前記出力データをフレームに格納する処理の残りの部分、および前記通信回路を制御する処理を順次実行する、構成１に記載の制御装置。
［構成４］
前記出力データをフレームに格納する処理は、
前記フレームを生成する処理と、
生成された前記フレームに前記出力データを格納する処理とを含み、
前記制御装置は、上位ネットワーク（６）を介して他の装置（３００，４００）との間でデータを遣り取りするように構成されており、
制御周期内において、前記制御プログラムの実行後に、前記他の装置とのデータの遣り取りによって前記出力データが更新される場合、前記プロセッサは、
今回の制御周期内で、前記入力データを受信する処理を実行した後であって、前記制御プログラムを実行する前に、前記フレームを生成する処理を実行し、
次回の制御周期が開始されると、前記出力データを格納する処理を実行する、構成３に記載の制御装置。
［構成５］
前記出力データをフレームに格納する処理は、
前記フレームを生成する処理と、
生成された前記フレームに前記出力データを格納する処理とを含み、
前記制御装置は、上位ネットワークを介して他の装置との間でデータを遣り取りするように構成されており、
制御周期内において、前記制御プログラムの実行後に、前記他の装置とのデータの遣り取りによって前記出力データが更新される場合、前記プロセッサは、
今回の制御周期内で、前記制御プログラムを実行した後であって、前記他の装置とのデータの遣り取りを実行する前に、前記出力データをフレームに格納する処理を実行し、
次回の制御周期が開始されると、更新された前記出力データを前記フレームに格納する処理、および前記通信回路を制御する処理を順次実行する、構成３に記載の制御装置。
［構成６］
制御装置と、
前記制御装置からの制御指令に従って動作する１または複数のデバイス（５００）とを備え、
前記制御装置および前記１または複数のデバイスは、互いに時刻同期されたタイマ（ＴＭＲ）を有しており、
前記制御装置は、
プロセッサと、
前記１または複数のデバイスに対する制御指令の送信、および前記１または複数のデバイスからの入力データの受信を行なう通信回路とを含み、
前記制御装置は、予め定められた制御周期毎に、前記制御指令の送信と、前記入力データの受信と、前記入力データを使用して前記制御指令を生成する制御プログラムの実行とを順次繰り返すことによって、前記１または複数のデバイスを制御するように構成されており、
前記制御指令の送信処理において、前記プロセッサは、
前回の制御周期における前記制御プログラムの実行により生成された前記制御指令をフレームに格納する処理と、
前記制御指令が格納された前記フレームを前記制御対象に送信するように前記通信回路を制御する処理とを実行するように構成されており、
前記プロセッサは、次回の制御周期で実行される、前記制御指令をフレームに格納する処理の少なくとも一部分を、今回の制御周期内で実行する、制御システム。
【０１２２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２３】
１  制御システム、３０  ユーザプログラム、３２  シーケンスプログラム、３４  システムプログラム、３６  プロトコルスタック、３８  デバイスドライバ、４０  設定情報、８１  プリアンブル部、８２  ヘッダ部、８３  データ部、８４  フッタ部、１００  制御装置、１０２  プロセッサ、１０４  チップセット、１０６  主メモリ、１０８  ストレージ、１１０  上位ネットワークコントローラ、１１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリーカード、１２０  内部バスコントローラ、１２２  Ｉ／Ｏユニット、１３０  フィールドネットワークコントローラ、１７０  スケジューラ、１７２  送信モード、１７３  制御プログラム実行処理、１７４  その他周辺処理、１７７  入出力処理、２００  サポート装置、３００  サーバ装置、４００  表示装置、５００  フィールド機器、５１０  リモートＩ／Ｏ装置、５２０，５２４  ロボット、５２２，５２６  ロボットコントローラ、５４０，５４４  サーボドライバ、５４２，５４６  サーボモータ、８００  フレーム。
【図１】
2019159532.tif 000003
【図２】
2019159532.tif 000004
【図３】
2019159532.tif 000005
【図４】
2019159532.tif 000006
【図５】
2019159532.tif 000007
【図６】
2019159532.tif 000008
【図７】
2019159532.tif 000009
【図８】
2019159532.tif 000010