(57)【要約】【課題】ＰＬＣのＣＰＵユニットにおいて、モーション演算プログラムと同期して実行されるユーザプログラムが、モーション制御用入力データを用いて、モーション指令値の算出にかかわる演算を行う場合に、ＣＰＵユニットがモーション制御用入力データを入力してからその入力データを反映したモーション指令値データを出力するまでに要する時間を短くする。【解決手段】スケジューラプログラムは、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第１のユーザプログラム実行サイクルごとに第１のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第１のユーザプログラムの実行開始、第１のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。【選択図】図９
2012194662.tif 000002
【特許請求の範囲】
【請求項１】
モータの運動を制御するためのモーション制御機能を有するＰＬＣのＣＰＵユニットであって、
マイクロプロセッサと、
記憶手段と、
通信回路とを備え、
前記ＰＬＣのＣＰＵユニットは、
モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、
ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第１のユーザプログラムを、前記モーション制御サイクルの周期の整数倍の周期の第１のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されており、
前記記憶手段は、システムプログラムと、前記第１のユーザプログラムとの格納に用いられ、
前記システムプログラムは、前記モーション演算プログラムと、前記第１のユーザプログラムおよび前記モーション演算プログラムの実行を制御するスケジューラプログラムとを含み、
前記マイクロプロセッサは、前記記憶手段に格納された前記システムプログラムおよび前記第１のユーザプログラムを実行し、
前記通信回路は、前記モーション制御サイクルごとに、前記出力処理の少なくとも一部として前記モーション指令値データの送信、および、前記入力処理の少なくとも一部として前記モーション制御用入力データの受信を行い、
前記スケジューラプログラムは、
前記マイクロプロセッサに、前記モーション制御サイクルごとに前記モーション演算プログラムの実行を開始させる命令と、
前記マイクロプロセッサに、前記第１のユーザプログラム実行サイクルごとに前記第１のユーザプログラムの実行を開始させる命令と、
前記出力処理および前記入力処理、前記第１のユーザプログラムの実行開始、前記第１のユーザプログラムの実行終了、ならびに、前記モーション演算プログラムの実行開始を、この順序で、前記第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含み、
それにより、前記第１のユーザプログラムが、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含む場合に、前記入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映した前記モーション指令値データの出力処理の終了までに要する時間が、前記第１のユーザプログラム実行サイクルの周期に相当する時間となる、ＰＬＣのＣＰＵユニット。
【請求項２】
前記第１のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期に等しい、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項３】
前記スケジューラプログラムは、前記モーション制御サイクル内において、前記出力処理および前記入力処理の後に、前記マイクロプロセッサに、前記第１のユーザプログラムおよび前記モーション演算プログラムをこの順に実行させるための命令を含む、請求項２に記載のＰＬＣのＣＰＵユニット。
【請求項４】
前記記憶手段は、さらに、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含まず、かつ前記モーション制御サイクルの周期の２以上の整数倍の周期の第２のユーザプログラム実行サイクルを有する第２のユーザプログラムの格納に用いられ、
前記スケジューラプログラムは、前記記憶手段に前記第２のユーザプログラムが格納されている場合に、前記第２のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、最初の前記モーション演算プログラムの実行終了から前記モーション制御サイクル終了までの余剰時間に前記第２のユーザプログラムの実行を開始させるとともに、その後の前記モーション制御サイクルにおける前記モーション演算プログラムの実行終了後の余剰時間に、前記第２のユーザプログラムの未実行の部分があるときには、前記マイクロプロセッサに、その未実行の部分の実行を開始させる、請求項３に記載のＰＬＣのＣＰＵユニット。
【請求項５】
前記第１のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期の２以上の整数倍に等しい、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項６】
前記スケジューラプログラムは、前記第１のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、前記モーション演算プログラムの実行、前記出力処理および前記入力処理、前記第１のユーザプログラムの実行をこの順序に実行させるための命令を含む、請求項５に記載のＰＬＣのＣＰＵユニット。
【請求項７】
モータの運動を制御するためのモーション制御機能を有するＰＬＣのＣＰＵユニットで実行されるＰＬＣ用システムプログラムであって、
前記ＰＬＣのＣＰＵユニットは、第１のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含み、
前記ＰＬＣのＣＰＵユニットは、
モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、
ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第１のユーザプログラムを、前記モーション制御サイクルの周期の整数倍の周期の第１のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されており、
前記ＰＬＣ用システムプログラムは、前記モーション演算プログラムと、前記第１のユーザプログラムおよび前記モーション演算プログラムの実行を制御するスケジューラプログラムとを含み、
前記通信回路は、前記モーション制御サイクルごとに、前記出力処理の少なくとも一部として前記モーション指令値データの送信、および、前記入力処理の少なくとも一部として前記モーション制御用入力データの受信を行い、
前記スケジューラプログラムは、
前記マイクロプロセッサに、前記モーション制御サイクルごとに前記モーション演算プログラムの実行を開始させる命令と、
前記マイクロプロセッサに、前記第１のユーザプログラム実行サイクルごとに前記第１のユーザプログラムの実行を開始させる命令と、
前記出力処理および前記入力処理、前記第１のユーザプログラムの実行開始、前記第１のユーザプログラムの実行終了、ならびに、前記モーション演算プログラムの実行開始を、この順序で、前記第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含み、
それにより、前記第１のユーザプログラムが、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含む場合に、前記入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映した前記モーション指令値データの出力処理の終了までに要する時間が、前記第１のユーザプログラム実行サイクルの周期に相当する時間となる、ＰＬＣ用システムプログラム。
【請求項８】
前記第１のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期に等しい、請求項７に記載のＰＬＣ用システムプログラム。
【請求項９】
前記スケジューラプログラムは、前記モーション制御サイクル内において、前記出力処理および前記入力処理の後に、前記マイクロプロセッサに、前記第１のユーザプログラムおよび前記モーション演算プログラムをこの順に実行させるための命令を含む、請求項８に記載のＰＬＣ用システムプログラム。
【請求項１０】
前記スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含まず、かつ前記モーション制御サイクルの周期の２以上の整数倍の周期の第２のユーザプログラム実行サイクルを有する第２のユーザプログラムが前記記憶手段に格納されている場合に、前記第２のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、最初の前記モーション演算プログラムの実行終了から前記モーション制御サイクル終了までの余剰時間に前記第２のユーザプログラムの実行を開始させるとともに、その後の前記モーション制御サイクルにおける前記モーション演算プログラムの実行終了後の余剰時間に、前記第２のユーザプログラムの未実行の部分があるときには、前記マイクロプロセッサに、その未実行の部分の実行を開始させる、請求項９に記載のＰＬＣ用システムプログラム。
【請求項１１】
前記第１のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期の２以上の整数倍に等しい、請求項７に記載のＰＬＣ用システムプログラム。
【請求項１２】
前記スケジューラプログラムは、前記第１のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、前記モーション演算プログラムの実行、前記出力処理および前記入力処理、前記第１のユーザプログラムの実行をこの順序に実行させるための命令を含む、請求項１１に記載のＰＬＣ用システムプログラム。
【請求項１３】
モータの運動を制御するためのモーション制御機能を有するＰＬＣのＣＰＵユニットで実行されるＰＬＣ用システムプログラムを格納した記録媒体であって、
前記ＰＬＣのＣＰＵユニットは、第１のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含み、
前記ＰＬＣのＣＰＵユニットは、
モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、
ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第１のユーザプログラムを、前記モーション制御サイクルの周期の整数倍の周期の第１のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されており、
前記ＰＬＣ用システムプログラムは、前記モーション演算プログラムと、前記第１のユーザプログラムおよび前記モーション演算プログラムの実行を制御するスケジューラプログラムとを含み、
前記通信回路は、前記モーション制御サイクルごとに、前記出力処理の少なくとも一部として前記モーション指令値データの送信、および、前記入力処理の少なくとも一部として前記モーション制御用入力データの受信を行い、
前記スケジューラプログラムは、
前記マイクロプロセッサに、前記モーション制御サイクルごとに前記モーション演算プログラムの実行を開始させる命令と、
前記マイクロプロセッサに、前記第１のユーザプログラム実行サイクルごとに前記第１のユーザプログラムの実行を開始させる命令と、
前記出力処理および前記入力処理、前記第１のユーザプログラムの実行開始、前記第１のユーザプログラムの実行終了、ならびに、前記モーション演算プログラムの実行開始を、この順序で、前記第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含み、
それにより、前記第１のユーザプログラムが、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含む場合に、前記入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映した前記モーション指令値データの出力処理の終了までに要する時間が、前記第１のユーザプログラム実行サイクルの周期に相当する時間となる、ＰＬＣ用システムプログラムを格納した記録媒体。
【請求項１４】
前記第１のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期に等しい、請求項１３に記載のＰＬＣ用システムプログラムを格納した記録媒体。
【請求項１５】
前記スケジューラプログラムは、前記モーション制御サイクル内において、前記出力処理および前記入力処理の後に、前記マイクロプロセッサに、前記第１のユーザプログラムおよび前記モーション演算プログラムをこの順に実行させるための命令を含む、請求項１４に記載のＰＬＣ用システムプログラムを格納した記録媒体。
【請求項１６】
前記スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、前記モーション演算プログラムによって使用されるユーザプログラム出力データを、前記モーション制御用入力データを用いて算出する処理を含まず、かつ前記モーション制御サイクルの周期の２以上の整数倍の周期の第２のユーザプログラム実行サイクルを有する第２のユーザプログラムが前記記憶手段に格納されている場合に、前記第２のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、最初の前記モーション演算プログラムの実行終了から前記モーション制御サイクル終了までの余剰時間に前記第２のユーザプログラムの実行を開始させるとともに、その後の前記モーション制御サイクルにおける前記モーション演算プログラムの実行終了後の余剰時間に、前記第２のユーザプログラムの未実行の部分があるときには、前記マイクロプロセッサに、その未実行の部分の実行を開始させる、請求項１５に記載のＰＬＣ用システムプログラムを格納した記録媒体。
【請求項１７】
前記第１のユーザプログラム実行サイクルの周期は、前記モーション制御サイクルの周期の２以上の整数倍に等しい、請求項１３に記載のＰＬＣ用システムプログラムを格納した記録媒体。
【請求項１８】
前記スケジューラプログラムは、前記第１のユーザプログラム実行サイクル内において、前記マイクロプロセッサに、前記モーション演算プログラムの実行、前記出力処理および前記入力処理、前記第１のユーザプログラムの実行をこの順序に実行させるための命令を含む、請求項１７に記載のＰＬＣ用システムプログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や設備などの動作を制御するために用いられるＰＬＣ（Programmable Logic Controller、あるいはプログラマブルコントローラとも称される）における出力処理、入力処理、演算処理などを含む制御動作のスケジューリングに関する。
【背景技術】
【０００２】
ＰＬＣは、たとえば、ユーザプログラムを実行するマイクロプロセッサを含むＣＰＵ（Central Processing Unit）ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input Output）ユニットといった複数のユニットで構成される。それらのユニット間で、ユーザプログラム実行サイクルごとに、ＰＬＣシステムバスおよび／またはフィールドネットワークを経由してデータの授受をしながら、ＰＬＣは制御動作を実行する。
【０００３】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーション制御が含まれる場合がある。従来、このようなモーション制御、典型的には、モータを駆動するモータドライバに対して周期的に指令値を出力する制御処理（モーション演算プログラムの実行）は、ＰＬＣとは別に設けたモーションコントローラにおいて行われていた。しかしながら、情報技術の分野においては、マイクロプロセッサや通信ネットワークの高速化が進展しつつある。そのため、ＰＬＣにおいてもそれらの技術を利用して、１つのマイクロプロセッサにおいて、ユーザプログラムだけでなくモーション演算プログラムをも実行することが可能になってきた。
【０００４】
たとえば、特許文献１（特開２００７−１４０６５５号公報）には、モータを制御するモーション制御機能とシーケンス演算（ユーザプログラム）を実行するＰＬＣ機能とを、１つのＣＰＵで処理する構成が開示されている。より具体的には、基本クロックの１サイクルごとに、「定周期モーション制御処理および各軸処理」と「高速シーケンス処理」とを実行し、さらに各基本クロックサイクル内の残りの時間において、「低速シーケンス処理」または「非定周期モーション制御処理」を実行することが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１４０６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
モーション演算プログラムを実行する機能をＰＬＣのマイクロプロセッサに統合するにあたり、従来のモーションコントローラと同様に、一定の短い周期の実行サイクル内でモータドライバに対する指令値の算出およびその算出結果の出力を行い、各実行サイクルの残りの時間でユーザプログラムの実行およびその他のＰＬＣ動作を行うように構成しようと考えることは自然である。しかしながら、各実行サイクルにおける残り時間の長さは限られているため、各実行サイクル内でＰＬＣとして動作するために必要なすべての処理を行うことはできない。このような場合に、どの実行サイクルにおける残り時間でどのような処理を行うのがよいのかについては明らかではない。さらに、ユーザプログラムの実行には、入力処理および出力処理が必要であり、モーション演算実行にも少なくとも出力処理（場合によっては、入力処理についても）が必要であるが、これらの処理をどのタイミングで行うべきであるかについても明らかではない。
【０００７】
上述の特許文献１においては、「定周期モーション制御処理および各軸処理」、「高速シーケンス処理」、「低速シーケンス処理」、および、「非定周期モーション制御処理」の各処理について、具体的にどのような処理内容が想定されているのかについては説明されていない。特に、具体的な処理内容からみた場合に「高速シーケンス処理」と「低速シーケンス処理」とがどのように区別されるのか、および、「非定周期モーション制御処理」とはどのような処理内容を想定した処理であるのか、といった事項については不明である。さらに、各処理に関する入力と出力とがいつどのように行われるのかも不明である。
【０００８】
従来、ＰＬＣとは別にモーションコントローラを設けていた場合には、ＰＬＣとモーションコントローラとは互いに非同期の、一般にはＰＬＣの方が長い周期の実行サイクルで動作していた。このような場合、ユーザプログラムを実行するＰＬＣの、モーション制御に対する役割は、ユーザプログラムの中のモーション命令を実行する際に、モーション命令の種類およびパラメータに従ってモーションコントローラに対して１つの動作の起動指示を与えることであった。たとえば、ＰＬＣは、「座標Ａから座標Ｂまで指定の速度変化に従い移動せよ」といったモーション命令に基づく指示をモーションコントローラへ与える。モーションコントローラは、その指示に応じて、命令内容の運動を実現するために自らの実行サイクルごとにサーボモータドライバに対する位置指令値（命令内容によっては、速度指令値、トルク指令値などである場合もある）を算出し出力する。モーションコントローラは、いったん起動指示が与えられると、そのモーション命令の実行を完了するまで、自らの実行サイクルで指令値の算出および出力を繰り返す。
【０００９】
一方、モーション制御機能を有するＰＬＣにおいて、モーション演算プログラムの実行サイクルをＰＬＣの動作全体の共通サイクルとした場合には、各実行サイクルにおいて比較的短いユーザプログラムを実行しうることは特許文献１からも知られているが、本願発明者らは、このことを利用してより高度なモーション制御を行える可能性が存在することを見出した。
【００１０】
すなわち、一般に、モーション命令の仕様として、入力パラメータの与え方および入力パラメータを用いた演算内容が決められている。モーション演算プログラムは、そのようなモーション命令の内容を実際に演算するのである。モーション演算プログラム自体は、多くの場合ＰＬＣのメーカーから提供されるのであって、ユーザ自身がモーション演算プログラムを開発することは容易ではない。一方、ユーザプログラムは、ユーザ自身で自由にプログラミングできる。そこで、各実行サイクルにおけるモーション指令値の算出にかかわる演算内容の一部をユーザプログラムにおいて定義し、モーション演算プログラムとユーザプログラムとを同期して実行すれば、モーション制御の自由度を高めることができる。これによって、個別のユーザが必要とする制御内容により適合したモーション制御を実現できる可能性が存在するのである。
【００１１】
さらに、本願発明者らは、ユーザプログラムがモーション指令値の算出にかかわる場合には、ユーザプログラムとモーション演算との実行が単に同期していればよいというわけではなく、入力処理および出力処理をも含めて、各処理を適切な順序で実行しなければ制御を遅らせる無駄な時間が発生してしまうことを見出した。
【００１２】
本発明は、ＰＬＣのＣＰＵユニットにおいて、モーション演算プログラムと同期して実行されるユーザプログラムが、モーション制御用入力データを用いて、モーション指令値の算出にかかわる演算を行う場合に、入力処理および出力処理をも含めた各処理の実行順序の適正化により、ＣＰＵユニットがモーション制御用入力データを入力してからその入力データを反映したモーション指令値データを出力するまでに要する時間を短くすることを目的とする。
【課題を解決するための手段】
【００１３】
本発明のある局面によれば、モータの運動を制御するためのモーション制御機能を有するＰＬＣのＣＰＵユニットを提供する。ＰＬＣのＣＰＵユニットは、マイクロプロセッサと、記憶手段と、通信回路とを含む。ＰＬＣのＣＰＵユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第１のユーザプログラムを、モーション制御サイクルの周期の整数倍の周期の第１のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。記憶手段は、システムプログラムと、第１のユーザプログラムとの格納に用いられる。システムプログラムは、モーション演算プログラムと、第１のユーザプログラムおよびモーション演算プログラムの実行を制御するスケジューラプログラムとを含む。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび第１のユーザプログラムを実行し、通信回路は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。スケジューラプログラムは、マイクロプロセッサに、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第１のユーザプログラム実行サイクルごとに第１のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第１のユーザプログラムの実行開始、第１のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。それにより、第１のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理の終了までに要する時間を、第１のユーザプログラム実行サイクルの周期に相当する時間にできる。
【００１４】
好ましくは、第１のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。このように第１のユーザプログラム実行サイクルの周期を設定することで、モーション演算プログラムの実行ごとに、更新されたユーザプログラム出力データを使用してモーション指令値データを算出することができる。すなわち、毎回の出力処理ごとにそのように更新されたモーション指令値データを出力することができる。
【００１５】
さらに好ましくは、スケジューラプログラムは、モーション制御サイクル内において、出力処理および入力処理の後に、マイクロプロセッサに、第１のユーザプログラムおよびモーション演算プログラムをこの順に実行させるための命令を含む。この命令によって、モーション制御サイクル内において、第１のユーザプログラムおよびモーション演算プログラムの実行に先行してモーション制御に関する出力処理および入力処理を行うことができ、これによって、これらの入出力のための通信周期のばらつきを少なくできる。よって、モータの運動をより高精度に制御することができる。
【００１６】
さらに好ましくは、記憶手段は、さらに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含まず、かつモーション制御サイクルの周期の２以上の整数倍の周期の第２のユーザプログラム実行サイクルを有する第２のユーザプログラムの格納に用いられる。スケジューラプログラムは、記憶手段に第２のユーザプログラムが格納されている場合に、第２のユーザプログラム実行サイクル内において、マイクロプロセッサに、最初のモーション演算プログラムの実行終了からモーション制御サイクル終了までの余剰時間に第２のユーザプログラムの実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラムの実行終了後の余剰時間に、第２のユーザプログラムの未実行の部分があるときには、マイクロプロセッサに、その未実行の部分の実行を開始させる。
【００１７】
本局面に係るＰＬＣのＣＰＵユニットによれば、以下のようにユーザプログラムを作成することで、処理の高速化を実現できる。すなわち、第１のユーザプログラムには、モーション演算プログラムでの演算に使用されるユーザプログラム出力データを、モーション制御用入力データを使用して算出する命令を含ませる。一方、第２のユーザプログラムには、第１のユーザプログラムに含まれる以外の処理の全部または一部を実現するための命令を含ませる。そうすると、第１のユーザプログラムにすべての処理を実現させるための命令を含ませる場合にくらべて第１のユーザプログラムに割り当てられる処理量が少なくなるため、第１のユーザプログラムの実行時間を短くすることができる。そのため、モーション制御サイクルの周期をより短縮できる可能性が生じる。
【００１８】
好ましくは、第１のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期の２以上の整数倍に等しい。このように第１のユーザプログラム実行サイクルの周期を設定することで、ユーザプログラム実行周期よりも短い制御周期で、更新後のモーション指令値データを出力することができる。
【００１９】
さらに好ましくは、スケジューラプログラムは、第１のユーザプログラム実行サイクル内において、マイクロプロセッサに、モーション演算プログラムの実行、出力処理および入力処理、第１のユーザプログラムの実行をこの順序に実行させるための命令を含む。その結果、各モーション制御サイクル内においても、モーション演算プログラムの実行、出力処理および入力処理、第１のユーザプログラムの実行がこの順序に実行されることになる。各モーション制御サイクルにおいて、出力処理および入力処理の実行後、モーション制御サイクルが終了するまでの時間はモーション制御サイクルごとに変動しうるが、この命令によって、当該時間を第１のユーザプログラムの実行に無駄なく使うことができる。その結果、マイクロプロセッサの待機時間が生じ難くなるので、ユーザプログラム実行サイクルをより短縮できる可能性が生じる。
【００２０】
本発明の別の局面によれば、モータの運動を制御するためのモーション制御機能を有するＰＬＣのＣＰＵユニットで実行されるＰＬＣ用システムプログラムを提供する。ＰＬＣのＣＰＵユニットは、第１のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含む。ＰＬＣのＣＰＵユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第１のユーザプログラムを、モーション制御サイクルの周期の整数倍の周期の第１のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。ＰＬＣ用システムプログラムは、モーション演算プログラムと、第１のユーザプログラムおよびモーション演算プログラムの実行を制御するスケジューラプログラムとを含む。通信回路は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。スケジューラプログラムは、マイクロプロセッサに、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第１のユーザプログラム実行サイクルごとに第１のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第１のユーザプログラムの実行開始、第１のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。それにより、第１のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理の終了までに要する時間を、第１のユーザプログラム実行サイクルの周期に相当する時間にできる。
【００２１】
好ましくは、第１のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。
【００２２】
さらに好ましくは、スケジューラプログラムは、モーション制御サイクル内において、出力処理および入力処理の後に、マイクロプロセッサに、第１のユーザプログラムおよびモーション演算プログラムをこの順に実行させるための命令を含む。
【００２３】
さらに好ましくは、スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含まず、かつモーション制御サイクルの周期の２以上の整数倍の周期の第２のユーザプログラム実行サイクルを有する第２のユーザプログラムが記憶手段に格納されている場合に、第２のユーザプログラム実行サイクル内において、マイクロプロセッサに、最初のモーション演算プログラムの実行終了からモーション制御サイクル終了までの余剰時間に第２のユーザプログラムの実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラムの実行終了後の余剰時間に、第２のユーザプログラムの未実行の部分があるときには、マイクロプロセッサに、その未実行の部分の実行を開始させる。
【００２４】
好ましくは、第１のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期の２以上の整数倍に等しい。
【００２５】
さらに好ましくは、スケジューラプログラムは、第１のユーザプログラム実行サイクル内において、マイクロプロセッサに、モーション演算プログラムの実行、出力処理および入力処理、第１のユーザプログラムの実行をこの順序に実行させるための命令を含む。
【００２６】
この発明のさらに別の局面によれば、モータの運動を制御するためのモーション制御機能を有するＰＬＣのＣＰＵユニットで実行されるＰＬＣ用システムプログラムを格納した記録媒体を提供する。ＰＬＣのＣＰＵユニットは、第１のユーザプログラムの格納に用いられる記憶手段と、マイクロプロセッサと、通信回路とを含む。ＰＬＣのＣＰＵユニットは、モーション指令値データの出力処理およびモーション制御用入力データの入力処理と、モーション演算プログラムの実行とを一定周期のモーション制御サイクルごとに繰り返し実行可能に構成されるとともに、ユーザにおける制御目的に応じて作成され、モーション演算プログラムに対してその実行に必要な指示を与える処理を含む第１のユーザプログラムを、モーション制御サイクルの周期の整数倍の周期の第１のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。ＰＬＣ用システムプログラムは、モーション演算プログラムと、第１のユーザプログラムおよびモーション演算プログラムの実行を制御するスケジューラプログラムとを含む。通信回路は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。スケジューラプログラムは、マイクロプロセッサに、モーション制御サイクルごとにモーション演算プログラムの実行を開始させる命令と、マイクロプロセッサに、第１のユーザプログラム実行サイクルごとに第１のユーザプログラムの実行を開始させる命令と、出力処理および入力処理、第１のユーザプログラムの実行開始、第１のユーザプログラムの実行終了、ならびに、モーション演算プログラムの実行開始を、この順序で、第１のユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令とを含む。それにより、第１のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理の開始から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理の終了までに要する時間を、第１のユーザプログラム実行サイクルの周期に相当する時間にできる。
【００２７】
好ましくは、第１のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。
【００２８】
さらに好ましくは、スケジューラプログラムは、モーション制御サイクル内において、出力処理および入力処理の後に、マイクロプロセッサに、第１のユーザプログラムおよびモーション演算プログラムをこの順に実行させるための命令を含む。
【００２９】
さらに好ましくは、スケジューラプログラムは、ユーザにおける制御目的に応じて作成され、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含まず、かつモーション制御サイクルの周期の２以上の整数倍の周期の第２のユーザプログラム実行サイクルを有する第２のユーザプログラムが記憶手段に格納されている場合に、第２のユーザプログラム実行サイクル内において、マイクロプロセッサに、最初のモーション演算プログラムの実行終了からモーション制御サイクル終了までの余剰時間に第２のユーザプログラムの実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラムの実行終了後の余剰時間に、第２のユーザプログラムの未実行の部分があるときには、マイクロプロセッサに、その未実行の部分の実行を開始させる。
【００３０】
好ましくは、第１のユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期の２以上の整数倍に等しい。
【００３１】
さらに好ましくは、スケジューラプログラムは、第１のユーザプログラム実行サイクル内において、マイクロプロセッサに、モーション演算プログラムの実行、出力処理および入力処理、第１のユーザプログラムの実行をこの順序に実行させるための命令を含む。
【００３２】
なお、本明細書における（日本語の）「命令」は、ある機能を実現するための、プログラムのソースリストに表れる個々の命令に限らず、それら個々の命令や関数等の集合をも意味しており、たとえば英語ではinstructionsのように複数形で表記されるべきものである。
【発明の効果】
【００３３】
本発明によれば、ＰＬＣのＣＰＵユニットにおいて、第１のユーザプログラムが、モーション演算プログラムによって使用されるユーザプログラム出力データを、モーション制御用入力データを用いて算出する処理を含む場合に、入力処理から、そこで入力されたモーション制御用入力データを反映したモーション指令値データの出力処理までに要する時間を、ユーザプログラム実行サイクルの周期に相当する短い時間とすることができる。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施の形態に係るＰＬＣシステムの概略構成を示す模式図である。
【図２】本発明の実施の形態に係るＣＰＵユニットのハードウェア構成を示す模式図である。
【図３】本発明の実施の形態に係るＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】本発明の実施の形態に係るＣＰＵユニットのメインメモリの領域構成を示す模式図である。
【図５】本発明の実施の形態に係る制御プログラム（ユーザプログラム、シーケンス命令演算プログラムおよびモーション演算プログラム）によって提供されるモーション制御の概略の処理手順を示すフローチャートである。
【図６】本発明の実施の形態に係るＣＰＵユニットのアプリケーション例１を示す模式図である。
【図７】本発明の実施の形態に係るＣＰＵユニットのアプリケーション例２を示す模式図である。
【図８】本発明の実施の形態に係るＣＰＵユニットのアプリケーション例３を示す模式図である。
【図９】本発明の実施の形態１に係る全体処理動作を示すシーケンス図である。
【図１０】図９に示す全体処理動作に関する比較例における全体処理動作を示すシーケンス図である。
【図１１】本発明の実施の形態２に係る全体処理動作を示すシーケンス図である。
【図１２】本発明の実施の形態３に係る全体処理動作を示すシーケンス図である。
【図１３】本発明の実施の形態４に係る全体処理動作を示すシーケンス図である。
【図１４】図１３に示す全体処理動作に関する比較例における全体処理動作を示すシーケンス図である。
【図１５】本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置のハードウェア構成を示す模式図である。
【図１６】本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置のソフトウェア構成を示す模式図である。
【発明を実施するための形態】
【００３５】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００３６】
＜Ａ．システム構成＞
本実施の形態に係るＰＬＣは、モータの運動を制御するためのモーション制御機能を有する。まず、図１を参照して、本実施の形態に係るＰＬＣ１のシステム構成について説明する。
【００３７】
図１は、本発明の実施の形態に係るＰＬＣシステムの概略構成を示す模式図である。図１を参照して、ＰＬＣシステムＳＹＳは、ＰＬＣ１と、ＰＬＣ１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。また、ＰＬＣ１には、接続ケーブル１０などを介してＰＬＣサポート装置８が接続される。
【００３８】
ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、ＰＬＣ１として構成される各ユニットは、ＰＬＣメーカーが提供するものであるので、ＰＬＣシステムバス１１は、一般にＰＬＣメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【００３９】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００４０】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００４１】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。本実施の形態に係るＰＬＣシステムＳＹＳでは、典型的に、本実施の形態においては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）をフィールドネットワーク２として採用する場合の構成について例示する。
【００４２】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク２を使用せずに、サーボモータドライバ３をＰＬＣシステムバス１１に直接接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行うようにしてもよい。
【００４３】
なお、ＰＬＣ１は、ＣＰＵユニット１３にＩＯユニット１４の機能やサーボモータドライバ３の機能を持たせることにより、ＩＯユニット１４やサーボモータドライバ３などを介さずにＣＰＵユニット１３が直接制御対象を制御する構成でもよい。
【００４４】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、ＰＬＣ１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００４５】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００４６】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行うための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００４７】
なお、ＰＬＣサポート装置８については後述する。
＜Ｂ．ＣＰＵユニットのハードウェア構成＞
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本発明の実施の形態に係るＣＰＵユニット１３のハードウェア構成を示す模式図である。図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００４８】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００４９】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００５０】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００５１】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【００５２】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【００５３】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。これらの通信回路は、モーション指令値データなどの出力データの送信およびモーション制御用入力データなどの入力データの受信を行う。
【００５４】
なお、ＣＰＵユニット１３自体にＩＯユニット１４やサーボモータドライバ３の機能を持たせる場合は、通信回路による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてＣＰＵユニット１３の内部で行われる送信および受信となる。
【００５５】
ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバス１１を介したデータの遣り取りを制御する。より具体的には、ＰＬＣシステムバスコントローラ１２０は、ＤＭＡ（Dynamic Memory Access）制御回路１２２と、ＰＬＣシステムバス制御回路１２４と、バッファメモリ１２６とを含む。なお、ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバスコネクタ１３０を介してＰＬＣシステムバス１１と内部的に接続される。
【００５６】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００５７】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行う。
【００５８】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行う。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００５９】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行うためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００６０】
バッファメモリ１４６は、フィールドネットワーク２を介して他の装置などへ出力されるデータ（このデータについても、以下「出力データ」と称す。）の送信バッファ、および、フィールドネットワーク２を介して他の装置などから入力されるデータ（このデータについても、以下「入力データ」とも称す。）の受信バッファとして機能する。上述したように、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１４６に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ１４６に一次的に保持された後、メインメモリ１０４に移される。
【００６１】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行う。
【００６２】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行う。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００６３】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００６４】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００６５】
図３は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００６６】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００６７】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００６８】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００６９】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００７０】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０およびユーザプログラム２３６を実行する。
【００７１】
以下、各プログラムについてより詳細に説明する。
上述ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００７２】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００７３】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（モーション制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各モーション制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００７４】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００７５】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００７６】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００７７】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。
【００７８】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、モーション制御サイクルの周期を設定するプログラム２２２を含む。
【００７９】
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがＰＬＣサポート装置８へ入力する。すると、その入力された情報は、ＰＬＣサポート装置８からＣＰＵユニット１３へ転送される。モーション制御サイクルの周期を設定するプログラム２２２は、ＰＬＣサポート装置８からの情報を不揮発性メモリ１０６に格納させるとともに、システムタイマ１０８から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、モーション制御サイクルの周期を設定するプログラム２２２が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００８０】
モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから１つを特定する情報（番号または文字）などを採用することができる。
【００８１】
本実施の形態に係るＣＰＵユニット１３において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるＰＬＣサポート装置８との通信手段、モーション制御サイクルの周期を設定するプログラム２２２、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ１０８の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【００８２】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係るＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、出力準備割り込み（Ｐ）およびフィールドネットワーク送信割り込み（Ｘ）が初期設定される。リアルタイムＯＳ２００は、出力準備割り込み（Ｐ）またはフィールドネットワーク送信割り込み（Ｘ）が発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り替える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とＰＬＣサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００８３】
＜Ｄ．メインメモリ構成＞
次に、図４を参照して、ＣＰＵユニット１３のメインメモリ１０４に構成される記憶領域について説明する。
【００８４】
図４は、本発明の実施の形態に係るＣＰＵユニット１３のメインメモリ１０４の領域構成を示す模式図である。図４を参照して、メインメモリ１０４には、各種のプログラム領域１０４１と、制御プログラムの作業領域１０４２と、ＰＬＣシステムバス送信バッファ１０４３と、ＰＬＣシステムバス受信バッファ１０４４と、フィールドネットワーク送信バッファ１０４５と、フィールドネットワーク受信バッファ１０４６とが形成される。
【００８５】
各種のプログラム領域１０４１には、各種のプログラムを実行するためのコードが一時的に格納される。
【００８６】
制御プログラムの作業領域１０４２には、制御プログラム２３０の実行により作成された出力データが一時的に格納される。
【００８７】
ＰＬＣシステムバス送信バッファ１０４３およびＰＬＣシステムバス受信バッファ１０４４は、ＰＬＣシステムバス１１を介して送信および受信されるデータをそれぞれ一時的に格納する。同様に、フィールドネットワーク送信バッファ１０４５およびフィールドネットワーク受信バッファ１０４６は、フィールドネットワーク２を介して送信および受信されるデータをそれぞれ一時的に格納する。
【００８８】
より具体的には、出力処理プログラム２１４は、ＰＬＣシステムバス１１を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域１０４２からＰＬＣシステムバス送信バッファ１０４３へコピーする。その際、出力処理プログラム２１４は、同一のユニットに送信される複数の出力データを一括して送信できるように、ＰＬＣシステムバス送信バッファ１０４３において、同一のユニットに向けられた出力データ群がまとめられるように出力データを再配置する。
【００８９】
同様に、出力処理プログラム２１４は、フィールドネットワーク２を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域１０４２からフィールドネットワーク送信バッファ１０４５へコピーする。その際、出力処理プログラム２１４は、フィールドネットワーク送信バッファ１０４５において、シリアルフレームとして送信できる形式に出力データを再配置する。
【００９０】
一方、入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０が受信してＰＬＣシステムバス受信バッファ１０４４に格納された入力データ、および／または、フィールドネットワークコントローラ１４０が受信してフィールドネットワーク受信バッファ１０４６に格納された入力データを、制御プログラムの作業領域１０４２へコピーする。その際、入力処理プログラム２１６は、制御プログラムの作業領域１０４２において、制御プログラム２３０が使用するのに適した形式に入力データを再配置する。
【００９１】
ＰＬＣシステムバスコントローラ１２０のＤＭＡ制御回路１２２は、ＰＬＣシステムバス送信バッファ１０４３に格納されている出力データをＰＬＣシステムバスコントローラ１２０のバッファメモリ１４６へ転送するとともに、バッファメモリ１４６に格納されている入力データをＰＬＣシステムバス受信バッファ１０４４へ転送する。
【００９２】
フィールドネットワークコントローラ１４０のＤＭＡ制御回路１４２は、フィールドネットワーク送信バッファ１０４５に格納されている出力データをフィールドネットワークコントローラ１４０のバッファメモリ１４６へ転送するとともに、バッファメモリ１４６に格納されている入力データをフィールドネットワーク受信バッファ１０４６へ転送する。
【００９３】
制御プログラムの作業領域１０４２、ＰＬＣシステムバス送信バッファ１０４３、ＰＬＣシステムバス受信バッファ１０４４、フィールドネットワーク送信バッファ１０４５、および、フィールドネットワーク受信バッファ１０４６は、それぞれのアクセスを互いに独立に制御できるように構成されている。そのため、たとえば、以下に示す（１）〜（３）といった複数の動作を並列実行することができる。
【００９４】
（１）  マイクロプロセッサ１００が行う、ユーザプログラム２３６実行に伴う制御プログラムの作業領域１０４２へのアクセス
（２）  ＰＬＣシステムバスコントローラ１２０のＤＭＡ制御回路１２２が行う、メインメモリ１０４上のＰＬＣシステムバス送信バッファ１０４３および／またはＰＬＣシステムバス受信バッファ１０４４とＰＬＣシステムバスコントローラ１２０内のバッファメモリ１２６との間のデータ転送のための、メインメモリ１０４上のＰＬＣシステムバス送信バッファ１０４３および／またはＰＬＣシステムバス受信バッファ１０４４へのアクセス
（３）  フィールドネットワークコントローラ１４０のＤＭＡ制御回路１４２が行う、メインメモリ１０４上のフィールドネットワーク送信バッファ１０４５および／またはフィールドネットワーク受信バッファ１０４６とフィールドネットワークコントローラ１４０内のバッファメモリ１４６との間のデータ転送のための、メインメモリ１０４上のフィールドネットワーク送信バッファ１０４５および／またはフィールドネットワーク受信バッファ１０４６へのアクセス
＜Ｅ．アプリケーション＞
次に、本実施の形態に係るＰＬＣシステムＳＹＳが適用されるいくつかのアプリケーション例について説明する。
【００９５】
まず、上述したユーザプログラム２３６に含まれる典型的な構成について説明する。ユーザプログラム２３６は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム２３６は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム２３４が起動し、まず、モーション演算プログラム２３４の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第１サイクルでの指令値が算出される。したがって、初期処理および第１番目の指令値算出処理が、起動したモーション演算プログラム２３４が第１番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
【００９６】
図５は、本発明の実施の形態に係る制御プログラム２３０（ユーザプログラム２３６、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４）によって提供されるモーション制御の概略の処理手順を示すフローチャートである。図５を参照して、マイクロプロセッサ１００は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断する（ステップＳ２）。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム２３６およびシーケンス命令演算プログラム２３２によって実現される。制御開始の条件が成立していない場合（ステップＳ２においてＮＯの場合）には、ステップＳ２の判断が繰り返される。
【００９７】
制御開始の条件が成立している場合（ステップＳ２においてＹＥＳの場合）には、マイクロプロセッサ１００は、モーション制御に関する初期処理を実行する（ステップＳ４）。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などを算出処理が含まれる。続いて、マイクロプロセッサ１００は、第１サイクルでの指令値の算出処理を実行する（ステップＳ６）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ８）。
【００９８】
その後、マイクロプロセッサ１００は、次のモーション制御サイクルが到来するまで待つ（ステップＳ１０）。そして、マイクロプロセッサ１００は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断する（ステップＳ１２）。この制御終了の条件が成立しているとは、サーボモータ４が終了位置に到達している状態などをいう。制御終了の条件が成立している場合（ステップＳ１２においてＹＥＳの場合）には、ステップＳ２以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム２３４は、新たな制御開始の条件が成立するまで不活性の状態に維持される。
【００９９】
制御終了の条件が成立していない場合（ステップＳ１２においてＮＯの場合）には、マイクロプロセッサ１００は、現在のサイクルでの指令値の算出処理を実行する（ステップＳ１４）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ１６）。そして、ステップＳ１０以下の処理が繰り返される。
【０１００】
以下、ユーザが特別なモーション制御内容を必要とする例をいくつか挙げる。
［ｅ１：アプリケーション例１］
図６は、本発明の実施の形態に係るＣＰＵユニット１３のアプリケーション例１を示す模式図である。図６を参照して、アプリケーション例１として、長尺のシート材５０２をローラ５２０に巻き取るような巻き取り装置５００を想定する。この巻き取り装置５００では、シート材５０２に与えられる一定の張力を保ちつつローラ５２０に巻き取る。より具体的には、シート材５０２の送り出し側に配置されたテンションローラ５１４を用いて、シート材５０２に対して比較的小さい制動（摩擦力）を与えるとともに、ローラ５２０の駆動トルクτまたは回転速度ωを調整することによって、シート材５０２の張力が目的の値となるように制御される。
【０１０１】
巻き取り装置５００では、シート材５０２を巻き取るにつれてローラ５２０の巻き径ｒがしだいに大きくなる。一方で、ローラ５２０は、その回転軸と機械的に接続されたモータ５０４によって回転駆動される。本来的に制御すべき対象は、ローラ５２０の最外周面（巻き径ｒの位置）における張力Ｔであるが、制御可能な物理量としては、モータ５０４のトルクτまたは回転速度ωである。そして、このトルクτまたは回転速度ωと張力Ｔとの間の関係は、ローラ５２０の巻き径ｒに依存して変化する。より具体的には、ローラ５２０の巻き径ｒが大きくなるにつれて、トルク指令値を大きく変化させても張力Ｔが少ししか変化しないようになり、また、回転速度指令値を少し変化させるだけでも張力Ｔが大きく変化するようになる。
【０１０２】
そのため、モータ５０４のトルクまたは回転速度（すなわち、モータ５０４を駆動するためのドライバ５０６に与えるトルク指令値または回転速度指令値）は、ローラ５２０の巻き径に応じて変化させる必要がある。
【０１０３】
巻き取り装置５００においては、シート材５０２に生じている張力Ｔを検出し、この張力Ｔの検出値が目標値と一致するように、トルク指令値または速度指令値を算出する。この張力Ｔを検出する機構の一例として、ばねにより付勢された張力検出用ローラ５１２を設けて、空中を移動するシート材５０２に張力検出用ローラ５１２を押し当てる。するとシート材５０２が少したわんで、張力検出用ローラ５１２の押圧力（ばねが張力検出用ローラ５１２を下方に引っ張る力）とシート材５０２の張力による反発力（張力検出用ローラ５１２を上方に押し上げる力）とがつりあうところで張力検出用ローラ５１２が静止する。張力検出用ローラ５１２の位置は、シート材５０２の張力に応じて変化するので、この位置を位置センサ（ロータリーエンコーダ）５１０で検出する。検出された張力検出用ローラ５１２の位置は、ＰＬＣ１へ入力される。この張力検出用ローラ５１２の位置は、シート材５０２の張力Ｔの大きさに応じた値となる。
【０１０４】
ＰＬＣのＣＰＵユニット１３のマイクロプロセッサ１００は、ユーザプログラム２３６を実行することで、検出された張力検出用ローラ５１２の位置とローラ５２０を駆動するモータ５０４の現在のトルク値および速度値とを入力として、張力検出用ローラ５１２の位置に基づいてシート材５０２の張力Ｔを算出し、さらに、巻き取り装置５００の機械系に応じた演算を行うことで、算出した張力Ｔを目標値に近づけるために必要なトルク指令値または速度指令値を算出する。算出されたトルク指令値または速度指令値は、マイクロプロセッサ１００で実行されるモーション演算プログラム２３４へ送られる。
【０１０５】
なお、トルク指令値または速度指令値を算出する演算処理としては、近い過去において指令値（トルク指令値または速度指令値）をどれだけ変化させればどれだけの張力が変化したかという実績データを利用して、指令値と張力との関係を推定し、この推定した関係に基づいて、今回のサイクルにおける指令値（トルク指令値または速度指令値）を算出するというロジックを採用できる。
【０１０６】
あるいは、各サイクルにおけるローラ５２０の巻き径ｒを検出し、その検出結果に基づいて、指令値（トルク指令値または速度指令値）を算出してもよい。この巻き径ｒを検出する機構の一例として、ばねにより付勢された巻き径検出用ローラ５１６を設けて、ローラ５２０の中心側に巻き径検出用ローラ５１６を押し当てる。巻き径検出用ローラ５１６の位置は、ローラ５２０の巻き径に応じて変化するので、この位置を位置センサ５１８で検出する。
【０１０７】
マイクロプロセッサ１００は、モーション演算プログラム２３４およびそれに関連付けられている出力処理プログラム２１４を実行することにより、ユーザプログラム２３６から与えられた指令値（トルク指令値または速度指令値）を、フィールドネットワーク２を介して、モータ５０４を駆動するドライバ５０６へ出力する。
【０１０８】
図６に示すアプリケーションにおいては、モーション演算の実質的にすべての部分をユーザプログラム２３６が担当しており、モーション演算プログラム２３４は、ドライバ５０６に対する指令値の出力管理を担当している。
【０１０９】
［ｅ２：アプリケーション例２］
図７は、本発明の実施の形態に係るＣＰＵユニット１３のアプリケーション例２を示す模式図である。図７を参照して、アプリケーション例２として、一定の絵柄が繰り返し印刷されたシート材６０２を送りながら、絵柄の切れ目の位置でシート材６０２を切断する切断装置６００を想定する。この切断装置６００では、シート材６０２の切断に用いるカッター６０４を動かすモータ６０６の動作が制御される。より具体的には、ＰＬＣ１は、シート材６０２を送るローラ６１２，６１４が所定の角度分だけ回転するのに合わせてカッター６０４を上下させる電子カム動作を制御する。
【０１１０】
この電子カム動作を実行するにあたって、シート材６０２の絵柄に合わせて切断を開始するための初期位相を決定する必要がある。また、シート材６０２は張力や温度の変化によって伸縮するので、シート材６０２の伸縮があっても絵柄の切れ目で正しく切断できるように切断動作の位相と周期を調整しなければならない。
【０１１１】
図７に示すアプリケーション例２においては、シート材６０２に絵柄の印刷位置に関連付けてマーク６３０が印刷されている。シート材６０２の搬送経路上には、検出用のセンサ６１０（典型的には、光学センサ）が設けられており、このセンサ６１０を用いてこれらのマーク６３０の通過を検出する。
【０１１２】
また、シート材６０２を送るローラ６１４は、機械的に接続されたモータ６１８によって回転駆動される。モータ６１８は、モータドライバ６２２によって駆動される。また、ローラ６１４と機械的に接続されたモータ６１８には、その回転角度（回転位置）を検出するためのロータリーエンコーダ６２４が設けられている。ロータリーエンコーダ６２４で検出された回転角度（回転位置）は、ＰＬＣ１へ入力される。
【０１１３】
センサ６１０がマーク６３０の通過を検出したタイミングにおけるロータリーエンコーダ６２４での回転角度（回転位置）のそれぞれの検出値を保持しておき、前回保持された検出値と今回保持された検出値との差を算出することで、シート材６０２の伸縮も反映した各シート材６０２を切断すべき間隔を決定できる。
【０１１４】
ＰＬＣのＣＰＵユニット１３のマイクロプロセッサ１００は、ユーザプログラム２３６を実行することで、入力されるロータリーエンコーダ６２４での検出値およびセンサ６１０によるマーク６３０の検出値に基づいて、ローラ６１４の回転角度（回転位置）として示される切断タイミングの初期位相を算出するとともに、その後の各サイクルにおける位相および周期の補正値を周期的に算出する。算出された位相および周期の補正値は、マイクロプロセッサ１００で実行されるモーション演算プログラム２３４へ送られる。マイクロプロセッサ１００は、モーション演算プログラム２３４を実行することで、与えられた切断タイミングの初期位相、ならびに、位相および周期の補正値を反映してモータ６１８の動作を制御する。すなわち、モーション演算プログラム２３４の実行によって、モータドライバ６２２に対して、切断タイミングの初期位相、ならびに、位相および周期の補正値を反映したそれぞれの指令値が出力される。
【０１１５】
なお、シート材６０２の絵柄の位置を特定するために、カメラを有する視覚センサを用いてもよい。この場合には、その視野範囲がシート材６０２の絵柄を含むようにカメラを配置する。視覚センサでは、カメラによって撮像された画像と予め登録された絵柄を示すモデル画像との間でマッチング処理を行うことで、シート材６０２における絵柄の位置を特定する。そして、この特定された絵柄の位置に応じて、対応するロータリーエンコーダ６２４での検出値が取得される。
【０１１６】
［ｅ３：アプリケーション例３］
図８は、本発明の実施の形態に係るＣＰＵユニット１３のアプリケーション例３を示す模式図である。図８を参照して、アプリケーション例３として、搬送車７１０が直線状のレール７０２上を移動する搬送システム７００を想定する。搬送車７１０では、左右の駆動輪７１２，７２２がそれぞれ独立のモータ７１４，７２４で駆動される。
【０１１７】
直線状のレール７０２上を走行する以上、理想的には、左右の駆動輪７１２，７２２の回転量は互いに同じであるため、ＰＬＣ１からドライバ７１８，７２８に対して、モーション制御サイクルごとに左右同一の回転位置の指令値をそれぞれ与えればよい。しかしながら、搬送車７１０に搭載されている荷物の偏りやレール７０２の状態などによっては、片方の駆動輪のみが空転するような事態も生じ得る。
【０１１８】
たとえば、右側の駆動輪７２２だけが一時的にスリップして空回りしたとすると、それ以降、右側の駆動輪７２２に対する回転位置の指令値としては、空回りした回転量で補正した（空回り分を加算した）指令値を与える必要がある。このようなアプリケーションに対応するため、多軸合成位置決めと称されるモーション命令が用意される、このモーション命令は、主軸（たとえば、左側の駆動輪７１２）についての本来的な回転位置の指令値に対して、補助軸の値を加算して算出した位置を従軸（たとえば、右側の駆動輪７２２）の回転位置の指令値とする。
【０１１９】
マイクロプロセッサ１００は、ユーザプログラム２３６を実行することで、左右の駆動輪７１２，７２２の回転位置（左右の駆動輪７１２，７２２にそれぞれ設けられたロータリーエンコーダ７１６，７２６の出力）を一定周期で取得し、左右の駆動輪７１２，７２２の間における回転位置の差が予め設定されている許容範囲を超えているか否かを判断する。そして、マイクロプロセッサ１００は、回転位置の差が予め設定されている許容範囲を超えていれば、その許容範囲におさまるように補助軸の値（位置）を更新する。さらに、更新された補助軸の値（位置）は、マイクロプロセッサ１００で実行されるモーション演算プログラム２３４へ送られる。マイクロプロセッサ１００は、モーション演算プログラム２３４を実行することで、別途指定されたモーション命令に従って主軸の指令値をユーザプログラム実行サイクルごとに算出するとともに、与えられた最新の補助軸の値（位置）を用いて、主軸の指令値を補正することで従軸の指令値を算出する。それぞれの算出された指令値が対応するドライバ７１８および７２８へ出力される。
【０１２０】
＜Ｆ．全体処理動作（実施の形態１）＞
次に、本実施の形態に係る各プログラムの実行順序などについて、以下説明する。なお、本明細書においては、本発明に係る技術思想の具現化例として、実施の形態１〜４を例示する。
【０１２１】
［ｆ１：本実施の形態］
図９は、本発明の実施の形態１に係る全体処理動作を示すシーケンス図である。図９を参照して、本実施の形態に係るＰＬＣ１の実行中においては、マイクロプロセッサ１００が、少なくとも、ＩＯ処理プログラム２１８（出力処理プログラム２１４および入力処理プログラム２１６）と、ユーザプログラム２３６（第１のユーザプログラム）と、モーション演算プログラム２３４とが実行可能な状態になっている。厳密に言えば、リアルタイムＯＳ２００がそれぞれのプログラムに係るプロセス（または、スレッド）を実行可能な状態に保持しており、スケジューラプログラム２１２がリアルタイムＯＳ２００およびハードウェアリソース（システムタイマ１０８など）を利用することで、各プログラムが適切なタイミングかつ適切な順序で実行される。このように、それぞれのプログラムに係る実行の開始／中断／終了などは、スケジューラプログラム２１２によって制御されるが、図９においては、スケジューラプログラム２１２に係る処理については図示していない。
【０１２２】
図９に示すように、ＰＬＣ１の実行中においては、以下のようにシーケンスが進行する。
【０１２３】
（１）  フィールドネットワークコントローラ１４０がモーション制御用入力データを受信してフィールドネットワーク受信バッファ１０４６（図４）に当該入力データを格納、および／または、ＰＬＣシステムバスコントローラ１２０が、モーション制御用入力データを受信してＰＬＣシステムバス受信バッファ１０４４（図４）に当該入力データを格納する。
【０１２４】
（２）  ＩＯ処理プログラム２１８の命令に従って、フィールドネットワーク受信バッファ１０４６および／またはＰＬＣシステムバス受信バッファ１０４４に格納されているモーション制御用入力データがユーザプログラム２３６に係る作業領域（典型的には、制御プログラムの作業領域１０４２（図４）の一部）へ転送される。これにより、ユーザプログラム２３６がマイクロプロセッサ１００によって実行された際に、モーション制御用入力データへアクセスすることができる。
【０１２５】
（３）  ＩＯ処理プログラム２１８の命令に従って、フィールドネットワーク受信バッファ１０４６および／またはＰＬＣシステムバス受信バッファ１０４４に格納されているモーション制御用入力データがモーション演算プログラム２３４に係る作業領域（典型的には、制御プログラムの作業領域１０４２（図４）の一部）へ転送される。これにより、モーション演算プログラム２３４がマイクロプロセッサ１００によって実行された際に、モーション制御用入力データへアクセスすることができる。
【０１２６】
（４）  ユーザプログラム２３６の命令に従って、モーション制御用入力データを使用してユーザプログラム２３６の出力データが算出され、算出された出力データがモーション演算プログラム２３４に係る作業領域（典型的には、制御プログラムの作業領域１０４２（図４）の一部）へ転送される。これにより、モーション演算プログラム２３４がマイクロプロセッサ１００によって実行された際に、ユーザプログラム２３６の出力データへアクセスすることができる。
【０１２７】
（５）  モーション演算プログラム２３４の命令に従って、モーション制御用入力データおよびユーザプログラム出力データのうち、必要なデータを使用してモーション指令値が算出され、算出されたモーション指令値データがＩＯ処理プログラム２１８に係る作業領域（典型的には、制御プログラムの作業領域１０４２（図４）の一部）へ転送される。これにより、ＩＯ処理プログラム２１８がマイクロプロセッサ１００によって実行された際に、モーション演算プログラム２３４によって算出されたモーション指令値データへアクセスすることができる。
【０１２８】
（６）  ＩＯ処理プログラム２１８の命令に従って、モーション指令値データが出力される。より具体的には、制御プログラムの作業領域１０４２（図４）に格納されているモーション指令値データがフィールドネットワーク送信バッファ１０４５（図４）へ転送される。さらに、フィールドネットワーク送信バッファ１０４５へのデータ転送に続いて、フィールドネットワークコントローラ１４０がモーション指令値データをサーボモータドライバ３へ送信する。
【０１２９】
なお、上記の（１）の処理においては、ユーザプログラム２３６での演算には使用されるが、モーション演算プログラム２３４での演算には使用されない入力データについても入力され得る。また、ユーザプログラム２３６の実行により生成されるユーザプログラム出力データは、モーション演算プログラム２３４での演算には使用されない出力データであっても、ＩＯ処理プログラム２１８へ送られて、（６）の処理において出力される。
【０１３０】
本実施の形態に係る「モーション制御サイクル」は、モーション演算プログラム２３４の実行および通信の周期、すなわち、サーボモータドライバ３へモーション指令値データを与える周期で実行される一連の処理のサイクルである。このとき、図９に示すように、１つのモーション制御サイクルの範囲（開始から終了まで）は、図９の右側に示したＡ，Ｂ，Ｃのいずれによって把握してもよい。すなわち、モーション制御サイクルとは、特定のプログラムの開始タイミングおよび／または終了タイミングによって定義されるものではなく、単に、モーション演算プログラム２３４の１回の実行を含む処理のサイクルである。一例として、図９の左側には、図９の右側に示したＡの区切り方で見た場合の、モーション制御サイクル１〜３（３サイクル分）を示す。
【０１３１】
図９に示すように、モーション制御サイクルの区切り方がＡ，Ｂ，Ｃのいずれであるかにかかわらず、スケジューラプログラム２１２は、マイクロプロセッサ１００に、モーション制御サイクルごとにモーション演算プログラム２３４の実行を開始させる命令と、マイクロプロセッサ１００に、ユーザプログラム実行サイクル（この例では、モーション制御サイクルに一致している）ごとにユーザプログラム２３６（第１のユーザプログラム）の実行を開始させる命令とを含む。さらに、スケジューラプログラム２１２は、ＩＯ処理（出力処理および入力処理）、ユーザプログラム２３６の実行開始、ユーザプログラム２３６の実行終了、ならびに、モーション演算プログラム２３４の実行開始を、この順序で、ユーザプログラム実行サイクルの周期に相当する周期で繰り返すための命令を含む。ただし、その命令による一連の処理のサイクルとユーザプログラム実行サイクルとの間で、サイクルの位相（サイクルの開始タイミング）が一致するとは限らない。
【０１３２】
図９に示すＩＯ処理においては、出力処理プログラム２１４の命令に従って出力処理が先に実行され、続いて、入力処理プログラム２１６の命令に従って入力処理が実行されるようになっているが、この出力処理と入力処理との実行順序は、逆であってもよいし、可能であれば、並列的に行われてもよい。
【０１３３】
図９に示すように、ＰＬＣ１のＣＰＵユニット１３は、モーション指令値データの出力処理およびモーション制御用入力データの入力処理（ＩＯ処理）と、モーション演算プログラム２３４の実行とを一定周期のモーション制御サイクルごとに繰り返し可能に構成されている。さらに、ＰＬＣ１のＣＰＵユニット１３は、ユーザにおける制御目的に応じて作成され、モーション演算プログラム２３４に対してその実行に必要な指示を与える処理を含むユーザプログラム２３６を、モーション制御サイクルの周期の整数倍の周期のユーザプログラム実行サイクルごとに繰り返し実行可能に構成されている。
【０１３４】
また、ＣＰＵユニット１３に含まれる通信回路（ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０）は、モーション制御サイクルごとに、出力処理の少なくとも一部としてモーション指令値データの送信、および、入力処理の少なくとも一部としてモーション制御用入力データの受信を行う。
【０１３５】
本実施の形態によれば、入力処理の開始（図９に示す（１）の処理）から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理（図９に示す（６）の処理）までに要する時間を、ユーザプログラム実行サイクルの周期に相当する、より短い時間とすることができる。
【０１３６】
図９に示す例では、ユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期に等しい。このようにそれぞれの周期を設定することで、モーション演算プログラム２３４の実行ごとに、更新されたユーザプログラム出力データを使用してモーション指令値データを算出することができる。すなわち、毎回の出力処理ごとにそのように更新されたモーション指令値データを出力することができる。
【０１３７】
図９に示す例において、モーション制御サイクルの区切り方をＡとした場合については、スケジューラプログラム２１２は、モーション制御サイクル内において、出力処理および入力処理（ＩＯ処理）の後に、マイクロプロセッサ１００に、ユーザプログラム２３６およびモーション演算プログラム２３４をこの順に実行させるための命令を含むことになる。この場合には、モーション制御サイクル内において、ユーザプログラム２３６およびモーション演算プログラム２３４の実行に先行してモーション制御に関する出力処理および入力処理（ＩＯ処理）を行うことができ、これによって、これらの入出力のための通信周期のばらつきを少なくできる。よって、モータの運動をより高精度に制御することができる。
【０１３８】
［ｆ２：比較例］
次に、本実施の形態に係るスケジューラプログラム２１２による効果を説明するために、図９に示すシーケンスとはプログラムの実行順序を異ならせた場合のシーケンスについて比較例として説明する。
【０１３９】
図１０は、図９に示す全体処理動作に関する比較例における全体処理動作を示すシーケンス図である。上述の図９においては、「ＩＯ処理プログラム２１８」、「ユーザプログラム２３６」、「モーション演算プログラム２３４」の順序でそれぞれのプログラムが実行される例を示したが、図１０には、比較例として、「ＩＯ処理プログラム２１８」、「モーション演算プログラム２３４」、「ユーザプログラム２３６」の順序でそれぞれのプログラムが実行される例を示す。
【０１４０】
図１０に示すような比較例に係るプログラムの実行順序を採用した場合には、入力処理の開始（図１０に示す（１）の処理）から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理（図１０に示す（６’）の処理）までには、ユーザプログラム２３６の実行サイクルの２周期分に相当する時間を要する。その結果、図９に示すプログラムの実行順序に比較して、ユーザプログラム実行サイクルの１周期分の時間だけ制御が遅れることになる。
【０１４１】
より具体的には、図１０に示す比較例における（１）〜（６）の処理の説明は、図９の（１）〜（６）の処理の説明と同じである。図１０における（１’）〜（６’）の処理の説明も、図９の（１）〜（６）の処理の説明と同じである。図１０に示すシーケンスでは、（１）〜（６）の処理にユーザプログラム実行サイクルの周期よりもモーション制御サイクル１周期分だけ長い時間がかかる。そして、（１）〜（６）の処理の途中で（１’）〜（６’）の処理が始まる。
【０１４２】
このように、（１）〜（６）の処理および（１’）〜（６’）の処理が並行して進められることから、図１０に示すシーケンスにおいては、モーション制御サイクル２におけるモーション演算プログラム２３４の実行時（Ｍ２）に、モーション制御用入力データの取扱いが複雑化するという問題も生じる。たとえば、モーション制御サイクル２におけるモーション演算プログラム２３４の実行時（Ｍ２）においては、モーション制御用の新たな入力データの入力処理（図１０に示す（１’）の処理）は、モーション演算プログラム２３４の実行時（Ｍ２）より前に完了する。そのため、モーション演算プログラム２３４の実行時（Ｍ２）には、本来使用すべきモーション制御用入力データ（図１０に示す（３）の処理によって転送された入力データ）に加えて、使用すべきではない、モーション制御用の新たな入力データ（図１０に示す（３’’）の処理によって転送された入力データ）が作業領域に保持されることになる。そのため、モーション演算プログラム２３４の実行時（Ｍ２）において、本来使用すべき入力データが使用され、新たな入力データが使用されないように管理する仕組みが必要になり、処理が複雑化する。
【０１４３】
以上のように、図９に示す本実施の形態に係る実行順序でそれぞれのプログラムを実行させることで、図１０に示すシーケンスにおいて生じるような問題を回避できるとともに、制御周期をより高速化できる。
【０１４４】
＜Ｇ．全体処理動作（実施の形態２）＞
上述の実施の形態１においては、ＩＯ処理プログラム２１８、ユーザプログラム２３６、およびモーション演算プログラム２３４の実行順序に着目して説明したが、１つのモーション制御サイクル内において、これらのプログラムをすべて実行したとしても、他の処理を実行できる場合もある。そこで、実施の形態２においては、上述のプログラムに加えて、他の処理を実行する処理動作について説明する。
【０１４５】
図１１は、本発明の実施の形態２に係る全体処理動作を示すシーケンス図である。図１１を参照して、本実施の形態においては、ＩＯ処理プログラム２１８の実行終了からユーザプログラム２３６の実行開始までの間に「他の処理Ｐ」が実行される。また、ユーザプログラム２３６の実行終了からモーション演算プログラム２３４の実行開始までの間に「他の処理Ｑ」が実行される。さらに、モーション演算プログラム２３４の実行終了からＩＯ処理プログラム２１８の実行開始までの間に「他の処理Ｒ」が実行される。
【０１４６】
「他の処理Ｐ」、「他の処理Ｑ」、「他の処理Ｒ」の処理内容については、ユーザプログラム２３６およびモーション演算プログラム２３４の正常な実行を阻害するものでない限り、どのような処理であってもよい。より具体的には、「他の処理」としては、その他のシステムプログラム２２０（図３）の実行などが想定される。このその他のシステムプログラム２２０の処理内容としては、たとえば、入力データおよび／または出力データのロギング、故障診断、ＰＬＣサポート装置８との通信、ならびに、上位コンピュータとのＬＡＮを経由する通信（本実施の形態に係るＣＰＵユニット１３がイーサネット（登録商標）を介する上位コンピュータとの通信機能を有している場合）などが考えられる。
【０１４７】
さらに、ユーザプログラム２３６に含まれるシーケンス演算に関する入力処理および出力処理については、ＩＯ処理プログラム２１８を実行する中で、モーション制御用入力データの入力処理およびモーション指令値データの出力処理とともに行ってもよいが、それとは別のタイミングで、いずれかの「他の処理」として行ってもよい。
【０１４８】
また、「他の処理」がモーション制御サイクルの最後に実行される場合には、「他の処理」の内容は、次のモーション制御サイクルが開始されるまで待機しているアイドリングであってもよい。
【０１４９】
図１１には、３種類の「他の処理」が実行される処理例を示すが、この「他の処理」の数についても特に制限されるものではなく、たとえば、「他の処理」のうちの１つまたは２つだけが存在するようにしてもよい。あるいは、単一の「他の処理」の中で、複数の種類の処理を順次実行するようにしてもよい。
【０１５０】
図１１に示すシーケンスにおいて、１つのモーション制御サイクルの範囲（開始から終了まで）としては、「ＩＯ処理プログラム２１８」、「ユーザプログラム２３６」、「モーション演算プログラム２３４」の処理開始タイミングをそれぞれ区切りとするＡ，Ｂ，Ｃのほか、いずれかの「他の処理」の処理開始タイミングを区切りとするＡ’，Ｂ’，Ｃ’がありうる。
【０１５１】
＜Ｈ．全体処理動作（実施の形態３）＞
ユーザにおける制御目的に応じて作成されるユーザプログラムに対して異なる優先度を設定できるようにすることも実用的である。そこで、実施の形態３においては、より高い優先度を設定されたユーザプログラムと、より低い優先度を設定されたユーザプログラム（以下「低優先ユーザプログラム」とも称す。）とが存在する場合の処理動作について説明する。また、本実施の形態においては、低優先ユーザプログラムとの対比上、図１１に示されるユーザプログラム２３６に相当するプログラムを「高優先ユーザプログラム２３６−１」とも称す。
【０１５２】
図１２は、本発明の実施の形態３に係る全体処理動作を示すシーケンス図である。図１２に示すシーケンスは、図１１に示すシーケンスにおいて、「他の処理Ｐ」および「他の処理Ｑ」が存在せず、かつ、「他の処理Ｒ」として低優先ユーザプログラム２３６−２（第２のユーザプログラム）が実行される場合に相当する。
【０１５３】
高優先ユーザプログラム２３６−１は、モーション演算プログラム２３４での演算に使用されるユーザプログラム出力データを、モーション制御用入力データを使用して算出する命令を含む。高優先ユーザプログラム２３６−１は、さらにモーション命令を含む。このモーション命令は、モーション演算プログラム２３４に対して実行に必要なパラメータを与えて実行開始を指示するための命令を含む。たとえば、ユーザは、検出スイッチ６（図１）の状態を表す入力データに基づいてある条件が成立した場合に、モーション命令を実行するようにプログラムすることができる。
【０１５４】
低優先ユーザプログラム２３６−２は、モーション制御用入力データを使用してユーザプログラム出力データを算出する命令を含まない。典型的には、低優先ユーザプログラム２３６−２は、モーション制御に比較して遅い制御で足りる部分の処理内容を含む。
【０１５５】
低優先ユーザプログラム２３６−２についても、ユーザプログラム２３６（図３）と同様に不揮発性メモリ１０６（図２）に格納されており、実行時にはメインメモリ１０４内に割当てられる各種のプログラム領域１０４１（図４）にコピーされる。
【０１５６】
上述したように、低優先ユーザプログラム２３６−２は比較して遅い制御で足りる部分の処理内容で構成されるので、低優先ユーザプログラム２３６−２の実行サイクルの周期は、モーション制御サイクルの周期の２以上の整数倍の周期に設定される。一例として、図１２に示すシーケンスにおいては、低優先ユーザプログラム２３６−２の実行サイクルの周期は、モーション制御サイクルの周期の４倍に設定される。そのため、低優先ユーザプログラム２３６−２は、図１２に示すモーション制御サイクル１〜４を、１つの実行サイクルとみなして実行される。
【０１５７】
説明の便宜上、図１２に示すシーケンス図においては、上述の図９〜図１１とは異なり、スケジューラプログラム２１２の動作タイミングを示すとともに、ＩＯ処理プログラム２１８を出力処理プログラム２１４と入力処理プログラム２１６とに区分して示す。さらに、図１２に示すシーケンス図においては、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０の動作タイミングについても示している。
【０１５８】
本実施の形態においては、高優先ユーザプログラム２３６−１およびモーション演算プログラム２３４は、モーション制御スレッドと称される１つのスレッドに含まれる形で実装される。そのため、高優先ユーザプログラム２３６−１とモーション演算プログラム２３４とは、スケジューラプログラム２１２による制御を介さず連続して実行される。しかしながら、モーション演算プログラム２３４についても、モーション制御スレッド全体の実行制御を介して、スケジューラプログラム２１２に実行制御されているとみなすことができる。
【０１５９】
本実施の形態においては、高優先ユーザプログラム２３６−１とモーション演算プログラム２３４とは常に連続して実行されるので、モーション命令は、高優先ユーザプログラム２３６−１にのみ含まれるようにし、低優先ユーザプログラム２３６−２にはモーション命令を含まないように構成するのが、制御動作の理解を容易にする上で好ましい。
【０１６０】
さらに、図１２に示す、出力処理プログラム２１４、入力処理プログラム２１６、高優先ユーザプログラム２３６−１、および、モーション演算プログラム２３４を、１つのモーション制御スレッドに含まれる形で実装してもよい。この場合には、これらのプログラムの実行順序についてはスケジューラプログラム２１２による関与を無くし、スケジューラプログラム２１２はこのモーション制御スレッドの起動のみを制御するようにしてもよい。この場合でも、スケジューラプログラム２１２は、モーション制御スレッドの実行開始タイミングを制御することによって、モーション制御スレッドに含まれるそれぞれのプログラムの実行を開始させる処理を行っているとみなすことができる。
【０１６１】
すなわち、本実施の形態においては、スケジューラプログラム２１２が何らかのプログラムの実行を開始させるということは、そのプログラムの実行を個別に開始させることには必ずしも限定されない。
【０１６２】
出力処理プログラム２１４、入力処理プログラム２１６、モーション制御スレッド（高優先ユーザプログラム２３６−１およびモーション演算プログラム２３４）、ならびに、低優先ユーザプログラム２３６−２には、それぞれ優先度が与えられている。これらのプログラムおよびスレッドに与えられている優先度は、たとえば、高い方から、出力処理プログラム２１４、入力処理プログラム２１６、モーション制御スレッド、低優先ユーザプログラム２３６−２の順である。
【０１６３】
スケジューラプログラム２１２は、各モーション制御サイクル内において、優先度の高いプログラム／スレッドから順に、マイクロプロセッサ１００に実行させる。以下、「マイクロプロセッサ１００に実行させる」ことを単に「実行する」とも表現する。
【０１６４】
スケジューラプログラム２１２は、それ自体がオブジェクトインスタンスである場合に限らず、他の各種オブジェクトインスタンス（たとえば、出力処理プログラム２１４）に組込まれて動作するプログラム（プロセス）であってもよい。たとえば、他のオブジェクトインスタンスにおいて呼び出されて動作するプログラムであってもよい。
【０１６５】
図１２に示される符号ＰおよびＸは、それぞれシステムタイマ１０８（図２）から一定周期ごとに発生される割り込み信号を示す。具体的には、「Ｐ」は出力準備割り込みを示し、「Ｘ」はフィールドネットワーク送信割り込みを示す。なお、図１２には、割り込みを示す符号「Ｐ」および「Ｘ」に、モーション制御サイクルの番号を示す数字を付加して表現する。
【０１６６】
（ｈ１：モーション制御サイクル１について）
スケジューラプログラム２１２は、出力準備割り込み（Ｐ−１）に応答して、優先度に従って、まず出力処理プログラム２１４を実行する。
【０１６７】
出力処理プログラム２１４は、ＰＬＣシステムバス１１を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域１０４２（図４）からＰＬＣシステムバス送信バッファ１０４３へコピーする。また、出力処理プログラム２１４は、フィールドネットワーク２を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域１０４２からフィールドネットワーク送信バッファ１０４５へコピーする。出力データは、モーション演算プログラム２３４の実行結果であるモーション指令値データ、および、ユーザプログラム２３６の実行結果であるその他の出力データを含む。
【０１６８】
続いて、出力処理プログラム２１４は、ＰＬＣシステムバス送信バッファ１０４３への出力データのコピーが完了すると、ＰＬＣシステムバスコントローラ１２０に対して送信実行を指示する（符号Ａ）。そして、出力処理プログラム２１４は、出力データのコピーがすべて完了すると、いったん実行を停止する。
【０１６９】
その後、スケジューラプログラム２１２は、フィールドネットワーク送信割り込み（Ｘ−１）に応答して、出力処理プログラム２１４の実行を再開する。
【０１７０】
出力処理プログラム２１４は、実行を再開すると、フィールドネットワークコントローラ１４０に対して送信実行を指示する（符号Ｂ）。そして、出力処理プログラム２１４は、自身の実行を終了する。
【０１７１】
スケジューラプログラム２１２は、出力処理プログラム２１４の実行が終了すると、優先度に従って、次に入力処理プログラム２１６を実行する。
【０１７２】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０からの受信完了通知（符号Ｃ）、または、フィールドネットワークコントローラ１４０からの受信完了通知（符号Ｄ）を受信するまで待機する。図１２では、一例として、ＰＬＣシステムバスコントローラ１２０からの受信完了通知（符号Ｃ）が先に発生し、続いて、フィールドネットワークコントローラ１４０からの受信完了通知（符号Ｄ）が発生している例を示すが、この発生順序は逆になる場合もある。
【０１７３】
入力処理プログラム２１６は、受信完了通知（符号ＣまたはＤ）が発生すると、いずれの受信完了通知であるかに対応して、ＰＬＣシステムバス受信バッファ１０４４またはフィールドネットワーク受信バッファ１０４６から制御プログラムの作業領域１０４２に入力データをコピーする。入力データは、モーション制御用入力データ、および、ユーザプログラム２３６の実行に必要なその他の入力データを含む。
【０１７４】
入力処理プログラム２１６は、入力データのコピーが完了すると、実行を終了する。
スケジューラプログラム２１２は、入力処理プログラム２１６の実行が終了すると、優先度に従って、次にモーション制御スレッドを実行する。すなわち、ユーザプログラム２３６が実行を開始する。
【０１７５】
ユーザプログラム２３６は、モーション制御用入力データを使用してユーザプログラム出力データを算出する。また、ユーザプログラム２３６は、その他の出力データを生成する。ユーザプログラム２３６の実行終了に伴いモーション演算プログラム２３４が実行を開始する。モーション演算プログラム２３４は、モーション制御用入力データおよびユーザプログラム出力データのうち、必要なデータを使用してモーション指令値データを算出する。
【０１７６】
スケジューラプログラム２１２は、モーション演算プログラム２３４の実行が終了すると、優先度に従って、最後に低優先ユーザプログラム２３６−２を実行する。この低優先ユーザプログラム２３６−２の実行は、次のモーション制御サイクルの出力準備割り込み（Ｐ−２）に応答して中断される。
【０１７７】
本実施の形態における出力準備割り込み（Ｐ）のように、実行中の処理を中断させて新しく一連の処理を開始させるトリガとなる一定周期の割り込みが存在する場合には、そのような割り込みを制御サイクルの区切りとして把握することが好ましい。
【０１７８】
（ｈ２：ＰＬＣシステムバスコントローラ１２０の動作について）
ＰＬＣシステムバスコントローラ１２０のＤＭＡ制御回路１２２は、送信実行指示（符号Ａ）に応答して、メインメモリ１０４のＰＬＣシステムバス送信バッファ１０４３に格納されている出力データをＰＬＣシステムバスコントローラ１２０のバッファメモリ１２６へ転送する。
【０１７９】
バッファメモリ１２６への出力データの転送が完了すると、ＰＬＣシステムバス制御回路１２４は、バッファメモリ１２６から各出力データの宛先となっているユニットに対して対象の出力データを転送する。その後、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１上の各ユニットから入力データをＰＬＣシステムバスコントローラ１２０のバッファメモリ１２６へ転送する。
【０１８０】
バッファメモリ１２６への入力データの転送が完了すると、ＰＬＣシステムバスコントローラ１２０のＤＭＡ制御回路１２２は、バッファメモリ１２６に格納されている入力データをメインメモリ１０４のＰＬＣシステムバス受信バッファ１０４４へ転送する。その後、入力データの転送が完了すると、ＤＭＡ制御回路１２２は、受信完了通知（符号Ｃ）をマイクロプロセッサ１００に対して送信する。
【０１８１】
（ｈ３：フィールドネットワークコントローラ１４０の動作について）
フィールドネットワークコントローラ１４０のＤＭＡ制御回路１４２は、送信実行指示（符号Ｂ）に応答して、メインメモリ１０４のフィールドネットワーク送信バッファ１０４５に格納されている出力データをフィールドネットワークコントローラ１４０のバッファメモリ１４６へ転送する。
【０１８２】
バッファメモリ１４６への出力データの転送が完了すると、フィールドネットワーク制御回路１４４は、バッファメモリ１４６から各出力データの宛先となっている装置に対して出力データを転送する。その後、フィールドネットワーク制御回路１４４は、フィールドネットワーク２上の各装置から入力データをフィールドネットワークコントローラ１４０のバッファメモリ１４６へ転送する。
【０１８３】
バッファメモリ１４６への入力データの転送が完了すると、フィールドネットワークコントローラ１４０のＤＭＡ制御回路１４２は、バッファメモリ１４６に格納されている入力データをメインメモリ１０４のフィールドネットワーク受信バッファ１０４６へ転送する。その後、入力データの転送が完了すると、ＤＭＡ制御回路１４２は、受信完了通知（符号Ｄ）をマイクロプロセッサ１００に対して送信する。
【０１８４】
以上の動作は、フィールドネットワーク２の種類を問わず妥当するが、フィールドネットワーク２が本実施の形態で採用するＥｔｈｅｒＣＡＴ（登録商標）である場合は、さらに次のような処理が実行される。
【０１８５】
すなわち、ＥｔｈｅｒＣＡＴ（登録商標）では、単一のフレームに、各ユニット宛の出力データおよび各ユニットからの入力データが含まれる。マスタに設定されるＣＰＵユニット１３からフレームが送信されると、送信されたフレームはデイジーチェーン接続されたそれぞれのユニットを経由して順次転送される。なお、ＣＰＵユニット１３以外のそれぞれのユニットは、スレーブに設定される。フレームが末端のユニットに到達すると、そこで当該フレームは全二重の通信路を折り返して再びスレーブであるそれぞれのユニットを経由してＣＰＵユニット１３に戻る。各スレーブにおいては、往路のフレームをＦＩＦＯ（First In First Out）方式で通過させながら、自スレーブ宛の出力データを選択的に取り込むとともに、自ユニットで発生した入力データをフレームの適切な位置に書き込む。各スレーブは、帰路のフレームについては、出力データの読み出し、および、入力データの書き込みは行わずに通過させる。
【０１８６】
このように、ＥｔｈｅｒＣＡＴ（登録商標）の場合は、各ユニットに対して個別にフレームを送信し、あるいは、各ユニットからフレームを個別に受信するのではなく、単一のフレームを送信および受信することが、フィールドネットワーク制御回路１４４による、バッファメモリ１４６から各ユニットへの出力データの転送、および、各ユニットからバッファメモリ１４６への入力データの転送に相当する。
【０１８７】
フィールドネットワーク２としてＥｔｈｅｒＣＡＴ（登録商標）を用いる場合は、出力データを含むフレームを送信し、そのフレームがスレーブのそれぞれのユニットを経由して戻ってきた場合には、そのフレームに入力データが含まれることになる。そのため、実行順序については、出力処理の後に入力処理を実行することが自然である。但し、使用するフィールドネットワーク２の種類によっては、入力処理の後に出力処理を実行する方が好ましい場合がある。このように、出力処理と入力処理との順序は、フィールドネットワーク２などの仕様に応じて適宜に設計すればよい。
【０１８８】
（ｈ４：モーション制御サイクル２〜４について）
基本的には、モーション制御サイクル２〜４における動作は、モーション制御サイクル１における動作と同様である。以下では、主として、モーション制御サイクル１における動作と相違する点について説明する。
【０１８９】
モーション制御サイクル２では、スケジューラプログラム２１２は、モーション演算プログラム２３４の実行が終了すると、低優先ユーザプログラム２３６−２の未実行の部分を実行する。この低優先ユーザプログラム２３６−２の実行は、次のモーション制御サイクルの出力準備割り込み（Ｐ−２）に応答して再び中断される。
【０１９０】
モーション制御サイクル３においても、スケジューラプログラム２１２は、モーション演算プログラム２３４の実行が終了すると、低優先ユーザプログラム２３６−２の未実行の部分を実行する。図１２に示すシーケンスにおいては、低優先ユーザプログラム２３６−２がモーション制御サイクル３内で実行を終了する例を示す。この場合には、低優先ユーザプログラム２３６−２の実行終了から、次のモーション制御サイクルの出力準備割り込み（Ｐ−３）までは待機時間となる。
【０１９１】
モーション制御サイクル４においては、モーション制御サイクル１から始まった低優先ユーザプログラム２３６−２のユーザプログラム実行サイクルはまだ継続しているが、低優先ユーザプログラム２３６−２の未実行の部分がないので、スケジューラプログラム２１２は、モーション演算プログラム２３４の実行終了後に実行させるべきプログラムがないと判断し、次のモーション制御サイクルの出力準備割り込み（Ｐ−４）までの間は待機時間となる。
【０１９２】
なお、スケジューラプログラム２１２が実行制御するプログラムについての待機時間において、リアルタイムＯＳの制御を利用して、その他のシステムプログラム２２０（図３）を実行してもよい。
【０１９３】
モーション制御サイクル５以降では、モーション制御サイクル１〜４と同様の動作が繰り返される。
【０１９４】
（ｈ５：まとめ）
本実施の形態においては、スケジューラプログラム２１２は、不揮発性メモリ１０６（図２）に低優先ユーザプログラム２３６−２（第２のユーザプログラム）が格納されている場合に、低優先ユーザプログラム２３６−２の実行サイクル（ユーザプログラム実行サイクル）内において、マイクロプロセッサ１００に、最初のモーション演算プログラム２３４の実行終了からモーション制御サイクル終了までの余剰時間に低優先ユーザプログラム２３６−２の実行を開始させるとともに、その後のモーション制御サイクルにおけるモーション演算プログラム２３４の実行終了後の余剰時間に、低優先ユーザプログラム２３６−２の未実行の部分があるときには、マイクロプロセッサ１００に、その未実行の部分の実行を開始させる。
【０１９５】
本実施の形態に係るＰＬＣ１のように、異なる優先度を設定し、それぞれ異なる実行サイクルでユーザプログラムを実行させることで、以下のような作用効果を奏する。すなわち、高優先ユーザプログラム２３６−１には、モーション演算プログラム２３４での演算に使用されるユーザプログラム出力データを、モーション制御用入力データを使用して算出する命令を含ませる。一方、低優先ユーザプログラム２３６−２には、高優先ユーザプログラム２３６−１に含まれる以外の処理の全部または一部を実現するための命令を含ませる。そうすると、高優先ユーザプログラム２３６−１にすべての処理を実現させるための命令を含ませる場合にくらべて高優先ユーザプログラム２３６−１に割り当てられる処理量が少なくなるため、高優先ユーザプログラム２３６−１の実行時間を短くすることができる。そのため、モーション制御サイクルの周期をより短縮できる可能性が生じる。
【０１９６】
その結果、より短い周期のモーション制御サイクル内でのモーション指令値データの出力処理およびモーション制御用入力データの入力処理、高優先ユーザプログラム２３６−１の実行、ならびに、モーション演算プログラム２３４の実行を適切に行うことが可能になる。
【０１９７】
（ｈ６：変形例）
図１２に示すシーケンスにおいては、フィールドネットワークコントローラ１４０がスケジューラプログラム２１２からの送信実行の指示を受ける（符号Ｂ）ように構成される例を示す。これに代えて、フィールドネットワークコントローラ１４０がシステムタイマ１０８からの割り込み信号を直接受けて送信実行するようにしてもよい。
【０１９８】
出力処理プログラム２１４および入力処理プログラム２１６の命令に従うデータのコピーを行うことなく、ユーザプログラム２３６および／またはモーション演算プログラム２３４が、フィールドネットワーク送信バッファ１０４５および／またはフィールドネットワーク受信バッファ１０４６に直接アクセスするようにしてもよい。
【０１９９】
ＰＬＣシステムバス１１を介したデータの出処理および入力処理についても、スケジューラプログラム２１２から独立して実行されるように構成してもよい。したがって、ＣＰＵユニット１３を、スケジューラプログラム２１２とは独立して、出力処理および入力処理を実行するように構成することも可能である。すなわち、スケジューラプログラム２１２が出力処理および入力処理の実行を開始させることは必ずしも必要ではない。
【０２００】
この場合には、たとえば、出力準備割り込み（Ｐ）があってから受信完了通知（符号ＣおよびＤ）があるまでは、マイクロプロセッサ１００がメインメモリ１０４のそれぞれの送信バッファおよび受信バッファに対してアクセスしないように構成することが好ましい。
【０２０１】
＜Ｉ．全体処理動作（実施の形態４）＞
上述の実施の形態１においては、ユーザプログラム２３６の実行サイクル（ユーザプログラム実行サイクル）の周期がモーション制御サイクルの周期と一致している処理例について説明した。これに対して、実施の形態４においては、ユーザプログラム実行サイクルの周期がモーション制御サイクルの周期の２以上の整数倍である場合の処理例について説明する。
【０２０２】
［ｉ１：本実施の形態］
図１３は、本発明の実施の形態４に係る全体処理動作を示すシーケンス図である。図１３に示すシーケンスにおいては、ユーザプログラム実行サイクルの周期がモーション制御サイクルの周期の２倍である場合を示す。なお、ＩＯ処理プログラム２１８およびモーション演算プログラム２３４の実行サイクルの周期は、モーション制御サイクルの周期と一致している。
【０２０３】
図１３に示す（１）〜（６）の処理は、図９に示す（１）〜（６）の処理にそれぞれ同様であるので、以下では、主として、図９に示すシーケンスと相違する点について説明する。
【０２０４】
すなわち、図１３に示すシーケンスのモーション制御サイクル１内でのモーション演算プログラム２３４の実行開始時には、モーション制御用入力データを使用して算出されるユーザプログラム出力データ（（４）の処理）がまだ存在しないので、モーション演算プログラム２３４の命令に従って、モーション制御用入力データ（（３）の処理）のみを使用してモーション指令値データが算出される。この算出されたモーション指令値データはＩＯ処理プログラム２１８に係る作業領域へ転送される（（７）の処理）。さらに、ＩＯ処理プログラム２１８の命令に従って、当該転送されたモーション指令値データが出力される（（８）の処理）。
【０２０５】
その後、フィールドネットワークコントローラ１４０が新たなモーション制御用入力データを受信してフィールドネットワーク受信バッファ１０４６（図４）に当該新たな入力データを格納、および／または、ＰＬＣシステムバスコントローラ１２０が、新たなモーション制御用入力データを受信してＰＬＣシステムバス受信バッファ１０４４（図４）に当該新たな入力データを格納する（（９）の処理）。続いて、ＩＯ処理プログラム２１８の命令に従って、フィールドネットワーク受信バッファ１０４６および／またはＰＬＣシステムバス受信バッファ１０４４に格納されている新たなモーション制御用入力データがモーション演算プログラム２３４に係る作業領域へ転送される（（１０）の処理）。
【０２０６】
そして、シーケンスのモーション制御サイクル２において、モーション演算プログラム２３４の命令に従って、新たなモーション制御用入力データ（（１０）の処理）およびユーザプログラム出力データ（（４）の処理）のうち、必要なデータを使用してモーション指令値が算出される。そして、算出されたモーション指令値データがＩＯ処理プログラム２１８に係る作業領域へ転送される。最終的に、算出されたモーション指令値データは、ＩＯ処理プログラム２１８の命令に従って出力される（（５）および（６）の処理）。
【０２０７】
図１３に示すように、ユーザプログラム実行サイクルの周期は、モーション制御サイクルの周期と一致させる必要はなく、一般的には、モーション制御サイクルの周期の２以上の整数倍とすることもできる。
【０２０８】
本実施の形態によれば、ユーザプログラム２３６の実行周期よりも短い制御周期で、更新後のモーション指令値データを出力することができる。この場合には、モーション制御用入力データを使用してユーザプログラム２３６によって算出されるユーザプログラム出力データを反映してモーション指令値データの更新をすることは、ユーザプログラム実行サイクルごとにしかできない。しかしながら、そのような反映ができないモーション制御サイクルであっても、モーション指令値データを更新して出力することにより、モータの運動をより滑らかに制御できる場合がある。
【０２０９】
たとえば、本実施の形態は、上述したアプリケーション例３（図８）への適用に好適である。搬送車７１０の駆動輪に関する、主軸の指令値と従軸の指令値とについては、更新された指令値がモーション制御サイクルごとに出力されることになる。一方、主軸の指令位置と従軸の指令値との間に偏差（補正値）を与える補助軸の位置は、ユーザプログラム実行サイクルごとに更新されることになる。この場合、補助軸の位置の更新周期は、主軸に対する指令値および従軸に対する指令値の更新周期よりも長くなるが、アプリケーション例３の場合は、このことはあまり問題とはならず、むしろ、指令値の更新周期が短いことが利点となり、さらに指令値の更新周期よりは長い周期ではあるが補助軸を用いた従軸に対する指令値の補正もできることが利点となる。
【０２１０】
図１３に示すシーケンスにおいても、実施の形態１（図９）と同様に、モーション制御サイクルの範囲の区切り方をＡ，Ｂ，Ｃのいずれとしてもよい。なお、ＡまたはＢの区切り方を採用した場合には、各モーション制御サイクルの途中でユーザプログラム２３６の実行を中断し、モーション演算プログラム２３４の実行を開始するための実行制御（典型的には、割り込み信号を用いる）を実装する必要がある。
【０２１１】
Ｃの区切り方を採用した場合には、ユーザプログラム実行サイクルをより短縮できる可能性がある。すなわち、Ｃの区切り方によれば、スケジューラプログラム２１２が、ユーザプログラム実行サイクル（たとえば、図１３のＴ１からＴ３まで）内において、マイクロプロセッサ１００に、モーション演算プログラム２３４の実行、出力処理および入力処理、ユーザプログラム２３６の実行をこの順序に実行させるための命令を含むことになる。その結果、各モーション制御サイクル（Ｔ１からＴ２まで、およびＴ２からＴ３まで）内においても、モーション演算プログラムの実行、出力処理および入力処理、第１のユーザプログラムの実行がこの順序に実行されることになる。各モーション制御サイクルにおいて、出力処理および入力処理の実行後、モーション制御サイクルが終了するまでの時間はモーション制御サイクルごとに変動しうるが、この処理の順序により、当該時間をユーザプログラム２３６の実行に無駄なく使うことができる。その結果、マイクロプロセッサ１００の待機時間が生じ難くなるので、ユーザプログラム実行サイクルをより短縮できる可能性が生じる。
【０２１２】
［ｉ２：比較例］
次に、本実施の形態に係るスケジューラプログラム２１２による効果を説明するために、図１３に示すシーケンスとはプログラムの実行順序を異ならせた場合のシーケンスについて比較例として説明する。
【０２１３】
図１４は、図１３に示す全体処理動作に関する比較例における全体処理動作を示すシーケンス図である。上述の図１３においては、「ＩＯ処理プログラム２１８」、「ユーザプログラム２３６」、「モーション演算プログラム２３４」の順序でそれぞれのプログラムが実行される例を示したが、図１４には、比較例として、「ＩＯ処理プログラム２１８」、「モーション演算プログラム２３４」、「ユーザプログラム２３６」の順序でそれぞれのプログラムが実行される例を示す。
【０２１４】
図１４に示すような比較例に係るプログラムの実行順序を採用した場合には、入力処理の開始（図１４に示す（１）の処理）から、当該入力処理において入力されたモーション制御用入力データを反映したモーション指令値データの出力処理（図１４に示す（６）の処理）までには、モーション制御サイクルの３周期分に相当する時間、すなわち、ユーザプログラム実行サイクルの周期よりもモーション制御サイクル１周期分長い時間を要する。その結果、図１３に示すプログラムの実行順序に比較して、モーション制御サイクルの１周期分の時間だけ制御が遅れることになる。
【０２１５】
＜Ｊ．サポート装置＞
次に、ＰＬＣ１で実行されるプログラムの作成およびＰＬＣ１のメンテナンスなどを行うためのＰＬＣサポート装置８について説明する。
【０２１６】
図１５は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のハードウェア構成を示す模式図である。図１５を参照して、ＰＬＣサポート装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【０２１７】
図１５を参照して、ＰＬＣサポート装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。
【０２１８】
ＰＬＣサポート装置８は、さらに、ユーザからの操作を受付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのモニタ８７とを含む。さらに、ＰＬＣサポート装置８は、ＰＬＣ１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）８９を含む。
【０２１９】
後述するように、ＰＬＣサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【０２２０】
上述したように、ＰＬＣサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【０２２１】
図１６は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のソフトウェア構成を示す模式図である。図１６を参照して、ＰＬＣサポート装置８ではＯＳ３１０が実行され、ＰＬＣサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【０２２２】
ＰＬＣサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレーション用シーケンス命令演算プログラム３２４と、シミュレーション用モーション演算プログラム３２５と、通信プログラム３２６とを含む。ＰＬＣサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、ＰＬＣサポート装置８にインストールされる。
【０２２３】
エディタプログラム３２１は、ユーザプログラム２３６を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソースプログラム３３０を作成する機能に加えて、作成したソースプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からのソースプログラム３３０の入力を受付ける。
【０２２４】
コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＰＬＣサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム３４０を生成する機能を提供する。このユーザプログラム３４０は、ＰＬＣサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【０２２５】
デバッガプログラム３２３は、ユーザプログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【０２２６】
デバッガプログラム３２３は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム３４０を実行する機能を提供する。このシミュレーション時には、ＣＰＵユニット１３のシステムプログラムに含まれるシーケンス命令演算プログラム２３２およびモーション演算プログラム２３４に代えて、ＰＬＣサポートプログラム３２０に含まれるシミュレーション用シーケンス命令演算プログラム３２４およびシミュレーション用モーション演算プログラム３２５が用いられる。
【０２２７】
通信プログラム３２６は、ＰＬＣ１のＣＰＵユニット１３へユーザプログラム２３６を転送する機能を提供する。
【０２２８】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−ＲＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をＰＬＣサポート装置８へコピーし、通信プログラム３２６が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０２２９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２３０】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  リモートＩＯターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、９  ＣＤ−ＲＯＭ、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、５１  リモートＩＯターミナルバス、５２  通信カプラ、８１  ＣＰＵ、８３  ＲＡＭ、８５  キーボード、８６  マウス、８７  モニタ、８８  ＣＤ−ＲＯＭドライブ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  ＵＳＢコネクタ、１２０  ＰＬＣシステムバスコントローラ、１２２  ＤＭＡ制御回路、１２４  ＰＬＣシステムバス制御回路、１２６，１４６  バッファメモリ、１３０  ＰＬＣシステムバスコネクタ、１４０  フィールドネットワークコントローラ、１４２  ＤＭＡ制御回路、１４４  フィールドネットワーク制御回路、２１０  システムプログラム、２１２  スケジューラプログラム、２１４  出力処理プログラム、２１６  入力処理プログラム、２１８  ＩＯ処理プログラム、２２０  その他のシステムプログラム、２２２  モーション制御サイクルの周期を設定するプログラム、２３０  制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３６  ユーザプログラム、２３６−１  高優先ユーザプログラム、２３６−２  低優先ユーザプログラム、３２０  ＰＬＣサポートプログラム、３２１  エディタプログラム、３２２  コンパイラプログラム、３２３  デバッガプログラム、３２４  シミュレーション用シーケンス命令演算プログラム、３２５  シミュレーション用モーション演算プログラム、３２６  通信プログラム、３３０  ソースプログラム、３４０  ユーザプログラム、５００  巻き取り装置、５０２，６０２  シート材、５０４，６０６，６１４，７１４，７２４  モータ、５０６，７１８，７２８  ドライバ、５１０，５１８  位置センサ、５１２  張力検出用ローラ、５１４  テンションローラ、５１６  巻き径検出用ローラ、５２０，６１２，６１８  ローラ、６００  切断装置、６０４  カッター、６１０  センサ、６２４，７１６，７２６  ロータリーエンコーダ、６３０  マーク、７００  搬送システム、７０２  レール、７１０  搬送車、７１２，７２２  駆動輪、１０４１  プログラム領域、１０４２  制御プログラムの作業領域、１０４３  ＰＬＣシステムバス送信バッファ、１０４４  ＰＬＣシステムバス受信バッファ、１０４５  フィールドネットワーク送信バッファ、１０４６  フィールドネットワーク受信バッファ、ＳＹＳ  ＰＬＣシステム。
【図１】
2012194662.tif 000003
【図２】
2012194662.tif 000004
【図３】
2012194662.tif 000005
【図４】
2012194662.tif 000006
【図５】
2012194662.tif 000007
【図６】
2012194662.tif 000008
【図７】
2012194662.tif 000009
【図８】
2012194662.tif 000010
【図９】
2012194662.tif 000011
【図１０】
2012194662.tif 000012
【図１１】
2012194662.tif 000013
【図１２】
2012194662.tif 000014
【図１３】
2012194662.tif 000015
【図１４】
2012194662.tif 000016
【図１５】
2012194662.tif 000017
【図１６】
2012194662.tif 000018