制御対象を制御するPLCのCPUユニットであって、マイクロプロセッサと、記憶手段と、通信回路とを備え、前記PLCのCPUユニットは、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されており、前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、前記記憶手段は、システムプログラムと、前記制御プログラムとの格納に用いられ、前記マイクロプロセッサは、前記システムプログラムと、前記制御プログラムとを実行し、前記制御プログラムは、第1制御プログラムおよび第2制御プログラムを含み、前記第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、前記第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含み、前記第1制御プログラムおよび前記第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第1モーション演算プログラムおよび前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、前記システムプログラムは、前記マイクロプロセッサに、前記制御サイクルの周期と同じ周期の第1実行サイクルごとに前記第1制御プログラムを実行開始させる第1実行制御命令と、前記制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに前記第2制御プログラムを実行開始させる第2実行制御命令とを含み、前記第2実行制御命令は、前記マイクロプロセッサに、前記第2実行サイクルが開始する前記制御サイクルにおいて、前記第1制御プログラムの実行終了後に前記第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第2制御プログラムが終了しなければ次の制御サイクルにおいて前記第1制御プログラムの実行終了後に前記第2制御プログラムの未実行の部分の実行を開始させる命令を含む、PLCのCPUユニット。前記システムプログラムは、前記マイクロプロセッサに前記第1モーション演算プログラムが活性状態にある期間中、前記第1実行サイクルごとに、送信される前記出力データに前記第1モーション演算プログラムの実行によって更新された前記第1モーション指令値データを含ませるための処理と、前記第2モーション演算プログラムが活性状態にある期間中、少なくとも前記第2実行サイクルごとに、送信される前記出力データに前記第2モーション演算プログラムの実行によって更新された前記第2モーション指令値データを含ませるための処理とを実行させる、請求項1に記載のPLCのCPUユニット。前記第1制御プログラムは、前記第1モーション演算プログラムに対してその実行に必要な指示を与える命令と、前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令とを含む前記ユーザプログラムを含む、請求項1または2に記載のPLCのCPUユニット。前記第2制御プログラムは、前記第1モーション演算プログラムに対してその実行に必要な指示を与える命令と、前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令とを含む前記ユーザプログラムを含む、請求項1または2に記載のPLCのCPUユニット。前記ユーザプログラムは、前記第1モーション演算プログラムに対してその実行に必要な指示を与える命令を含む第1ユーザプログラムと、前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含む第2ユーザプログラムとを含み、前記第1制御プログラムは、前記第1ユーザプログラムを含み、前記第2制御プログラムは、前記第2ユーザプログラムを含む、請求項1または2に記載のPLCのCPUユニット。マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのPLC用のシステムプログラムであって、前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、前記記憶手段は、前記システムプログラムと、前記制御プログラムとの格納に用いられ、前記マイクロプロセッサは、前記システムプログラムに加えて、前記制御プログラムを実行し、前記制御プログラムは、第1制御プログラムおよび第2制御プログラムを含み、前記第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、前記第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含み、前記第1制御プログラムおよび前記第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第1モーション演算プログラムおよび前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、前記システムプログラムは、前記マイクロプロセッサに、前記制御サイクルの周期と同じ周期の第1実行サイクルごとに前記第1制御プログラムを実行開始させる第1実行制御命令と、前記制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに前記第2制御プログラムを実行開始させる第2実行制御命令とを含み、前記第2実行制御命令は、前記マイクロプロセッサに、前記第2実行サイクルが開始する前記制御サイクルにおいて、前記第1制御プログラムの実行終了後に前記第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第2制御プログラムが終了しなければ次の制御サイクルにおいて前記第1制御プログラムの実行終了後に前記第2制御プログラムの未実行の部分の実行を開始させる命令を含む、PLC用のシステムプログラム。前記システムプログラムは、前記マイクロプロセッサに前記第1モーション演算プログラムが活性状態にある期間中、前記第1実行サイクルごとに、送信される前記出力データに前記第1モーション演算プログラムの実行によって更新された前記第1モーション指令値データを含ませるための処理と、前記第2モーション演算プログラムが活性状態にある期間中、少なくとも前記第2実行サイクルごとに、送信される前記出力データに前記第2モーション演算プログラムの実行によって更新された前記第2モーション指令値データを含ませるための処理とを実行させる、請求項6に記載のPLC用のシステムプログラム。マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのPLC用のシステムプログラムを格納した記録媒体であって、前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、前記記憶手段は、前記システムプログラムと、前記制御プログラムとの格納に用いられ、前記マイクロプロセッサは、前記システムプログラムに加えて、前記制御プログラムを実行し、前記制御プログラムは、第1制御プログラムおよび第2制御プログラムを含み、前記第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、前記第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含み、前記第1制御プログラムおよび前記第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第1モーション演算プログラムおよび前記第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、前記システムプログラムは、前記マイクロプロセッサに、前記制御サイクルの周期と同じ周期の第1実行サイクルごとに前記第1制御プログラムを実行開始させる第1実行制御命令と、前記制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに前記第2制御プログラムを実行開始させる第2実行制御命令とを含み、前記第2実行制御命令は、前記マイクロプロセッサに、前記第2実行サイクルが開始する前記制御サイクルにおいて、前記第1制御プログラムの実行終了後に前記第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第2制御プログラムが終了しなければ次の制御サイクルにおいて前記第1制御プログラムの実行終了後に前記第2制御プログラムの未実行の部分の実行を開始させる命令を含む、PLC用のシステムプログラムを格納した記録媒体。前記システムプログラムは、前記マイクロプロセッサに前記第1モーション演算プログラムが活性状態にある期間中、前記第1実行サイクルごとに、送信される前記出力データに前記第1モーション演算プログラムの実行によって更新された前記第1モーション指令値データを含ませるための処理と、前記第2モーション演算プログラムが活性状態にある期間中、少なくとも前記第2実行サイクルごとに、送信される前記出力データに前記第2モーション演算プログラムの実行によって更新された前記第2モーション指令値データを含ませるための処理とを実行させる、請求項8に記載のPLC用のシステムプログラムを格納した記録媒体。モーション演算プログラムを実行する機能をPLCのマイクロプロセッサに統合するにあたり、従来のモーションコントローラと同様に、一定周期の実行サイクル内でモータドライバに対する指令値の算出およびその算出結果の出力を行い、各実行サイクルの残りの時間でユーザプログラムの実行およびその他のPLC動作を行うように構成しようと考えることは自然である。しかしながら、モーション制御を行うPLCの動作に必要なすべての処理を毎回の実行サイクル内で行うと、実行サイクルの周期を長くせざるをえない。そうすると、モータドライバに対する指令値の出力周期が長くなって、高速かつ高精度にモーション制御を行うことが難しくなる。上述の特許文献1においては、基本クロックの毎サイクルにおいて実行する定周期モーション制御処理および各軸処理および高速シーケンス処理と、毎サイクルには実行しない低速シーケンス処理および非定周期モーション制御処理とに処理を分けることによって、定周期モーション制御処理および各軸処理および高速シーケンス処理の実行サイクルを短くしようとしていることがうかがわれる。しかしながら、特許文献1においては、各処理について、具体的にどのような処理内容が想定されているのかについては説明されていない。特に、具体的な処理内容からみた場合に高速シーケンス処理と低速シーケンス処理とがどのように区別され、モーション制御処理とどのような関係を有しているのか、あるいは有していないのかは不明である。さらに、非定周期モーション制御処理について、具体的な処理内容の説明がされていないのであるが、名称からしてモーション制御処理の一種であるとすれば、モーション制御処理であるにもかかわらず非定周期に実行されることは好ましくない。本発明は、モーション制御機能を有するPLCにおいて、高速処理を要する一部のモーション制御処理のためには比較的短い周期の実行サイクルを確保しつつ、それ以外のモーション制御処理も一定周期で実行できるようにすることを目的とする。本発明のある局面によれば、制御対象を制御するPLCのCPUユニットを提供する。PLCのCPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。PLCのCPUユニットは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されている。通信回路は、制御サイクルの周期で出力データを送信しおよび入力データを受信する。記憶手段は、システムプログラムと、制御プログラムとの格納に用いられる。マイクロプロセッサは、システムプログラムと、制御プログラムとを実行する。制御プログラムは、第1制御プログラムおよび第2制御プログラムを含む。第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含む。第1制御プログラムおよび第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され第1モーション演算プログラムおよび第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含む。システムプログラムは、マイクロプロセッサに、制御サイクルの周期と同じ周期の第1実行サイクルごとに第1制御プログラムを実行開始させる第1実行制御命令と、制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに第2制御プログラムを実行開始させる第2実行制御命令とを含む。第2実行制御命令は、マイクロプロセッサに、第2実行サイクルが開始する制御サイクルにおいて、第1制御プログラムの実行終了後に第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに第2制御プログラムが終了しなければ次の制御サイクルにおいて第1制御プログラムの実行終了後に第2制御プログラムの未実行の部分の実行を開始させる命令を含む。好ましくは、システムプログラムは、マイクロプロセッサに、第1モーション演算プログラムが活性状態にある期間中、第1実行サイクルごとに、送信される出力データに第1モーション演算プログラムの実行によって更新された第1モーション指令値データを含ませるための処理と、第2モーション演算プログラムが活性状態にある期間中、少なくとも第2実行サイクルごとに、送信される出力データに第2モーション演算プログラムの実行によって更新された第2モーション指令値データを含ませるための処理とを実行させる。好ましくは、第1制御プログラムは、第1モーション演算プログラムに対してその実行に必要な指示を与える命令と、第2モーション演算プログラムに対してその実行に必要な指示を与える命令とを含むユーザプログラムを含む。あるいは好ましくは、第2制御プログラムは、第1モーション演算プログラムに対してその実行に必要な指示を与える命令と、第2モーション演算プログラムに対してその実行に必要な指示を与える命令とを含むユーザプログラムを含む。あるいは好ましくは、ユーザプログラムは、第1モーション演算プログラムに対してその実行に必要な指示を与える命令を含む第1ユーザプログラムと、第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含む第2ユーザプログラムとを含み、第1制御プログラムは、第1ユーザプログラムを含み、第2制御プログラムは、第2ユーザプログラムを含む。この発明の別の局面に従えば、マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、記憶手段に格納されてマイクロプロセッサによって実行されるためのPLC用のシステムプログラムを提供する。通信回路は、制御サイクルの周期で出力データを送信しおよび入力データを受信する。記憶手段は、システムプログラムと、制御プログラムとの格納に用いられる。マイクロプロセッサは、システムプログラムに加えて、制御プログラムを実行する。制御プログラムは、第1制御プログラムおよび第2制御プログラムを含む。第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含む。第1制御プログラムおよび第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され第1モーション演算プログラムおよび第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含む。システムプログラムは、マイクロプロセッサに、制御サイクルの周期と同じ周期の第1実行サイクルごとに第1制御プログラムを実行開始させる第1実行制御命令と、制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに第2制御プログラムを実行開始させる第2実行制御命令とを含む。第2実行制御命令は、マイクロプロセッサに、第2実行サイクルが開始する制御サイクルにおいて、第1制御プログラムの実行終了後に第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに第2制御プログラムが終了しなければ次の制御サイクルにおいて第1制御プログラムの実行終了後に第2制御プログラムの未実行の部分の実行を開始させる命令を含む。好ましくは、システムプログラムは、マイクロプロセッサに、第1モーション演算プログラムが活性状態にある期間中、第1実行サイクルごとに、送信される出力データに第1モーション演算プログラムの実行によって更新された第1モーション指令値データを含ませるための処理と、第2モーション演算プログラムが活性状態にある期間中、少なくとも第2実行サイクルごとに、送信される出力データに第2モーション演算プログラムの実行によって更新された第2モーション指令値データを含ませるための処理とを実行させる。この発明のさらに別の局面に従えば、マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するPLCのCPUユニットにおいて、記憶手段に格納されてマイクロプロセッサによって実行されるためのPLC用のシステムプログラムを格納した記録媒体を提供する。通信回路は、制御サイクルの周期で出力データを送信しおよび入力データを受信する。記憶手段は、システムプログラムと、制御プログラムとの格納に用いられる。マイクロプロセッサは、システムプログラムに加えて、制御プログラムを実行する。制御プログラムは、第1制御プログラムおよび第2制御プログラムを含む。第1制御プログラムは、モータの運動を制御するための第1モーション指令値データを生成する第1モーション演算プログラムを含み、第2制御プログラムは、モータの運動を制御するための第2モーション指令値データを生成する第2モーション演算プログラムを含む。第1制御プログラムおよび第2制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され第1モーション演算プログラムおよび第2モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含む。システムプログラムは、マイクロプロセッサに、制御サイクルの周期と同じ周期の第1実行サイクルごとに第1制御プログラムを実行開始させる第1実行制御命令と、制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに第2制御プログラムを実行開始させる第2実行制御命令とを含む。第2実行制御命令は、マイクロプロセッサに、第2実行サイクルが開始する制御サイクルにおいて、第1制御プログラムの実行終了後に第2制御プログラムを実行開始させ、当該制御サイクルが終了するまでに第2制御プログラムが終了しなければ次の制御サイクルにおいて第1制御プログラムの実行終了後に第2制御プログラムの未実行の部分の実行を開始させる命令を含む。好ましくは、システムプログラムは、マイクロプロセッサに、第1モーション演算プログラムが活性状態にある期間中、第1実行サイクルごとに、送信される出力データに第1モーション演算プログラムの実行によって更新された第1モーション指令値データを含ませるための処理と、第2モーション演算プログラムが活性状態にある期間中、少なくとも第2実行サイクルごとに、送信される出力データに第2モーション演算プログラムの実行によって更新された第2モーション指令値データを含ませるための処理とを実行させる。なお、本明細書における日本語の命令は、ある機能を実現するための、プログラムのソースリストに表れる個々の命令に限らず、それら個々の命令や関数等の集合をも意味しており、たとえば英語ではinstructionsのように複数形で表記されるべきものである。本発明によれば、モーション制御機能を有するPLCにおいて、高速処理を要する一部のモーション制御処理のために比較的短い周期の実行サイクルを確保しつつ、それ以外のモーション制御処理も一定周期で実行することができる。本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。<A.システム構成>本実施の形態に係るPLCは、モータの運動を制御するためのモーション制御機能を有する。まず、図1を参照して、本実施の形態に係るPLC1のシステム構成について説明する。図1は、本発明の実施の形態に係るPLCシステムの概略構成を示す模式図である。図1を参照して、PLCシステムSYSは、PLC1と、PLC1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10などを介してPLCサポート装置8が接続される。PLC1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。CPUユニット13の詳細については、図2を参照して後述する。本実施の形態においては、CPUユニット13が、主として、モータなどの制御対象を制御することになる。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態オンおよび何らの対象物も検出していない状態オフのいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令オンおよび不活性化するための指令オフのいずれかを出力する。特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット登録商標を用いることができる。産業用イーサネット登録商標としては、たとえば、EtherCAT登録商標、ProfinetIRT、MECHATROLINK登録商標-III、Powerlink、SERCOS登録商標-III、CIPMotionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット登録商標以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP登録商標などを用いてもよい。本実施の形態に係るPLCシステムSYSでは、典型的に、本実施の形態においては、産業用イーサネット登録商標であるEtherCAT登録商標をフィールドネットワーク2として採用する場合の構成について例示する。なお、図1には、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボモータドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行うようにしてもよい。なお、PLC1は、CPUユニット13にIOユニット14の機能やサーボモータドライバ3の機能を持たせることにより、IOユニット14やサーボモータドライバ3などを介さずにCPUユニット13が直接制御対象を制御する構成でもよい。サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサロータリーエンコーダやトルクセンサといった検出器から、位置、速度典型的には、今回位置と前回位置との差から算出される、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。また、図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。図1に示すPLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。なお、PLCサポート装置8については後述する。<B.CPUユニットのハードウェア構成>次に、図2を参照して、CPUユニット13のハードウェア構成について説明する。図2は、本発明の実施の形態に係るCPUユニット13のハードウェア構成を示す模式図である。図2を参照して、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。メインメモリ104は、揮発性の記憶領域RAMであり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAMDynamicRandomAccessMemoryやSRAMStaticRandomAccessMemoryといったデバイスが用いられる。一方、不揮発性メモリ106は、リアルタイムOSOperatingSystem、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD-RAMDigitalVersatileDiskRandomAccessMemoryのような光学記録媒体などを用いることもできる。システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OSOperatingSystemやBIOSBasicInputOutputSystemなどによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような制御サイクルごとの制御動作が実現される。CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。なお、CPUユニット13自体にIOユニット14やサーボモータドライバ3の機能を持たせる場合は、通信回路による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット13の内部で行われる送信および受信となる。PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMADynamicMemoryAccess制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。なお、PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ以下出力データとも称す。の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ以下入力データとも称す。の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはEtherCAT登録商標規格に従うフィールドネットワーク2が採用されるので、通常のイーサネット登録商標通信を行うためのハードウェアを含む、フィールドネットワークコントローラ140が用いられる。EtherCAT登録商標規格では、通常のイーサネット登録商標規格に従う通信プロトコルを実現する一般的なイーサネット登録商標コントローラを利用できる。但し、フィールドネットワーク2として採用される産業用イーサネット登録商標の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット登録商標コントローラが用いられる。また、産業用イーサネット登録商標以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。バッファメモリ146は、フィールドネットワーク2を介して他の装置などへ出力されるデータこのデータについても、以下出力データと称す。の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータこのデータについても、以下入力データとも称す。の受信バッファとして機能する。上述したように、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ146に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ146に一次的に保持された後、メインメモリ104に移される。DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。USBコネクタ110は、PLCサポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、PLCサポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。<C.CPUユニットのソフトウェア構成>次に、図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。図3は、本発明の実施の形態に係るCPUユニット13で実行されるソフトウェア構成を示す模式図である。図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的一体としてに実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のラインプロセスなどに応じて、任意に設計されるプログラムである。後述するように、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。特に、実行サイクルが共通であるユーザプログラム236とモーション演算プログラム234とは、1つの制御プログラム230として把握される。このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210と制御プログラム230とを実行する。すなわち、記憶手段は、少なくとも、システムプログラムと制御プログラムとの格納に用いられる。以下、各プログラムについてより詳細に説明する。上述ユーザプログラム236は、上述したように、ユーザにおける制御目的たとえば、対象のラインやプロセスに応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、PLCサポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、PLCサポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。本実施の形態に係るCPUユニット13では、モーション演算プログラム234に適した一定周期の実行サイクル制御サイクルを処理全体の共通サイクルとして採用する。そのため、1つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム212は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム212は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。出力処理プログラム214は、ユーザプログラム236制御プログラム230の実行によって生成された出力データを、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140へ転送するのに適した形式に再配置する。PLCシステムバスコントローラ120またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。その他のシステムプログラム220は、図3に個別に示したプログラム以外の、PLC1の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム220は、制御サイクルの周期を設定するプログラムを含む。制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、制御サイクルの周期を指定する情報をユーザがPLCサポート装置8へ入力する。すると、その入力された情報は、PLCサポート装置8からCPUユニット13へ転送される。制御サイクルの周期を設定するプログラムは、PLCサポート装置8からの情報を不揮発性メモリ106に格納させるとともに、システムタイマ108から指定された制御サイクルの周期で割り込み信号が発生されるように、システムタイマ108を設定する。CPUユニット13への電源投入時に、制御サイクルの周期を設定するプログラムが実行されることで、制御サイクルの周期を指定する情報が不揮発性メモリ106から読み出され、読み出された情報に従ってシステムタイマ108が設定される。制御サイクルの周期を指定する情報の形式としては、制御サイクルの周期を示す時間の値や、制御サイクルの周期に関する予め用意された複数の選択肢のうちから1つを特定する情報番号または文字などを採用することができる。本実施の形態に係るCPUユニット13において、制御サイクルの周期を設定する手段としては、制御サイクルの周期を指定する情報を取得するために用いられるPLCサポート装置8との通信手段、制御サイクルの周期を設定するプログラム、ならびに制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ108の構成といった、制御サイクルの周期を任意の設定するために用いられる要素が該当する。リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係るPLC1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力送信するためのイベント割り込みとして、制御サイクル開始の割り込みが初期設定される。リアルタイムOS200は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り替える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13とPLCサポート装置8との間の接続ケーブル10USBなどを介した通信処理に関するものが含まれる。上述のような割り込みを用いて、PLC1のCPUユニット13は、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムとの実行を繰り返すことによって制御対象を制御するように構成される。このとき、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140通信回路は、制御サイクルの周期で出力データを送信しおよび入力データを受信する。なお、通信回路が、出力データを送信し、入力データを受信するタイミングを決定する通信トリガ信号を提供する方法については、典型的には、以下のような実装形態が考えられる。1マイクロプロセッサ100が通信回路に通信の都度トリガ信号を与える構成2通信回路がシステムタイマ108から直接通信トリガ信号を受ける構成3通信回路が通信トリガ信号を発生するタイマ回路を内蔵する構成いずれの場合にも、通信トリガ信号は、制御サイクルの周期で発生されることになる。<D.メインメモリ構成>次に、図4を参照して、CPUユニット13のメインメモリ104に構成される記憶領域について説明する。図4は、本発明の実施の形態に係るCPUユニット13のメインメモリ104の領域構成を示す模式図である。図4を参照して、メインメモリ104には、各種のプログラム領域1041と、制御プログラムの作業領域1042と、PLCシステムバス送信バッファ1043と、PLCシステムバス受信バッファ1044と、フィールドネットワーク送信バッファ1045と、フィールドネットワーク受信バッファ1046とが形成される。各種のプログラム領域1041には、各種のプログラムを実行するためのコードが一時的に格納される。制御プログラムの作業領域1042には、制御プログラム230の実行により作成された出力データが一時的に格納される。PLCシステムバス送信バッファ1043およびPLCシステムバス受信バッファ1044は、PLCシステムバス11を介して送信および受信されるデータをそれぞれ一時的に格納する。同様に、フィールドネットワーク送信バッファ1045およびフィールドネットワーク受信バッファ1046は、フィールドネットワーク2を介して送信および受信されるデータをそれぞれ一時的に格納する。より具体的には、出力処理プログラム214は、PLCシステムバス11を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域1042からPLCシステムバス送信バッファ1043へコピーする。その際、出力処理プログラム214は、同一のユニットに送信される複数の出力データを一括して送信できるように、PLCシステムバス送信バッファ1043において、同一のユニットに向けられた出力データ群がまとめられるように出力データを再配置する。同様に、出力処理プログラム214は、フィールドネットワーク2を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域1042からフィールドネットワーク送信バッファ1045へコピーする。その際、出力処理プログラム214は、フィールドネットワーク送信バッファ1045において、シリアルフレームとして送信できる形式に出力データを再配置する。一方、入力処理プログラム216は、PLCシステムバスコントローラ120が受信してPLCシステムバス受信バッファ1044に格納された入力データ、および/または、フィールドネットワークコントローラ140が受信してフィールドネットワーク受信バッファ1046に格納された入力データを、制御プログラムの作業領域1042へコピーする。その際、入力処理プログラム216は、制御プログラムの作業領域1042において、制御プログラム230が使用するのに適した形式に入力データを再配置する。PLCシステムバスコントローラ120のDMA制御回路122は、PLCシステムバス送信バッファ1043に格納されている出力データをPLCシステムバスコントローラ120のバッファメモリ146へ転送するとともに、バッファメモリ146に格納されている入力データをPLCシステムバス受信バッファ1044へ転送する。フィールドネットワークコントローラ140のDMA制御回路142は、フィールドネットワーク送信バッファ1045に格納されている出力データをフィールドネットワークコントローラ140のバッファメモリ146へ転送するとともに、バッファメモリ146に格納されている入力データをフィールドネットワーク受信バッファ1046へ転送する。制御プログラムの作業領域1042、PLCシステムバス送信バッファ1043、PLCシステムバス受信バッファ1044、フィールドネットワーク送信バッファ1045、および、フィールドネットワーク受信バッファ1046は、それぞれのアクセスを互いに独立に制御できるように構成されている。そのため、たとえば、以下に示す1~3といった複数の動作を並列実行することができる。1マイクロプロセッサ100が行う、ユーザプログラム236実行に伴う制御プログラムの作業領域1042へのアクセス2PLCシステムバスコントローラ120のDMA制御回路122が行う、メインメモリ104上のPLCシステムバス送信バッファ1043および/またはPLCシステムバス受信バッファ1044とPLCシステムバスコントローラ120内のバッファメモリ126との間のデータ転送のための、メインメモリ104上のPLCシステムバス送信バッファ1043および/またはPLCシステムバス受信バッファ1044へのアクセス3フィールドネットワークコントローラ140のDMA制御回路142が行う、メインメモリ104上のフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046とフィールドネットワークコントローラ140内のバッファメモリ146との間のデータ転送のための、メインメモリ104上のフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046へのアクセス<E.モーション制御の概略手順>次に、本実施の形態に係るPLCシステムSYSが提供するモーション制御の概略手順について説明する。まず、上述したユーザプログラム236に含まれる典型的な構成について説明する。ユーザプログラム236は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム236は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム234が起動し、まず、モーション演算プログラム234の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じ制御サイクルにおいて、第1サイクルでの指令値が算出される。したがって、初期処理および第1番目の指令値算出処理が、起動したモーション演算プログラム234が第1番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。図5は、本発明の実施の形態に係る制御プログラム230ユーザプログラム236、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供されるモーション制御の概略の処理手順を示すフローチャートである。図5を参照して、マイクロプロセッサ100は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断するステップS2。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム236およびシーケンス命令演算プログラム232によって実現される。制御開始の条件が成立していない場合ステップS2においてNOの場合には、ステップS2の判断が繰り返される。制御開始の条件が成立している場合ステップS2においてYESの場合には、マイクロプロセッサ100は、モーション制御に関する初期処理を実行するステップS4。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などの算出処理が含まれる。続いて、マイクロプロセッサ100は、第1サイクルでの指令値の算出処理を実行するステップS6。さらに、マイクロプロセッサ100は、算出した指令値の出力処理を実行するステップS8。その後、マイクロプロセッサ100は、次の制御サイクルが到来するまで待つステップS10。そして、マイクロプロセッサ100は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断するステップS12。この制御終了の条件が成立しているとは、サーボモータ4が終了位置に到達している状態などをいう。制御終了の条件が成立している場合ステップS12においてYESの場合には、ステップS2以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム234は、新たな制御開始の条件が成立するまで不活性の状態に維持される。制御終了の条件が成立していない場合ステップS12においてNOの場合には、マイクロプロセッサ100は、現在のサイクルでの指令値の算出処理を実行するステップS14。さらに、マイクロプロセッサ100は、算出した指令値の出力処理を実行するステップS16。そして、ステップS10以下の処理が繰り返される。図5に示すフローチャートにおいて、制御開始の条件が成立してからステップS2においてYESとなったときから、制御終了の条件が成立するまでステップS12においてYESとなったときまでが、モーション演算プログラム234が活性状態にある期間に相当する。算出した指令値の出力処理ステップS8およびS16において、算出された指令値は、図4の制御プログラムの作業領域1042から、PLCシステムバス送信バッファ1043またはフィールドネットワーク送信バッファ1045へコピーされる。そうすると、コピーされた指令値は、次の送信タイミングが到来すると、更新されたモーション指令値データとして送信される。なお、モーション指令値データが更新されているかどうかにかかわらず制御サイクルごとに送信バッファPLCシステムバス送信バッファ1043またはフィールドネットワーク送信バッファ1045に格納されているモーション指令値データを送信するようにしてもよいし、あるいは、モーション指令値データが更新されたときにだけそのモーション指令値データの送信を実行するようにしてもよい。このように、本実施の形態に係るシステムプログラム210は、マイクロプロセッサ100に、第1モーション演算プログラムが活性状態にある期間中、実行サイクルごとに、送信される出力データに当該モーション演算プログラムの実行によって更新されたモーション指令値データを含ませるための処理を実行させる。後述するように、各々がモーション演算プログラムを含む制御プログラムを複数実行する場合には、このような処理については、それぞれのモーション演算プログラムについて、対応する実行サイクルで独立して実行される。すなわち、本実施の形態に係るシステムプログラム210は、マイクロプロセッサ100に、第1モーション演算プログラムが活性状態にある期間中、第1実行サイクルごとに、送信される出力データに第1モーション演算プログラムの実行によって更新された第1モーション指令値データを含ませるための処理を実行させるとともに、第2モーション演算プログラムが活性状態にある期間中、少なくとも第2実行サイクルごとに、送信される出力データに第2モーション演算プログラムの実行によって更新された第2モーション指令値データを含ませるための処理とを実行させる。<F.全体処理動作>次に、本実施の形態に係る各プログラムの実行順序などについて、以下説明する。図6は、本発明の実施の形態に係る全体処理動作を示すシーケンス図である。図6を参照して、本実施の形態に係るPLC1の実行中においては、マイクロプロセッサ100が、複数の制御プログラム第1制御プログラム230-1および第2制御プログラム230-2を実行する場合を考える。このとき、マイクロプロセッサ100は、IO処理プログラム218出力処理プログラム214および入力処理プログラム216についても時分割的に実行する。典型的に、第1制御プログラム230-1および第2制御プログラム230-2は、それぞれ第1モーション演算プログラム234-1および第2モーション演算プログラム234-2を含むとする。また、第1制御プログラム230-1および第2制御プログラム230-2の少なくとも一方は、さらに、ユーザプログラム236を含むとする。図6の第1および第2制御プログラムのそれぞれの時間軸に沿って示した破線の角丸の矩形は、対応する制御プログラムの実行サイクルを示す。一例として、第1制御プログラム230-1は、1回分の制御サイクルを実行サイクルとしており、第2制御プログラム230-2は、2回分の制御サイクルを実行サイクルとしている。図6において、IO処理プログラム218から第1制御プログラム230-1および第2制御プログラム230-2へそれぞれ延びる矢印は、入力データの流れを示す。具体的には、受信バッファフィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046から制御プログラムの作業領域1042への入力データのコピーに相当する。この入力データは、制御プログラム230第1制御プログラム230-1および/または第2制御プログラム230-2がユーザプログラム236を含む場合には、当該ユーザプログラム236が使用する入力データを含む他、モーション演算プログラム234が使用する入力データを含むことがあるモーション演算プログラム234は入力データを使用せずに演算する場合もある。同様に、図6において、第1制御プログラム230-1および第2制御プログラム230-2からIO処理プログラムへそれぞれ延びる矢印は、出力データの流れを示す。具体的には、制御プログラムの作業領域1042から送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045への出力データのコピーに相当する。この出力データは、制御プログラム230第1制御プログラム230-1および/または第2制御プログラム230-2がユーザプログラム236を含む場合には、当該ユーザプログラム236が生成した出力データを含む他、モーション演算プログラム234が活性状態にある期間中は当該モーション演算プログラム234が生成したモーション指令値データを含む。図6に示すPLC1の実行中において進行するシーケンスは、以下のようになる。1IO処理プログラム218の命令に従って出力処理が実行される。より具体的には、先の処理によって、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045に格納された出力データが、他のユニットへ送信され、あるいは、他の装置へ送信される。2フィールドネットワークコントローラ140が入力データを受信してフィールドネットワーク受信バッファ1046に当該入力データを格納、および/または、PLCシステムバスコントローラ120が、入力データを受信してPLCシステムバス受信バッファ1044に当該入力データを格納する。3IO処理プログラム218の命令に従って、PLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている入力データが制御プログラムの作業領域1042へ転送される。4第1制御プログラム230-1の命令に従って、入力データを使用して各種処理が実行されることで出力データが算出され、算出された出力データが制御プログラムの作業領域1042へ格納される。5IO処理プログラム218の命令に従って、制御プログラムの作業領域1042に格納されている出力データがPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045へ転送される。6第2制御プログラム230-2の命令に従って、入力データを使用して各種処理が実行されることで出力データが算出され、算出された出力データが制御プログラムの作業領域1042へ格納される。なお、第2制御プログラム230-2の実行サイクルは、2回分の制御サイクルに相当するので、第2制御プログラム230-2の実行が終了までに次の制御サイクルを開始するための割り込みが発生すると、第2制御プログラム230-2の実行は一旦中断され、次の制御サイクルにおいて、IO処理プログラム218および第1制御プログラム230-1の実行終了後に、第2制御プログラム230-2の未実行部分が実行される。7IO処理プログラム218の命令に従って、制御プログラムの作業領域1042に格納されている出力データがPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045へ転送される。<G.制御プログラム内のプログラム構成と指示の流れ>次に、制御プログラム内のプログラム構成と、プログラム間での指示の流れについて説明する。図7は、本発明の実施の形態に係る制御プログラム内のプログラム構成と指示の流れについて説明するための模式図である。図7には、第1制御プログラム230-1および第2制御プログラム230-2に含まれるユーザプログラムのバリエーションの例を示す。すなわち、図7aは、第1制御プログラム230-1のみがユーザプログラム236を有している例を示し、図7bは、第2制御プログラム230-2のみがユーザプログラム236を有している例を示し、図7cは、第1制御プログラム230-1および第2制御プログラム230-2の両方がユーザプログラム236を有している例を示す。図7において、ユーザプログラム236図7cでは、236-1または236-2からモーション演算プログラム234234-1または234-2へ延びる矢印は、モーション演算プログラム234の実行に必要な指示の流れを示す。この指示は、たとえば、ユーザプログラム236の中で、モーション制御の内容を定義するモーションファンクションブロックに対する入力パラメータ入力定数または入力変数として記述される。そして、ユーザプログラムの実行に伴いモーション制御開始の条件が成立してモーションファンクションブロックが実行されると、当該入力パラメータがモーション演算プログラムに与えられる。制御プログラム230は、ユーザプログラム236の実行とモーション演算プログラム234の実行とを含むスレッドとして構成してもよい。制御プログラム230がユーザプログラム236およびモーション演算プログラム234を含む場合の、それぞれのプログラムの実行順序は、どちらが先でもよい。ユーザプログラム236の実行を先にする場合は、ユーザプログラム236の実行結果をモーション演算プログラム234の実行に直ちに反映できる点で好ましい。一方、モーション演算プログラム234を先に実行する場合は、ユーザプログラム236の実行結果は次の実行サイクルにおいてモーション演算プログラム234の実行に反映される。図6に示すように、2回分の制御サイクルを実行サイクルとする第2制御プログラム230-2は、その実行が終了するまでに次の制御サイクルが始まるとその実行が中断され、当該次の制御サイクルで第1制御プログラム230-1の実行終了後に実行が再開される。第2制御プログラム230-2は、それに含まれるユーザプログラム236の実行中に中断されることもあれば、それに含まれるモーション演算プログラム234の実行中に中断されることもある。g1:第1制御プログラムにのみユーザプログラムが含まれる場合図7aを参照して、第1制御プログラム230-1にのみユーザプログラム236が含まれる形態について説明する。この図7aに示す実施の形態は、第1モーション演算プログラム234-1と第2モーション演算プログラム234-2との両方に指示を与えるユーザプログラム236と、第1モーション演算プログラム234-1とを所望の制御サイクル時間の中で実行可能な場合に採用できる。すなわち、図7aに示す例においては、第1制御プログラム230-1は、第1モーション演算プログラム234-1に対してその実行に必要な指示を与える命令と、第2モーション演算プログラム234-2に対してその実行に必要な指示を与える命令とを含むユーザプログラム236を含む。図7aに示す実施の形態によれば、第1モーション演算プログラム234-1のどの実行サイクルにおいても、ユーザプログラム236から新しい指示を与えることができる。したがって、実行中のモータの運動に対する変更の指示などを迅速にモーション制御に反映することができる。なお、第2モーション演算プログラム234-2の実行サイクルの途中で第2モーション演算プログラム234-2に与えられた指示は、第2モーション演算プログラム234-2の次の実行サイクルにおいて反映される。さらに、図7aに示す実施の形態によれば、ユーザプログラム236を1つに集約できるので、その設計が容易になる。g2:第2制御プログラムにのみユーザプログラムが含まれる場合図7bを参照して、第2制御プログラム230-2にのみユーザプログラム236が含まれる形態について説明する。この図7bに示す実施の形態は、所望の制御サイクル時間内で、第1モーション演算プログラム234-1の実行時間を除いた、ユーザプログラム236の実行に割り当てることができる時間が少ない場合に好適な実施形態である。すなわち、図7bに示す例においては、第2制御プログラム230-2は、第1モーション演算プログラム234-1に対してその実行に必要な指示を与える命令と、第2モーション演算プログラム234-2に対してその実行に必要な指示を与える命令とを含むユーザプログラム236を含む。図7bに示す実施の形態によれば、第1モーション演算プログラム234-1を実行するに足る時間まで制御サイクル時間を短くすることができる。ただし、ユーザプログラム236から第1モーション演算プログラム234-1への指示は第2制御プログラム230-2の実行サイクルの周期でしか与えることができない。しかしながら、モーション演算プログラム234は、ユーザプログラム236から、たとえば座標Aから座標Bまで速度Vで移動せよのような指示をいったん受けて活性状態となれば、その指示の実行を完了するまでの間、ユーザプログラム236からの指示なしに、実行サイクルごとにモーション指令値データを算出することができる。したがって、そのような指示の実行途中に、モータの運動を中止させる指示や別の運動へ変更する指示を与えて迅速に反応させる必要がない場合には、図7bに示す実施の形態を採用しても支障はない。この実施の形態によれば、さらに、ユーザプログラム236を1つに集約できるので、その設計が容易になる。g3:第1および第2制御プログラムの両方にユーザプログラムが含まれる場合図7cを参照して、第1制御プログラム230-1および第2制御プログラム230-2にそれぞれユーザプログラム236-1および236-2が含まれる形態について説明する。すなわち、図7cに示す例においては、ユーザプログラム236としては、第1モーション演算プログラム234-1に対してその実行に必要な指示を与える命令を含む第1ユーザプログラム236-1と、第2モーション演算プログラム234-2に対してその実行に必要な指示を与える命令を含む第2ユーザプログラム236-2とを含む。第1制御プログラム230-1は、第1ユーザプログラム236-1を含み、第2制御プログラム230-2は、第2ユーザプログラム236-2を含む。図7cに示す実施の形態によれば、第1制御プログラム230-1に含ませる第1ユーザプログラム236-1は、第2モーション演算プログラム234-2に対する指示を与えることに関する処理を行う必要がないので、比較的実行時間を短くすることができる。したがって、第1ユーザプログラム236-1と第1モーション演算プログラム234-2とを実行可能な時間としての制御サイクル時間を比較的短くすることができる。さらに、第1モーション演算プログラム234-1および第2モーション演算プログラム234-2のどの実行サイクルにおいてもユーザプログラム236-1および236-2からそれぞれ新しい指示を与えることができる。<H.処理手順>次に、システムプログラム210がPLC1のマイクロプロセッサ100によって実行されることで実現される処理について説明する。図8は、本発明の実施の形態に係るCPUユニットのマイクロプロセッサ100がシステムプログラム210を実行することで実現される処理の手順を示すフローチャートである。なお、図8に示すフローチャートは、図5に示すフローチャートに示されるステップS6~S16の処理をより詳細に示す。図8を参照して、マイクロプロセッサ100は、制御サイクル開始の割り込み信号を待つステップS100。制御サイクル開始の割り込み信号を受けるとステップS100においてYES、マイクロプロセッサ100は、第1制御プログラム230-1が生成した出力データを、第1制御プログラム230-1の作業領域制御プログラムの作業領域1042の一部から送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045へコピーするステップS102。続いて、マイクロプロセッサ100は、この制御サイクルから第2制御プログラム230-2の実行サイクルが開始するか否かを判断するステップS104。この制御サイクルから第2制御プログラム230-2の実行サイクルが開始する場合ステップS104においてYESの場合には、マイクロプロセッサ100は、第2制御プログラム230-2が生成した出力データを、第2制御プログラム230-2の作業領域制御プログラムの作業領域1042の一部から送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045へコピーするとともに、第2制御プログラム230-2の現在状態を実行前に設定するステップS106。なお、本実施の形態に従うシステムプログラム210は、予め定められた処理を実行すべき実行サイクル内において、未だ処理を開始していない状態である実行前、当該実行サイクル内において処理が行なわれている実行中、および、当該実行サイクル内においては既に処理が完了している実行終了のいずれかの実行状態を監視するための命令を含む。この制御サイクルから第2制御プログラム230-2の実行サイクルが開始しない場合ステップS104においてNOの場合には、ステップS106の処理はスキップされる。続いて、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140に対して送信実行を指示するステップS108。この送信実行の指示に応答して、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140は、送信バッファPLCシステムバス送信バッファ1043および/またはフィールドネットワーク送信バッファ1045に格納されている出力データを送信する。その後、マイクロプロセッサ100は、通信回路PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140からの受信完了通知を待つステップS110。通信回路からの受信完了通知を受けるとステップS110においてYES、マイクロプロセッサ100は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている、第1制御プログラム230-1によって使用される入力データを、第1制御プログラム230-1の作業領域制御プログラムの作業領域1042の一部へコピーするステップS112。続いて、マイクロプロセッサ100は、この制御サイクルから第2制御プログラム230-2の実行サイクルが開始するか否かを判断するステップS114。この制御サイクルから第2制御プログラム230-2の実行サイクルが開始する場合ステップS114においてYESの場合には、マイクロプロセッサ100は、受信バッファPLCシステムバス受信バッファ1044および/またはフィールドネットワーク受信バッファ1046に格納されている、第2制御プログラム230-2によって使用される入力データを、第2制御プログラム230-2の作業領域制御プログラムの作業領域1042の一部へコピーするステップS116。この制御サイクルから第2制御プログラム230-2の実行サイクルが開始しない場合ステップS114においてNOの場合には、ステップS116の処理はスキップされる。続いて、マイクロプロセッサ100は、第1制御プログラム230-1の実行を開始するステップS118。そして、マイクロプロセッサ100は、第1制御プログラム230-1の実行終了通知を待つステップS120。なお、ステップS118において、第1制御プログラム230-1の実行が開始されることで、マイクロプロセッサ100で実行される処理は、システムプログラム210による処理から第1制御プログラム230-1による処理に切り替わる。すなわち、第1制御プログラム230-1の実行開始から実行終了するまでの間は、マイクロプロセッサ100は、システムプログラム210を実行しない。第1制御プログラム230-1の実行終了通知を受けるとステップS120においてYES、マイクロプロセッサ100は、第2制御プログラム230-2の現在状態を判断するステップS122。第2制御プログラム230-2の現在状態が実行前である場合ステップS122において実行前には、マイクロプロセッサ100は、第2制御プログラム230-2の現在状態を実行中に設定するとともに、第2制御プログラム230-2の実行を開始するステップS124。そして、処理はステップS130へ進む。第2制御プログラム230-2の現在状態が実行中である場合ステップS122において実行中には、マイクロプロセッサ100は、第2制御プログラム230-2の未実行の部分の実行を開始するステップS126。そして、処理はステップS130へ進む。第2制御プログラム230-2の現在状態が実行終了である場合ステップS122において実行終了には、処理はステップS134へ進む。ステップS124またはS126において、第2制御プログラム230-2の実行を開始すると、マイクロプロセッサ100は、第2制御プログラム230-2の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つステップS130。なお、ステップS124またはS126において、第2制御プログラム230-2の実行が開始されることで、マイクロプロセッサ100で実行される処理は、システムプログラム210による処理から第2制御プログラム230-2による処理に切り替わる。すなわち、第2制御プログラム230-2の実行開始から実行終了するまでの間は、マイクロプロセッサ100は、システムプログラム210を実行しない。そして、第2制御プログラム230-2の実行が終了するまでに次の制御サイクル開始の割り込みがあれば、リアルタイムOS200が、マイクロプロセッサ100での第2制御プログラム230-2の実行を中断させ、システムプログラム210の実行を再開させる。あるいは、第2制御プログラム230-2の実行が終了した通知第2制御プログラム230-2の実行終了通知があれば、マイクロプロセッサ100における実行対象は、第2制御プログラム230-2からシステムプログラム210へ戻る。第2制御プログラム230-2の実行終了通知を受けるとステップS130において実行終了通知、マイクロプロセッサ100は、第2制御プログラム230-2の現在状態を実行終了に設定するステップS132。そして、処理はステップS134へ進む。ステップS134において、マイクロプロセッサ100は、次の制御サイクル開始の割り込み信号を待つステップS134。制御サイクル開始の割り込みを受けるとステップS134においてYES、ステップS102以下の処理が再度実行される。一方、第2制御プログラム230-2の実行終了通知までに制御サイクル開始の割り込みを受けるとステップS130において制御サイクル開始、マイクロプロセッサ100で実行中の第2制御プログラム230-2は中断され、マイクロプロセッサ100は、ステップS102以下の処理を再度実行する。図8に示す処理手順は、以下のようにまとめることができる。すなわち、本実施の形態に係る制御プログラム230は、第1制御プログラム230-1および第2制御プログラム230-1を含む図7参照。そして、第1制御プログラム230-1は、モータの運動を制御するための第1モーション指令値データ出力データを生成する第1モーション演算プログラム234-1を含む。また、第2制御プログラム230-2は、モータの運動を制御するための第2モーション指令値データ出力データを生成する第2モーション演算プログラム234-2を含む。さらに、第1制御プログラム230-1および第2制御プログラム230-2の少なくとも一方は、ユーザにおける制御目的に応じて作成され第1モーション演算プログラム234-1および第2モーション演算プログラム234-1に対してその実行に必要な指示を与える命令を含むユーザプログラム236図7cでは、236-1および236-2を含む。本実施の形態に係るシステムプログラム210は、マイクロプロセッサ100に、制御サイクルの周期と同じ周期の第1実行サイクルごとに第1制御プログラム230-1を実行開始させる第1実行制御命令図6参照と、制御サイクルの周期の2以上の整数倍の周期の第2実行サイクルごとに第2制御プログラム230-2を実行開始させる第2実行制御命令図6参照とを含む。第2実行制御命令は、マイクロプロセッサ100に、第2実行サイクルが開始する制御サイクルにおいて、第1制御プログラム230-1の実行終了後に第2制御プログラム230-2を実行開始させ、当該制御サイクルが終了するまでに第2制御プログラム230-2の実行が終了しなければ次の制御サイクルにおいて第1制御プログラム230-1の実行終了後に第2制御プログラム230-2の未実行の部分の実行を開始させる命令を含む図6参照。<I.サポート装置>次に、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどを行うためのPLCサポート装置8について説明する。図9は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のハードウェア構成を示す模式図である。図9を参照して、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。図9を参照して、PLCサポート装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROMReadOnlyMemory82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスクHDD84とを含む。PLCサポート装置8は、さらに、ユーザからの操作を受付けるキーボード85およびマウス86と、情報をユーザに提示するためのモニタ87とを含む。さらに、PLCサポート装置8は、PLC1CPUユニット13などと通信するための通信インターフェイスIF89を含む。後述するように、PLCサポート装置8で実行される各種プログラムは、CD-ROM9に格納されて流通する。このCD-ROM9に格納されたプログラムは、CD-ROMCompactDiskReadOnlyMemoryドライブ88によって読取られ、ハードディスクHDD84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。上述したように、PLCサポート装置8は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。図10は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のソフトウェア構成を示す模式図である。図10を参照して、PLCサポート装置8ではOS310が実行され、PLCサポートプログラム320に含まれる各種のプログラムを実行可能な環境が提供される。PLCサポートプログラム320は、エディタプログラム321と、コンパイラプログラム322と、デバッガプログラム323と、シミュレーション用シーケンス命令演算プログラム324と、シミュレーション用モーション演算プログラム325と、通信プログラム326とを含む。PLCサポートプログラム320に含まれるそれぞれのプログラムは、典型的には、CD-ROM9に格納された状態で流通して、PLCサポート装置8にインストールされる。エディタプログラム321は、ユーザプログラム236を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム321は、ユーザがキーボード85やマウス86を操作してユーザプログラム236のソースプログラム330を作成する機能に加えて、作成したソースプログラム330の保存機能および編集機能を提供する。また、エディタプログラム321は、外部からのソースプログラム330の入力を受付ける。コンパイラプログラム322は、ソースプログラム330をコンパイルして、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式のユーザプログラム236を生成する機能を提供する。また、コンパイラプログラム322は、ソースプログラム330をコンパイルして、PLCサポート装置8のCPU81で実行可能なオブジェクトプログラム形式のユーザプログラム340を生成する機能を提供する。このユーザプログラム340は、PLCサポート装置8によってPLC1の動作をシミュレート模擬するために使用される、シミュレーション用のオブジェクトプログラムである。デバッガプログラム323は、ユーザプログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。デバッガプログラム323は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム340を実行する機能を提供する。このシミュレーション時には、CPUユニット13のシステムプログラムに含まれるシーケンス命令演算プログラム232およびモーション演算プログラム234に代えて、PLCサポートプログラム320に含まれるシミュレーション用シーケンス命令演算プログラム324およびシミュレーション用モーション演算プログラム325が用いられる。通信プログラム326は、PLC1のCPUユニット13へユーザプログラム236を転送する機能を提供する。一般的には、PLC1に実装されるシステムプログラム210は、CPUユニット13の製造段階でCPUユニット13の不揮発性メモリ106へ格納される。但し、CD-ROM9にシステムプログラム210を格納しておけば、ユーザは、CD-ROM9のシステムプログラム210をPLCサポート装置8へコピーし、通信プログラム326が提供する機能を利用してコピーしたシステムプログラム210をCPUユニット13へ転送することもできる。さらに、CD-ROM9に、PLC1のCPUユニット13で実行されるリアルタイムOS200を格納しておけば、リアルタイムOS200についてもユーザ操作によってPLC1へ再インストールできる。<J.利点>本実施の形態に、モーション制御機能を有するPLCにおいて、高速処理を要する一部のモーション制御処理のために比較的短い周期の実行サイクルを確保しつつ、それ以外のモーション制御処理も一定周期で実行することができる。たとえば、対象物に対して切削加工を行う加工機を制御する場合に、刃物の運動制御にかかわるような高速かつ高精度な制御を要するモーション制御処理を短い周期で実行することができるとともに、加工機に対する対象物の搬入や搬出にかかわるようなさほど高速性を要しないモーション制御処理も一定周期で実行することができる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。