(57)【要約】      （修正有）【課題】カムテーブルの切り換えを迅速に行なうことが可能なＰＬＣの演算ユニットを提供する。【解決手段】ＰＬＣのＣＰＵユニットは、モーション制御とシーケンス制御とを実行する。ＣＰＵユニットは、カムテーブルを用いたモーション制御を行なうための制御プログラムと、第１のカムテーブルおよび第２のカムテーブルとを格納している。マイクロプロセッサは、制御プログラムの実行中に予め定められた指示を受け付けると、制御プログラムの実行に用いるカムテーブルを第１のカムテーブルから第２のカムテーブルに切り換える。マイクロプロセッサは、カムテーブルの切り換えに基づき、第２のカムテーブルを用いた制御プログラムの実行結果を制御対象機器に出力する。【選択図】図９
2012194665.tif 000002
【特許請求の範囲】
【請求項１】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットであって、
プロセッサと、
電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納したメモリとを備え、
前記プロセッサは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力し、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換え、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力する、演算ユニット。
【請求項２】
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プロセッサは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行し、
前記展開後に前記予め定められた指示を受け付けると、前記展開された前記第２のカムテーブルを用いて前記プログラムを実行する、請求項１に記載の演算ユニット。
【請求項３】
前記プロセッサは、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行する、請求項１または２に記載の演算ユニット。
【請求項４】
前記メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納しており、
前記プロセッサは、
前記切り換え直後における前記制御対象機器の加速度が前記加速度に関する上限値を超える場合、前記制御対象機器の加速度を前記加速度に関する上限値に制限し、
前記切り換え直後における前記制御対象機器の減速度が前記減速度に関する上限値を超える場合、前記制御対象機器の減速度を前記減速度に関する上限値に制限する、請求項３に記載の演算ユニット。
【請求項５】
前記メモリは、前記カムテーブルを平滑化する平滑化フィルタをさらに格納しており、
前記プロセッサは、前記切り換え直後においては、前記第２のカムテーブルにおける前記変位を前記平滑化フィルタによってスムージング処理する、請求項３に記載の演算ユニット。
【請求項６】
前記メモリは、３次以上の高次多項式をさらに格納しており、
前記プロセッサは、前記切り換え直後においては、前記第２のカムテーブルにおける前記変位を前記高次多項式によってスムージング処理する、請求項３に記載の演算ユニット
。
【請求項７】
前記プロセッサは、前記第２のカムテーブルの変位を出力しない制御を行なうことによって生じる前記制御対象機器の移動量の不足分を、前記モーション制御における前記電子カムの１または複数のカム周期において補う処理をする、請求項４から６のいずれかに記載の演算ユニット。
【請求項８】
前記プロセッサは、前記１つのカム周期において前記移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける、請求項７に記載の演算ユニット。
【請求項９】
前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、
前記プロセッサは、
モーション演算プログラムの実行を、第１の定周期毎に繰り返し、
前記ユーザプログラムを、前記第１の定周期の整数倍となる第２の定周期毎に繰り返し、
前記ユーザプログラムのうち前記切り換えを行なうためのプログラムは、前記第１の定周期のタスクまたは前記第２の定周期のタスクに記述される、請求項１から８のいずれか１項に記載の演算ユニット。
【請求項１０】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットにおける出力制御方法であって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納しており、
前記出力制御方法は、
前記演算ユニットのプロセッサが、前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、
前記プロセッサが、前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換えるステップと、
前記プロセッサが、前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを備える、出力制御方法。
【請求項１１】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットを制御するプログラムであって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納しており、
前記プログラムは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換えるステップと、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを、前記演算ユニットに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル・ロジック・コントローラの演算ユニット、出力制御方法、およびプログラムに関し、特に、モーション制御とシーケンス制御とを実行する演算ユニット、演算ユニットにおける出力制御方法、および演算ユニットを制御するプログラムに関する。
【背景技術】
【０００２】
ＰＬＣ（Programmable Logic Controller）は、たとえば、ユーザプログラムを実行するマイクロプロセッサを含むＣＰＵ（Central Processing Unit）ユニット、外部のスイッチやセンサからの信号入力および外部のリレーやアクチュエータへの信号出力を担当するＩＯ（Input Output）ユニットといった複数のユニットで構成される。それらのユニット間で、ユーザプログラム実行サイクルごとに、ＰＬＣシステムバスおよび／またはフィールドネットワークを経由してデータの授受をしながら、ＰＬＣは制御動作を実行する。
【０００３】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーション制御が含まれる場合がある。従来、このようなモーション制御、典型的には、モータを駆動するモータドライバに対して周期的に指令値を出力する制御処理（モーション演算プログラムの実行）は、ＰＬＣとは別に設けたモーションコントローラにおいて行われていた。しかしながら、情報技術の分野においては、マイクロプロセッサや通信ネットワークの高速化が進展しつつある。そのため、ＰＬＣにおいてもそれらの技術を利用して、１つのマイクロプロセッサにおいて、ユーザプログラムだけでなくモーション演算プログラムをも実行することが可能になってきた。
【０００４】
たとえば、特許文献１には、モータを制御するモーション制御機能とシーケンス演算（ユーザプログラム）を実行するＰＬＣ機能とを、１つのＣＰＵで処理する構成が開示されている。より具体的には、基本クロックの１サイクルごとに、「定周期モーション制御処理および各軸処理」と「高速シーケンス処理」とを実行し、さらに各基本クロックサイクル内の残りの時間において、「低速シーケンス処理」または「非定周期モーション制御処理」を実行することが開示されている。
【０００５】
また、モーション制御においては電子カムが用いられることがある。電子カムは、機械式カムの動作を電子制御で実現するのものであり、カムの段取り換えやカム形状の微調整などが自由に簡単にできる。非特許文献１には、電子カムを実現するためのカムテーブルについての記述がなされている。また、非特許文献１には、カム変数についての記述がなされている。
【０００６】
特許文献２には、電子カム制御装置が開示されている。電子カム制御装置は、ストローク下死点設定部と、加算移動量設定部と、位置指令算出部と、ストローク下死点変更部とを備える。加算移動量設定部は、ストローク下死点位置を変更するための加算移動データを設定する。位置指令算出部は、ストローク下死点変更指令が入力されると、カム位置決め量Ａに、ストローク下死点設定部に設定されたストローク下死点位置および加算移動量設定部に設定された加算移動データに対応する加算移動量を逐次加算し、この加算結果を出力軸に対する位置指令値として順次出力する。ストローク下死点変更部は、ストローク下死点変更指令が入力されると、ストローク下死点設定部に設定されたストローク下死点位置に加算移動量設定部に設定された加算移動データに対応する加算移動量を逐次加算し、この加算結果でストローク下死点設定部に設定されたストローク下死点位置を順次更新する。
【０００７】
特許文献３には、モータの位置決め制御システムが開示されている。当該モータの位置決め制御システムは、移動実時間Ｒtiを分周周期毎に更新し、更新した移動実時間Ｒtiから無次元時間ｔiを求め、この無次元時間ｔiに対応する無次元位置Ｓijをカム曲線テーブルを用いて求める。モータの位置決め制御システムは、求めた無次元位置Ｓijにストロークｈjを乗じて実位置ｓijを求める。モータの位置決め制御システムは、このような実位置ｓijを求める演算を選択したＮ個のカム曲線について行なう。モータの位置決め制御システムは、求めたＮ個の実位置ｓijを加算する。モータの位置決め制御システムは、この加算値ｓTiと前回の分周周期で求めた加算値ｓTi-1の差ｓTi−ｓTi-1を指令値にしてモータの回転位置をフィードバック制御する。
【０００８】
また、特許文献４から６には、主軸モータと従属軸モータとを同期駆動させる装置が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−１４０６５５号公報
【特許文献２】特開２００６−２９３６９２号公報
【特許文献３】特開平８−３３９２１８号公報
【特許文献４】特開平８−１２６３７５号公報
【特許文献５】特開平９−２８９７８８号公報
【特許文献６】特開平１０−１７４４７８号公報
【非特許文献】
【００１０】
【非特許文献１】Technical Specification PLCopen - Technical Committee 2 - Task Force，Function blocks for motion control(Formerly Part 1 and Part 2)，PLCopen Working Draft，Version 1.99 - Release for comments - till August 16, 2010
【発明の概要】
【発明が解決しようとする課題】
【００１１】
従来においては、ワークの種類に応じたカムテーブルに切り換える際、一旦、従動軸の動作を停止させる必要があった。そのため、従動軸が停止させている時間が、無駄な時間となっていた。また、非特許文献１には、カムテーブルの切り換えについて具体的な内容が開示されていない。
【００１２】
本願発明は上記の問題点に鑑みなされたものであって、その目的は、カムテーブルの切り換えを迅速に行なうことが可能なＰＬＣの演算ユニット、出力制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明のある局面に従うと、演算ユニットは、モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットである。演算ユニットは、プロセッサと、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納したメモリとを備える。プロセッサは、第１のカムテーブルを用いてプログラムを実行し、当該実行結果を従節に対応する制御対象機器に出力する。プロセッサは、プログラムの実行中に予め定められた指示を受け付けると、プログラムの実行に用いるカムテーブルを第１のカムテーブルから第２のカムテーブルに切り換える。プロセッサは、切り換えに基づき、第２のカムテーブルを用いたプログラムの実行結果を制御対象機器に出力する。
【００１４】
好ましくは、メモリは、不揮発性メモリと、揮発性メモリとを含む。不揮発性メモリは、第１のカムテーブルと第２のカムテーブルとを格納している。プロセッサは、第１のカムテーブルと第２のカムテーブルとを不揮発性メモリから読み出して、当該読み出したカムテーブルを揮発性メモリに展開する。プロセッサは、予め定められた指示を受け付ける前は、展開された第１のカムテーブルを用いてプログラムを実行する。プロセッサは、展開後に予め定められた指示を受け付けると、展開された第２のカムテーブルを用いてプログラムを実行する。
【００１５】
好ましくは、プロセッサは、プログラムの実行に用いるカムテーブルを第１のカムテーブルから第２のカムテーブルに切り換える場合、切り換え時における第１のカムテーブルにおける位相よりも大きな第２のカムテーブルの位相に対応付けられた変位を用いてプログラムを実行する。
【００１６】
好ましくは、メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納している。プロセッサは、切り換え直後における制御対象機器の加速度が加速度に関する上限値を超える場合、制御対象機器の加速度を加速度に関する上限値に制限する。プロセッサは、切り換え直後における制御対象機器の減速度が減速度に関する上限値を超える場合、制御対象機器の減速度を減速度に関する上限値に制限する。
【００１７】
好ましくは、メモリは、カムテーブルを平滑化する平滑化フィルタをさらに格納している。プロセッサは、切り換え直後においては、第２のカムテーブルにおける変位を平滑化フィルタによってスムージング処理する。
【００１８】
好ましくは、メモリは、３次以上の高次多項式をさらに格納している。プロセッサは、切り換え直後においては、第２のカムテーブルにおける変位を高次多項式によってスムージング処理する。
【００１９】
好ましくは、プロセッサは、第２のカムテーブルの変位を出力しない制御を行なうことによって生じる制御対象機器の移動量の不足分を、モーション制御における電子カムの１または複数のカム周期において補う処理をする。
【００２０】
好ましくは、プロセッサは、１つのカム周期において移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける。
【００２１】
好ましくは、プログラムは、モーション演算プログラムと、モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含む。プロセッサは、モーション演算プログラムの実行を、第１の定周期毎に繰り返す。プロセッサは、ユーザプログラムを、第１の定周期の整数倍となる第２の定周期毎に繰り返す。ユーザプログラムのうち上記切り換えを行なうためのプログラムは、第１の定周期のタスクまたは第２の定周期のタスクに記述される。
【００２２】
本発明の他の局面に従うと、出力制御方法は、モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットにおける出力制御方法である。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納している。出力制御方法は、演算ユニットのプロセッサが、第１のカムテーブルを用いてプログラムを実行し、当該実行結果を従節に対応する制御対象機器に出力するステップと、プロセッサが
、プログラムの実行中に予め定められた指示を受け付けると、プログラムの実行に用いるカムテーブルを第１のカムテーブルから第２のカムテーブルに切り換えるステップと、プロセッサが、切り換えに基づき、第２のカムテーブルを用いたプログラムの実行結果を制御対象機器に出力するステップとを備える。
【００２３】
本発明のさらに他の局面に従うと、プログラムは、モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットを制御するプログラムである。演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納している。プログラムは、第１のカムテーブルを用いてプログラムを実行し、当該実行結果を従節に対応する制御対象機器に出力するステップと、プログラムの実行中に予め定められた指示を受け付けると、プログラムの実行に用いるカムテーブルを第１のカムテーブルから第２のカムテーブルに切り換えるステップと、切り換えに基づき、第２のカムテーブルを用いたプログラムの実行結果を制御対象機器に出力するステップとを、演算ユニットに実行させる。
【発明の効果】
【００２４】
本発明によれば、カムテーブルの切り換えを迅速に行なうことが可能となる。
【図面の簡単な説明】
【００２５】
【図１】ＰＬＣシステムの概略構成を示す模式図である。
【図２】ＣＰＵユニットのハードウェア構成を示す模式図である。
【図３】ＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】制御プログラムによって提供されるモーション制御の概略の処理手順を示すフローチャートである。
【図５】モーション制御命令とタスクとの関係を示した図である。
【図６】電子カムの機能概要を表した図である。
【図７】電子カムの動作を視覚的に説明するための図である。
【図８】電子カムのカム曲線を示した図である。
【図９】電子カムに関するシステム構成を表した図である。
【図１０】カムテーブルのデータ構造を表した図である。
【図１１】電子カムが適用される液体充填装置の一例を示した図である。
【図１２】図８に示したカム曲線とは異なるカム曲線を示した図である。
【図１３】カムテーブルを表した図である。
【図１４】カムテーブルの切り換え処理を説明するための図である。
【図１５】カムテーブルを切り換えるためのユーザインターフェイスを表した図である。
【図１６】図１５に示したカムテーブルの切り換えのタイミングチャートを表した図である。
【図１７】カムテーブルの切り換え時における処理について説明するための図である。
【図１８】カムテーブルを切り換える手順を示したフローチャートである。
【図１９】高優先度定周期タスクにカムテーブルを切り換える制御命令を記載したときのデータフローを表した図である。
【図２０】低優先度定周期タスクにカムテーブルを切り換える制御命令を記載したときのデータフローを表した図である。
【図２１】カムテーブルの切り換え前後における電子カムの動作を説明するための図である。
【図２２】スムージング処理に関する処理の流れを示したフローチャートである。
【図２３】スムージング処理を行なう場合のスムージングパターンを説明するための図である。
【図２４】ＣＰＵユニットに接続して用いられるＰＬＣサポート装置のハードウェア構成を示す模式図である。
【図２５】ＣＰＵユニットに接続して用いられるＰＬＣサポート装置のソフトウェア構成を示す模式図である。
【図２６】平滑化フィルタを用いた場合における、図１５に示したカムテーブルの切り換えのタイミングチャートを表した図である。
【図２７】多項式曲線を用いる場合における、電子カム５００に関するシステム構成を表した図である。
【図２８】多項式を用いた場合における、図１５に示したカムテーブルの切り換えのタイミングチャートを表した図である。
【発明を実施するための形態】
【００２６】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２７】
＜Ａ．システム構成＞
本実施の形態に係るＰＬＣは、モータの運動を制御するためのモーション制御機能を有する。まず、図１を参照して、本実施の形態に係るＰＬＣ１のシステム構成について説明する。
【００２８】
図１は、本発明の実施の形態に係るＰＬＣシステムの概略構成を示す模式図である。図１を参照して、ＰＬＣシステムＳＹＳは、ＰＬＣ１と、ＰＬＣ１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器である検出スイッチ６およびリレー７とを含む。また、ＰＬＣ１には、接続ケーブル１０などを介してＰＬＣサポート装置８が接続される。
【００２９】
ＰＬＣ１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、ＰＬＣシステムバス１１を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、ＰＬＣ１として構成される各ユニットは、ＰＬＣメーカーが提供するものであるので、ＰＬＣシステムバス１１は、一般にＰＬＣメーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【００３０】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、検出スイッチ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００３１】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００３２】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登
録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ  ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ  Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。本実施の形態に係るＰＬＣシステムＳＹＳでは、典型的に、本実施の形態においては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）をフィールドネットワーク２として採用する場合の構成について例示する。
【００３３】
なお、図１には、ＰＬＣシステムバス１１およびフィールドネットワーク２の両方を有するＰＬＣシステムＳＹＳを例示するが、一方のみを搭載するシステム構成を採用することもできる。たとえば、フィールドネットワーク２ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク２を使用せずに、サーボモータドライバ３をＰＬＣシステムバス１１に直接接続してもよい。さらに、フィールドネットワーク２の通信ユニットをＰＬＣシステムバス１１に接続し、ＣＰＵユニット１３から当該通信ユニット経由で、フィールドネットワーク２に接続された機器との間の通信を行なうようにしてもよい。
【００３４】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、ＰＬＣ１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行なう。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００３５】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００３６】
図１に示すＰＬＣシステムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行なう。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行なうための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００３７】
なお、ＰＬＣサポート装置８については後述する。
＜Ｂ．ＣＰＵユニットのハードウェア構成＞
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本発明の実施の形態に係るＣＰＵユニット１３のハードウェア構成を示す模式図である。図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８
と、ＰＬＣシステムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ１１０とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００３８】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００３９】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００４０】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３への電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００４１】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating System）、ＰＬＣ１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【００４２】
システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
【００４３】
ＣＰＵユニット１３は、通信回路として、ＰＬＣシステムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。
【００４４】
バッファメモリ１２６は、ＰＬＣシステムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」とも称す。）の送信バッファ、および、ＰＬＣシステムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ１０４から読み出されて、バッファメモリ１２６に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００４５】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファメモリ１２６への出力データの転送、および、バッファメモリ１２６からメインメモリ１０４への入力データの転送を行なう。
【００４６】
ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１に接続される他のユニットとの間で、バッファメモリ１２６の出力データを送信する処理および入力データを受信してバッファメモリ１２６に格納する処理を行なう。典型的には、ＰＬＣシステムバス制御回路１２４は、ＰＬＣシステムバス１１における物理層およびデータリンク層の機能を提供する。
【００４７】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行なうためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００４８】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファメモリ１４６への出力データの転送、および、バッファメモリ１４６からメインメモリ１０４への入力データの転送を行なう。
【００４９】
フィールドネットワーク制御回路１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファメモリ１４６の出力データを送信する処理および入力データを受信してバッファメモリ１４６に格納する処理を行なう。典型的には、フィールドネットワーク制御回路１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００５０】
ＵＳＢコネクタ１１０は、ＰＬＣサポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、ＰＬＣサポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介してＰＬＣ１に取込まれる。
【００５１】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００によって実行される。
【００５２】
図３は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００５３】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じ
て設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。このリアルタイムＯＳは、典型的には、ＰＬＣのメーカーあるいは専門のソフトウェア会社などによって提供される。
【００５４】
システムプログラム２１０は、ＰＬＣ１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００５５】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、ＰＬＣシステムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００５６】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００５７】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０およびユーザプログラム２３６を実行する。
【００５８】
以下、各プログラムについてより詳細に説明する。
上述のユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、ＰＬＣサポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、ＰＬＣサポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００５９】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００６０】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（モーション制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つのモーション制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各モーション制御サイクルにおいて実行を完了すべき処理と、複数のモーション制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各モーション制御
サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００６１】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０へ転送するのに適した形式に再配置する。ＰＬＣシステムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００６２】
入力処理プログラム２１６は、ＰＬＣシステムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００６３】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００６４】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったなモータドライバに対して出力する指令値を算出するプログラムである。
【００６５】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、ＰＬＣ１の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム２２０は、モーション制御サイクルの周期を設定するプログラム２２２を含む。
【００６６】
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがＰＬＣサポート装置８へ入力する。すると、その入力された情報は、ＰＬＣサポート装置８からＣＰＵユニット１３へ転送される。モーション制御サイクルの周期を設定するプログラム２２２は、ＰＬＣサポート装置８からの情報を不揮発性メモリ１０６に格納させるとともに、システムタイマ１０８から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ１０８を設定する。ＣＰＵユニット１３への電源投入時に、モーション制御サイクルの周期を設定するプログラム２２２が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ１０６から読み出され、読み出された情報に従ってシステムタイマ１０８が設定される。
【００６７】
モーション制御サイクルの周期を指定する情報の形式としては、モーション制御サイクルの周期を示す時間の値や、モーション制御サイクルの周期に関する予め用意された複数の選択肢のうちから１つを特定する情報（番号または文字）などを採用することができる。
【００６８】
本実施の形態に係るＣＰＵユニット１３において、モーション制御サイクルの周期を設定する手段としては、モーション制御サイクルの周期を指定する情報を取得するために用いられるＰＬＣサポート装置８との通信手段、モーション制御サイクルの周期を設定するプログラム２２２、ならびにモーション制御サイクルを規定する割り込み信号の周期を任意に設定可能に構成されているシステムタイマ１０８の構成といった、モーション制御サイクルの周期を任意の設定するために用いられる要素が該当する。
【００６９】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。本実施の形態に係るＰＬＣ１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、出力準備割り込み（Ｐ）およびフィールドネットワーク送信割り込み（Ｘ）が初期設定される。リアルタイムＯＳ２００は、出力準備割り込み（Ｐ）またはフィールドネットワーク送信割り込み（Ｘ）が発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り換える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３とＰＬＣサポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００７０】
＜Ｄ．モーション制御の概略＞
次に、上述したユーザプログラム２３６に含まれる典型的な構成について説明する。ユーザプログラム２３６は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワークが所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム２３６は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム２３４が起動し、まず、モーション演算プログラム２３４の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第１サイクルでの指令値が算出される。したがって、初期処理および第１番目の指令値算出処理が、起動したモーション演算プログラム２３４が第１番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
【００７１】
図４は、本発明の実施の形態に係る制御プログラム２３０（ユーザプログラム２３６、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４）によって提供されるモーション制御の概略の処理手順を示すフローチャートである。図４を参照して、マイクロプロセッサ１００は、モータの運動に関する制御開始の条件が成立しているか否かを周期的に判断する（ステップＳ２）。この制御開始の条件が成立しているか否かの判断は、ユーザプログラム２３６およびシーケンス命令演算プログラム２３２によって実現される。制御開始の条件が成立していない場合（ステップＳ２においてＮＯの場合）には、ステップＳ２の判断が繰り返される。
【００７２】
制御開始の条件が成立している場合（ステップＳ２においてＹＥＳの場合）には、マイクロプロセッサ１００は、モーション制御に関する初期処理を実行する（ステップＳ４）。この初期処理としては、モータの運動の開始位置座標、終了位置座標、初期速度、初期加速度、軌跡などを算出処理が含まれる。続いて、マイクロプロセッサ１００は、第１サイクルでの指令値の算出処理を実行する（ステップＳ６）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ８）。
【００７３】
その後、マイクロプロセッサ１００は、次のモーション制御サイクルが到来するまで待つ（ステップＳ１０）。そして、マイクロプロセッサ１００は、モータの運動に関する制御終了の条件が成立しているか否かを周期的に判断する（ステップＳ１２）。この制御終了の条件が成立しているとは、サーボモータ４が終了位置に到達している状態などをいう。制御終了の条件が成立している場合（ステップＳ１２においてＹＥＳの場合）には、ス
テップＳ２以下の処理が再度繰り返される。このとき、起動中のモーション演算プログラム２３４は、新たな制御開始の条件が成立するまで不活性の状態に維持される。
【００７４】
制御終了の条件が成立していない場合（ステップＳ１２においてＮＯの場合）には、マイクロプロセッサ１００は、現在のサイクルでの指令値の算出処理を実行する（ステップＳ１４）。さらに、マイクロプロセッサ１００は、算出した指令値の出力処理を実行する（ステップＳ１６）。そして、ステップＳ１０以下の処理が繰り返される。
【００７５】
以下では、モーション制御を実現する為の機能モジュールを、「モーション制御機能モジュール」とも称する。具体的には、「モーション制御機能モジュール」とは、ユーザプログラムから与えられた目標値（位置、速度、トルクなど）を用いて、ユーザ所望のモーション動作を実現するために必要な、軸への指令値出力、および軸からの情報取得を一定の周期で実行する機能モジュールである。なお、「モーション制御機能モジュール」は、サーボドライバに対して指令値を出力するオープンループ型のコントローラである。また、モーション制御機能モジュールに対して指示を与える命令（ファンクションブロック等）のことを、「モーション制御命令」と称する。
【００７６】
図５は、モーション制御命令とタスクとの関係を示した図である。具体的には、図５は、データフローを示した図である。図５を参照して、モーション制御機能モジュールは、高優先度定周期タスク中で実行される。モーション制御命令は、高優先度定周期タスクまたは低優先度定周期タスクに記述できる。高優先度定周期タスクは、ＣＰＵユニット１３の中で最高優先度のタスクである。
【００７７】
低優先度定周期タスク実行中に高優先度定周期タスクが実行可能になった場合、低優先度定周期タスクは一旦中断され、高優先度定周期タスクが実行される。高優先度定周期タスクの完了後、低優先度定周期タスクの実行が再開される。なお、低優先度定周期タスクの周期Ｔ２は、高優先度定周期タスクの周期Ｔ１の整数倍である。図５は、Ｔ２＝２Ｔ１の場合を表している。
【００７８】
図５においては、スケジューラプログラムを「ＳＣ」と、出力・入力処理プログラムを「ＯＩ」と、ユーザプログラム２３６を「ＵＰＲＧ」と、モーション演算プログラム２３４を「ＭＣ」と表記している。また、図５では、説明の便宜上、各ＯＩ、各ＭＣを識別するために、それぞれに異なる参照符合７０１〜７０７を付している。
【００７９】
データの大まかな流れの順序は、（１）スレーブ→ＯＩ７０１→ＭＣ７０２→ＯＩ７０３→サーボモータドライバ３、（２）ＭＣ７０４→ＯＩ７０５→サーボモータドライバ３、（３）ＭＣ７０６→ＯＩ７０７→サーボモータドライバ３である。以下、具体的に説明する。
【００８０】
ＰＬＣ１の実行中においては、マイクロプロセッサ１００が、少なくとも、出力・入力処理プログラム（出力処理プログラム２１４および入力処理プログラム２１６）と、ユーザプログラム２３６と、モーション演算プログラム２３４とが実行可能な状態になっている。厳密に言えば、リアルタイムＯＳ２００がそれぞれのプログラムに係るプロセス（または、スレッド）を実行可能な状態に保持しており、スケジューラプログラム２１２がリアルタイムＯＳ２００およびハードウェアリソース（システムタイマ１０８など）を利用することで、各プログラムが適切なタイミングかつ適切な順序で実行される。このように、それぞれのプログラムに係る実行の開始／中断／終了などは、スケジューラプログラム２１２によって制御される。
【００８１】
図５において、スレーブからＯＩ７０１への入力（ＩＮ）に基づき、フィールドネット
ワークコントローラ１４０（図２参照）がモーション制御用入力データを受信してメインメモリ１０４のフィールドネットワーク受信バッファ（図示せず）に当該入力データを格納、および／または、ＰＬＣシステムバスコントローラ１２０が、モーション制御用入力データを受信してメインメモリ１０４のＰＬＣシステムバス受信バッファ（図示せず）に当該入力データを格納する。なお、ＣＰＵユニット１３がマスタであり、ＣＰＵユニット１３以外のそれぞれのユニットが、スレーブに設定される。
【００８２】
また、ＩＯ処理プログラム２１８の命令に従って、起動指令データまたはモーション指令値データが出力される。より具体的には、メインメモリ１０４の制御プログラムの作業領域（図示せず）に格納されている起動指令データおよびモーション指令値データがメインメモリ１０４のフィールドネットワーク送信バッファ（図示せず）へ転送される。さらに、フィールドネットワーク送信バッファへのデータ転送に続いて、フィールドネットワークコントローラ１４０が起動指令データまたはモーション指令値データをサーボモータドライバ３へ送信する。
【００８３】
なお、上記のスレーブからＯＩ７０１への入力（ＩＮ）では、ユーザプログラム２３６での演算には使用されるが、モーション演算プログラム２３４での演算には使用されない入力データについても入力され得る。また、ユーザプログラム２３６の実行により生成されるユーザプログラム出力データは、モーション演算プログラム２３４での演算には使用されない出力データであっても、ＩＯ処理プログラム２１８へ送られて、ＯＩの処理において出力される。
【００８４】
本実施の形態に係る「モーション制御サイクル」は、モーション演算プログラム２３４の実行および通信の周期、すなわち、サーボモータドライバ３へモーション指令値データを与える周期で実行される一連の処理のサイクルである。
【００８５】
＜Ｅ．電子カム＞
以下では、同期制御の機能として、電子カム動作について説明する。「同期制御」とは、主軸（入力軸）の位置に同期して従動軸（制御対象軸）の位置を制御することである。主軸としては、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうちのいずれかを指定できる。また、「電子カム動作」とは、後述するカムテーブルによって設定されたカムパターンに従い、制御周期でカム動作を行なう機能をいう。
【００８６】
ＣＰＵユニット１３は、制御周期毎に入力に同期して演算することによって出力を制御するため、演算結果がモーション制御機能モジュールで出力可能な最高速度を上回る場合もある。しかしながら、この場合には、ＣＰＵユニット１３は、エラーとはせずに、最高速度の出力を行なう。ＣＰＵユニット１３は、最高速度、最高で飽和することにより不足する移動量は次の制御周期以降において、分配して出力する。
【００８７】
図６は、電子カムの機能概要を表した図である。図６を参照して、電子カム５００は、電子カム演算部５０１と、補間部５０２と、スイッチ部５０３とを備える。電子カム演算部５０１には、フルクローズドループ制御用のエンコーダの位置、サーボドライバおよび仮想サーボドライバの指令位置、並びに、エンコーダ、サーボドライバ、および仮想サーボドライバのフィードバック位置のうち、予め選択された位置が入力される。
【００８８】
電子カム演算部５０１は、入力された主軸の位相とカムテーブルとに基づき、従動軸の変位を補間部５０２に出力する。補間部５０２は、電子カム演算部５０１から出力された値を用いて補間処理を行なう。補間部５０２は、補間処理後の値（指令位置）を、スイッ
チ部５０３を介して出力する。カムテーブルは、不揮発性メモリ１０６に予め格納されており、電源投入に伴い、メインメモリ１０４に展開される。
【００８９】
図７は、電子カム５００の動作を視覚的に説明するための図である。具体的には、図７は、カムテーブルに基づいたカム曲線で表される機械式カム５００Ａを含んだカム機構ＭＥを表した図である。図７を参照して、カム機構ＭＥは、主軸４００と、機械式カム５００Ａと、従動軸６００とを備えている。機械式カム５００Ａは、主軸４００に固定されており、主軸４００の回転に伴い回転する。従動軸６００は、機械式カム５００Ａの回転に伴い、直線運動を行なう。つまり、カム機構ＭＥにおいては、主軸の位相（入力）が変化すると、従動軸６００が変位（出力）する。このようなカム機構ＭＥにおける入出力を、ソフトウェアにて実現したものが電子カム５００である。
【００９０】
図８は、電子カム５００のカム曲線５１０を示した図である。図８を参照して、カム曲線５１０は、位相が０から増加するに連れて変位が０から増加し、半周期における位相（１８０度）で変位はピークを迎える。その後、位相の増加に連れて変位が減少し、１周期における位相（３６０度）で変位は０となる。なお、カム曲線５１０は、例示であって、ＰＬＣシステムＳＹＳで利用されるカム曲線は、これに限定されるものではない。
【００９１】
図９は、電子カム５００に関するシステム構成を表した図である。図９は、図６の電子カム５００をより詳しく示した図である。図９を参照して、電子カム５００に関するシステムは、電子カム演算部５０１と、補間部５０２と、スイッチ部５０３と、カムテーブル読込部５０４と、スムージング処理部５０５と、複数のカムテーブルとにより実現される。なお、図９は、電子カム５００に対して、エンコーダ１９から主軸指令位置（エンコーダ位置）が入力される例を示している。
【００９２】
複数のカムテーブルの各々には、詳細については後述するが、主軸の位相と従動軸の変位との関係が定義されている。ＣＰＵユニット１３においては、ユーザは、電子カム動作の開始時に所望のカムテーブルを指定できる。マイクロプロセッサ１００は、ユーザから指示に基づき、複数のカムテーブルの中から利用するカムテーブルを選択する。マイクロプロセッサ１００は、電子カム動作の開始指示を受け付けると、カムテーブル読込部５０４が主軸の位相と従動軸の変位とを読み込む。マイクロプロセッサ１００は、電子カムの動作中は、制御周期ごとに主軸の位相を取得し、カムテーブルに定義された変位となるように従動軸の位置を指令する。
【００９３】
電子カム５００は、スムージング処理部５０５によって、後述するスムージング処理を実行することができる。なお、ＣＰＵユニット１３においては、スイッチ部５０３により、スムージング処理を行なうか否かを選択可能に構成されている。電子カム５００は、サーボモータドライバ３に対して従動軸指令位置を出力する。スムージング処理を行なう場合には、補間部５０２からの出力に対してスムージング処理を行なった後の出力が、従同軸指令位置となる。また、スムージング処理を行なわない場合には、補間部からの出力が、従動軸指令位置となる。
【００９４】
また、詳細については後述するが、ユーザは、従動軸の停止中においても電子カムの動作中においても、カムテーブルを変更する指示を入力できる。
【００９５】
図１０は、カムテーブル５２０のデータ構造を表した図である。より詳しくは、図１０は、ＰＬＣサポート装置８に格納されているカムテーブル編集ソフトウェアにより作成されるカムテーブルのデータ構造を表した図である。
【００９６】
図１０を参照して、カムテーブル５２０は、電子カムの主軸の位相の各々に対して当該
電子カムの従節の変位を対応付けたデータである。つまり、カムテーブル５２０は、離散的なデータである。カムテーブル５２０におけるデータを用いて直線補完すると、図８に示したカム曲線５１０となる。当該直線補間は、図６の補間部５０２によってなされる。
【００９７】
カムテーブル５２０では、０度から３６０度までの位相を、最大カムデータ数に区分して記述できる。カムテーブル５２０では、０．１度刻みで位相が記述されている。なお、「カムデータ」とは、１つの変位と１つの位相とで構成されるデータである。つまり、カムテーブル５２０は、複数のカムデータを含む。なお、変位δの単位は、たとえば、“ｍｍ”である。
【００９８】
また、カムテーブルにおいて、位相および変位の値の各々が０となっている最初のカムデータが、カムテーブル始点である。この箇所をインデックス０番とする。次に位相および変位の値の各々が次に０となる箇所よりも１つ前（つまり、１つ上）のカムデータが、カムテーブルの終点である。つまり、カムテーブルの始点からカムテーブルの終点まで（０度から３６０度までの位相の範囲のデータ）が、有意なカムデータである。「有意なカムデータ」とは、電子カムの動作に影響を与えるカムデータである。カムデータの識別子であるインデックスの番号は、有意なカムデータに対して付与される。インデックスの番号は、カムテーブルにおいて昇順に付与される。
【００９９】
また、カムテーブルの終点よりも後（つまり、下）のカムデータは、電子カムの動作に影響を与えないカムデータ（つまり、有意でないカムデータ）である。なお、有意でないカムデータは、位相と変位との両方が０である必要はない。有意でないカムデータの数は、カムテーブル編集ソフトにより指定される。
【０１００】
図１１は、電子カム５００が適用される液体充填装置９００の一例を示した図である。図１１を参照して、液体充填装置９００は、複数の容器９９０を矢印９１１の方向に搬送するコンベア９１０と、液体を注入する注入管９３０と、注入管９３０を矢印９２１に沿って回転させるターンテーブル９２０とを備える。注入管９３０は、ターンテーブル９２０の回転に伴い、電子カムによって矢印９３１に示す方向にストローク運動する。つまり、液体充填装置９００では、矢印９１１への移動を行わせるための軸９１０ａが主軸に該当し、注入管９３０が主軸に同期したカム動作を行なう従軸に該当する。
【０１０１】
図１２は、図８に示したカム曲線５１０とは異なるカム曲線５６０を示した図である。図１２を参照して、カム曲線５６０は、位相が０から増加するに連れて変位が０から増加し、位相１４０度付近で変位はピークを迎える。その後、位相の増加に連れて変位が減少し、位相２９０度付近で変位が増加に転じる。さらに、位相３１０度付近で位相が減少に転じ、１周期における位相（３６０度）で変位は０となる。このように、カム曲線５６０は、カム曲線５１０とは異なる曲線である。なお、カム曲線５６０は、例示であって、カム曲線５１０と異なる曲線であればよい。
【０１０２】
図１３は、カムテーブル５７０を表した図である。図１３を参照して、カムテーブル５７０は、電子カムの主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたデータである。つまり、カムテーブル５７０は、カムテーブル５２０と同様に、離散的なデータである。カムテーブル５７０におけるデータを用いて直線補完すると、図１２に示したカム曲線５６０となる。当該直線補間は、図６の補間部５０２によってなされる。
【０１０３】
なお、上述したように、カムテーブル５２０とカムテーブル５７０とは、不揮発性メモリ１０６に予め格納されており、電源投入に伴い、メインメモリ１０４に展開される。
【０１０４】
図１４は、カムテーブルの切り換え処理を説明するための図である。詳しくは、図１４
は、ＣＰＵユニット１３がカムテーブル５２０に基づいた処理を行っている最中に、ＣＰＵユニット１３が、カム動作に用いるカムテーブルをカムテーブル５２０からカムテーブル５７０に切り換える処理を説明するための図である。
【０１０５】
図１４（ａ）は、切り換え前のカムテーブル５２０に基づくカム曲線５１０と、切り換え後のカムテーブル５７０に基づくカム曲線５６０とを表した図である。図１４（ｂ）は、カムテーブルの切り換え前後における電子カムの動作を説明するための図である。
【０１０６】
図１４（ａ）を参照して、カム曲線５１０における位相θａの変位はδ１であり、カム曲線５６０における位相θａの変位はδ２（δ２＞δ１）である。
【０１０７】
図１４（ｂ）を参照して、ＣＰＵユニット１３は、位相θａに対応する時点でカムテーブルをカムテーブル５２０からカムテーブル５７０に切り換える指令を受付けた場合、カムテーブル５２０を用いた１つの制御周期が終了していなくても、当該周期においてカムテーブル５７０を用いた処理を開始する。より詳しくは、ＣＰＵユニット１３は、カム曲線５１０の位相θａに対応する時点でカムテーブルを切り換える指令を受け付けた場合、カム曲線５６０の位相θａの近傍である位相θｂ（θｂ＞θａ）からカム動作を続行する。具体的には、ＣＰＵユニット１３は、カムテーブルをカムテーブル５２０からカムテーブル５７０に切り換える場合、当該切り換え時におけるカムテーブル５２０における位相と連続性を有するような、当該切り換え時におけるカムテーブル５７０における位相から、カムテーブル５７０を用いた制御を開始する。
【０１０８】
このため、図１４（ｂ）に示す切り換えにおいては、カムテーブルの切り換えが行なわれる制御周期（図１４（ｂ）の真ん中の周期）では、位相θａの時点において、指令値である変位δの値がδ１からδ２に急激に変化することになる。
【０１０９】
図１５は、カムテーブルを切り換えるためのユーザインターフェイスを表した図である。また、図１５は、ＰＬＣコントローラで一般的に使用されているラダー言語とファンクションブロックとを用いた場合の、切り換え命令の記述例を示している。
【０１１０】
図１５を参照して、カムテーブルの切り換えは、ＰＬＣサポート装置８を用いて行なわれる。具体的には、ユーザがＰＬＣサポート装置８のディスプレイ８７を参照しつつ、カムテーブルの切り換えを指示する入力を行なうことにより、メインメモリ１０４に展開されているカムテーブルの切り換えが実行される。
【０１１１】
ディスプレイ８７には、３つの領域８０１〜８０３が表示される。領域８０１は、選択可能な項目が表示されるメニュー領域である。領域８０２は、ユーザが入力する領域である。領域８０２には、複数の電子カムのうち電子カムＮｏ．１に用いるカムテーブルをカムテーブルＮｏ．１からカムテーブルＮｏ．２に切り換えるための指令がユーザにより記述される。たとえば、カムテーブル５２０がカムテーブルＮｏ．１に対応し、カムテーブル５７０がカムテーブルＮｏ．２に対応する。領域８０３には、領域８０２における記述に従い、実行される処理内容が表示される。
【０１１２】
マイクロプロセッサ１００は、ラダープログラム中に、カム動作開始のインスタンス”カムＮｏ．１”を２つ記述する。マイクロプロセッサ１００は、１つ目のインスタンスでは“カムテーブルＮｏ．１”を指定し、２つ目のインスタンスでは“カムテーブルＮｏ．２”を指定する。マイクロプロセッサ１００は、１つ目のインスタンスの動作中、かつ接点＿２をＴＲＵＥにしたときに、２つ目のインスタンスを実行することにより、利用するカムテーブルをカムテーブル１からカムテーブルＮｏ．２に切り換る。
【０１１３】
なお、カムテーブルの切り換え命令は、ラダー言語の代わりに、ＳＴ（Structure Text）言語を用いてもよい。
【０１１４】
図１６は、図１５に示したカムテーブルの切り換えのタイミングチャートを表した図である。図１６を参照して、時刻ｔ１において接点＿１がＴＲＵＥとなり、時刻ｔ２（ｔ１＜ｔ２）において、ＣＰＵユニット１３は、カムテーブルＮｏ．１を用いたモーション制御を開始する。時刻ｔ３（ｔ２＜ｔ３）において、接点＿２がＴＲＵＥとなる。接点＿２がＴＲＵＥとなると、カムテーブルＮｏ．１を用いたモーション制御からカムテーブルＮｏ．２を用いたモーション制御へと制御内容を切り換える。
【０１１５】
電子カム動作中にユーザがカムテーブルの切り換え指示を出した場合、カムテーブル読込部５０４は、新しいカムテーブルを読み込み、カムテーブル切り換え指示を受け付けた時点での主軸の位置p(t)（つまり、変位）と、新しいカムテーブルに定義された主軸の位置とを比較し、p(t)よりも大きい位置よりカム動作を継続する。
【０１１６】
たとえば、カムテーブル５２０と、カムテーブル５７０とでは、位相の値が一致している。この場合、たとえば、図１４に示すとおり、カムテーブル５２０の位相θａで切り換えの指示が入力された場合（図１６においては、接点＿２がＴＲＵＥになった場合）、マイクロプロセッサ１００は、位相θａよりも大きなカムテーブル５７０の位相に対応付けられた変位を用いて、モーション演算プログラム２３４を実行する。マイクロプロセッサ１００は、たとえば、カムテーブル５７０における位相θａの次の位相（θａ＋０．１°）に対応付けられた変位を用いて、モーション演算プログラム２３４を実行する。その後は、マイクロプロセッサ１００は、位相（θａ＋０．１）を開始点とした、位相の昇順に基づく処理を行なう。
【０１１７】
図１７は、カムテーブルの切り換え時における処理について説明するための図である。図１７を参照して、カムテーブルを現在使用しているカムテーブルＮｏ．ｉ（図示せず）からカムテーブルＮｏ．ｊに変更する場合において、カムテーブルの切り換え指示時の主軸の位相が２００°であったとする。また、カムテーブルＮｏ．ｊの位相、１８０°の次が２１０°であったとする。なお、ｉ，ｊは、自然数である。
【０１１８】
この場合には、ＣＰＵユニット１３は、従動軸である制御対象機器の変位（位置）が、２００°よりも大きな２１０°の位相に対応付けられた１００ｍｍとなるように、制御対象機器に対して指令値を出力する。
【０１１９】
もし、ユーザがカムテーブル切り換え時に、後述するスムージング機能の使用を指定した場合、スムージング処理部５０５は、カムテーブル切り換え時に発生する従軸指令位置の急激な変化を抑制するように従軸指令位置を滑らかに変化させるための処理を行なう。これにより、従動軸のサーボドライバがハンチングすることを防止できる。つまり、カムテーブル切り換え時において、従動軸の振動発生を低減できる。
【０１２０】
図１８は、カムテーブルを切り換える手順を示したフローチャートである。図１８を参照して、ステップＳ１０２において、マイクロプロセッサ１００は、複数の電子カムの中から、カムテーブルを切り換える電子カムの指定を受け付けたか否かを判断する。
【０１２１】
マイクロプロセッサ１００は、受け付けていないと判断した場合（ステップＳ１０２においてＮＯ）、処理をステップＳ１１０に進める。マイクロプロセッサ１００は、受け付けたと判断した場合（ステップＳ１０２においてＹＥＳ）、ステップＳ１０４において、切り換え後に用いるカムテーブルの指定を受け付けたか否かを判断する。
【０１２２】
マイクロプロセッサ１００は、受け付けていないと判断した場合（ステップＳ１０４においてＮＯ）、処理をステップＳ１１０に進める。マイクロプロセッサ１００は、受け付けたと判断した場合（ステップＳ１０４においてＹＥＳ）、ステップＳ１０６において、指定された電子カム（たとえば、電子カムＮｏ．１）で使用するカムテーブルを、現在使用しているカムテーブル（たとえば、カムテーブル５２０）から、指定されたカムテーブル（たとえば、カムテーブル５７０）に切り換える。
【０１２３】
ステップＳ１０８において、マイクロプロセッサ１００は、切り換え後のカムデータを用いたモーション制御を実行する。ステップＳ１１０において、マイクロプロセッサ１００は、指定された電子カムを用いた制御が終了したか否かを判断する。マイクロプロセッサ１００は、終了したと判断した場合（ステップＳ１０８においてＹＥＳ）、一連の処理を終了する。マイクロプロセッサ１００は、終了していないと判断した場合（ステップＳ１０８においてＮＯ）、処理をステップＳ１０２に進める。
【０１２４】
ところで、カムテーブルを切り換える制御命令は、高優先度定周期タスクにカムテーブルを切り換える制御命令を記述してもよいし、あるいは、低優先度定周期タスクに当該制御命令を記述してもよい。
【０１２５】
図１９は、高優先度定周期タスクにカムテーブルを切り換える制御命令を記載したときのデータフローを表した図である。図１９を参照して、ＵＰＲＧ７１０に、カムテーブルを切り換える制御命令ＦＢ（Function Block）７１１が記述される。この場合におけるデータの大まかな流れの順序は、（１）スレーブ→ＯＩ７０１→ＦＢ７１１→ＭＣ７０２→ＯＩ７０３→サーボモータドライバ３、（２）ＭＣ７０４→ＯＩ７０５→サーボモータドライバ３、（３）ＭＣ７０６→ＯＩ７０７→サーボモータドライバ３である。
【０１２６】
図２０は、低優先度定周期タスクにカムテーブルを切り換える制御命令を記載したときのデータフローを表した図である。図２０を参照して、ＵＰＲＧ７２０に、カムテーブルを切り換える制御命令ＦＢ（Function Block）７２１，７２２が記述される。この場合におけるデータの大まかな流れの順序は、スレーブ→ＯＩ７０１→ＭＣ７０２→ＵＰＲＧ７２０（ＦＢ７２１，７２２）→ＯＩ７０６→ＯＩ７０７→サーボモータドライバ３である。
【０１２７】
（変形例）
ところで、図１４（ｂ）においては、上述したように、カムテーブルの切り換えが行なわれる周期では、位相θａの時点において、指令値である変位δの値がδ１からδ２に急激に変化することになる。このような急激な変化は好ましくない。また、位相θａ近傍におけるＣＰＵユニット１３による演算結果が、モーション制御機能モジュールで出力可能な最高加速度、最高減速度、および／または最高加加速度を上回る場合には、図１４（ｂ）に示した急激な変位の変化どおりの制御はできない。このような理由から、カムテーブルの切り換えが行なわれた制御周期においては、カムテーブル５７０のデータを平滑化処理することにより得られたカムテーブルを用いた制御を行なうことが好ましい。なお、以下では、説明の便宜上、カムテーブル５７０のデータを平滑化処理することにより得られたカムテーブルを、「カムテーブル５７０Ａ」と称する。また、なお、カムテーブル５７０Ａに基づくカム曲線を、「カム曲線５６０Ａ」と称する。
【０１２８】
図２１は、カムテーブルの切り換え前後における電子カムの動作を説明するための図である。詳しくは、図２１は、ＣＰＵユニット１３がカムテーブル５２０に基づいた処理を行っている最中に、ＣＰＵユニット１３が、カム動作に用いるカムテーブルをカムテーブル５２０からカムテーブル５７０に切り換えたときの電子カムの動作を説明するための図である。
【０１２９】
図２１を参照して、マイクロプロセッサ１００は、カムテーブル５２０からカムテーブル５７０への切り換え指令を受け付けると、当該指令を受け付けた制御周期において、カムテーブル５７０の代わりにカムテーブル５７０Ａを用いた処理を実行する。マイクロプロセッサ１００は、カムテーブル５７０Ａを１度用いると、次の制御周期では、カムテーブル５７０Ａの代わりにカムテーブル５７０を用いた処理を実行する。
【０１３０】
このように、ＣＰＵユニット１３は、カムテーブルを切り換える指示を受け付けた制御周期においては、平滑化されたカムテーブルを用いることにより、急激な変位の変化が生じることを低減することができる。
【０１３１】
上記の平滑化処理は、不揮発性メモリ１０６に予め格納された平滑化フィルタをマイクロプロセッサ１００が用いることにより実現される。平滑化フィルタは、急激な変化を平滑にするため、ローパス特性を有することが好ましい。ローパス特性を有する代表的な平滑化フィルタとして、たとえば、一次遅れフィルタ、高次遅れフィルタ、移動平均フィルタが挙げられる。
【０１３２】
図２２は、スムージング処理に関する処理の流れを示したフローチャートである。当該フローチャートに示した処理は、図１８のステップＳ１０８において実行される。
【０１３３】
図２２を参照して、ステップＳ２０２において、マイクロプロセッサ１００は、スムージング処理を実行するか否かを判断する。当該判断の手法については、後述する（図２３）。マイクロプロセッサ１００は、スムージング処理を実行すると判断した場合（ステップＳ２０２においてＹＥＳ）、ステップＳ２０４においてスムージング処理を行なう。マイクロプロセッサ１００は、スムージング処理を実行しないと判断した場合（ステップＳ２０２においてＮＯ）、一連の処理を終了する。
【０１３４】
ステップＳ２０６において、マイクロプロセッサ１００は、電子カムの１周期（「カム周期」とも称する）が終了したか否かを判断する。つまり、マイクロプロセッサ１００は、カムテーブルの切り換え時を含んだ周期が終了したか否かを判断する。マイクロプロセッサ１００は、終了したと判断した場合（ステップＳ２０６においてＹＥＳ）、ステップＳ２０８において、移動量に残量があるか否かを判断する。マイクロプロセッサ１００は、終了していないと判断した場合（ステップＳ２０６においてＮＯ）、処理をステップＳ２０４に進める。
【０１３５】
マイクロプロセッサ１００は、残量があると判断した場合（ステップＳ２０８においてＹＥＳ）、ステップＳ２１０において、次の電子カムの周期に移動量の不足分を補うための持ち越し処理を実施するか否かを判断する。当該判断の手法についても、後述する（図２３）。マイクロプロセッサ１００は、持ち越し処理をすると判断した場合（ステップＳ２１０においてＹＥＳ）、処理をステップＳ２０４に進める。マイクロプロセッサ１００は、持ち越し処理をしないと判断した場合（ステップＳ２１０においてＮＯ）、スムージング処理の実行を停止する。つまり、マイクロプロセッサは、次の電子カムの周期においては、スムージング処理を行なわない。
【０１３６】
スムージング処理部５０５は、上記のような平滑化処理を行なう場合、たとえば、伝達関数Ｇ（ｓ）が以下の式（１）となる１次遅れフィルタを用いればよい。
【０１３７】
Ｇ（ｓ）＝１／（Ｔ×ｓ＋１）  …  （１）
式（１）における“Ｔ”は時定数である。“Ｔ”の値が大きいほど、滑らかに平滑化される。なお、一般的にローパスフィルタは信号の位相が遅れる特性がある。また、位相の
遅れ度合と平滑度とは、トレードオフの関係にある。カムテーブルの切り換え後に、当該位相遅れをなくした場合には、“Ｔ”を小さく設定する必要がある。
【０１３８】
図２６は、平滑化フィルタを用いた場合における、図１５に示したカムテーブルの切り換えのタイミングチャートを表した図である。図２６を参照して、時刻ｔ１において接点＿１がＴＲＵＥとなり、時刻ｔ２（ｔ１＜ｔ２）において、ＣＰＵユニット１３は、カムテーブルＮｏ．１を用いたモーション制御を開始する。時刻ｔ３（ｔ２＜ｔ３）において、接点＿２がＴＲＵＥとなる。接点＿２がＴＲＵＥとなると、カムテーブルＮｏ．１を用いたモーション制御からカムテーブルＮｏ．２および平滑化フィルタを用いたモーション制御へと制御内容を切り換える。
【０１３９】
ところで、上記においては、カムテーブル５７０のデータを平滑化処理することにより得られたカムテーブルを用いた制御を行なう場合について説明したが、これに限定されない。カム曲線を切り換える場合に、双方の曲線を接続するための切り換え区間を設け、その間を多項式曲線で接続することによって、不連続な従軸位置指令を発生させずに、滑らかな切り換えを行なうように、ＣＰＵユニット１３を構成してもよい。
【０１４０】
図２７は、多項式曲線を用いる場合における、電子カム５００に関するシステム構成を表した図である。図２７を参照して、電子カム５００に関するシステムは、電子カム演算部５０１と、補間部５０２と、スイッチ部５０３と、カムテーブル読込部５０４と、スムージング処理部５０５と、複数のカムテーブルと、スイッチ部５０６と、多項式曲線演算部５０７とにより実現される。なお、図２７は、図９と同様に、電子カム５００に対して、エンコーダ１９から主軸指令位置（エンコーダ位置）が入力される例を示している。
【０１４１】
スイッチ部５０６は、電子カム演算機能と多項式曲線演算機能とを切り換えるための回路である。ＣＰＵユニット１３は、以下の処理を行なう。
【０１４２】
まず、電子カム５００に関するシステム（ＣＰＵユニット１３）は、カムテーブルの切り換え前は、スイッチ部５０６を電子カム演算部５０１に接続する。電子カム５００に関するシステムは、カムテーブルの切り換え指示を受け付けた場合、スイッチ部５０６を多項式曲線演算部５０７に接続する。次いで、電子カム５００に関するシステムは、切り換え区間の主軸距離（位相幅）を設定し、当該主軸距離をΔＰとする。電子カム５００に関するシステムは、主軸位置が、切り換え開始位置からΔＰ以上変化したときに、スイッチ５０６を電子カム演算部５０１に再接続する。
【０１４３】
以下に、文献“Cam Design and Manufacturing Handbook Second Edition”(Robert L.Norton著 INDUSTRIAL PRESS INC 2009)に記載されたＢ−ＳＰＬＩＮＥの式において、Ｂ−ＳＰＬＩＮＥ ５次における従動軸指令演算を行なった例を示す。
【０１４４】
（i）電子カム５００は、切り換え時の主軸位置、従軸変位、従軸速度、および従軸加速度を、それぞれ、Ｐ１、Ｓ１，Ｖ１，Ａ１とする。
【０１４５】
（ii）電子カム５００は、切り換え後のカム曲線が主軸位置（Ｐ１＋ΔＰ）にあるときの従軸変位、従軸速度、および従軸加速度の変位を求め、それらを、Ｓ２，Ｖ２，Ａ２とする。
【０１４６】
（iii）電子カム５００は、主軸位置Ｐ,従軸指令位置Ｓとしたときの多項式曲線を、以下の式（２）とする。
【０１４７】
Ｓ（Ｐ）＝Ｃ１＋Ｃ２×Ｐ＋Ｃ３×Ｐ＾２＋Ｃ４×Ｐ＾３＋Ｃ５×Ｐ＾４＋Ｃ６×Ｐ＾
５  …  （２）
ただし、Ｃ１〜Ｃ５は以下の境界条件を満足する係数である。なお、「＾」（ハットマーク）は、べき乗計算を示す演算子である。
【０１４８】
Ｓ（Ｐ１）＝Ｓ１
Ｓ’（Ｐ１）＝Ｖ１
Ｓ’’（Ｐ１）＝Ａ１
Ｓ（Ｐ２）＝Ｓ２
Ｓ’（Ｐ２）＝Ｖ２
Ｓ’’（Ｐ２）＝Ａ２
なお、「’」は、微分を表す演算子である。
【０１４９】
（iv）式（２）を用いて、電子カム５００は、切り換え区間における従動軸指令位置を演算する。
【０１５０】
図２８は、多項式を用いた場合における、図１５に示したカムテーブルの切り換えのタイミングチャートを表した図である。図２８を参照して、時刻ｔ１において接点＿１がＴＲＵＥとなり、時刻ｔ２（ｔ１＜ｔ２）において、ＣＰＵユニット１３は、カムテーブルＮｏ．１を用いたモーション制御を開始する。時刻ｔ３（ｔ２＜ｔ３）において、接点＿２がＴＲＵＥとなる。接点＿２がＴＲＵＥとなると、ＣＰＵユニット１３は、多項式を用いた平滑化処理を行なう。ＣＰＵユニット１３は、切り換え区間（ｔ３〜ｔ４）が経過すると、カムテーブルＮｏ．１を用いたモーション制御からカムテーブルＮｏ．２を用いたモーション制御へと制御内容を切り換える。
【０１５１】
図２３は、スムージング処理を行なう場合のスムージングパターンを説明するための図である。カムテーブルの切り換え時におけるスムージング処理方法をユーザが指定する場合、たとえば、上述したファンクションブロック方式の命令を用いる。具体的には、ユーザは、命令”MC_CamIn”にスムージングパターンを指定するための入力変数 “CamTransition”を追加する。”CamTransition”は、たとえば列挙子型であり、図２３に示したスムージングパターンのいずれかを指定できる。
【０１５２】
列挙子が“_mcCTNone”である場合、マイクロプロセッサ１００は、スムージング処理を行なわない。列挙子が“_mcCTMaxAccDec”である場合、マイクロプロセッサ１００は、最大加速度で抑制する。この場合、カムの１周期で終わらない場合には、エラーを出力する。列挙子が“_mcCTMaxAccDecCyclic”である場合、マイクロプロセッサ１００は、最大加速度で抑制する。この場合、カムの１周期で終わらないときには、不足分（つまり、残量）を次サイクルで処理する。つまり、ＣＰＵユニット１３は、持ち越し処理をする。
【０１５３】
列挙子が“_mcCTFiltering”である場合、マイクロプロセッサ１００は、平滑化フィルタを使用する。この場合、マイクロプロセッサ１００は、カムの１周期で終わらないときには、エラー出力をする。列挙子が“_mcCTFilteringCyclic”である場合、マイクロプロセッサ１００は、平滑化フィルタを使用する。この場合、マイクロプロセッサ１００は、カムの１周期で終わらないときには、不足分を次サイクルで処理する。
【０１５４】
列挙子が“_mcCTPoly5”である場合、マイクロプロセッサ１００は、５次多項式で補間処理を行なう。なお、ここでは５次多項式を例に挙げているが、マイクロプロセッサ１００が３次以上の多項式で補間処理を行なう構成であればよい。
【０１５５】
＜Ｆ．ＣＰＵユニットのまとめ＞
（１）ＣＰＵユニット１３は、モーション制御とシーケンス制御とを実行する、ＰＬＣ
の演算ユニットである。ＣＰＵユニット１３は、マイクロプロセッサ１００と、電子カム５００の主軸の位相の各々に対して当該電子カムの従節の変位を対応付けたカムテーブルを用いたモーション制御を行なうための制御プログラム２３０と、カムテーブル５２０およびカムテーブル５７０とを格納したメモリとを備える。
【０１５６】
マイクロプロセッサ１００は、カムテーブル５２０を用いて制御プログラム２３０を実行し、当該実行結果を従節に対応する制御対象機器に出力する。マイクロプロセッサ１００は、制御プログラム２３０の実行中に予め定められた指示を受け付けると、制御プログラム２３０の実行に用いるカムテーブルをカムテーブル５２０からカムテーブル５７０に切り換える。マイクロプロセッサ１００は、当該切り換えに基づき、カムテーブル５７０を用いた制御プログラム２３０の実行結果を制御対象機器に出力する。
【０１５７】
これにより、ＣＰＵユニット１３は、カムテーブルの切り換えを迅速に行なうことが可能となる。
【０１５８】
（２）上記メモリは、不揮発性メモリ１０６と、揮発性のメインメモリ１０４とを含む。不揮発性メモリ１０６は、カムテーブル５２０とカムテーブル５７０とを格納している。マイクロプロセッサ１００は、カムテーブル５２０とカムテーブル５７０とを不揮発性メモリ１０６から読み出して、当該読み出したカムテーブル５２０，５７０をメインメモリ１０４に展開する。マイクロプロセッサ１００は、上述した予め定められた指示を受け付ける前は、展開されたカムテーブル５２０を用いて制御プログラム２３０を実行する。マイクロプロセッサ１００は、展開後に上記予め定められた指示を受け付けると、展開されたカムテーブル５７０を用いて制御プログラム２３０を実行する。
【０１５９】
マイクロプロセッサ１００は、カムテーブル５２０，５７０を揮発性のメインメモリ１０４に展開した後に、使用するカムテーブルをカムテーブル５２０からカムテーブル５７０に切り換える。このため、ＣＰＵユニット１３は、切り換える際に、カムテーブル５７０を不揮発性メモリ１０６から読み出す構成に比べて、カムテーブルの切り換え処理を迅速に行なうことができる。
【０１６０】
（３）マイクロプロセッサ１００は、制御プログラム２３０の実行に用いるカムテーブルをカムテーブル５２０からカムテーブル５７０に切り換える場合、当該切り換え時におけるカムテーブル５２０における位相よりも大きなカムテーブル５７０の位相に対応付けられた変位を用いて制御プログラム２３０を実行する。これにより、ＣＰＵユニット１３は、位相に関して連続した処理を行なうことができる。
【０１６１】
（４）上記メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納している。マイクロプロセッサ１００は、切り換え直後における制御対象機器の加速度が加速度に関する上限値を超える場合、前記制御対象機器の加速度を前記加速度に関する上限値に制限する。マイクロプロセッサ１００は、切り換え直後における制御対象機器の減速度が減速度に関する上限値を超える場合、制御対象機器の減速度を減速度に関する上限値に制限する。これにより、ＣＰＵユニット１３は、ユーザが意図していない急激な加速／減速を伴う制御対象機器の移動を防止することができる。
【０１６２】
（５）上記メモリは、カムテーブルを平滑化する平滑化フィルタをさらに格納している。マイクロプロセッサ１００は、切り換え直後においては、カムテーブル５７０における変位を平滑化フィルタによってスムージング処理する。これにより、ＣＰＵユニット１３は、カムテーブルの切り換え時に、制御対象機器のスムーズな移動を実現することができる。
【０１６３】
（６）上記メモリは、３次以上の高次多項式をさらに格納している。マイクロプロセッサ１００は、切り換え直後においては、カムテーブル５７０における変位を高次多項式によってスムージング処理する。これにより、ＣＰＵユニット１３は、カムテーブルの切り換え時に、制御対象機器のスムーズな移動を実現することができる。
【０１６４】
（７）マイクロプロセッサ１００は、カムテーブル５７０の変位を出力しない制御を行なうことによって生じる制御対象機器の移動量の不足分を、モーション制御における電子カムの１または複数のカム周期において補う処理をする。これにより、ＣＰＵユニット１３は、たとえば平滑化処理の実行をする場合、および／または上述した加減速度についての上限値が設定されている場合であっても、制御対象機器の移動量の不足を低減あるいは無くすことができる。
【０１６５】
（８）マイクロプロセッサ１００は、１つのカム周期において移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける。これにより、１つのカム周期において移動量の不足分を補うことができない場合において、ユーザは、エラーとしてたとえば処理を停止させるか、あるいは次のカム周期において不足分を補う処理を行なわせるかを選択することができる。
【０１６６】
（９）制御プログラム２３０は、モーション演算プログラム２３４と、モーション演算プログラム２３４に対して当該モーション演算プログラム２３４の実行に必要な指示を与える処理を行なうユーザプログラム２３６とを含む。マイクロプロセッサ１００は、モーション演算プログラム２３４の実行を、定周期Ｔ１毎に繰り返し、ユーザプログラム２３６を、定周期Ｔ１の整数倍となる定周期Ｔ２毎に繰り返す。ユーザプログラム２３６のうち上記切り換えを行なうためのプログラムは、定周期Ｔ１のタスクまたは定周期Ｔ２のタスクに記述される。これにより、高優先度定周期タスクまたは低優先度定周期タスクにカムテーブルを切り換える制御命令を記載できる。
【０１６７】
とこで、図１に示したように、ＰＬＣシステムＳＹＳにおいては、ＰＬＣ１のＣＰＵユニット１３が、モーション制御とシーケンス制御とを実行する構成である。より詳しくは、ＣＰＵ１３のマイクロプロセッサ１００（図２参照）が、モーション制御とシーケンス制御とを実行する。
【０１６８】
しかしながら、ＣＰＵユニット１３として、モーション制御用のユニットとシーケンス制御用のユニットとを別々に設けておき、モーション制御とシーケンス制御とを異なるプロセッサ（マイクロプロセッサ）により実行してもよい。つまり、モーション制御用のユニットのプロセッサにモーション制御を実行させ、シーケンス制御用のプロセッサにシーケンス制御を実行させればよい。
【０１６９】
あるいは、マイクロプロセッサ１００として、デュアルコアのプロセッサまたはマルチコアのプロセッサを利用する場合、１つのコアにモーション制御を実行させ、残りのコアのいずれかにシーケンス制御を実行させるように、ＣＰＵユニット１３を構成してもよい。
【０１７０】
＜Ｇ．サポート装置＞
次に、ＰＬＣ１で実行されるプログラムの作成およびＰＬＣ１のメンテナンスなどを行なうためのＰＬＣサポート装置８について説明する。
【０１７１】
図２４は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のハードウェア構成を示す模式図である。図２４を参照して、ＰＬＣサポート
装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【０１７２】
図２４を参照して、ＰＬＣサポート装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。
【０１７３】
ＰＬＣサポート装置８は、さらに、ユーザからの操作を受付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのディスプレイ８７とを含む。さらに、ＰＬＣサポート装置８は、ＰＬＣ１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）を含む。
【０１７４】
後述するように、ＰＬＣサポート装置８で実行される各種プログラムは、ＣＤ−ＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【０１７５】
上述したように、ＰＬＣサポート装置８は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
【０１７６】
図２５は、本発明の実施の形態に係るＣＰＵユニットに接続して用いられるＰＬＣサポート装置８のソフトウェア構成を示す模式図である。図２５を参照して、ＰＬＣサポート装置８ではＯＳ３１０が実行され、ＰＬＣサポートプログラム３２０に含まれる各種のプログラムを実行可能な環境が提供される。
【０１７７】
ＰＬＣサポートプログラム３２０は、エディタプログラム３２１と、コンパイラプログラム３２２と、デバッガプログラム３２３と、シミュレーション用シーケンス命令演算プログラム３２４と、シミュレーション用モーション演算プログラム３２５と、通信プログラム３２６とを含む。ＰＬＣサポートプログラム３２０に含まれるそれぞれのプログラムは、典型的には、ＣＤ−ＲＯＭ９に格納された状態で流通して、ＰＬＣサポート装置８にインストールされる。
【０１７８】
エディタプログラム３２１は、ユーザプログラム２３６を作成するための入力および編集といった機能を提供する。より具体的には、エディタプログラム３２１は、ユーザがキーボード８５やマウス８６を操作してユーザプログラム２３６のソースプログラム３３０を作成する機能に加えて、作成したソースプログラム３３０の保存機能および編集機能を提供する。また、エディタプログラム３２１は、外部からのソースプログラム３３０の入力を受付ける。
【０１７９】
コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式のユーザプログラム２３６を生成する機能を提供する。また、コンパイラプログラム３２２は、ソースプログラム３３０をコンパイルして、ＰＬＣサポート装置８のＣＰＵ８１で実行可能なオブジェクトプログラム形式のユーザプログラム３４０を生成する機能を提供する。このユーザプログラム３４０は、ＰＬＣサポート装置８によってＰＬＣ１の動作をシミュレート（模擬）するために使用される、シミュレーション用のオブジェクトプログラムである。
【０１８０】
デバッガプログラム３２３は、ユーザプログラムのソースプログラムに対してデバッグを行なうための機能を提供する。このデバッグの内容としては、ソースプログラムのうちユーザが指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
【０１８１】
デバッガプログラム３２３は、さらに、シミュレーション用のオブジェクトプログラムであるユーザプログラム３４０を実行する機能を提供する。このシミュレーション時には、ＣＰＵユニット１３のシステムプログラムに含まれるシーケンス命令演算プログラム２３２およびモーション演算プログラム２３４に代えて、ＰＬＣサポートプログラム３２０に含まれるシミュレーション用シーケンス命令演算プログラム３２４およびシミュレーション用モーション演算プログラム３２５が用いられる。
【０１８２】
通信プログラム３２６は、ＰＬＣ１のＣＰＵユニット１３へユーザプログラム２３６を転送する機能を提供する。
【０１８３】
一般的には、ＰＬＣ１に実装されるシステムプログラム２１０は、ＣＰＵユニット１３の製造段階でＣＰＵユニット１３の不揮発性メモリ１０６へ格納される。但し、ＣＤ−ＲＯＭ９にシステムプログラム２１０を格納しておけば、ユーザは、ＣＤ−ＲＯＭ９のシステムプログラム２１０をＰＬＣサポート装置８へコピーし、通信プログラム３２６が提供する機能を利用してコピーしたシステムプログラム２１０をＣＰＵユニット１３へ転送することもできる。さらに、ＣＤ−ＲＯＭ９に、ＰＬＣ１のＣＰＵユニット１３で実行されるリアルタイムＯＳ２００を格納しておけば、リアルタイムＯＳ２００についてもユーザ操作によってＰＬＣ１へ再インストールできる。
【０１８４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８５】
１  ＰＬＣ、２  フィールドネットワーク、３  サーボモータドライバ、４  サーボモータ、５  ターミナル、６  検出スイッチ、７  リレー、８  ＰＬＣサポート装置、１０
接続ケーブル、１１  システムバス、１２  電源ユニット、１３，１４，５３  ユニット、１５  特殊ユニット、１９  エンコーダ、５１  ターミナルバス、５２  通信カプラ、８３  ＲＡＭ、８７  ディスプレイ、１００  マイクロプロセッサ、１０２  チップセット、１０４  メインメモリ、１０６  不揮発性メモリ、１０８  システムタイマ、１１０  コネクタ、１２０  システムバスコントローラ、１２２，１４２  制御回路、１２４
システムバス制御回路、１２６，１４６  バッファメモリ、１３０  システムバスコネクタ、１４０  フィールドネットワークコントローラ、１４４  フィールドネットワーク制御回路、２００  リアルタイムＯＳ、２１０，２２０  システムプログラム、２１２  スケジューラプログラム、２３０  制御プログラム、２３２  シーケンス命令演算プログラム、２３４  モーション演算プログラム、２３６，３４０  ユーザプログラム、３２０
サポートプログラム、４００  主軸、５００  電子カム、５００Ａ  機械式カム、５０１  電子カム演算部、５０２  補間部、５０３  スイッチ部、５０４  カムテーブル読込部、５０５  スムージング処理部、５１０，５６０，５６０Ａ  カム曲線、５２０，５７０，５７０Ａ  カムテーブル、６００  従動軸、ＭＥ  カム機構、ＳＹＳ  システム。
【図１】
2012194665.tif 000003
【図２】
2012194665.tif 000004
【図３】
2012194665.tif 000005
【図４】
2012194665.tif 000006
【図５】
2012194665.tif 000007
【図６】
2012194665.tif 000008
【図７】
2012194665.tif 000009
【図８】
2012194665.tif 000010
【図９】
2012194665.tif 000011
【図１０】
2012194665.tif 000012
【図１１】
2012194665.tif 000013
【図１２】
2012194665.tif 000014
【図１３】
2012194665.tif 000015
【図１４】
2012194665.tif 000016
【図１５】
2012194665.tif 000017
【図１６】
2012194665.tif 000018
【図１７】
2012194665.tif 000019
【図１８】
2012194665.tif 000020
【図１９】
2012194665.tif 000021
【図２０】
2012194665.tif 000022
【図２１】
2012194665.tif 000023
【図２２】
2012194665.tif 000024
【図２３】
2012194665.tif 000025
【図２４】
2012194665.tif 000026
【図２５】
2012194665.tif 000027
【図２６】
2012194665.tif 000028
【図２７】
2012194665.tif 000029
【図２８】
2012194665.tif 000030
【手続補正書】
【提出日】平成23年6月14日(2011.6.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットであって、
プロセッサと、
電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納したメモリとを備え、
前記プロセッサは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力し、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換え、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力し、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プロセッサは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行し、
前記展開後における前記モーション制御の１周期における途中で、前記予め定められた指示を受け付けると、当該１周期における途中で前記展開された前記第２のカムテーブルを用いて前記プログラムを実行する、演算ユニット。
【請求項２】
前記プロセッサは、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行する、請求項１に記載の演算ユニット。
【請求項３】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットであって、
プロセッサと、
電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納したメモリとを備え、
前記プロセッサは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力し、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換え、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力し、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プロセッサは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行し、
前記展開後に前記予め定められた指示を受け付けると、前記展開された前記第２のカムテーブルを用いて前記プログラムを実行し、
前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行する、演算ユニット。
【請求項４】
前記メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納しており、
前記プロセッサは、
前記切り換え直後における前記制御対象機器の加速度が前記加速度に関する上限値を超える場合、前記制御対象機器の加速度を前記加速度に関する上限値に制限し、
前記切り換え直後における前記制御対象機器の減速度が前記減速度に関する上限値を超える場合、前記制御対象機器の減速度を前記減速度に関する上限値に制限する、請求項２または３に記載の演算ユニット。
【請求項５】
前記メモリは、前記カムテーブルを平滑化する平滑化フィルタをさらに格納しており、
前記プロセッサは、前記切り換え直後においては、前記第２のカムテーブルにおける前記変位を前記平滑化フィルタによってスムージング処理する、請求項２または３に記載の演算ユニット。
【請求項６】
前記メモリは、３次以上の高次多項式をさらに格納しており、
前記プロセッサは、前記切り換え直後においては、前記第２のカムテーブルにおける前記変位を前記高次多項式によってスムージング処理する、請求項２または３に記載の演算ユニット。
【請求項７】
前記プロセッサは、前記第２のカムテーブルの変位を出力しない制御を行なうことによって生じる前記制御対象機器の移動量の不足分を、前記モーション制御における前記電子カムの１または複数のカム周期において補う処理をする、請求項４から６のいずれかに記載の演算ユニット。
【請求項８】
前記プロセッサは、前記１つのカム周期において前記移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける、請求項７に記載の演算ユニット。
【請求項９】
前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、
前記プロセッサは、
モーション演算プログラムの実行を、第１の定周期毎に繰り返し、
前記ユーザプログラムを、前記第１の定周期の整数倍となる第２の定周期毎に繰り返し、
前記ユーザプログラムのうち前記切り換えを行なうためのプログラムは、前記第１の定周期のタスクまたは前記第２の定周期のタスクに記述される、請求項１から８のいずれか１項に記載の演算ユニット。
【請求項１０】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットにおける出力制御方法であって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納しており、
前記出力制御方法は、
前記演算ユニットのプロセッサが、前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、
前記プロセッサが、前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換えるステップと、
前記プロセッサが、前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを備え、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記出力制御方法は、
前記プロセッサが、前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開するステップと、
前記プロセッサが、前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行するステップと、
前記プロセッサが、前記展開後における前記モーション制御の１周期における途中で、前記予め定められた指示を受け付けると、当該１周期における途中で前記展開された前記第２のカムテーブルを用いて前記プログラムを実行するステップとをさらに備える、出力制御方法。
【請求項１１】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットを制御するプログラムであって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納しており、
前記プログラムは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換えるステップと、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを、前記演算ユニットに実行させ、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プログラムは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開するステップと、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行するステップと、
前記展開後における前記モーション制御の１周期における途中で、前記予め定められた指示を受け付けると、当該１周期における途中で前記展開された前記第２のカムテーブルを用いて前記プログラムを実行するステップとを、さらに前記演算ユニットに実行させる、プログラム。
【手続補正書】
【提出日】平成23年11月2日(2011.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットであって、
プロセッサと、
電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納したメモリとを備え、
前記プロセッサは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力し、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換え、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力し、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プロセッサは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行し、
前記展開後における前記モーション制御の１周期における途中で、前記予め定められた指示を受け付けると、当該１周期における途中で前記展開された前記第２のカムテーブルを用いて前記プログラムを実行し、
前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行する、演算ユニット。
【請求項２】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットであって、
プロセッサと、
電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納したメモリとを備え、
前記プロセッサは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力し、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換え、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力し、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プロセッサは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開し、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行し、
前記展開後に前記予め定められた指示を受け付けると、前記展開された前記第２のカムテーブルを用いて前記プログラムを実行し、
前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行する、演算ユニット。
【請求項３】
前記メモリは、加速度に関する上限値と、減速度に関する上限値とを、さらに格納しており、
前記プロセッサは、
前記切り換え直後における前記制御対象機器の加速度が前記加速度に関する上限値を超える場合、前記制御対象機器の加速度を前記加速度に関する上限値に制限し、
前記切り換え直後における前記制御対象機器の減速度が前記減速度に関する上限値を超える場合、前記制御対象機器の減速度を前記減速度に関する上限値に制限する、請求項１または２に記載の演算ユニット。
【請求項４】
前記メモリは、前記カムテーブルを平滑化する平滑化フィルタをさらに格納しており、
前記プロセッサは、前記切り換え直後においては、前記第２のカムテーブルにおける前記変位を前記平滑化フィルタによってスムージング処理する、請求項１または２に記載の演算ユニット。
【請求項５】
前記メモリは、３次以上の高次多項式をさらに格納しており、
前記プロセッサは、前記切り換え直後においては、前記第２のカムテーブルにおける前記変位を前記高次多項式によってスムージング処理する、請求項１または２に記載の演算ユニット。
【請求項６】
前記プロセッサは、前記第２のカムテーブルの変位を出力しない制御を行なうことによって生じる前記制御対象機器の移動量の不足分を、前記モーション制御における前記電子カムの１または複数のカム周期において補う処理をする、請求項３から５のいずれかに記載の演算ユニット。
【請求項７】
前記プロセッサは、前記１つのカム周期において前記移動量の不足分を補うことができない場合には、エラーとして処理するか、または次のカム周期においても不足分を補う処理を行なわせるかを指定する命令を受け付ける、請求項６に記載の演算ユニット。
【請求項８】
前記プログラムは、モーション演算プログラムと、前記モーション演算プログラムに対して当該モーション演算プログラムの実行に必要な指示を与える処理を行なうユーザプログラムとを含み、
前記プロセッサは、
モーション演算プログラムの実行を、第１の定周期毎に繰り返し、
前記ユーザプログラムを、前記第１の定周期の整数倍となる第２の定周期毎に繰り返し、
前記ユーザプログラムのうち前記切り換えを行なうためのプログラムは、前記第１の定周期のタスクまたは前記第２の定周期のタスクに記述される、請求項１から７のいずれか１項に記載の演算ユニット。
【請求項９】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットにおける出力制御方法であって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納しており、
前記出力制御方法は、
前記演算ユニットのプロセッサが、前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、
前記プロセッサが、前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換えるステップと、
前記プロセッサが、前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを備え、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記出力制御方法は、
前記プロセッサが、前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開するステップと、
前記プロセッサが、前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行するステップと、
前記プロセッサが、前記展開後における前記モーション制御の１周期における途中で、前記予め定められた指示を受け付けると、当該１周期における途中で前記展開された前記第２のカムテーブルを用いて前記プログラムを実行するステップと、
前記プロセッサが、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行するステップとをさらに備える、出力制御方法。
【請求項１０】
モーション制御とシーケンス制御とを実行する、プログラマブル・ロジック・コントローラの演算ユニットを制御するプログラムであって、
前記演算ユニットは、電子カムの主軸の位相の各々に対して当該電子カムの従動軸の変
位を対応付けたカムテーブルを用いたモーション制御を行なうためのプログラムと、前記カムテーブルとしての第１のカムテーブルおよび第２のカムテーブルとを格納しており、
前記プログラムは、
前記第１のカムテーブルを用いて前記プログラムを実行し、当該実行結果を前記従動軸に対応する制御対象機器に出力するステップと、
前記プログラムの実行中に予め定められた指示を受け付けると、前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換えるステップと、
前記切り換えに基づき、前記第２のカムテーブルを用いた前記プログラムの実行結果を前記制御対象機器に出力するステップとを、前記演算ユニットに実行させ、
前記メモリは、不揮発性メモリと、揮発性メモリとを含み、
前記不揮発性メモリは、前記第１のカムテーブルと前記第２のカムテーブルとを格納しており、
前記プログラムは、
前記第１のカムテーブルと前記第２のカムテーブルとを前記不揮発性メモリから読み出して、当該読み出したカムテーブルを前記揮発性メモリに展開するステップと、
前記予め定められた指示を受け付ける前は、前記展開された前記第１のカムテーブルを用いて前記プログラムを実行するステップと、
前記展開後における前記モーション制御の１周期における途中で、前記予め定められた指示を受け付けると、当該１周期における途中で前記展開された前記第２のカムテーブルを用いて前記プログラムを実行するステップと
前記プログラムの実行に用いるカムテーブルを前記第１のカムテーブルから前記第２のカムテーブルに切り換える場合、前記切り換え時における前記第１のカムテーブルにおける位相よりも大きな前記第２のカムテーブルの位相に対応付けられた変位を用いて前記プログラムを実行するステップとを、さらに前記演算ユニットに実行させる、プログラム。