(57)【特許請求の範囲】
【請求項１】
制御対象を制御するＰＬＣのＣＰＵユニットであって、
マイクロプロセッサと、
記憶手段と、
通信回路とを備え、
前記ＰＬＣのＣＰＵユニットは、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されており、
前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、
前記記憶手段は、システムプログラムと、前記制御プログラムとの格納に用いられ、
前記マイクロプロセッサは、前記システムプログラムと、前記制御プログラムとを実行し、
前記制御プログラムは、第１制御プログラムおよび第２制御プログラムを含み、
前記第１制御プログラムは、モータの運動を制御するための第１モーション指令値データを生成する第１モーション演算プログラムを含み、
前記第２制御プログラムは、モータの運動を制御するための第２モーション指令値データを生成する第２モーション演算プログラムを含み、
前記第１制御プログラムおよび前記第２制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第１モーション演算プログラムおよび前記第２モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、
前記システムプログラムは、前記マイクロプロセッサに、前記制御サイクルの周期と同じ周期の第１実行サイクルごとに前記第１制御プログラムを実行開始させる第１実行制御命令と、前記制御サイクルの周期の２以上の整数倍の周期の第２実行サイクルごとに前記第２制御プログラムを実行開始させる第２実行制御命令とを含み、
前記第２実行制御命令は、前記マイクロプロセッサに、前記第２実行サイクルが開始する前記制御サイクルにおいて、前記第１制御プログラムの実行終了後に前記第２制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第２制御プログラムが終了しなければ次の制御サイクルにおいて前記第１制御プログラムの実行終了後に前記第２制御プログラムの未実行の部分の実行を開始させる命令を含む、ＰＬＣのＣＰＵユニット。
【請求項２】
前記システムプログラムは、前記マイクロプロセッサに
前記第１モーション演算プログラムが活性状態にある期間中、前記第１実行サイクルごとに、送信される前記出力データに前記第１モーション演算プログラムの実行によって更新された前記第１モーション指令値データを含ませるための処理と、
前記第２モーション演算プログラムが活性状態にある期間中、少なくとも前記第２実行サイクルごとに、送信される前記出力データに前記第２モーション演算プログラムの実行によって更新された前記第２モーション指令値データを含ませるための処理とを実行させる、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項３】
前記第１制御プログラムは、前記第１モーション演算プログラムに対してその実行に必要な指示を与える命令と、前記第２モーション演算プログラムに対してその実行に必要な指示を与える命令とを含む前記ユーザプログラムを含む、請求項１または２に記載のＰＬＣのＣＰＵユニット。
【請求項４】
前記第２制御プログラムは、前記第１モーション演算プログラムに対してその実行に必要な指示を与える命令と、前記第２モーション演算プログラムに対してその実行に必要な指示を与える命令とを含む前記ユーザプログラムを含む、請求項１または２に記載のＰＬＣのＣＰＵユニット。
【請求項５】
前記ユーザプログラムは、前記第１モーション演算プログラムに対してその実行に必要な指示を与える命令を含む第１ユーザプログラムと、前記第２モーション演算プログラムに対してその実行に必要な指示を与える命令を含む第２ユーザプログラムとを含み、
前記第１制御プログラムは、前記第１ユーザプログラムを含み、
前記第２制御プログラムは、前記第２ユーザプログラムを含む、請求項１または２に記載のＰＬＣのＣＰＵユニット。
【請求項６】
マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するＰＬＣのＣＰＵユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのＰＬＣ用のシステムプログラムであって、
前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、
前記記憶手段は、前記システムプログラムと、前記制御プログラムとの格納に用いられ、
前記マイクロプロセッサは、前記システムプログラムに加えて、前記制御プログラムを実行し、
前記制御プログラムは、第１制御プログラムおよび第２制御プログラムを含み、
前記第１制御プログラムは、モータの運動を制御するための第１モーション指令値データを生成する第１モーション演算プログラムを含み、
前記第２制御プログラムは、モータの運動を制御するための第２モーション指令値データを生成する第２モーション演算プログラムを含み、
前記第１制御プログラムおよび前記第２制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第１モーション演算プログラムおよび前記第２モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、
前記システムプログラムは、前記マイクロプロセッサに、前記制御サイクルの周期と同じ周期の第１実行サイクルごとに前記第１制御プログラムを実行開始させる第１実行制御命令と、前記制御サイクルの周期の２以上の整数倍の周期の第２実行サイクルごとに前記第２制御プログラムを実行開始させる第２実行制御命令とを含み、
前記第２実行制御命令は、前記マイクロプロセッサに、前記第２実行サイクルが開始する前記制御サイクルにおいて、前記第１制御プログラムの実行終了後に前記第２制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第２制御プログラムが終了しなければ次の制御サイクルにおいて前記第１制御プログラムの実行終了後に前記第２制御プログラムの未実行の部分の実行を開始させる命令を含む、ＰＬＣ用のシステムプログラム。
【請求項７】
前記システムプログラムは、前記マイクロプロセッサに
前記第１モーション演算プログラムが活性状態にある期間中、前記第１実行サイクルごとに、送信される前記出力データに前記第１モーション演算プログラムの実行によって更新された前記第１モーション指令値データを含ませるための処理と、
前記第２モーション演算プログラムが活性状態にある期間中、少なくとも前記第２実行サイクルごとに、送信される前記出力データに前記第２モーション演算プログラムの実行によって更新された前記第２モーション指令値データを含ませるための処理とを実行させる、請求項６に記載のＰＬＣ用のシステムプログラム。
【請求項８】
マイクロプロセッサと、記憶手段と、通信回路とを備え、出力データの送信と、入力データの受信と、前記入力データを使用して前記出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するＰＬＣのＣＰＵユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのＰＬＣ用のシステムプログラムを格納した記録媒体であって、
前記通信回路は、制御サイクルの周期で前記出力データを送信しおよび前記入力データを受信し、
前記記憶手段は、前記システムプログラムと、前記制御プログラムとの格納に用いられ、
前記マイクロプロセッサは、前記システムプログラムに加えて、前記制御プログラムを実行し、
前記制御プログラムは、第１制御プログラムおよび第２制御プログラムを含み、
前記第１制御プログラムは、モータの運動を制御するための第１モーション指令値データを生成する第１モーション演算プログラムを含み、
前記第２制御プログラムは、モータの運動を制御するための第２モーション指令値データを生成する第２モーション演算プログラムを含み、
前記第１制御プログラムおよび前記第２制御プログラムの少なくとも一方は、ユーザにおける制御目的に応じて作成され前記第１モーション演算プログラムおよび前記第２モーション演算プログラムに対してその実行に必要な指示を与える命令を含むユーザプログラムを含み、
前記システムプログラムは、前記マイクロプロセッサに、前記制御サイクルの周期と同じ周期の第１実行サイクルごとに前記第１制御プログラムを実行開始させる第１実行制御命令と、前記制御サイクルの周期の２以上の整数倍の周期の第２実行サイクルごとに前記第２制御プログラムを実行開始させる第２実行制御命令とを含み、
前記第２実行制御命令は、前記マイクロプロセッサに、前記第２実行サイクルが開始する前記制御サイクルにおいて、前記第１制御プログラムの実行終了後に前記第２制御プログラムを実行開始させ、当該制御サイクルが終了するまでに前記第２制御プログラムが終了しなければ次の制御サイクルにおいて前記第１制御プログラムの実行終了後に前記第２制御プログラムの未実行の部分の実行を開始させる命令を含む、ＰＬＣ用のシステムプログラムを格納した記録媒体。
【請求項９】
前記システムプログラムは、前記マイクロプロセッサに
前記第１モーション演算プログラムが活性状態にある期間中、前記第１実行サイクルごとに、送信される前記出力データに前記第１モーション演算プログラムの実行によって更新された前記第１モーション指令値データを含ませるための処理と、
前記第２モーション演算プログラムが活性状態にある期間中、少なくとも前記第２実行サイクルごとに、送信される前記出力データに前記第２モーション演算プログラムの実行によって更新された前記第２モーション指令値データを含ませるための処理とを実行させる、請求項８に記載のＰＬＣ用のシステムプログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や設備などの動作を制御するために用いられるＰＬＣ（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）制御回路１２２と、ＰＬＣシステムバス制御回路１２４と、バッファメモリ１２６とを含む。なお、ＰＬＣシステムバスコントローラ１２０は、ＰＬＣシステムバスコネクタ１３０を介してＰＬＣシステムバス１１と内部的に接続される。
【００４４】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００４５】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行う。
【００４６】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行う。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００４７】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行うためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００４８】
バッファメモリ１４６は、フィールドネットワーク２を介して他の装置などへ出力されるデータ（このデータについても、以下「出力データ」と称す。）の送信バッファ、および、フィールドネットワーク２を介して他の装置などから入力されるデータ（このデータについても、以下「入力データ」とも称す。）の受信バッファとして機能する。上述したように、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１４６に一次的に保持される。また、他の装置から転送された入力データは、バッファメモリ１４６に一次的に保持された後、メインメモリ１０４に移される。
【００４９】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行う。
【００５０】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行う。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００５１】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００５２】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００５３】
図３は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００５４】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００５５】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００５６】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００５７】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。特に、実行サイクルが共通であるユーザプログラム２３６とモーション演算プログラム２３４とは、１つの制御プログラム２３０として把握される。
【００５８】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０と制御プログラム２３０とを実行する。すなわち、記憶手段は、少なくとも、システムプログラムと制御プログラムとの格納に用いられる。
【００５９】
以下、各プログラムについてより詳細に説明する。
上述ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００６０】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００６１】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００６２】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００６３】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００６４】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００６５】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。
【００６６】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、制御サイクルの周期を設定するプログラムを含む。
【００６７】
制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、制御サイクルの周期を指定する情報をユーザがＰＬＣサポート装置８へ入力する。すると、その入力された情報は、ＰＬＣサポート装置８からＣＰＵユニット１３へ転送される。制御サイクルの周期を設定するプログラムは、ＰＬＣサポート装置８からの情報を不揮発性メモリ１０６に格納させるとともに、システムタイマ１０８から指定された制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、制御サイクルの周期を設定するプログラムが実行されることで、制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００６８】
制御サイクルの周期を指定する情報の形式としては、制御サイクルの周期を示す時間の値や、制御サイクルの周期に関する予め用意された複数の選択肢のうちから１つを特定する情報（番号または文字）などを採用することができる。
【００６９】
本実施の形態に係るＣＰＵユニット１３において、制御サイクルの周期を設定する手段としては、制御サイクルの周期を指定する情報を取得するために用いられるＰＬＣサポート装置８との通信手段、制御サイクルの周期を設定するプログラム、ならびに制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ１０８の構成といった、制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【００７０】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係るＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、制御サイクル開始の割り込みが初期設定される。リアルタイムＯＳ２００は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り替える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とＰＬＣサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００７１】
上述のような割り込みを用いて、ＰＬＣ１のＣＰＵユニット１３は、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムとの実行を繰り返すことによって制御対象を制御するように構成される。このとき、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０（通信回路）は、制御サイクルの周期で出力データを送信しおよび入力データを受信する。
【００７２】
なお、通信回路が、出力データを送信し、入力データを受信するタイミングを決定する通信トリガ信号を提供する方法については、典型的には、以下のような実装形態が考えられる。
【００７３】
（１）  マイクロプロセッサ１００が通信回路に通信の都度トリガ信号を与える構成
（２）  通信回路がシステムタイマ１０８から直接通信トリガ信号を受ける構成
（３）  通信回路が通信トリガ信号を発生するタイマ回路を内蔵する構成
いずれの場合にも、通信トリガ信号は、制御サイクルの周期で発生されることになる。
【００７４】
＜Ｄ．メインメモリ構成＞
次に、図４を参照して、ＣＰＵユニット１３のメインメモリ１０４に構成される記憶領域について説明する。
【００７５】
図４は、本発明の実施の形態に係るＣＰＵユニット１３のメインメモリ１０４の領域構成を示す模式図である。図４を参照して、メインメモリ１０４には、各種のプログラム領域１０４１と、制御プログラムの作業領域１０４２と、ＰＬＣシステムバス送信バッファ１０４３と、ＰＬＣシステムバス受信バッファ１０４４と、フィールドネットワーク送信バッファ１０４５と、フィールドネットワーク受信バッファ１０４６とが形成される。
【００７６】
各種のプログラム領域１０４１には、各種のプログラムを実行するためのコードが一時的に格納される。
【００７７】
制御プログラムの作業領域１０４２には、制御プログラム２３０の実行により作成された出力データが一時的に格納される。
【００７８】
ＰＬＣシステムバス送信バッファ１０４３およびＰＬＣシステムバス受信バッファ１０４４は、ＰＬＣシステムバス１１を介して送信および受信されるデータをそれぞれ一時的に格納する。同様に、フィールドネットワーク送信バッファ１０４５およびフィールドネットワーク受信バッファ１０４６は、フィールドネットワーク２を介して送信および受信されるデータをそれぞれ一時的に格納する。
【００７９】
より具体的には、出力処理プログラム２１４は、ＰＬＣシステムバス１１を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域１０４２からＰＬＣシステムバス送信バッファ１０４３へコピーする。その際、出力処理プログラム２１４は、同一のユニットに送信される複数の出力データを一括して送信できるように、ＰＬＣシステムバス送信バッファ１０４３において、同一のユニットに向けられた出力データ群がまとめられるように出力データを再配置する。
【００８０】
同様に、出力処理プログラム２１４は、フィールドネットワーク２を介していずれかの出力データを送信する必要がある場合には、対象の出力データを制御プログラムの作業領域１０４２からフィールドネットワーク送信バッファ１０４５へコピーする。その際、出力処理プログラム２１４は、フィールドネットワーク送信バッファ１０４５において、シリアルフレームとして送信できる形式に出力データを再配置する。
【００８１】
一方、入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０が受信してＰＬＣシステムバス受信バッファ１０４４に格納された入力データ、および／または、フィールドネットワークコントローラ１４０が受信してフィールドネットワーク受信バッファ１０４６に格納された入力データを、制御プログラムの作業領域１０４２へコピーする。その際、入力処理プログラム２１６は、制御プログラムの作業領域１０４２において、制御プログラム２３０が使用するのに適した形式に入力データを再配置する。
【００８２】
ＰＬＣシステムバスコントローラ１２０のＤＭＡ制御回路１２２は、ＰＬＣシステムバス送信バッファ１０４３に格納されている出力データをＰＬＣシステムバスコントローラ１２０のバッファメモリ１４６へ転送するとともに、バッファメモリ１４６に格納されている入力データをＰＬＣシステムバス受信バッファ１０４４へ転送する。
【００８３】
フィールドネットワークコントローラ１４０のＤＭＡ制御回路１４２は、フィールドネットワーク送信バッファ１０４５に格納されている出力データをフィールドネットワークコントローラ１４０のバッファメモリ１４６へ転送するとともに、バッファメモリ１４６に格納されている入力データをフィールドネットワーク受信バッファ１０４６へ転送する。
【００８４】
制御プログラムの作業領域１０４２、ＰＬＣシステムバス送信バッファ１０４３、ＰＬＣシステムバス受信バッファ１０４４、フィールドネットワーク送信バッファ１０４５、および、フィールドネットワーク受信バッファ１０４６は、それぞれのアクセスを互いに独立に制御できるように構成されている。そのため、たとえば、以下に示す（１）〜（３）といった複数の動作を並列実行することができる。
【００８５】
（１）  マイクロプロセッサ１００が行う、ユーザプログラム２３６実行に伴う制御プログラムの作業領域１０４２へのアクセス
（２）  ＰＬＣシステムバスコントローラ１２０のＤＭＡ制御回路１２２が行う、メインメモリ１０４上のＰＬＣシステムバス送信バッファ１０４３および／またはＰＬＣシステムバス受信バッファ１０４４とＰＬＣシステムバスコントローラ１２０内のバッファメモリ１２６との間のデータ転送のための、メインメモリ１０４上のＰＬＣシステムバス送信バッファ１０４３および／またはＰＬＣシステムバス受信バッファ１０４４へのアクセス
（３）  フィールドネットワークコントローラ１４０のＤＭＡ制御回路１４２が行う、メインメモリ１０４上のフィールドネットワーク送信バッファ１０４５および／またはフィールドネットワーク受信バッファ１０４６とフィールドネットワークコントローラ１４０内のバッファメモリ１４６との間のデータ転送のための、メインメモリ１０４上のフィールドネットワーク送信バッファ１０４５および／またはフィールドネットワーク受信バッファ１０４６へのアクセス
＜Ｅ．モーション制御の概略手順＞
次に、本実施の形態に係るＰＬＣシステムＳＹＳが提供するモーション制御の概略手順について説明する。
【００８６】
まず、上述したユーザプログラム２３６に含まれる典型的な構成について説明する。ユーザプログラム２３６は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム２３６は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム２３４が起動し、まず、モーション演算プログラム２３４の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じ制御サイクルにおいて、第１サイクルでの指令値が算出される。したがって、初期処理および第１番目の指令値算出処理が、起動したモーション演算プログラム２３４が第１番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
【００８７】
図５は、本発明の実施の形態に係る制御プログラム２３０（ユーザプログラム２３６、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４）によって提供されるモーション制御の概略の処理手順を示すフローチャートである。図５を参照して、マイクロプロセッサ１００は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断する（ステップＳ２）。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム２３６およびシーケンス命令演算プログラム２３２によって実現される。制御開始の条件が成立していない場合（ステップＳ２においてＮＯの場合）には、ステップＳ２の判断が繰り返される。
【００８８】
制御開始の条件が成立している場合（ステップＳ２においてＹＥＳの場合）には、マイクロプロセッサ１００は、モーション制御に関する初期処理を実行する（ステップＳ４）。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などの算出処理が含まれる。続いて、マイクロプロセッサ１００は、第１サイクルでの指令値の算出処理を実行する（ステップＳ６）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ８）。
【００８９】
その後、マイクロプロセッサ１００は、次の制御サイクルが到来するまで待つ（ステップＳ１０）。そして、マイクロプロセッサ１００は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断する（ステップＳ１２）。この制御終了の条件が成立しているとは、サーボモータ４が終了位置に到達している状態などをいう。制御終了の条件が成立している場合（ステップＳ１２においてＹＥＳの場合）には、ステップＳ２以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム２３４は、新たな制御開始の条件が成立するまで不活性の状態に維持される。
【００９０】
制御終了の条件が成立していない場合（ステップＳ１２においてＮＯの場合）には、マイクロプロセッサ１００は、現在のサイクルでの指令値の算出処理を実行する（ステップＳ１４）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ１６）。そして、ステップＳ１０以下の処理が繰り返される。
【００９１】
図５に示すフローチャートにおいて、制御開始の条件が成立してから（ステップＳ２においてＹＥＳとなったときから）、制御終了の条件が成立するまで（ステップＳ１２においてＹＥＳとなったときまで）が、モーション演算プログラム２３４が「活性状態」にある期間に相当する。
【００９２】
算出した指令値の出力処理（ステップＳ８およびＳ１６）において、算出された指令値は、図４の制御プログラムの作業領域１０４２から、ＰＬＣシステムバス送信バッファ１０４３またはフィールドネットワーク送信バッファ１０４５へコピーされる。そうすると、コピーされた指令値は、次の送信タイミングが到来すると、更新されたモーション指令値データとして送信される。
【００９３】
なお、モーション指令値データが更新されているかどうかにかかわらず制御サイクルごとに送信バッファ（ＰＬＣシステムバス送信バッファ１０４３またはフィールドネットワーク送信バッファ１０４５）に格納されているモーション指令値データを送信するようにしてもよいし、あるいは、モーション指令値データが更新されたときにだけそのモーション指令値データの送信を実行するようにしてもよい。
【００９４】
このように、本実施の形態に係るシステムプログラム２１０は、マイクロプロセッサ１００に、第１モーション演算プログラムが活性状態にある期間中、実行サイクルごとに、送信される出力データに当該モーション演算プログラムの実行によって更新されたモーション指令値データを含ませるための処理を実行させる。
【００９５】
後述するように、各々がモーション演算プログラムを含む制御プログラムを複数実行する場合には、このような処理については、それぞれのモーション演算プログラムについて、対応する実行サイクルで独立して実行される。すなわち、本実施の形態に係るシステムプログラム２１０は、マイクロプロセッサ１００に、第１モーション演算プログラムが活性状態にある期間中、第１実行サイクルごとに、送信される出力データに第１モーション演算プログラムの実行によって更新された第１モーション指令値データを含ませるための処理を実行させるとともに、第２モーション演算プログラムが活性状態にある期間中、少なくとも第２実行サイクルごとに、送信される出力データに第２モーション演算プログラムの実行によって更新された第２モーション指令値データを含ませるための処理とを実行させる。
【００９６】
＜Ｆ．全体処理動作＞
次に、本実施の形態に係る各プログラムの実行順序などについて、以下説明する。
【００９７】
図６は、本発明の実施の形態に係る全体処理動作を示すシーケンス図である。図６を参照して、本実施の形態に係るＰＬＣ１の実行中においては、マイクロプロセッサ１００が、複数の制御プログラム（第１制御プログラム２３０−１および第２制御プログラム２３０−２）を実行する場合を考える。このとき、マイクロプロセッサ１００は、ＩＯ処理プログラム２１８（出力処理プログラム２１４および入力処理プログラム２１６）についても時分割的に実行する。
【００９８】
典型的に、第１制御プログラム２３０−１および第２制御プログラム２３０−２は、それぞれ第１モーション演算プログラム２３４−１および第２モーション演算プログラム２３４−２を含むとする。また、第１制御プログラム２３０−１および第２制御プログラム２３０−２の少なくとも一方は、さらに、ユーザプログラム２３６を含むとする。
【００９９】
図６の第１および第２制御プログラムのそれぞれの時間軸に沿って示した破線の角丸の矩形は、対応する制御プログラムの実行サイクルを示す。一例として、第１制御プログラム２３０−１は、１回分の制御サイクルを実行サイクルとしており、第２制御プログラム２３０−２は、２回分の制御サイクルを実行サイクルとしている。
【０１００】
図６において、ＩＯ処理プログラム２１８から第１制御プログラム２３０−１および第２制御プログラム２３０−２へそれぞれ延びる矢印は、入力データの流れを示す。具体的には、受信バッファ（フィールドネットワーク送信バッファ１０４５および／またはフィールドネットワーク受信バッファ１０４６）から制御プログラムの作業領域１０４２への入力データのコピーに相当する。この入力データは、制御プログラム２３０（第１制御プログラム２３０−１および／または第２制御プログラム２３０−２）がユーザプログラム２３６を含む場合には、当該ユーザプログラム２３６が使用する入力データを含む他、モーション演算プログラム２３４が使用する入力データを含むことがある（モーション演算プログラム２３４は入力データを使用せずに演算する場合もある）。
【０１０１】
同様に、図６において、第１制御プログラム２３０−１および第２制御プログラム２３０−２からＩＯ処理プログラムへそれぞれ延びる矢印は、出力データの流れを示す。具体的には、制御プログラムの作業領域１０４２から送信バッファ（ＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５）への出力データのコピーに相当する。この出力データは、制御プログラム２３０（第１制御プログラム２３０−１および／または第２制御プログラム２３０−２）がユーザプログラム２３６を含む場合には、当該ユーザプログラム２３６が生成した出力データを含む他、モーション演算プログラム２３４が活性状態にある期間中は当該モーション演算プログラム２３４が生成したモーション指令値データを含む。
【０１０２】
図６に示すＰＬＣ１の実行中において進行するシーケンスは、以下のようになる。
（１）  ＩＯ処理プログラム２１８の命令に従って出力処理が実行される。より具体的には、先の処理によって、送信バッファ（ＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５）に格納された出力データが、他のユニットへ送信され、あるいは、他の装置へ送信される。
【０１０３】
（２）  フィールドネットワークコントローラ１４０が入力データを受信してフィールドネットワーク受信バッファ１０４６に当該入力データを格納、および／または、ＰＬＣシステムバスコントローラ１２０が、入力データを受信してＰＬＣシステムバス受信バッファ１０４４に当該入力データを格納する。
【０１０４】
（３）  ＩＯ処理プログラム２１８の命令に従って、ＰＬＣシステムバス受信バッファ１０４４および／またはフィールドネットワーク受信バッファ１０４６に格納されている入力データが制御プログラムの作業領域１０４２へ転送される。
【０１０５】
（４）  第１制御プログラム２３０−１の命令に従って、入力データを使用して各種処理が実行されることで出力データが算出され、算出された出力データが制御プログラムの作業領域１０４２へ格納される。
【０１０６】
（５）  ＩＯ処理プログラム２１８の命令に従って、制御プログラムの作業領域１０４２に格納されている出力データがＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５へ転送される。
【０１０７】
（６）  第２制御プログラム２３０−２の命令に従って、入力データを使用して各種処理が実行されることで出力データが算出され、算出された出力データが制御プログラムの作業領域１０４２へ格納される。なお、第２制御プログラム２３０−２の実行サイクルは、２回分の制御サイクルに相当するので、第２制御プログラム２３０−２の実行が終了までに次の制御サイクルを開始するための割り込みが発生すると、第２制御プログラム２３０−２の実行は一旦中断され、次の制御サイクルにおいて、ＩＯ処理プログラム２１８および第１制御プログラム２３０−１の実行終了後に、第２制御プログラム２３０−２の未実行部分が実行される。
【０１０８】
（７）  ＩＯ処理プログラム２１８の命令に従って、制御プログラムの作業領域１０４２に格納されている出力データがＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５へ転送される。
【０１０９】
＜Ｇ．制御プログラム内のプログラム構成と指示の流れ＞
次に、制御プログラム内のプログラム構成と、プログラム間での指示の流れについて説明する。
【０１１０】
図７は、本発明の実施の形態に係る制御プログラム内のプログラム構成と指示の流れについて説明するための模式図である。図７には、第１制御プログラム２３０−１および第２制御プログラム２３０−２に含まれるユーザプログラムのバリエーションの例を示す。すなわち、図７（ａ）は、第１制御プログラム２３０−１のみがユーザプログラム２３６を有している例を示し、図７（ｂ）は、第２制御プログラム２３０−２のみがユーザプログラム２３６を有している例を示し、図７（ｃ）は、第１制御プログラム２３０−１および第２制御プログラム２３０−２の両方がユーザプログラム２３６を有している例を示す。
【０１１１】
図７において、ユーザプログラム２３６（図７（ｃ）では、２３６−１または２３６−２）からモーション演算プログラム２３４（２３４−１または２３４−２）へ延びる矢印は、モーション演算プログラム２３４の実行に必要な指示の流れを示す。この指示は、たとえば、ユーザプログラム２３６の中で、モーション制御の内容を定義するモーションファンクションブロックに対する入力パラメータ（入力定数または入力変数）として記述される。そして、ユーザプログラムの実行に伴いモーション制御開始の条件が成立してモーションファンクションブロックが実行されると、当該入力パラメータがモーション演算プログラムに与えられる。
【０１１２】
制御プログラム２３０は、ユーザプログラム２３６の実行とモーション演算プログラム２３４の実行とを含むスレッドとして構成してもよい。
【０１１３】
制御プログラム２３０がユーザプログラム２３６およびモーション演算プログラム２３４を含む場合の、それぞれのプログラムの実行順序は、どちらが先でもよい。ユーザプログラム２３６の実行を先にする場合は、ユーザプログラム２３６の実行結果をモーション演算プログラム２３４の実行に直ちに反映できる点で好ましい。一方、モーション演算プログラム２３４を先に実行する場合は、ユーザプログラム２３６の実行結果は次の実行サイクルにおいてモーション演算プログラム２３４の実行に反映される。
【０１１４】
図６に示すように、２回分の制御サイクルを実行サイクルとする第２制御プログラム２３０−２は、その実行が終了するまでに次の制御サイクルが始まるとその実行が中断され、当該次の制御サイクルで第１制御プログラム２３０−１の実行終了後に実行が再開される。第２制御プログラム２３０−２は、それに含まれるユーザプログラム２３６の実行中に中断されることもあれば、それに含まれるモーション演算プログラム２３４の実行中に中断されることもある。
【０１１５】
（ｇ１：第１制御プログラムにのみユーザプログラムが含まれる場合）
図７（ａ）を参照して、第１制御プログラム２３０−１にのみユーザプログラム２３６が含まれる形態について説明する。この図７（ａ）に示す実施の形態は、第１モーション演算プログラム２３４−１と第２モーション演算プログラム２３４−２との両方に指示を与えるユーザプログラム２３６と、第１モーション演算プログラム２３４−１とを所望の制御サイクル時間の中で実行可能な場合に採用できる。
【０１１６】
すなわち、図７（ａ）に示す例においては、第１制御プログラム２３０−１は、第１モーション演算プログラム２３４−１に対してその実行に必要な指示を与える命令と、第２モーション演算プログラム２３４−２に対してその実行に必要な指示を与える命令とを含むユーザプログラム２３６を含む。
【０１１７】
図７（ａ）に示す実施の形態によれば、第１モーション演算プログラム２３４−１のどの実行サイクルにおいても、ユーザプログラム２３６から新しい指示を与えることができる。したがって、実行中のモータの運動に対する変更の指示などを迅速にモーション制御に反映することができる。なお、第２モーション演算プログラム２３４−２の実行サイクルの途中で第２モーション演算プログラム２３４−２に与えられた指示は、第２モーション演算プログラム２３４−２の次の実行サイクルにおいて反映される。さらに、図７（ａ）に示す実施の形態によれば、ユーザプログラム２３６を１つに集約できるので、その設計が容易になる。
【０１１８】
（ｇ２：第２制御プログラムにのみユーザプログラムが含まれる場合）
図７（ｂ）を参照して、第２制御プログラム２３０−２にのみユーザプログラム２３６が含まれる形態について説明する。この図７（ｂ）に示す実施の形態は、所望の制御サイクル時間内で、第１モーション演算プログラム２３４−１の実行時間を除いた、ユーザプログラム２３６の実行に割り当てることができる時間が少ない場合に好適な実施形態である。
【０１１９】
すなわち、図７（ｂ）に示す例においては、第２制御プログラム２３０−２は、第１モーション演算プログラム２３４−１に対してその実行に必要な指示を与える命令と、第２モーション演算プログラム２３４−２に対してその実行に必要な指示を与える命令とを含むユーザプログラム２３６を含む。
【０１２０】
図７（ｂ）に示す実施の形態によれば、第１モーション演算プログラム２３４−１を実行するに足る時間まで制御サイクル時間を短くすることができる。ただし、ユーザプログラム２３６から第１モーション演算プログラム２３４−１への指示は第２制御プログラム２３０−２の実行サイクルの周期でしか与えることができない。しかしながら、モーション演算プログラム２３４は、ユーザプログラム２３６から、たとえば「座標Ａから座標Ｂまで速度Ｖで移動せよ」のような指示をいったん受けて活性状態となれば、その指示の実行を完了するまでの間、ユーザプログラム２３６からの指示なしに、実行サイクルごとにモーション指令値データを算出することができる。したがって、そのような指示の実行途中に、モータの運動を中止させる指示や別の運動へ変更する指示を与えて迅速に反応させる必要がない場合には、図７（ｂ）に示す実施の形態を採用しても支障はない。この実施の形態によれば、さらに、ユーザプログラム２３６を１つに集約できるので、その設計が容易になる。
【０１２１】
（ｇ３：第１および第２制御プログラムの両方にユーザプログラムが含まれる場合）
図７（ｃ）を参照して、第１制御プログラム２３０−１および第２制御プログラム２３０−２にそれぞれユーザプログラム２３６−１および２３６−２が含まれる形態について説明する。すなわち、図７（ｃ）に示す例においては、ユーザプログラム２３６としては、第１モーション演算プログラム２３４−１に対してその実行に必要な指示を与える命令を含む第１ユーザプログラム２３６−１と、第２モーション演算プログラム２３４−２に対してその実行に必要な指示を与える命令を含む第２ユーザプログラム２３６−２とを含む。第１制御プログラム２３０−１は、第１ユーザプログラム２３６−１を含み、第２制御プログラム２３０−２は、第２ユーザプログラム２３６−２を含む。
【０１２２】
図７（ｃ）に示す実施の形態によれば、第１制御プログラム２３０−１に含ませる第１ユーザプログラム２３６−１は、第２モーション演算プログラム２３４−２に対する指示を与えることに関する処理を行う必要がないので、比較的実行時間を短くすることができる。したがって、第１ユーザプログラム２３６−１と第１モーション演算プログラム２３４−２とを実行可能な時間としての制御サイクル時間を比較的短くすることができる。さらに、第１モーション演算プログラム２３４−１および第２モーション演算プログラム２３４−２のどの実行サイクルにおいてもユーザプログラム２３６−１および２３６−２からそれぞれ新しい指示を与えることができる。
【０１２３】
＜Ｈ．処理手順＞
次に、システムプログラム２１０がＰＬＣ１のマイクロプロセッサ１００によって実行されることで実現される処理について説明する。
【０１２４】
図８は、本発明の実施の形態に係るＣＰＵユニットのマイクロプロセッサ１００がシステムプログラム２１０を実行することで実現される処理の手順を示すフローチャートである。なお、図８に示すフローチャートは、図５に示すフローチャートに示されるステップＳ６〜Ｓ１６の処理をより詳細に示す。
【０１２５】
図８を参照して、マイクロプロセッサ１００は、制御サイクル開始の割り込み信号を待つ（ステップＳ１００）。制御サイクル開始の割り込み信号を受けると（ステップＳ１００においてＹＥＳ）、マイクロプロセッサ１００は、第１制御プログラム２３０−１が生成した出力データを、第１制御プログラム２３０−１の作業領域（制御プログラムの作業領域１０４２の一部）から送信バッファ（ＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５）へコピーする（ステップＳ１０２）。
【０１２６】
続いて、マイクロプロセッサ１００は、この制御サイクルから第２制御プログラム２３０−２の実行サイクルが開始するか否かを判断する（ステップＳ１０４）。この制御サイクルから第２制御プログラム２３０−２の実行サイクルが開始する場合（ステップＳ１０４においてＹＥＳの場合）には、マイクロプロセッサ１００は、第２制御プログラム２３０−２が生成した出力データを、第２制御プログラム２３０−２の作業領域（制御プログラムの作業領域１０４２の一部）から送信バッファ（ＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５）へコピーするとともに、第２制御プログラム２３０−２の現在状態を「実行前」に設定する（ステップＳ１０６）。
【０１２７】
なお、本実施の形態に従うシステムプログラム２１０は、予め定められた処理を実行すべき実行サイクル内において、未だ処理を開始していない状態である「実行前」、当該実行サイクル内において処理が行なわれている「実行中」、および、当該実行サイクル内においては既に処理が完了している「実行終了」のいずれかの実行状態を監視するための命令を含む。
【０１２８】
この制御サイクルから第２制御プログラム２３０−２の実行サイクルが開始しない場合（ステップＳ１０４においてＮＯの場合）には、ステップＳ１０６の処理はスキップされる。
【０１２９】
続いて、マイクロプロセッサ１００は、通信回路（ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０）に対して送信実行を指示する（ステップＳ１０８）。この送信実行の指示に応答して、通信回路（ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０）は、送信バッファ（ＰＬＣシステムバス送信バッファ１０４３および／またはフィールドネットワーク送信バッファ１０４５）に格納されている出力データを送信する。
【０１３０】
その後、マイクロプロセッサ１００は、通信回路（ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０）からの受信完了通知を待つ（ステップＳ１１０）。
【０１３１】
通信回路からの受信完了通知を受けると（ステップＳ１１０においてＹＥＳ）、マイクロプロセッサ１００は、受信バッファ（ＰＬＣシステムバス受信バッファ１０４４および／またはフィールドネットワーク受信バッファ１０４６）に格納されている、第１制御プログラム２３０−１によって使用される入力データを、第１制御プログラム２３０−１の作業領域（制御プログラムの作業領域１０４２の一部）へコピーする（ステップＳ１１２）。
【０１３２】
続いて、マイクロプロセッサ１００は、この制御サイクルから第２制御プログラム２３０−２の実行サイクルが開始するか否かを判断する（ステップＳ１１４）。この制御サイクルから第２制御プログラム２３０−２の実行サイクルが開始する場合（ステップＳ１１４においてＹＥＳの場合）には、マイクロプロセッサ１００は、受信バッファ（ＰＬＣシステムバス受信バッファ１０４４および／またはフィールドネットワーク受信バッファ１０４６）に格納されている、第２制御プログラム２３０−２によって使用される入力データを、第２制御プログラム２３０−２の作業領域（制御プログラムの作業領域１０４２の一部）へコピーする（ステップＳ１１６）。
【０１３３】
この制御サイクルから第２制御プログラム２３０−２の実行サイクルが開始しない場合（ステップＳ１１４においてＮＯの場合）には、ステップＳ１１６の処理はスキップされる。
【０１３４】
続いて、マイクロプロセッサ１００は、第１制御プログラム２３０−１の実行を開始する（ステップＳ１１８）。そして、マイクロプロセッサ１００は、第１制御プログラム２３０−１の実行終了通知を待つ（ステップＳ１２０）。なお、ステップＳ１１８において、第１制御プログラム２３０−１の実行が開始されることで、マイクロプロセッサ１００で実行される処理は、システムプログラム２１０による処理から第１制御プログラム２３０−１による処理に切り替わる。すなわち、第１制御プログラム２３０−１の実行開始から実行終了するまでの間は、マイクロプロセッサ１００は、システムプログラム２１０を実行しない。
【０１３５】
第１制御プログラム２３０−１の実行終了通知を受けると（ステップＳ１２０においてＹＥＳ）、マイクロプロセッサ１００は、第２制御プログラム２３０−２の現在状態を判断する（ステップＳ１２２）。
【０１３６】
第２制御プログラム２３０−２の現在状態が「実行前」である場合（ステップＳ１２２において「実行前」）には、マイクロプロセッサ１００は、第２制御プログラム２３０−２の現在状態を「実行中」に設定するとともに、第２制御プログラム２３０−２の実行を開始する（ステップＳ１２４）。そして、処理はステップＳ１３０へ進む。
【０１３７】
第２制御プログラム２３０−２の現在状態が「実行中」である場合（ステップＳ１２２において「実行中」）には、マイクロプロセッサ１００は、第２制御プログラム２３０−２の未実行の部分の実行を開始する（ステップＳ１２６）。そして、処理はステップＳ１３０へ進む。
【０１３８】
第２制御プログラム２３０−２の現在状態が「実行終了」である場合（ステップＳ１２２において「実行終了」）には、処理はステップＳ１３４へ進む。
【０１３９】
ステップＳ１２４またはＳ１２６において、第２制御プログラム２３０−２の実行を開始すると、マイクロプロセッサ１００は、第２制御プログラム２３０−２の実行終了通知、または、次の制御サイクル開始の割り込み信号を待つ（ステップＳ１３０）。なお、ステップＳ１２４またはＳ１２６において、第２制御プログラム２３０−２の実行が開始されることで、マイクロプロセッサ１００で実行される処理は、システムプログラム２１０による処理から第２制御プログラム２３０−２による処理に切り替わる。すなわち、第２制御プログラム２３０−２の実行開始から実行終了するまでの間は、マイクロプロセッサ１００は、システムプログラム２１０を実行しない。そして、第２制御プログラム２３０−２の実行が終了するまでに次の制御サイクル開始の割り込みがあれば、リアルタイムＯＳ２００が、マイクロプロセッサ１００での第２制御プログラム２３０−２の実行を中断させ、システムプログラム２１０の実行を再開させる。あるいは、第２制御プログラム２３０−２の実行が終了した通知（第２制御プログラム２３０−２の実行終了通知）があれば、マイクロプロセッサ１００における実行対象は、第２制御プログラム２３０−２からシステムプログラム２１０へ戻る。
【０１４０】
第２制御プログラム２３０−２の実行終了通知を受けると（ステップＳ１３０において「実行終了通知」）、マイクロプロセッサ１００は、第２制御プログラム２３０−２の現在状態を「実行終了」に設定する（ステップＳ１３２）。そして、処理はステップＳ１３４へ進む。
【０１４１】
ステップＳ１３４において、マイクロプロセッサ１００は、次の制御サイクル開始の割り込み信号を待つ（ステップＳ１３４）。制御サイクル開始の割り込みを受けると（ステップＳ１３４においてＹＥＳ）、ステップＳ１０２以下の処理が再度実行される。
【０１４２】
一方、第２制御プログラム２３０−２の実行終了通知までに制御サイクル開始の割り込みを受けると（ステップＳ１３０において「制御サイクル開始」）、マイクロプロセッサ１００で実行中の第２制御プログラム２３０−２は中断され、マイクロプロセッサ１００は、ステップＳ１０２以下の処理を再度実行する。
【０１４３】
図８に示す処理手順は、以下のようにまとめることができる。
すなわち、本実施の形態に係る制御プログラム２３０は、第１制御プログラム２３０−１および第２制御プログラム２３０−１を含む（図７参照）。そして、第１制御プログラム２３０−１は、モータの運動を制御するための第１モーション指令値データ（出力データ）を生成する第１モーション演算プログラム２３４−１を含む。また、第２制御プログラム２３０−２は、モータの運動を制御するための第２モーション指令値データ（出力データ）を生成する第２モーション演算プログラム２３４−２を含む。
【０１４４】
さらに、第１制御プログラム２３０−１および第２制御プログラム２３０−２の少なくとも一方は、ユーザにおける制御目的に応じて作成され第１モーション演算プログラム２３４−１および第２モーション演算プログラム２３４−１に対してその実行に必要な指示を与える命令を含むユーザプログラム２３６（図７（ｃ）では、２３６−１および２３６−２）を含む。
【０１４５】
本実施の形態に係るシステムプログラム２１０は、マイクロプロセッサ１００に、制御サイクルの周期と同じ周期の第１実行サイクルごとに第１制御プログラム２３０−１を実行開始させる第１実行制御命令（図６参照）と、制御サイクルの周期の２以上の整数倍の周期の第２実行サイクルごとに第２制御プログラム２３０−２を実行開始させる第２実行制御命令（図６参照）とを含む。
【０１４６】
第２実行制御命令は、マイクロプロセッサ１００に、第２実行サイクルが開始する制御サイクルにおいて、第１制御プログラム２３０−１の実行終了後に第２制御プログラム２３０−２を実行開始させ、当該制御サイクルが終了するまでに第２制御プログラム２３０−２の実行が終了しなければ次の制御サイクルにおいて第１制御プログラム２３０−１の実行終了後に第２制御プログラム２３０−２の未実行の部分の実行を開始させる命令を含む（図６参照）。
【０１４７】
＜Ｉ．サポート装置＞
次に、ＰＬＣ１で実行されるプログラムの作成およびＰＬＣ１のメンテナンスなどを行うためのＰＬＣサポート装置８について説明する。
【０１４８】
図９は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のハードウェア構成を示す模式図である。図９を参照して、ＰＬＣサポート装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【０１４９】
図９を参照して、ＰＬＣサポート装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。
【０１５０】
ＰＬＣサポート装置８は、さらに、ユーザからの操作を受付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのモニタ８７とを含む。さらに、ＰＬＣサポート装置８は、ＰＬＣ１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）８９を含む。
【０１５１】
後述するように、ＰＬＣサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【０１５２】
上述したように、ＰＬＣサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【０１５３】
図１０は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のソフトウェア構成を示す模式図である。図１０を参照して、ＰＬＣサポート装置８ではＯＳ３１０が実行され、ＰＬＣサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【０１５４】
ＰＬＣサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレーション用シーケンス命令演算プログラム３２４と、シミュレーション用モーション演算プログラム３２５と、通信プログラム３２６とを含む。ＰＬＣサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、ＰＬＣサポート装置８にインストールされる。
【０１５５】
エディタプログラム３２１は、ユーザプログラム２３６を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソースプログラム３３０を作成する機能に加えて、作成したソースプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からのソースプログラム３３０の入力を受付ける。
【０１５６】
コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＰＬＣサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム３４０を生成する機能を提供する。このユーザプログラム３４０は、ＰＬＣサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【０１５７】
デバッガプログラム３２３は、ユーザプログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【０１５８】
デバッガプログラム３２３は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム３４０を実行する機能を提供する。このシミュレーション時には、ＣＰＵユニット１３のシステムプログラムに含まれるシーケンス命令演算プログラム２３２およびモーション演算プログラム２３４に代えて、ＰＬＣサポートプログラム３２０に含まれるシミュレーション用シーケンス命令演算プログラム３２４およびシミュレーション用モーション演算プログラム３２５が用いられる。
【０１５９】
通信プログラム３２６は、ＰＬＣ１のＣＰＵユニット１３へユーザプログラム２３６を転送する機能を提供する。
【０１６０】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−ＲＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をＰＬＣサポート装置８へコピーし、通信プログラム３２６が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０１６１】
＜Ｊ．利点＞
本実施の形態に、モーション制御機能を有するＰＬＣにおいて、高速処理を要する一部のモーション制御処理のために比較的短い周期の実行サイクルを確保しつつ、それ以外のモーション制御処理も一定周期で実行することができる。
【０１６２】
たとえば、対象物に対して切削加工を行う加工機を制御する場合に、刃物の運動制御にかかわるような高速かつ高精度な制御を要するモーション制御処理を短い周期で実行することができるとともに、加工機に対する対象物の搬入や搬出にかかわるようなさほど高速性を要しないモーション制御処理も一定周期で実行することができる。
【０１６３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１６４】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  ターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、９  ＣＤ−ＲＯＭ、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、５１  ターミナルバス、５２  通信カプラ、８１  ＣＰＵ、８３  ＲＡＭ、８５  キーボード、８６  マウス、８７  モニタ、８８  ドライブ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  ＵＳＢコネクタ、１２０  ＰＬＣシステムバスコントローラ、１２２  ＤＭＡ制御回路、１２４  ＰＬＣシステムバス制御回路、１２６，１４６  バッファメモリ、１３０  コネクタ、１４０  フィールドネットワークコントローラ、１４２  ＤＭＡ制御回路、１４４  フィールドネットワーク制御回路、２１０，２２０  システムプログラム、２１２  スケジューラプログラム、２１４  出力処理プログラム、２１６  入力処理プログラム、２１８  ＩＯ処理プログラム、２３０  制御プログラム、２３０−１  第１制御プログラム、２３０−２  第２制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３４−１  第１モーション演算プログラム、２３４−２  第２モーション演算プログラム、２３６  ユーザプログラム、２３６−１  第１ユーザプログラム、２３６−２  第２ユーザプログラム、３２０  サポートプログラム、３２１  エディタプログラム、３２２  コンパイラプログラム、３２３  デバッガプログラム、３２４  シミュレーション用シーケンス命令演算プログラム、３２５  シミュレーション用モーション演算プログラム、３２６  通信プログラム、３３０  ソースプログラム、３４０  ユーザプログラム、１０４１  プログラム領域、１０４２  制御プログラムの作業領域、１０４３  ＰＬＣシステムバス送信バッファ、１０４４  ＰＬＣシステムバス受信バッファ、１０４５  フィールドネットワーク送信バッファ、１０４６  フィールドネットワーク受信バッファ、２００  リアルタイムＯＳ、ＳＹＳ  システム。
【要約】
【課題】モーション制御機能を有するＰＬＣにおいて、高速処理を要する一部のモーション制御処理のためには比較的短い周期の実行サイクルを確保しつつ、それ以外のモーション制御処理も一定周期で実行できるようにする。
【解決手段】システムプログラムは、制御サイクルの周期と同じ周期の第１実行サイクルごとに第１制御プログラムを実行開始させる第１実行制御命令と、制御サイクルの周期の２以上の整数倍の周期の第２実行サイクルごとに第２制御プログラムを実行開始させる第２実行制御命令とを含む。第２実行制御命令は、第２実行サイクルが開始する制御サイクルにおいて、第１制御プログラムの実行終了後に第２制御プログラムを実行開始させ、当該制御サイクルが終了するまでに第２制御プログラムが終了しなければ次の制御サイクルにおいて第１制御プログラムの実行終了後に第２制御プログラムの未実行の部分の実行を開始させる命令を含む。
【選択図】図８【図１】
0004752984.tif 000002
【図２】
0004752984.tif 000003
【図３】
0004752984.tif 000004
【図４】
0004752984.tif 000005
【図５】
0004752984.tif 000006
【図６】
0004752984.tif 000007
【図７】
0004752984.tif 000008
【図８】
0004752984.tif 000009
【図９】
0004752984.tif 000010
【図１０】
0004752984.tif 000011