"モータの運動を制御するためのモーション制御機能を有するPLCのCPUユニットであって、マイクロプロセッサと、記憶手段と、通信回路とを備え、前記PLCのCPUユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第1のユーザプログラムを、前記モーション制御サイクルの周期の整数倍の周期の第1のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されており、前記記憶手段は、システムプログラムと、前記第1のユーザプログラムとの格納に用いられ、前記システムプログラムは、前記モーション演算プログラムと、前記第1のユーザプログラムおよび前記モーション演算プログラムの実行を制御するスケジューラプログラムとを含み、前記マイクロプロセッサは、前記記憶手段に格納された前記システムプログラムおよび前記第1のユーザプログラムを実行し、前記通信回路は、前記モーション制御サイクルごとに、前記出力処理の少なくとも一部として前記モーション指令値データの送信、および、前記入力処理の少なくとも一部として前記モーション制御用入力データの受信を行い、前記スケジューラプログラムは、前記マイクロプロセッサに、前記モーション制御サイクルごとに前記モーション演算プログラムの実行を開始させる命令と、前記マイクロプロセッサに、前記第1のユーザプログラム実行サイクルごとに前記第1のユーザプログラムの実行を開始させる命令と、前記出力処理および前記入力処理、前記第1のユーザプログラムの実行開始、前記第1のユーザプログラムの実行終了、ならびに、前記モーション演算プログラムの実行開始を、この順序で、前記第1のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含み、それにより、前記第1のユーザプログラムが、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含む場合に、前記入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映した前記モーション指令値データの出力処理の終了までに要する時間が、前記第1のユーザプログラム実行サイクルの周期に相当する時間となる、PLCのCPUユニット。前記第1のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期に等しい、請求項1に記載のPLCのCPUユニット。前記スケジューラプログラムは、前記モーション制御サイクル内において、前記出力処理および前記入力処理の後に、前記マイクロプロセッサに、前記第1のユーザプログラムおよび前記モーション演算プログラムをこの順に実行させるための命令を含む、請求項2に記載のPLCのCPUユニット。前記記憶手段は、さらに、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含まず、かつ前記モーション制御サイクルの周期の2以上の整数倍の周期の第2のユーザプログラム実行サイクルを有する第2のユーザプログラムの格納に用いられ、前記スケジューラプログラムは、前記記憶手段に前記第2のユーザプログラムが格納されている場合に、前記第2のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、最初の前記モーション演算プログラムの実行終了から前記モーション制御サイクル終了までの余剰時間に前記第2のユーザプログラムの実行を開始させるとともに、その後の前記モーション制御サイクルにおける前記モーション演算プログラムの実行終了後の余剰時間に、前記第2のユーザプログラムの未実行の部分があるときには、前記マイクロプロセッサに、その未実行の部分の実行を開始させる、請求項3に記載のPLCのCPUユニット。前記第1のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期の2以上の整数倍に等しい、請求項1に記載のPLCのCPUユニット。前記スケジューラプログラムは、前記第1のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、前記モーション演算プログラムの実行、前記出力処理および前記入力処理、前記第1のユーザプログラムの実行をこの順序に実行させるための命令を含む、請求項5に記載のPLCのCPUユニット。モータの運動を制御するためのモーション制御機能を有するPLCのCPUユニットで実行されるPLC用システムプログラムであって、前記PLCのCPUユニットは、第1のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含み、前記PLCのCPUユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第1のユーザプログラムを、前記モーション制御サイクルの周期の整数倍の周期の第1のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されており、前記PLC用システムプログラムは、前記モーション演算プログラムと、前記第1のユーザプログラムおよび前記モーション演算プログラムの実行を制御するスケジューラプログラムとを含み、前記通信回路は、前記モーション制御サイクルごとに、前記出力処理の少なくとも一部として前記モーション指令値データの送信、および、前記入力処理の少なくとも一部として前記モーション制御用入力データの受信を行い、前記スケジューラプログラムは、前記マイクロプロセッサに、前記モーション制御サイクルごとに前記モーション演算プログラムの実行を開始させる命令と、前記マイクロプロセッサに、前記第1のユーザプログラム実行サイクルごとに前記第1のユーザプログラムの実行を開始させる命令と、前記出力処理および前記入力処理、前記第1のユーザプログラムの実行開始、前記第1のユーザプログラムの実行終了、ならびに、前記モーション演算プログラムの実行開始を、この順序で、前記第1のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含み、それにより、前記第1のユーザプログラムが、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含む場合に、前記入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映した前記モーション指令値データの出力処理の終了までに要する時間が、前記第1のユーザプログラム実行サイクルの周期に相当する時間となる、PLC用システムプログラム。前記第1のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期に等しい、請求項7に記載のPLC用システムプログラム。前記スケジューラプログラムは、前記モーション制御サイクル内において、前記出力処理および前記入力処理の後に、前記マイクロプロセッサに、前記第1のユーザプログラムおよび前記モーション演算プログラムをこの順に実行させるための命令を含む、請求項8に記載のPLC用システムプログラム。前記スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含まず、かつ前記モーション制御サイクルの周期の2以上の整数倍の周期の第2のユーザプログラム実行サイクルを有する第2のユーザプログラムが前記記憶手段に格納されている場合に、前記第2のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、最初の前記モーション演算プログラムの実行終了から前記モーション制御サイクル終了までの余剰時間に前記第2のユーザプログラムの実行を開始させるとともに、その後の前記モーション制御サイクルにおける前記モーション演算プログラムの実行終了後の余剰時間に、前記第2のユーザプログラムの未実行の部分があるときには、前記マイクロプロセッサに、その未実行の部分の実行を開始させる、請求項9に記載のPLC用システムプログラム。前記第1のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期の2以上の整数倍に等しい、請求項7に記載のPLC用システムプログラム。前記スケジューラプログラムは、前記第1のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、前記モーション演算プログラムの実行、前記出力処理および前記入力処理、前記第1のユーザプログラムの実行をこの順序に実行させるための命令を含む、請求項11に記載のPLC用システムプログラム。モータの運動を制御するためのモーション制御機能を有するPLCのCPUユニットで実行されるPLC用システムプログラムを格納した記録媒体であって、前記PLCのCPUユニットは、第1のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含み、前記PLCのCPUユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第1のユーザプログラムを、前記モーション制御サイクルの周期の整数倍の周期の第1のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されており、前記PLC用システムプログラムは、前記モーション演算プログラムと、前記第1のユーザプログラムおよび前記モーション演算プログラムの実行を制御するスケジューラプログラムとを含み、前記通信回路は、前記モーション制御サイクルごとに、前記出力処理の少なくとも一部として前記モーション指令値データの送信、および、前記入力処理の少なくとも一部として前記モーション制御用入力データの受信を行い、前記スケジューラプログラムは、前記マイクロプロセッサに、前記モーション制御サイクルごとに前記モーション演算プログラムの実行を開始させる命令と、前記マイクロプロセッサに、前記第1のユーザプログラム実行サイクルごとに前記第1のユーザプログラムの実行を開始させる命令と、前記出力処理および前記入力処理、前記第1のユーザプログラムの実行開始、前記第1のユーザプログラムの実行終了、ならびに、前記モーション演算プログラムの実行開始を、この順序で、前記第1のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含み、それにより、前記第1のユーザプログラムが、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含む場合に、前記入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映した前記モーション指令値データの出力処理の終了までに要する時間が、前記第1のユーザプログラム実行サイクルの周期に相当する時間となる、PLC用システムプログラムを格納した記録媒体。前記第1のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期に等しい、請求項13に記載のPLC用システムプログラムを格納した記録媒体。前記スケジューラプログラムは、前記モーション制御サイクル内において、前記出力処理および前記入力処理の後に、前記マイクロプロセッサに、前記第1のユーザプログラムおよび前記モーション演算プログラムをこの順に実行させるための命令を含む、請求項14に記載のPLC用システムプログラムを格納した記録媒体。前記スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含まず、かつ前記モーション制御サイクルの周期の2以上の整数倍の周期の第2のユーザプログラム実行サイクルを有する第2のユーザプログラムが前記記憶手段に格納されている場合に、前記第2のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、最初の前記モーション演算プログラムの実行終了から前記モーション制御サイクル終了までの余剰時間に前記第2のユーザプログラムの実行を開始させるとともに、その後の前記モーション制御サイクルにおける前記モーション演算プログラムの実行終了後の余剰時間に、前記第2のユーザプログラムの未実行の部分があるときには、前記マイクロプロセッサに、その未実行の部分の実行を開始させる、請求項15に記載のPLC用システムプログラムを格納した記録媒体。前記第1のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期の2以上の整数倍に等しい、請求項13に記載のPLC用システムプログラムを格納した記録媒体。前記スケジューラプログラムは、前記第1のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、前記モーション演算プログラムの実行、前記出力処理および前記入力処理、前記第1のユーザプログラムの実行をこの順序に実行させるための命令を含む、請求項17に記載のPLC用システムプログラムを格納した記録媒体。モーション演算プログラムを実行する機能をPLCのマイクロプロセッサに統合するにあたり、従来のモーションコントローラと同様に、一定の短い周期の実行サイクル内でモータドライバに対する指令値の算出およびその算出結果の出力を行い、各実行サイクルの残りの時間でユーザプログラムの実行およびその他のPLC動作を行うように構成しようと考えることは自然である。しかしながら、各実行サイクルにおける残り時間の長さは限られているため、各実行サイクル内でPLCとして動作するために必要なすべての処理を行うことはできない。このような場合に、どの実行サイクルにおける残り時間でどのような処理を行うのがよいのかについては明らかではない。さらに、ユーザプログラムの実行には、入力処理および出力処理が必要であり、モーション演算実行にも少なくとも出力処理場合によっては、入力処理についてもが必要であるが、これらの処理をどのタイミングで行うべきであるかについても明らかではない。上述の特許文献1においては、定周期モーション制御処理および各軸処理、高速シーケンス処理、低速シーケンス処理、および、非定周期モーション制御処理の各処理について、具体的にどのような処理内容が想定されているのかについては説明されていない。特に、具体的な処理内容からみた場合に高速シーケンス処理と低速シーケンス処理とがどのように区別されるのか、および、非定周期モーション制御処理とはどのような処理内容を想定した処理であるのか、といった事項については不明である。さらに、各処理に関する入力と出力とがいつどのように行われるのかも不明である。従来、PLCとは別にモーションコントローラを設けていた場合には、PLCとモーションコントローラとは互いに非同期の、一般にはPLCの方が長い周期の実行サイクルで動作していた。このような場合、ユーザプログラムを実行するPLCの、モーション制御に対する役割は、ユーザプログラムの中のモーション命令を実行する際に、モーション命令の種類およびパラメータに従ってモーションコントローラに対して1つの動作の起動指示を与えることであった。たとえば、PLCは、座標Aから座標Bまで指定の速度変化に従い移動せよといったモーション命令に基づく指示をモーションコントローラへ与える。モーションコントローラは、その指示に応じて、命令内容の運動を実現するために自らの実行サイクルごとにサーボモータドライバに対する位置指令値命令内容によっては、速度指令値、トルク指令値などである場合もあるを算出し出力する。モーションコントローラは、いったん起動指示が与えられると、そのモーション命令の実行を完了するまで、自らの実行サイクルで指令値の算出および出力を繰り返す。一方、モーション制御機能を有するPLCにおいて、モーション演算プログラムの実行サイクルをPLCの動作全体の共通サイクルとした場合には、各実行サイクルにおいて比較的短いユーザプログラムを実行しうることは特許文献1からも知られているが、本願発明者らは、このことを利用してより高度なモーション制御を行える可能性が存在することを見出した。すなわち、一般に、モーション命令の仕様として、入力パラメータの与え方および入力パラメータを用いた演算内容が決められている。モーション演算プログラムは、そのようなモーション命令の内容を実際に演算するのである。モーション演算プログラム自体は、多くの場合PLCのメーカーから提供されるのであって、ユーザ自身がモーション演算プログラムを開発することは容易ではない。一方、ユーザプログラムは、ユーザ自身で自由にプログラミングできる。そこで、各実行サイクルにおけるモーション指令値の算出にかかわる演算内容の一部をユーザプログラムにおいて定義し、モーション演算プログラムとユーザプログラムとを同期して実行すれば、モーション制御の自由度を高めることができる。これによって、個別のユーザが必要とする制御内容により適合したモーション制御を実現できる可能性が存在するのである。さらに、本願発明者らは、ユーザプログラムがモーション指令値の算出にかかわる場合には、ユーザプログラムとモーション演算との実行が単に同期していればよいというわけではなく、入力処理および出力処理をも含めて、各処理を適切な順序で実行しなければ制御を遅らせる無駄な時間が発生してしまうことを見出した。本発明は、PLCのCPUユニットにおいて、モーション演算プログラムと同期して実行されるユーザプログラムが、モーション制御用入力データを用いて、モーション指令値の算出にかかわる演算を行う場合に、入力処理および出力処理をも含めた各処理の実行順序の適正化により、CPUユニットがモーション制御用入力データを入力してからその入力データを反映したモーション指令値データを出力するまでに要する時間を短くすることを目的とする。本発明のある局面によれば、モータの運動を制御するためのモーション制御機能を有するPLCのCPUユニットを提供する。PLCのCPUユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。PLCのCPUユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第1のユーザプログラムを、モーション制御サイクルの周期の整数倍の周期の第1のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。記憶手段は、システムプログラムと、第1のユーザプログラムとの格納に用いられる。システムプログラムは、モーション演算プログラムと、第1のユーザプログラムおよびモーション演算プログラムの実行を制御するスケジューラプログラムとを含む。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび第1のユーザプログラムを実行し、通信回路は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。スケジューラプログラムは、マイクロプロセッサに、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第1のユーザプログラム実行サイクルごとに第1のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第1のユーザプログラムの実行開始、第1のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第1のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。それにより、第1のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理の終了までに要する時間を、第1のユーザプログラム実行サイクルの周期に相当する時間にできる。好ましくは、第1のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。このように第1のユーザプログラム実行サイクルの周期を設定することで、モーション演算プログラムの実行ごとに、更新されたユーザプログラム出力データを使用してモーション指令値データを算出することができる。すなわち、毎回の出力処理ごとにそのように更新されたモーション指令値データを出力することができる。さらに好ましくは、スケジューラプログラムは、モーション制御サイクル内において、出力処理および入力処理の後に、マイクロプロセッサに、第1のユーザプログラムおよびモーション演算プログラムをこの順に実行させるための命令を含む。この命令によって、モーション制御サイクル内において、第1のユーザプログラムおよびモーション演算プログラムの実行に先行してモーション制御に関する出力処理および入力処理を行うことができ、これによって、これらの入出力のための通信周期のばらつきを少なくできる。よって、モータの運動をより高精度に制御することができる。さらに好ましくは、記憶手段は、さらに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含まず、かつモーション制御サイクルの周期の2以上の整数倍の周期の第2のユーザプログラム実行サイクルを有する第2のユーザプログラムの格納に用いられる。スケジューラプログラムは、記憶手段に第2のユーザプログラムが格納されている場合に、第2のユーザプログラム実行サイクル内において、マイクロプロセッサに、最初のモーション演算プログラムの実行終了からモーション制御サイクル終了までの余剰時間に第2のユーザプログラムの実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラムの実行終了後の余剰時間に、第2のユーザプログラムの未実行の部分があるときには、マイクロプロセッサに、その未実行の部分の実行を開始させる。本局面に係るPLCのCPUユニットによれば、以下のようにユーザプログラムを作成することで、処理の高速化を実現できる。すなわち、第1のユーザプログラムには、モーション演算プログラムでの演算に使用されるユーザプログラム出力データを、モーション制御用入力データを使用して算出する命令を含ませる。一方、第2のユーザプログラムには、第1のユーザプログラムに含まれる以外の処理の全部または一部を実現するための命令を含ませる。そうすると、第1のユーザプログラムにすべての処理を実現させるための命令を含ませる場合にくらべて第1のユーザプログラムに割り当てられる処理量が少なくなるため、第1のユーザプログラムの実行時間を短くすることができる。そのため、モーション制御サイクルの周期をより短縮できる可能性が生じる。好ましくは、第1のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期の2以上の整数倍に等しい。このように第1のユーザプログラム実行サイクルの周期を設定することで、ユーザプログラム実行周期よりも短い制御周期で、更新後のモーション指令値データを出力することができる。さらに好ましくは、スケジューラプログラムは、第1のユーザプログラム実行サイクル内において、マイクロプロセッサに、モーション演算プログラムの実行、出力処理および入力処理、第1のユーザプログラムの実行をこの順序に実行させるための命令を含む。その結果、各モーション制御サイクル内においても、モーション演算プログラムの実行、出力処理および入力処理、第1のユーザプログラムの実行がこの順序に実行されることになる。各モーション制御サイクルにおいて、出力処理および入力処理の実行後、モーション制御サイクルが終了するまでの時間はモーション制御サイクルごとに変動しうるが、この命令によって、当該時間を第1のユーザプログラムの実行に無駄なく使うことができる。その結果、マイクロプロセッサの待機時間が生じ難くなるので、ユーザプログラム実行サイクルをより短縮できる可能性が生じる。本発明の別の局面によれば、モータの運動を制御するためのモーション制御機能を有するPLCのCPUユニットで実行されるPLC用システムプログラムを提供する。PLCのCPUユニットは、第1のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含む。PLCのCPUユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第1のユーザプログラムを、モーション制御サイクルの周期の整数倍の周期の第1のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。PLC用システムプログラムは、モーション演算プログラムと、第1のユーザプログラムおよびモーション演算プログラムの実行を制御するスケジューラプログラムとを含む。通信回路は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。スケジューラプログラムは、マイクロプロセッサに、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第1のユーザプログラム実行サイクルごとに第1のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第1のユーザプログラムの実行開始、第1のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第1のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。それにより、第1のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理の終了までに要する時間を、第1のユーザプログラム実行サイクルの周期に相当する時間にできる。好ましくは、第1のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。さらに好ましくは、スケジューラプログラムは、モーション制御サイクル内において、出力処理および入力処理の後に、マイクロプロセッサに、第1のユーザプログラムおよびモーション演算プログラムをこの順に実行させるための命令を含む。さらに好ましくは、スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含まず、かつモーション制御サイクルの周期の2以上の整数倍の周期の第2のユーザプログラム実行サイクルを有する第2のユーザプログラムが記憶手段に格納されている場合に、第2のユーザプログラム実行サイクル内において、マイクロプロセッサに、最初のモーション演算プログラムの実行終了からモーション制御サイクル終了までの余剰時間に第2のユーザプログラムの実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラムの実行終了後の余剰時間に、第2のユーザプログラムの未実行の部分があるときには、マイクロプロセッサに、その未実行の部分の実行を開始させる。好ましくは、第1のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期の2以上の整数倍に等しい。さらに好ましくは、スケジューラプログラムは、第1のユーザプログラム実行サイクル内において、マイクロプロセッサに、モーション演算プログラムの実行、出力処理および入力処理、第1のユーザプログラムの実行をこの順序に実行させるための命令を含む。この発明のさらに別の局面によれば、モータの運動を制御するためのモーション制御機能を有するPLCのCPUユニットで実行されるPLC用システムプログラムを格納した記録媒体を提供する。PLCのCPUユニットは、第1のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含む。PLCのCPUユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第1のユーザプログラムを、モーション制御サイクルの周期の整数倍の周期の第1のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。PLC用システムプログラムは、モーション演算プログラムと、第1のユーザプログラムおよびモーション演算プログラムの実行を制御するスケジューラプログラムとを含む。通信回路は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。スケジューラプログラムは、マイクロプロセッサに、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第1のユーザプログラム実行サイクルごとに第1のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第1のユーザプログラムの実行開始、第1のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第1のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。それにより、第1のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理の終了までに要する時間を、第1のユーザプログラム実行サイクルの周期に相当する時間にできる。好ましくは、第1のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。さらに好ましくは、スケジューラプログラムは、モーション制御サイクル内において、出力処理および入力処理の後に、マイクロプロセッサに、第1のユーザプログラムおよびモーション演算プログラムをこの順に実行させるための命令を含む。さらに好ましくは、スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含まず、かつモーション制御サイクルの周期の2以上の整数倍の周期の第2のユーザプログラム実行サイクルを有する第2のユーザプログラムが記憶手段に格納されている場合に、第2のユーザプログラム実行サイクル内において、マイクロプロセッサに、最初のモーション演算プログラムの実行終了からモーション制御サイクル終了までの余剰時間に第2のユーザプログラムの実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラムの実行終了後の余剰時間に、第2のユーザプログラムの未実行の部分があるときには、マイクロプロセッサに、その未実行の部分の実行を開始させる。好ましくは、第1のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期の2以上の整数倍に等しい。さらに好ましくは、スケジューラプログラムは、第1のユーザプログラム実行サイクル内において、マイクロプロセッサに、モーション演算プログラムの実行、出力処理および入力処理、第1のユーザプログラムの実行をこの順序に実行させるための命令を含む。なお、本明細書における日本語の命令は、ある機能を実現するための、プログラムのソースリストに表れる個々の命令に限らず、それら個々の命令や関数等の集合をも意味しており、たとえば英語ではinstructionsのように複数形で表記されるべきものである。本発明によれば、PLCのCPUユニットにおいて、第1のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理から、そこで入力されたモーション制御用入力データを反映したモーション指令値データの出力処理までに要する時間を、ユーザプログラム実行サイクルの周期に相当する短い時間とすることができる。本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。<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を参照して後述する。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と総称する場合もある。このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210およびユーザプログラム236を実行する。以下、各プログラムについてより詳細に説明する。上述ユーザプログラム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は、モーション制御サイクルの周期を設定するプログラム222を含む。モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがPLCサポート装置8へ入力する。すると、その入力された情報は、PLCサポート装置8からCPUユニット13へ転送される。モーション制御サイクルの周期を設定するプログラム222は、PLCサポート装置8からの情報を不揮発性メモリ106に格納させるとともに、システムタイマ108から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ108を設定する。CPUユニット13への電源投入時に、モーション制御サイクルの周期を設定するプログラム222が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ106から読み出され、読み出された情報に従ってシステムタイマ108が設定される。モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから1つを特定する情報番号または文字などを採用することができる。本実施の形態に係るCPUユニット13において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるPLCサポート装置8との通信手段、モーション制御サイクルの周期を設定するプログラム222、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ108の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係るPLC1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力送信するためのイベント割り込みとして、出力準備割り込みPおよびフィールドネットワーク送信割り込みXが初期設定される。リアルタイムOS200は、出力準備割り込みPまたはフィールドネットワーク送信割り込みXが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り替える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13とPLCサポート装置8との間の接続ケーブル10USBなどを介した通信処理に関するものが含まれる。<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以下の処理が繰り返される。以下、ユーザが特別なモーション制御内容を必要とする例をいくつか挙げる。[e1:アプリケーション例1]図6は、本発明の実施の形態に係るCPUユニット13のアプリケーション例1を示す模式図である。図6を参照して、アプリケーション例1として、長尺のシート材502をローラ520に巻き取るような巻き取り装置500を想定する。この巻き取り装置500では、シート材502に与えられる一定の張力を保ちつつローラ520に巻き取る。より具体的には、シート材502の送り出し側に配置されたテンションローラ514を用いて、シート材502に対して比較的小さい制動摩擦力を与えるとともに、ローラ520の駆動トルクτまたは回転速度ωを調整することによって、シート材502の張力が目的の値となるように制御される。巻き取り装置500では、シート材502を巻き取るにつれてローラ520の巻き径rがしだいに大きくなる。一方で、ローラ520は、その回転軸と機械的に接続されたモータ504によって回転駆動される。本来的に制御すべき対象は、ローラ520の最外周面巻き径rの位置における張力Tであるが、制御可能な物理量としては、モータ504のトルクτまたは回転速度ωである。そして、このトルクτまたは回転速度ωと張力Tとの間の関係は、ローラ520の巻き径rに依存して変化する。より具体的には、ローラ520の巻き径rが大きくなるにつれて、トルク指令値を大きく変化させても張力Tが少ししか変化しないようになり、また、回転速度指令値を少し変化させるだけでも張力Tが大きく変化するようになる。そのため、モータ504のトルクまたは回転速度すなわち、モータ504を駆動するためのドライバ506に与えるトルク指令値または回転速度指令値は、ローラ520の巻き径に応じて変化させる必要がある。巻き取り装置500においては、シート材502に生じている張力Tを検出し、この張力Tの検出値が目標値と一致するように、トルク指令値または速度指令値を算出する。この張力Tを検出する機構の一例として、ばねにより付勢された張力検出用ローラ512を設けて、空中を移動するシート材502に張力検出用ローラ512を押し当てる。するとシート材502が少したわんで、張力検出用ローラ512の押圧力ばねが張力検出用ローラ512を下方に引っ張る力とシート材502の張力による反発力張力検出用ローラ512を上方に押し上げる力とがつりあうところで張力検出用ローラ512が静止する。張力検出用ローラ512の位置は、シート材502の張力に応じて変化するので、この位置を位置センサロータリーエンコーダ510で検出する。検出された張力検出用ローラ512の位置は、PLC1へ入力される。この張力検出用ローラ512の位置は、シート材502の張力Tの大きさに応じた値となる。PLCのCPUユニット13のマイクロプロセッサ100は、ユーザプログラム236を実行することで、検出された張力検出用ローラ512の位置とローラ520を駆動するモータ504の現在のトルク値および速度値とを入力として、張力検出用ローラ512の位置に基づいてシート材502の張力Tを算出し、さらに、巻き取り装置500の機械系に応じた演算を行うことで、算出した張力Tを目標値に近づけるために必要なトルク指令値または速度指令値を算出する。算出されたトルク指令値または速度指令値は、マイクロプロセッサ100で実行されるモーション演算プログラム234へ送られる。なお、トルク指令値または速度指令値を算出する演算処理としては、近い過去において指令値トルク指令値または速度指令値をどれだけ変化させればどれだけの張力が変化したかという実績データを利用して、指令値と張力との関係を推定し、この推定した関係に基づいて、今回のサイクルにおける指令値トルク指令値または速度指令値を算出するというロジックを採用できる。あるいは、各サイクルにおけるローラ520の巻き径rを検出し、その検出結果に基づいて、指令値トルク指令値または速度指令値を算出してもよい。この巻き径rを検出する機構の一例として、ばねにより付勢された巻き径検出用ローラ516を設けて、ローラ520の中心側に巻き径検出用ローラ516を押し当てる。巻き径検出用ローラ516の位置は、ローラ520の巻き径に応じて変化するので、この位置を位置センサ518で検出する。マイクロプロセッサ100は、モーション演算プログラム234およびそれに関連付けられている出力処理プログラム214を実行することにより、ユーザプログラム236から与えられた指令値トルク指令値または速度指令値を、フィールドネットワーク2を介して、モータ504を駆動するドライバ506へ出力する。図6に示すアプリケーションにおいては、モーション演算の実質的にすべての部分をユーザプログラム236が担当しており、モーション演算プログラム234は、ドライバ506に対する指令値の出力管理を担当している。[e2:アプリケーション例2]図7は、本発明の実施の形態に係るCPUユニット13のアプリケーション例2を示す模式図である。図7を参照して、アプリケーション例2として、一定の絵柄が繰り返し印刷されたシート材602を送りながら、絵柄の切れ目の位置でシート材602を切断する切断装置600を想定する。この切断装置600では、シート材602の切断に用いるカッター604を動かすモータ606の動作が制御される。より具体的には、PLC1は、シート材602を送るローラ612,614が所定の角度分だけ回転するのに合わせてカッター604を上下させる電子カム動作を制御する。この電子カム動作を実行するにあたって、シート材602の絵柄に合わせて切断を開始するための初期位相を決定する必要がある。また、シート材602は張力や温度の変化によって伸縮するので、シート材602の伸縮があっても絵柄の切れ目で正しく切断できるように切断動作の位相と周期を調整しなければならない。図7に示すアプリケーション例2においては、シート材602に絵柄の印刷位置に関連付けてマーク630が印刷されている。シート材602の搬送経路上には、検出用のセンサ610典型的には、光学センサが設けられており、このセンサ610を用いてこれらのマーク630の通過を検出する。また、シート材602を送るローラ614は、機械的に接続されたモータ618によって回転駆動される。モータ618は、モータドライバ622によって駆動される。また、ローラ614と機械的に接続されたモータ618には、その回転角度回転位置を検出するためのロータリーエンコーダ624が設けられている。ロータリーエンコーダ624で検出された回転角度回転位置は、PLC1へ入力される。センサ610がマーク630の通過を検出したタイミングにおけるロータリーエンコーダ624での回転角度回転位置のそれぞれの検出値を保持しておき、前回保持された検出値と今回保持された検出値との差を算出することで、シート材602の伸縮も反映した各シート材602を切断すべき間隔を決定できる。PLCのCPUユニット13のマイクロプロセッサ100は、ユーザプログラム236を実行することで、入力されるロータリーエンコーダ624での検出値およびセンサ610によるマーク630の検出値に基づいて、ローラ614の回転角度回転位置として示される切断タイミングの初期位相を算出するとともに、その後の各サイクルにおける位相および周期の補正値を周期的に算出する。算出された位相および周期の補正値は、マイクロプロセッサ100で実行されるモーション演算プログラム234へ送られる。マイクロプロセッサ100は、モーション演算プログラム234を実行することで、与えられた切断タイミングの初期位相、ならびに、位相および周期の補正値を反映してモータ618の動作を制御する。すなわち、モーション演算プログラム234の実行によって、モータドライバ622に対して、切断タイミングの初期位相、ならびに、位相および周期の補正値を反映したそれぞれの指令値が出力される。なお、シート材602の絵柄の位置を特定するために、カメラを有する視覚センサを用いてもよい。この場合には、その視野範囲がシート材602の絵柄を含むようにカメラを配置する。視覚センサでは、カメラによって撮像された画像と予め登録された絵柄を示すモデル画像との間でマッチング処理を行うことで、シート材602における絵柄の位置を特定する。そして、この特定された絵柄の位置に応じて、対応するロータリーエンコーダ624での検出値が取得される。[e3:アプリケーション例3]図8は、本発明の実施の形態に係るCPUユニット13のアプリケーション例3を示す模式図である。図8を参照して、アプリケーション例3として、搬送車710が直線状のレール702上を移動する搬送システム700を想定する。搬送車710では、左右の駆動輪712,722がそれぞれ独立のモータ714,724で駆動される。直線状のレール702上を走行する以上、理想的には、左右の駆動輪712,722の回転量は互いに同じであるため、PLC1からドライバ718,728に対して、モーション制御サイクルごとに左右同一の回転位置の指令値をそれぞれ与えればよい。しかしながら、搬送車710に搭載されている荷物の偏りやレール702の状態などによっては、片方の駆動輪のみが空転するような事態も生じ得る。たとえば、右側の駆動輪722だけが一時的にスリップして空回りしたとすると、それ以降、右側の駆動輪722に対する回転位置の指令値としては、空回りした回転量で補正した空回り分を加算した指令値を与える必要がある。このようなアプリケーションに対応するため、多軸合成位置決めと称されるモーション命令が用意される、このモーション命令は、主軸たとえば、左側の駆動輪712についての本来的な回転位置の指令値に対して、補助軸の値を加算して算出した位置を従軸たとえば、右側の駆動輪722の回転位置の指令値とする。マイクロプロセッサ100は、ユーザプログラム236を実行することで、左右の駆動輪712,722の回転位置左右の駆動輪712,722にそれぞれ設けられたロータリーエンコーダ716,726の出力を一定周期で取得し、左右の駆動輪712,722の間における回転位置の差が予め設定されている許容範囲を超えているか否かを判断する。そして、マイクロプロセッサ100は、回転位置の差が予め設定されている許容範囲を超えていれば、その許容範囲におさまるように補助軸の値位置を更新する。さらに、更新された補助軸の値位置は、マイクロプロセッサ100で実行されるモーション演算プログラム234へ送られる。マイクロプロセッサ100は、モーション演算プログラム234を実行することで、別途指定されたモーション命令に従って主軸の指令値をユーザプログラム実行サイクルごとに算出するとともに、与えられた最新の補助軸の値位置を用いて、主軸の指令値を補正することで従軸の指令値を算出する。それぞれの算出された指令値が対応するドライバ718および728へ出力される。<F.全体処理動作実施の形態1>次に、本実施の形態に係る各プログラムの実行順序などについて、以下説明する。なお、本明細書においては、本発明に係る技術思想の具現化例として、実施の形態1~4を例示する。[f1:本実施の形態]図9は、本発明の実施の形態1に係る全体処理動作を示すシーケンス図である。図9を参照して、本実施の形態に係るPLC1の実行中においては、マイクロプロセッサ100が、少なくとも、IO処理プログラム218出力処理プログラム214および入力処理プログラム216と、ユーザプログラム236第1のユーザプログラムと、モーション演算プログラム234とが実行可能な状態になっている。厳密に言えば、リアルタイムOS200がそれぞれのプログラムに係るプロセスまたは、スレッドを実行可能な状態に保持しており、スケジューラプログラム212がリアルタイムOS200およびハードウェアリソースシステムタイマ108などを利用することで、各プログラムが適切なタイミングかつ適切な順序で実行される。このように、それぞれのプログラムに係る実行の開始/中断/終了などは、スケジューラプログラム212によって制御されるが、図9においては、スケジューラプログラム212に係る処理については図示していない。図9に示すように、PLC1の実行中においては、以下のようにシーケンスが進行する。1フィールドネットワークコントローラ140がモーション制御用入力データを受信してフィールドネットワーク受信バッファ1046図4に当該入力データを格納、および/または、PLCシステムバスコントローラ120が、モーション制御用入力データを受信してPLCシステムバス受信バッファ1044図4に当該入力データを格納する。2IO処理プログラム218の命令に従って、フィールドネットワーク受信バッファ1046および/またはPLCシステムバス受信バッファ1044に格納されているモーション制御用入力データがユーザプログラム236に係る作業領域典型的には、制御プログラムの作業領域1042図4の一部へ転送される。これにより、ユーザプログラム236がマイクロプロセッサ100によって実行された際に、モーション制御用入力データへアクセスすることができる。3IO処理プログラム218の命令に従って、フィールドネットワーク受信バッファ1046および/またはPLCシステムバス受信バッファ1044に格納されているモーション制御用入力データがモーション演算プログラム234に係る作業領域典型的には、制御プログラムの作業領域1042図4の一部へ転送される。これにより、モーション演算プログラム234がマイクロプロセッサ100によって実行された際に、モーション制御用入力データへアクセスすることができる。4ユーザプログラム236の命令に従って、モーション制御用入力データを使用してユーザプログラム236の出力データが算出され、算出された出力データがモーション演算プログラム234に係る作業領域典型的には、制御プログラムの作業領域1042図4の一部へ転送される。これにより、モーション演算プログラム234がマイクロプロセッサ100によって実行された際に、ユーザプログラム236の出力データへアクセスすることができる。5モーション演算プログラム234の命令に従って、モーション制御用入力データおよびユーザプログラム出力データのうち、必要なデータを使用してモーション指令値が算出され、算出されたモーション指令値データがIO処理プログラム218に係る作業領域典型的には、制御プログラムの作業領域1042図4の一部へ転送される。これにより、IO処理プログラム218がマイクロプロセッサ100によって実行された際に、モーション演算プログラム234によって算出されたモーション指令値データへアクセスすることができる。6IO処理プログラム218の命令に従って、モーション指令値データが出力される。より具体的には、制御プログラムの作業領域1042図4に格納されているモーション指令値データがフィールドネットワーク送信バッファ1045図4へ転送される。さらに、フィールドネットワーク送信バッファ1045へのデータ転送に続いて、フィールドネットワークコントローラ140がモーション指令値データをサーボモータドライバ3へ送信する。なお、上記の1の処理においては、ユーザプログラム236での演算には使用されるが、モーション演算プログラム234での演算には使用されない入力データについても入力され得る。また、ユーザプログラム236の実行により生成されるユーザプログラム出力データは、モーション演算プログラム234での演算には使用されない出力データであっても、IO処理プログラム218へ送られて、6の処理において出力される。本実施の形態に係るモーション制御サイクルは、モーション演算プログラム234の実行および通信の周期、すなわち、サーボモータドライバ3へモーション指令値データを与える周期で実行される一連の処理のサイクルである。このとき、図9に示すように、1つのモーション制御サイクルの範囲開始から終了までは、図9の右側に示したA,B,Cのいずれによって把握してもよい。すなわち、モーション制御サイクルとは、特定のプログラムの開始タイミングおよび/または終了タイミングによって定義されるものではなく、単に、モーション演算プログラム234の1回の実行を含む処理のサイクルである。一例として、図9の左側には、図9の右側に示したAの区切り方で見た場合の、モーション制御サイクル1~33サイクル分を示す。図9に示すように、モーション制御サイクルの区切り方がA,B,Cのいずれであるかにかかわらず、スケジューラプログラム212は、マイクロプロセッサ100に、モーション制御サイクルごとにモーション演算プログラム234の実行を開始させる命令と、マイクロプロセッサ100に、ユーザプログラム実行サイクルこの例では、モーション制御サイクルに一致しているごとにユーザプログラム236第1のユーザプログラムの実行を開始させる命令とを含む。さらに、スケジューラプログラム212は、IO処理出力処理および入力処理、ユーザプログラム236の実行開始、ユーザプログラム236の実行終了、ならびに、モーション演算プログラム234の実行開始を、この順序で、ユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令を含む。ただし、その命令による一連の処理のサイクルとユーザプログラム実行サイクルとの間で、サイクルの位相サイクルの開始タイミングが一致するとは限らない。図9に示すIO処理においては、出力処理プログラム214の命令に従って出力処理が先に実行され、続いて、入力処理プログラム216の命令に従って入力処理が実行されるようになっているが、この出力処理と入力処理との実行順序は、逆であってもよいし、可能であれば、並列的に行われてもよい。図9に示すように、PLC1のCPUユニット13は、モーション指令値データの出力処理およびモーション制御用入力データの入力処理IO処理と、モーション演算プログラム234の実行とを一定周期のモーション制御サイクルごとに繰り返し可能に構成されている。さらに、PLC1のCPUユニット13は、ユーザにおける制御目的に応じて作成され、モーション演算プログラム234に対してその実行に必要な指示を与える処理を含むユーザプログラム236を、モーション制御サイクルの周期の整数倍の周期のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。また、CPUユニット13に含まれる通信回路PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。本実施の形態によれば、入力処理の開始図9に示す1の処理から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理図9に示す6の処理までに要する時間を、ユーザプログラム実行サイクルの周期に相当する、より短い時間とすることができる。図9に示す例では、ユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。このようにそれぞれの周期を設定することで、モーション演算プログラム234の実行ごとに、更新されたユーザプログラム出力データを使用してモーション指令値データを算出することができる。すなわち、毎回の出力処理ごとにそのように更新されたモーション指令値データを出力することができる。図9に示す例において、モーション制御サイクルの区切り方をAとした場合については、スケジューラプログラム212は、モーション制御サイクル内において、出力処理および入力処理IO処理の後に、マイクロプロセッサ100に、ユーザプログラム236およびモーション演算プログラム234をこの順に実行させるための命令を含むことになる。この場合には、モーション制御サイクル内において、ユーザプログラム236およびモーション演算プログラム234の実行に先行してモーション制御に関する出力処理および入力処理IO処理を行うことができ、これによって、これらの入出力のための通信周期のばらつきを少なくできる。よって、モータの運動をより高精度に制御することができる。[f2:比較例]次に、本実施の形態に係るスケジューラプログラム212による効果を説明するために、図9に示すシーケンスとはプログラムの実行順序を異ならせた場合のシーケンスについて比較例として説明する。図10は、図9に示す全体処理動作に関する比較例における全体処理動作を示すシーケンス図である。上述の図9においては、IO処理プログラム218、ユーザプログラム236、モーション演算プログラム234の順序でそれぞれのプログラムが実行される例を示したが、図10には、比較例として、IO処理プログラム218、モーション演算プログラム234、ユーザプログラム236の順序でそれぞれのプログラムが実行される例を示す。図10に示すような比較例に係るプログラムの実行順序を採用した場合には、入力処理の開始図10に示す1の処理から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理図10に示す6’の処理までには、ユーザプログラム236の実行サイクルの2周期分に相当する時間を要する。その結果、図9に示すプログラムの実行順序に比較して、ユーザプログラム実行サイクルの1周期分の時間だけ制御が遅れることになる。より具体的には、図10に示す比較例における1~6の処理の説明は、図9の1~6の処理の説明と同じである。図10における1’~6’の処理の説明も、図9の1~6の処理の説明と同じである。図10に示すシーケンスでは、1~6の処理にユーザプログラム実行サイクルの周期よりもモーション制御サイクル1周期分だけ長い時間がかかる。そして、1~6の処理の途中で1’~6’の処理が始まる。このように、1~6の処理および1’~6’の処理が並行して進められることから、図10に示すシーケンスにおいては、モーション制御サイクル2におけるモーション演算プログラム234の実行時M2に、モーション制御用入力データの取扱いが複雑化するという問題も生じる。たとえば、モーション制御サイクル2におけるモーション演算プログラム234の実行時M2においては、モーション制御用の新たな入力データの入力処理図10に示す1’の処理は、モーション演算プログラム234の実行時M2より前に完了する。そのため、モーション演算プログラム234の実行時M2には、本来使用すべきモーション制御用入力データ図10に示す3の処理によって転送された入力データに加えて、使用すべきではない、モーション制御用の新たな入力データ図10に示す3’’の処理によって転送された入力データが作業領域に保持されることになる。そのため、モーション演算プログラム234の実行時M2において、本来使用すべき入力データが使用され、新たな入力データが使用されないように管理する仕組みが必要になり、処理が複雑化する。以上のように、図9に示す本実施の形態に係る実行順序でそれぞれのプログラムを実行させることで、図10に示すシーケンスにおいて生じるような問題を回避できるとともに、制御周期をより高速化できる。<G.全体処理動作実施の形態2>上述の実施の形態1においては、IO処理プログラム218、ユーザプログラム236、およびモーション演算プログラム234の実行順序に着目して説明したが、1つのモーション制御サイクル内において、これらのプログラムをすべて実行したとしても、他の処理を実行できる場合もある。そこで、実施の形態2においては、上述のプログラムに加えて、他の処理を実行する処理動作について説明する。図11は、本発明の実施の形態2に係る全体処理動作を示すシーケンス図である。図11を参照して、本実施の形態においては、IO処理プログラム218の実行終了からユーザプログラム236の実行開始までの間に他の処理Pが実行される。また、ユーザプログラム236の実行終了からモーション演算プログラム234の実行開始までの間に他の処理Qが実行される。さらに、モーション演算プログラム234の実行終了からIO処理プログラム218の実行開始までの間に他の処理Rが実行される。他の処理P、他の処理Q、他の処理Rの処理内容については、ユーザプログラム236およびモーション演算プログラム234の正常な実行を阻害するものでない限り、どのような処理であってもよい。より具体的には、他の処理としては、その他のシステムプログラム220図3の実行などが想定される。このその他のシステムプログラム220の処理内容としては、たとえば、入力データおよび/または出力データのロギング、故障診断、PLCサポート装置8との通信、ならびに、上位コンピュータとのLANを経由する通信本実施の形態に係るCPUユニット13がイーサネット登録商標を介する上位コンピュータとの通信機能を有している場合などが考えられる。さらに、ユーザプログラム236に含まれるシーケンス演算に関する入力処理および出力処理については、IO処理プログラム218を実行する中で、モーション制御用入力データの入力処理およびモーション指令値データの出力処理とともに行ってもよいが、それとは別のタイミングで、いずれかの他の処理として行ってもよい。また、他の処理がモーション制御サイクルの最後に実行される場合には、他の処理の内容は、次のモーション制御サイクルが開始されるまで待機しているアイドリングであってもよい。図11には、3種類の他の処理が実行される処理例を示すが、この他の処理の数についても特に制限されるものではなく、たとえば、他の処理のうちの1つまたは2つだけが存在するようにしてもよい。あるいは、単一の他の処理の中で、複数の種類の処理を順次実行するようにしてもよい。図11に示すシーケンスにおいて、1つのモーション制御サイクルの範囲開始から終了までとしては、IO処理プログラム218、ユーザプログラム236、モーション演算プログラム234の処理開始タイミングをそれぞれ区切りとするA,B,Cのほか、いずれかの他の処理の処理開始タイミングを区切りとするA’,B’,C’がありうる。<H.全体処理動作実施の形態3>ユーザにおける制御目的に応じて作成されるユーザプログラムに対して異なる優先度を設定できるようにすることも実用的である。そこで、実施の形態3においては、より高い優先度を設定されたユーザプログラムと、より低い優先度を設定されたユーザプログラム以下低優先ユーザプログラムとも称す。とが存在する場合の処理動作について説明する。また、本実施の形態においては、低優先ユーザプログラムとの対比上、図11に示されるユーザプログラム236に相当するプログラムを高優先ユーザプログラム236-1とも称す。図12は、本発明の実施の形態3に係る全体処理動作を示すシーケンス図である。図12に示すシーケンスは、図11に示すシーケンスにおいて、他の処理Pおよび他の処理Qが存在せず、かつ、他の処理Rとして低優先ユーザプログラム236-2第2のユーザプログラムが実行される場合に相当する。高優先ユーザプログラム236-1は、モーション演算プログラム234での演算に使用されるユーザプログラム出力データを、モーション制御用入力データを使用して算出する命令を含む。高優先ユーザプログラム236-1は、さらにモーション命令を含む。このモーション命令は、モーション演算プログラム234に対して実行に必要なパラメータを与えて実行開始を指示するための命令を含む。たとえば、ユーザは、検出スイッチ6図1の状態を表す入力データに基づいてある条件が成立した場合に、モーション命令を実行するようにプログラムすることができる。低優先ユーザプログラム236-2は、モーション制御用入力データを使用してユーザプログラム出力データを算出する命令を含まない。典型的には、低優先ユーザプログラム236-2は、モーション制御に比較して遅い制御で足りる部分の処理内容を含む。低優先ユーザプログラム236-2についても、ユーザプログラム236図3と同様に不揮発性メモリ106図2に格納されており、実行時にはメインメモリ104内に割当てられる各種のプログラム領域1041図4にコピーされる。上述したように、低優先ユーザプログラム236-2は比較して遅い制御で足りる部分の処理内容で構成されるので、低優先ユーザプログラム236-2の実行サイクルの周期は、モーション制御サイクルの周期の2以上の整数倍の周期に設定される。一例として、図12に示すシーケンスにおいては、低優先ユーザプログラム236-2の実行サイクルの周期は、モーション制御サイクルの周期の4倍に設定される。そのため、低優先ユーザプログラム236-2は、図12に示すモーション制御サイクル1~4を、1つの実行サイクルとみなして実行される。説明の便宜上、図12に示すシーケンス図においては、上述の図9~図11とは異なり、スケジューラプログラム212の動作タイミングを示すとともに、IO処理プログラム218を出力処理プログラム214と入力処理プログラム216とに区分して示す。さらに、図12に示すシーケンス図においては、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140の動作タイミングについても示している。本実施の形態においては、高優先ユーザプログラム236-1およびモーション演算プログラム234は、モーション制御スレッドと称される1つのスレッドに含まれる形で実装される。そのため、高優先ユーザプログラム236-1とモーション演算プログラム234とは、スケジューラプログラム212による制御を介さず連続して実行される。しかしながら、モーション演算プログラム234についても、モーション制御スレッド全体の実行制御を介して、スケジューラプログラム212に実行制御されているとみなすことができる。本実施の形態においては、高優先ユーザプログラム236-1とモーション演算プログラム234とは常に連続して実行されるので、モーション命令は、高優先ユーザプログラム236-1にのみ含まれるようにし、低優先ユーザプログラム236-2にはモーション命令を含まないように構成するのが、制御動作の理解を容易にする上で好ましい。さらに、図12に示す、出力処理プログラム214、入力処理プログラム216、高優先ユーザプログラム236-1、および、モーション演算プログラム234を、1つのモーション制御スレッドに含まれる形で実装してもよい。この場合には、これらのプログラムの実行順序についてはスケジューラプログラム212による関与を無くし、スケジューラプログラム212はこのモーション制御スレッドの起動のみを制御するようにしてもよい。この場合でも、スケジューラプログラム212は、モーション制御スレッドの実行開始タイミングを制御することによって、モーション制御スレッドに含まれるそれぞれのプログラムの実行を開始させる処理を行っているとみなすことができる。すなわち、本実施の形態においては、スケジューラプログラム212が何らかのプログラムの実行を開始させるということは、そのプログラムの実行を個別に開始させることには必ずしも限定されない。出力処理プログラム214、入力処理プログラム216、モーション制御スレッド高優先ユーザプログラム236-1およびモーション演算プログラム234、ならびに、低優先ユーザプログラム236-2には、それぞれ優先度が与えられている。これらのプログラムおよびスレッドに与えられている優先度は、たとえば、高い方から、出力処理プログラム214、入力処理プログラム216、モーション制御スレッド、低優先ユーザプログラム236-2の順である。スケジューラプログラム212は、各モーション制御サイクル内において、優先度の高いプログラム/スレッドから順に、マイクロプロセッサ100に実行させる。以下、マイクロプロセッサ100に実行させることを単に実行するとも表現する。スケジューラプログラム212は、それ自体がオブジェクトインスタンスである場合に限らず、他の各種オブジェクトインスタンスたとえば、出力処理プログラム214に組込まれて動作するプログラムプロセスであってもよい。たとえば、他のオブジェクトインスタンスにおいて呼び出されて動作するプログラムであってもよい。図12に示される符号PおよびXは、それぞれシステムタイマ108図2から一定周期ごとに発生される割り込み信号を示す。具体的には、Pは出力準備割り込みを示し、Xはフィールドネットワーク送信割り込みを示す。なお、図12には、割り込みを示す符号PおよびXに、モーション制御サイクルの番号を示す数字を付加して表現する。h1:モーション制御サイクル1についてスケジューラプログラム212は、出力準備割り込みP-1に応答して、優先度に従って、まず出力処理プログラム214を実行する。出力処理プログラム214は、PLCシステムバス11を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域1042図4からPLCシステムバス送信バッファ1043へコピーする。また、出力処理プログラム214は、フィールドネットワーク2を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域1042からフィールドネットワーク送信バッファ1045へコピーする。出力データは、モーション演算プログラム234の実行結果であるモーション指令値データ、および、ユーザプログラム236の実行結果であるその他の出力データを含む。続いて、出力処理プログラム214は、PLCシステムバス送信バッファ1043への出力データのコピーが完了すると、PLCシステムバスコントローラ120に対して送信実行を指示する符号A。そして、出力処理プログラム214は、出力データのコピーがすべて完了すると、いったん実行を停止する。その後、スケジューラプログラム212は、フィールドネットワーク送信割り込みX-1に応答して、出力処理プログラム214の実行を再開する。出力処理プログラム214は、実行を再開すると、フィールドネットワークコントローラ140に対して送信実行を指示する符号B。そして、出力処理プログラム214は、自身の実行を終了する。スケジューラプログラム212は、出力処理プログラム214の実行が終了すると、優先度に従って、次に入力処理プログラム216を実行する。入力処理プログラム216は、PLCシステムバスコントローラ120からの受信完了通知符号C、または、フィールドネットワークコントローラ140からの受信完了通知符号Dを受信するまで待機する。図12では、一例として、PLCシステムバスコントローラ120からの受信完了通知符号Cが先に発生し、続いて、フィールドネットワークコントローラ140からの受信完了通知符号Dが発生している例を示すが、この発生順序は逆になる場合もある。入力処理プログラム216は、受信完了通知符号CまたはDが発生すると、いずれの受信完了通知であるかに対応して、PLCシステムバス受信バッファ1044またはフィールドネットワーク受信バッファ1046から制御プログラムの作業領域1042に入力データをコピーする。入力データは、モーション制御用入力データ、および、ユーザプログラム236の実行に必要なその他の入力データを含む。入力処理プログラム216は、入力データのコピーが完了すると、実行を終了する。スケジューラプログラム212は、入力処理プログラム216の実行が終了すると、優先度に従って、次にモーション制御スレッドを実行する。すなわち、ユーザプログラム236が実行を開始する。ユーザプログラム236は、モーション制御用入力データを使用してユーザプログラム出力データを算出する。また、ユーザプログラム236は、その他の出力データを生成する。ユーザプログラム236の実行終了に伴いモーション演算プログラム234が実行を開始する。モーション演算プログラム234は、モーション制御用入力データおよびユーザプログラム出力データのうち、必要なデータを使用してモーション指令値データを算出する。スケジューラプログラム212は、モーション演算プログラム234の実行が終了すると、優先度に従って、最後に低優先ユーザプログラム236-2を実行する。この低優先ユーザプログラム236-2の実行は、次のモーション制御サイクルの出力準備割り込みP-2に応答して中断される。本実施の形態における出力準備割り込みPのように、実行中の処理を中断させて新しく一連の処理を開始させるトリガとなる一定周期の割り込みが存在する場合には、そのような割り込みを制御サイクルの区切りとして把握することが好ましい。h2:PLCシステムバスコントローラ120の動作についてPLCシステムバスコントローラ120のDMA制御回路122は、送信実行指示符号Aに応答して、メインメモリ104のPLCシステムバス送信バッファ1043に格納されている出力データをPLCシステムバスコントローラ120のバッファメモリ126へ転送する。バッファメモリ126への出力データの転送が完了すると、PLCシステムバス制御回路124は、バッファメモリ126から各出力データの宛先となっているユニットに対して対象の出力データを転送する。その後、PLCシステムバス制御回路124は、PLCシステムバス11上の各ユニットから入力データをPLCシステムバスコントローラ120のバッファメモリ126へ転送する。バッファメモリ126への入力データの転送が完了すると、PLCシステムバスコントローラ120のDMA制御回路122は、バッファメモリ126に格納されている入力データをメインメモリ104のPLCシステムバス受信バッファ1044へ転送する。その後、入力データの転送が完了すると、DMA制御回路122は、受信完了通知符号Cをマイクロプロセッサ100に対して送信する。h3:フィールドネットワークコントローラ140の動作についてフィールドネットワークコントローラ140のDMA制御回路142は、送信実行指示符号Bに応答して、メインメモリ104のフィールドネットワーク送信バッファ1045に格納されている出力データをフィールドネットワークコントローラ140のバッファメモリ146へ転送する。バッファメモリ146への出力データの転送が完了すると、フィールドネットワーク制御回路144は、バッファメモリ146から各出力データの宛先となっている装置に対して出力データを転送する。その後、フィールドネットワーク制御回路144は、フィールドネットワーク2上の各装置から入力データをフィールドネットワークコントローラ140のバッファメモリ146へ転送する。バッファメモリ146への入力データの転送が完了すると、フィールドネットワークコントローラ140のDMA制御回路142は、バッファメモリ146に格納されている入力データをメインメモリ104のフィールドネットワーク受信バッファ1046へ転送する。その後、入力データの転送が完了すると、DMA制御回路142は、受信完了通知符号Dをマイクロプロセッサ100に対して送信する。以上の動作は、フィールドネットワーク2の種類を問わず妥当するが、フィールドネットワーク2が本実施の形態で採用するEtherCAT登録商標である場合は、さらに次のような処理が実行される。すなわち、EtherCAT登録商標では、単一のフレームに、各ユニット宛の出力データおよび各ユニットからの入力データが含まれる。マスタに設定されるCPUユニット13からフレームが送信されると、送信されたフレームはデイジーチェーン接続されたそれぞれのユニットを経由して順次転送される。なお、CPUユニット13以外のそれぞれのユニットは、スレーブに設定される。フレームが末端のユニットに到達すると、そこで当該フレームは全二重の通信路を折り返して再びスレーブであるそれぞれのユニットを経由してCPUユニット13に戻る。各スレーブにおいては、往路のフレームをFIFOFirstInFirstOut方式で通過させながら、自スレーブ宛の出力データを選択的に取り込むとともに、自ユニットで発生した入力データをフレームの適切な位置に書き込む。各スレーブは、帰路のフレームについては、出力データの読み出し、および、入力データの書き込みは行わずに通過させる。このように、EtherCAT登録商標の場合は、各ユニットに対して個別にフレームを送信し、あるいは、各ユニットからフレームを個別に受信するのではなく、単一のフレームを送信および受信することが、フィールドネットワーク制御回路144による、バッファメモリ146から各ユニットへの出力データの転送、および、各ユニットからバッファメモリ146への入力データの転送に相当する。フィールドネットワーク2としてEtherCAT登録商標を用いる場合は、出力データを含むフレームを送信し、そのフレームがスレーブのそれぞれのユニットを経由して戻ってきた場合には、そのフレームに入力データが含まれることになる。そのため、実行順序については、出力処理の後に入力処理を実行することが自然である。但し、使用するフィールドネットワーク2の種類によっては、入力処理の後に出力処理を実行する方が好ましい場合がある。このように、出力処理と入力処理との順序は、フィールドネットワーク2などの仕様に応じて適宜に設計すればよい。h4:モーション制御サイクル2~4について基本的には、モーション制御サイクル2~4における動作は、モーション制御サイクル1における動作と同様である。以下では、主として、モーション制御サイクル1における動作と相違する点について説明する。モーション制御サイクル2では、スケジューラプログラム212は、モーション演算プログラム234の実行が終了すると、低優先ユーザプログラム236-2の未実行の部分を実行する。この低優先ユーザプログラム236-2の実行は、次のモーション制御サイクルの出力準備割り込みP-2に応答して再び中断される。モーション制御サイクル3においても、スケジューラプログラム212は、モーション演算プログラム234の実行が終了すると、低優先ユーザプログラム236-2の未実行の部分を実行する。図12に示すシーケンスにおいては、低優先ユーザプログラム236-2がモーション制御サイクル3内で実行を終了する例を示す。この場合には、低優先ユーザプログラム236-2の実行終了から、次のモーション制御サイクルの出力準備割り込みP-3までは待機時間となる。モーション制御サイクル4においては、モーション制御サイクル1から始まった低優先ユーザプログラム236-2のユーザプログラム実行サイクルはまだ継続しているが、低優先ユーザプログラム236-2の未実行の部分がないので、スケジューラプログラム212は、モーション演算プログラム234の実行終了後に実行させるべきプログラムがないと判断し、次のモーション制御サイクルの出力準備割り込みP-4までの間は待機時間となる。なお、スケジューラプログラム212が実行制御するプログラムについての待機時間において、リアルタイムOSの制御を利用して、その他のシステムプログラム220図3を実行してもよい。モーション制御サイクル5以降では、モーション制御サイクル1~4と同様の動作が繰り返される。h5:まとめ本実施の形態においては、スケジューラプログラム212は、不揮発性メモリ106図2に低優先ユーザプログラム236-2第2のユーザプログラムが格納されている場合に、低優先ユーザプログラム236-2の実行サイクルユーザプログラム実行サイクル内において、マイクロプロセッサ100に、最初のモーション演算プログラム234の実行終了からモーション制御サイクル終了までの余剰時間に低優先ユーザプログラム236-2の実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラム234の実行終了後の余剰時間に、低優先ユーザプログラム236-2の未実行の部分があるときには、マイクロプロセッサ100に、その未実行の部分の実行を開始させる。本実施の形態に係るPLC1のように、異なる優先度を設定し、それぞれ異なる実行サイクルでユーザプログラムを実行させることで、以下のような作用効果を奏する。すなわち、高優先ユーザプログラム236-1には、モーション演算プログラム234での演算に使用されるユーザプログラム出力データを、モーション制御用入力データを使用して算出する命令を含ませる。一方、低優先ユーザプログラム236-2には、高優先ユーザプログラム236-1に含まれる以外の処理の全部または一部を実現するための命令を含ませる。そうすると、高優先ユーザプログラム236-1にすべての処理を実現させるための命令を含ませる場合にくらべて高優先ユーザプログラム236-1に割り当てられる処理量が少なくなるため、高優先ユーザプログラム236-1の実行時間を短くすることができる。そのため、モーション制御サイクルの周期をより短縮できる可能性が生じる。その結果、より短い周期のモーション制御サイクル内でのモーション指令値データの出力処理およびモーション制御用入力データの入力処理、高優先ユーザプログラム236-1の実行、ならびに、モーション演算プログラム234の実行を適切に行うことが可能になる。h6:変形例図12に示すシーケンスにおいては、フィールドネットワークコントローラ140がスケジューラプログラム212からの送信実行の指示を受ける符号Bように構成される例を示す。これに代えて、フィールドネットワークコントローラ140がシステムタイマ108からの割り込み信号を直接受けて送信実行するようにしてもよい。出力処理プログラム214および入力処理プログラム216の命令に従うデータのコピーを行うことなく、ユーザプログラム236および/またはモーション演算プログラム234が、フィールドネットワーク送信バッファ1045および/またはフィールドネットワーク受信バッファ1046に直接アクセスするようにしてもよい。PLCシステムバス11を介したデータの出処理および入力処理についても、スケジューラプログラム212から独立して実行されるように構成してもよい。したがって、CPUユニット13を、スケジューラプログラム212とは独立して、出力処理および入力処理を実行するように構成することも可能である。すなわち、スケジューラプログラム212が出力処理および入力処理の実行を開始させることは必ずしも必要ではない。この場合には、たとえば、出力準備割り込みPがあってから受信完了通知符号CおよびDがあるまでは、マイクロプロセッサ100がメインメモリ104のそれぞれの送信バッファおよび受信バッファに対してアクセスしないように構成することが好ましい。<I.全体処理動作実施の形態4>上述の実施の形態1においては、ユーザプログラム236の実行サイクルユーザプログラム実行サイクルの周期がモーション制御サイクルの周期と一致している処理例について説明した。これに対して、実施の形態4においては、ユーザプログラム実行サイクルの周期がモーション制御サイクルの周期の2以上の整数倍である場合の処理例について説明する。[i1:本実施の形態]図13は、本発明の実施の形態4に係る全体処理動作を示すシーケンス図である。図13に示すシーケンスにおいては、ユーザプログラム実行サイクルの周期がモーション制御サイクルの周期の2倍である場合を示す。なお、IO処理プログラム218およびモーション演算プログラム234の実行サイクルの周期は、モーション制御サイクルの周期と一致している。図13に示す1~6の処理は、図9に示す1~6の処理にそれぞれ同様であるので、以下では、主として、図9に示すシーケンスと相違する点について説明する。すなわち、図13に示すシーケンスのモーション制御サイクル1内でのモーション演算プログラム234の実行開始時には、モーション制御用入力データを使用して算出されるユーザプログラム出力データ4の処理がまだ存在しないので、モーション演算プログラム234の命令に従って、モーション制御用入力データ3の処理のみを使用してモーション指令値データが算出される。この算出されたモーション指令値データはIO処理プログラム218に係る作業領域へ転送される7の処理。さらに、IO処理プログラム218の命令に従って、当該転送されたモーション指令値データが出力される8の処理。その後、フィールドネットワークコントローラ140が新たなモーション制御用入力データを受信してフィールドネットワーク受信バッファ1046図4に当該新たな入力データを格納、および/または、PLCシステムバスコントローラ120が、新たなモーション制御用入力データを受信してPLCシステムバス受信バッファ1044図4に当該新たな入力データを格納する9の処理。続いて、IO処理プログラム218の命令に従って、フィールドネットワーク受信バッファ1046および/またはPLCシステムバス受信バッファ1044に格納されている新たなモーション制御用入力データがモーション演算プログラム234に係る作業領域へ転送される10の処理。そして、シーケンスのモーション制御サイクル2において、モーション演算プログラム234の命令に従って、新たなモーション制御用入力データ10の処理およびユーザプログラム出力データ4の処理のうち、必要なデータを使用してモーション指令値が算出される。そして、算出されたモーション指令値データがIO処理プログラム218に係る作業領域へ転送される。最終的に、算出されたモーション指令値データは、IO処理プログラム218の命令に従って出力される5および6の処理。図13に示すように、ユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期と一致させる必要はなく、一般的には、モーション制御サイクルの周期の2以上の整数倍とすることもできる。本実施の形態によれば、ユーザプログラム236の実行周期よりも短い制御周期で、更新後のモーション指令値データを出力することができる。この場合には、モーション制御用入力データを使用してユーザプログラム236によって算出されるユーザプログラム出力データを反映してモーション指令値データの更新をすることは、ユーザプログラム実行サイクルごとにしかできない。しかしながら、そのような反映ができないモーション制御サイクルであっても、モーション指令値データを更新して出力することにより、モータの運動をより滑らかに制御できる場合がある。たとえば、本実施の形態は、上述したアプリケーション例3図8への適用に好適である。搬送車710の駆動輪に関する、主軸の指令値と従軸の指令値とについては、更新された指令値がモーション制御サイクルごとに出力されることになる。一方、主軸の指令位置と従軸の指令値との間に偏差補正値を与える補助軸の位置は、ユーザプログラム実行サイクルごとに更新されることになる。この場合、補助軸の位置の更新周期は、主軸に対する指令値および従軸に対する指令値の更新周期よりも長くなるが、アプリケーション例3の場合は、このことはあまり問題とはならず、むしろ、指令値の更新周期が短いことが利点となり、さらに指令値の更新周期よりは長い周期ではあるが補助軸を用いた従軸に対する指令値の補正もできることが利点となる。図13に示すシーケンスにおいても、実施の形態1図9と同様に、モーション制御サイクルの範囲の区切り方をA,B,Cのいずれとしてもよい。なお、AまたはBの区切り方を採用した場合には、各モーション制御サイクルの途中でユーザプログラム236の実行を中断し、モーション演算プログラム234の実行を開始するための実行制御典型的には、割り込み信号を用いるを実装する必要がある。Cの区切り方を採用した場合には、ユーザプログラム実行サイクルをより短縮できる可能性がある。すなわち、Cの区切り方によれば、スケジューラプログラム212が、ユーザプログラム実行サイクルたとえば、図13のT1からT3まで内において、マイクロプロセッサ100に、モーション演算プログラム234の実行、出力処理および入力処理、ユーザプログラム236の実行をこの順序に実行させるための命令を含むことになる。その結果、各モーション制御サイクルT1からT2まで、およびT2からT3まで内においても、モーション演算プログラムの実行、出力処理および入力処理、第1のユーザプログラムの実行がこの順序に実行されることになる。各モーション制御サイクルにおいて、出力処理および入力処理の実行後、モーション制御サイクルが終了するまでの時間はモーション制御サイクルごとに変動しうるが、この処理の順序により、当該時間をユーザプログラム236の実行に無駄なく使うことができる。その結果、マイクロプロセッサ100の待機時間が生じ難くなるので、ユーザプログラム実行サイクルをより短縮できる可能性が生じる。[i2:比較例]次に、本実施の形態に係るスケジューラプログラム212による効果を説明するために、図13に示すシーケンスとはプログラムの実行順序を異ならせた場合のシーケンスについて比較例として説明する。図14は、図13に示す全体処理動作に関する比較例における全体処理動作を示すシーケンス図である。上述の図13においては、IO処理プログラム218、ユーザプログラム236、モーション演算プログラム234の順序でそれぞれのプログラムが実行される例を示したが、図14には、比較例として、IO処理プログラム218、モーション演算プログラム234、ユーザプログラム236の順序でそれぞれのプログラムが実行される例を示す。図14に示すような比較例に係るプログラムの実行順序を採用した場合には、入力処理の開始図14に示す1の処理から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理図14に示す6の処理までには、モーション制御サイクルの3周期分に相当する時間、すなわち、ユーザプログラム実行サイクルの周期よりもモーション制御サイクル1周期分長い時間を要する。その結果、図13に示すプログラムの実行順序に比較して、モーション制御サイクルの1周期分の時間だけ制御が遅れることになる。<J.サポート装置>次に、PLC1で実行されるプログラムの作成およびPLC1のメンテナンスなどを行うためのPLCサポート装置8について説明する。図15は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のハードウェア構成を示す模式図である。図15を参照して、PLCサポート装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。図15を参照して、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は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。図16は、本発明の実施の形態に係るCPUユニットに接続して用いられるPLCサポート装置8のソフトウェア構成を示す模式図である。図16を参照して、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へ再インストールできる。今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"