(57)【要約】【課題】制御プログラムの実行時間が散発的に長くなりうることを考慮して、ＰＬＣのＣＰＵユニットが行う制御データの出力および入力のための通信の周期を、制御プログラムの最大実行時間よりも短い一定時間としうるＰＬＣのＣＰＵユニットを提供する。【解決手段】スケジューラプログラムは、マイクロプロセッサに、第１の制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、通信回路による出力データの送信および入力データの受信の後に、第１の制御プログラムの実行を開始させる命令と、マイクロプロセッサに、第１の制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、第１の制御プログラムの未実行の部分を実行させる命令とを含む。【選択図】図５
2012194663.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）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【０２０６】
上述したように、ＰＬＣサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【０２０７】
図１３は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のソフトウェア構成を示す模式図である。図１３を参照して、ＰＬＣサポート装置８ではＯＳ３１０が実行され、ＰＬＣサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【０２０８】
ＰＬＣサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレーション用シーケンス命令演算プログラム３２４と、シミュレーション用モーション演算プログラム３２５と、通信プログラム３２６とを含む。ＰＬＣサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、ＰＬＣサポート装置８にインストールされる。
【０２０９】
エディタプログラム３２１は、ユーザプログラム２３６を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソースプログラム３３０を作成する機能に加えて、作成したソースプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からのソースプログラム３３０の入力を受付ける。
【０２１０】
コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＰＬＣサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム３４０を生成する機能を提供する。このユーザプログラム３４０は、ＰＬＣサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【０２１１】
デバッガプログラム３２３は、ユーザプログラムのソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【０２１２】
デバッガプログラム３２３は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム３４０を実行する機能を提供する。このシミュレーション時には、ＣＰＵユニット１３のシステムプログラムに含まれるシーケンス命令演算プログラム２３２およびモーション演算プログラム２３４に代えて、ＰＬＣサポートプログラム３２０に含まれるシミュレーション用シーケンス命令演算プログラム３２４およびシミュレーション用モーション演算プログラム３２５が用いられる。
【０２１３】
通信プログラム３２６は、ＰＬＣ１のＣＰＵユニット１３へユーザプログラム２３６を転送する機能を提供する。
【０２１４】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−ＲＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をＰＬＣサポート装置８へコピーし、通信プログラム３２６が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０２１５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２１６】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  リモートＩＯターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、９  ＣＤ−ＲＯＭ、１０  接続ケーブル、１１  ＰＬＣシステムバス、１２  電源ユニット、１３  ＣＰＵユニット、１４，５３  ＩＯユニット、１５  特殊ユニット、５１  リモートＩＯターミナルバス、５２  通信カプラ、８１  ＣＰＵ、８３  ＲＡＭ、８５  キーボード、８６  マウス、８７  モニタ、８８  ＣＤ−ＲＯＭドライブ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  ＵＳＢコネクタ、１２０  ＰＬＣシステムバスコントローラ、１２２  ＤＭＡ制御回路、１２４  ＰＬＣシステムバス制御回路、１２６，１４６  バッファメモリ、１３０  ＰＬＣシステムバスコネクタ、１４０  フィールドネットワークコントローラ、１４２  ＤＭＡ制御回路、１４４  フィールドネットワーク制御回路、２００  リアルタイムＯＳ、２１０  システムプログラム、２１２  スケジューラプログラム、２１４  出力処理プログラム、２１６  入力処理プログラム、２１８  ＩＯ処理プログラム、２２０  その他のシステムプログラム、２２２  制御サイクルの周期を設定するプログラム、２３０  制御プログラム、２３０−１  高優先制御プログラム、２３０−２  低優先制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３６  ユーザプログラム、２４０  異常処理プログラム、３２０  ＰＬＣサポートプログラム、３２１  エディタプログラム、３２２  コンパイラプログラム、３２３  デバッガプログラム、３２４  シミュレーション用シーケンス命令演算プログラム、３２５  シミュレーション用モーション演算プログラム、３２６  通信プログラム、３３０  ソースプログラム、３４０  ユーザプログラム、１０４１  プログラム領域、１０４２  制御プログラムの作業領域、１０４３  ＰＬＣシステムバス送信バッファ、１０４４  ＰＬＣシステムバス受信バッファ、１０４５  フィールドネットワーク送信バッファ、１０４６  フィールドネットワーク受信バッファ。
【図１】
2012194663.tif 000003
【図２】
2012194663.tif 000004
【図３】
2012194663.tif 000005
【図４】
2012194663.tif 000006
【図５】
2012194663.tif 000007
【図６】
2012194663.tif 000008
【図７】
2012194663.tif 000009
【図８】
2012194663.tif 000010
【図９】
2012194663.tif 000011
【図１０】
2012194663.tif 000012
【図１１】
2012194663.tif 000013
【図１２】
2012194663.tif 000014
【図１３】
2012194663.tif 000015
【手続補正書】
【提出日】平成23年7月7日(2011.7.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御対象を制御するＰＬＣのＣＰＵユニットであって、
マイクロプロセッサと、
記憶手段と、
出力データの送信および入力データの受信を行う通信回路と、
制御サイクルの周期を設定する手段とを備え、
前記ＰＬＣのＣＰＵユニットは、前記出力データの送信と、前記入力データの受信と、前記入力データを使用して前記出力データを生成する第１の制御プログラムの実行とを繰り返すことによって前記制御対象を制御するように構成されており、
前記記憶手段は、前記第１の制御プログラムと、前記第１の制御プログラムの実行を制御するスケジューラプログラムとの格納に用いられ、
前記マイクロプロセッサは、前記記憶手段に格納された前記スケジューラプログラムおよび前記第１の制御プログラムを実行し、
前記通信回路は、一定の制御サイクルの周期で、前記出力データの送信および入力データの受信を行い、
前記スケジューラプログラムは、
前記マイクロプロセッサに、前記第１の制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、前記通信回路による出力データの送信および入力データの受信の後に、前記第１の制御プログラムの実行を開始させる命令と、
前記マイクロプロセッサに、前記第１の制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、前記第１の制御プログラムの未実行の部分を実行させる命令とを含む、ＰＬＣのＣＰＵユニット。
【請求項２】
前記第１の制御プログラムは、実行されるごとにモータドライバに対して出力される指令値を算出するモーション演算プログラムを含み、
前記モーション演算プログラムは、ユーザにおける制御目的に応じて作成されたユーザプログラムにより起動された初回の実行において、指令値の算出を開始するために必要な初期処理を実行することにより後続の実行に要する時間よりも長い実行時間を必要とする、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項３】
前記第１の制御プログラムは、さらに、前記ユーザプログラムを含む、請求項２に記載のＰＬＣのＣＰＵユニット。
【請求項４】
前記記憶手段は、さらに、前記制御サイクルの周期の２以上の整数倍の周期の実行サイクルが設定された第２の制御プログラムの格納に用いられ、
前記スケジューラプログラムは、前記マイクロプロセッサに、前記制御サイクル内の前記第１の制御プログラムの終了後の期間において、前記実行サイクルに従って前記第２の制御プログラムを実行させる命令を含む、請求項１〜３のいずれか１項に記載のＰＬＣのＣＰＵユニット。
【請求項５】
前記記憶手段は、さらに、前記制御サイクルの周期の２以上の整数倍の周期の実行サイクルが設定された第２の制御プログラムの格納に用いられ、
前記スケジューラプログラムは、前記マイクロプロセッサに、前記制御サイクル内の前記第１の制御プログラムの終了後の期間において、前記実行サイクルに従って前記第２の制御プログラムを実行させる命令を含み、
前記第１の制御プログラムは、前記モーション演算プログラムを含み、
前記第２の制御プログラムは、前記ユーザプログラムを含む、請求項２に記載のＰＬＣのＣＰＵユニット。
【請求項６】
前記記憶手段は、さらに、前記第１の制御プログラムの１回の実行が継続する制御サイクル数の限度数を特定する設定内容と、前記第１の制御プログラムの１回の実行が前記限度数の制御サイクル内に終了しない場合に実行されるべき異常処理プログラムとの格納に用いられ、
前記スケジューラプログラムは、前記第１の制御プログラムが１回の実行を継続している制御サイクルの数が前記限度数に達し、かつ、当該制御サイクル内で第１の制御プログラムの実行が終了しなかった場合に、次の制御サイクルにおいて、前記マイクロプロセッサに、第１の制御プログラムの未実行部分を実行させることなく前記異常処理プログラムを実行させる命令を含む、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項７】
前記通信回路は、前記マイクロプロセッサによる制御を受けて前記出力データの送信および入力データの受信を開始するように構成されており、
前記スケジューラプログラムは、さらに、前記通信回路に、一定の制御サイクルの周期で前記通信を開始させる命令を含む、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項８】
前記スケジューラプログラムは、さらに、制御サイクル内に前記第１の制御プログラムの実行が終了しなかった場合は、次の制御サイクルにおいて、前記通信回路に、前記第１の制御プログラムの未実行の部分に優先して前記通信を開始させるための処理を実行させ、その後、前記マイクロプロセッサに、第１の制御プログラムの未実行の部分を実行させる命令を含む、請求項７に記載のＰＬＣのＣＰＵユニット。
【請求項９】
前記制御サイクルの周期で信号を発生するタイマ回路をさらに備え、
前記通信回路は、前記タイマ回路が発生する前記信号をトリガとして前記出力データの送信および入力データの受信を開始するように構成されている、請求項１に記載のＰＬＣのＣＰＵユニット。
【請求項１０】
前記マイクロプロセッサは、第１および第２のコアを含み、
前記第１のコアは前記スケジューラプログラムを実行し、前記第２のコアは前記第１の制御プログラムを実行し、
前記スケジューラプログラムは、前記第１の制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、前記第１の制御プログラムの実行を中断しないことにより前記第１の制御プログラムの未実行の部分を前記マイクロプロセッサに実行させる命令を含む、請求項１、７、９のいずれか１項に記載のＰＬＣのＣＰＵユニット。
【請求項１１】
マイクロプロセッサと、記憶手段と、出力データの送信および入力データの受信を行う通信回路とを備え、前記通信回路による前記出力データの送信および前記入力データの受信を一定の制御サイクルの周期で繰り返すとともに、前記入力データを使用して前記出力データを生成する、前記記憶手段に格納される第１の制御プログラムの実行を繰り返すことによって制御対象を制御するＰＬＣのＣＰＵユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのＰＬＣ用システムプログラムであって、
前記第１の制御プログラムの実行を制御するスケジューラプログラムと、前記制御サイクルの周期を設定するプログラムとを含み、
前記スケジューラプログラムは、
前記マイクロプロセッサに、前記第１の制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、前記通信回路による出力データの送信および入力データの受信の後に、前記第１の制御プログラムの実行を開始させる命令と、
前記マイクロプロセッサに、前記第１の制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、前記第１の制御プログラムの未実行の部分を実行させる命令とを含む、ＰＬＣ用システムプログラム。
【請求項１２】
さらに、前記第１の制御プログラムの一部または全部であり、実行されるごとにモータドライバに対して出力される指令値を算出するモーション演算プログラムを含み、
前記モーション演算プログラムは、ユーザにおける制御目的に応じて作成されたユーザプログラムにより起動された初回の実行において、指令値の算出を開始するために必要な初期処理を実行することにより後続の実行に要する時間よりも長い実行時間を必要とする、請求項１１に記載のＰＬＣ用システムプログラム。
【請求項１３】
マイクロプロセッサと、記憶手段と、出力データの送信および入力データの受信を行う通信回路とを備え、前記通信回路による前記出力データの送信および前記入力データの受信を一定の制御サイクルの周期で繰り返すとともに、前記入力データを使用して前記出力データを生成する、前記記憶手段に格納される第１の制御プログラムの実行を繰り返すことによって制御対象を制御するＰＬＣのＣＰＵユニットにおいて、前記記憶手段に格納されて前記マイクロプロセッサによって実行されるためのＰＬＣ用システムプログラムを格納した記録媒体であって、
前記第１の制御プログラムの実行を制御するスケジューラプログラムと、前記制御サイクルの周期を設定するプログラムとを含み、
前記スケジューラプログラムは、
前記マイクロプロセッサに、前記第１の制御プログラムの実行が終了した制御サイクルの次の制御サイクルにおいて、前記通信回路による出力データの送信および入力データの受信の後に、前記第１の制御プログラムの実行を開始させる命令と、
前記マイクロプロセッサに、前記第１の制御プログラムの実行が終了しなかった制御サイクルの次の制御サイクルにおいて、前記第１の制御プログラムの未実行の部分を実行させる命令とを含む、ＰＬＣ用システムプログラムを格納した記録媒体。
【請求項１４】
前記ＰＬＣ用システムプログラムは、さらに、前記第１の制御プログラムの一部または全部であり、モータドライバに対して出力される指令値を算出するモーション演算プログラムを含み、
前記モーション演算プログラムは、ユーザにおける制御目的に応じて作成されたユーザプログラムにより起動された初回の実行において、モーション指令値データの算出を開始するために必要な初期処理を実行することにより後続の実行に要する時間よりも長い実行時間を必要とする、請求項１３に記載のＰＬＣ用システムプログラムを格納した記録媒体。