(57)【要約】【課題】本発明は、複数のモータの制御を複数の制御プログラムで並列に実行することで実現する場合に、容易に制御プログラム間の同期を図ることが可能な制御装置を提供することを目的とする。【解決手段】複数の制御プログラムを並列に所定の実行周期で周期的に実行させる。制御プログラムの実行開始のタイミングが揃うタイミングデータの受け渡しを行う。制御プログラム１の実行終了後、制御プログラム２が参照する軸変数を制御プログラム１のメモリ上の実行領域から、制御プログラム２のバッファ領域へコピーする。【選択図】図１
2019106225.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御プログラムを所定の周期で繰り返し実行することによって制御対象を制御する、制御装置であって、
マルチコアプロセッサと、
前記制御プログラム、システムプログラム、スケジューラプログラムの格納に用いられるメモリと、を備え、
前記複数の制御プログラムは、
実行周期１で周期的に実行される、モータに対する制御指令値を演算するモーション演算プログラム１を含む、制御プログラム１と、
前記実行周期１よりも長周期である実行周期２で周期的に実行される、モータに対する制御指令値を演算するモーション演算プログラム２を含むと共に、前記制御プログラム１で用いられる軸変数を定義する軸変数受け渡し命令が記述される制御プログラム２とを含み、
前記スケジューラプログラムは、前記制御プログラム１および前記制御プログラム２を並行して、マルチコアプロセッサに実行を開始させる命令を含み、
前記システムプログラムは、前記軸変数受け渡し命令が起動されると、前記制御プログラム１および前記制御プログラム２が実行開始されるタイミングが揃ったタイミングの１つ前の周期の前記制御プログラム１の実行が完了した時点で、前記軸変数受け渡し命令に定義されかつ前記制御プログラム１が演算に用いた前記モータの制御に関する軸変数を、前記制御プログラム２のバッファメモリに格納させる命令と、
前記制御プログラム２が実行を開始するタイミングで、前記制御プログラム２のバッファメモリから読み出し、前記制御プログラムの作業領域へコピーさせる命令とを含む、制御装置。
【請求項２】
前記モーション演算プログラム１は、主軸であるモータ１の前記制御指令値乃至フィードバック値を参照して、従軸であるモータ２の前記制御指令値を演算し、
前記モーション演算プログラム２は、主軸であるモータ１の前記制御指令値乃至フィードバック値を参照して、従軸であるモータ３の前記制御指令値を演算する、請求項１に記載の制御装置。
【請求項３】
前記制御プログラム１および前記制御プログラム２が実行開始されるタイミングが揃ったタイミングで実行される当該制御プログラム１の実行が完了したタイミング後、当該制御プログラム２の実行中に、前記軸変数を前記制御プログラム２のバッファメモリに格納する処理を実行しない、請求項１または２に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械や設備の動作を制御するために用いられる制御装置において、マルチコアプロセッサを用いて複数のモータの制御を制御プログラムで並列に実行することで実現する場合の複数の制御プログラム間のデータの同期に関する。
【背景技術】
【０００２】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーション制御が含まれる場合がある。このようなモーション制御、典型的には、モータを駆動するモータドライバに対して周期的に指令値を出力するモーション演算プログラムの実行と、シーケンス演算とを１つのＣＰＵで実行するプログラマブルコントローラが知られている。
【０００３】
例えば特許文献１には、モータを駆動するモータドライバに対して周期的に指令値を出力するモーション演算プログラムを実行するプログラマブルコントローラを開示する。
【０００４】
特許文献１では、第１のモーション演算プログラムを含み第１の制御サイクルで動作する制御プログラム１（短周期モーションプログラム）と、第２のモーション演算プログラム（長周期モーションプログラム）とを含む。第１の制御サイクルの整数倍の周期でモータに対して指令値を出力する制御プログラム２との実行にあたり、第１の制御プログラムの実行が終了した後に第２の制御プログラムの実行を開始させる。
【０００５】
第２の制御プログラムが所定の制御周期内で終了しなかった場合には、第１の制御プログラムの次の制御サイクルにおいて、第１の制御プログラムの実行が終了した後に第２の制御プログラムの未処理部分を実行させる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許４７５２９８４公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
これらの制御装置が用いられるモータを制御する機械においては、制御対象機器である機器から入力される入力データの演算、演算結果としてモータに対する指令値を出力するまでの時間の短縮が求められている。
【０００８】
引用文献に記載の発明は、複数のモータの制御を含む制御プログラムを、短周期モーションプログラムと長周期モーションプログラムに分割することにより、より短い周期で制御プログラムを実行できる可能性を示唆する。
【０００９】
しかしながら、制御指令値を出力する周期が比較的長くても良いモータを制御する制御プログラムであっても、短周期で制御指令値を出力する必要があるモータに対する制御と同期した制御プログラムを作成したい場合がある。
【００１０】
引用文献の記載の発明は、短周期モーションプログラムと長周期モーションプログラムで指令値を演算するモータについては、互いに独立していることが前提とされている。すなわち、短周期モーション制御プログラムと長周期モーション制御プログラムとを実行するにあたって、モータへの制御指令値、モータの現在状態の制御データの受け渡しが行われないことを前提としている。
【００１１】
複数の制御プログラムにおいて実行が開始されるタイミング、制御プログラムにおいて参照する値が更新されるタイミングを把握し、その中でデータの受け渡しを記述することとなると、ユーザの負担となる。
【００１２】
本発明は、複数のモータの制御を複数の制御プログラムで並列に実行することで実現する場合に、容易に制御プログラム間の同期を図ることが可能な制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、本発明の制御装置は、複数の制御プログラムを所定の周期で繰り返し実行することによって制御対象を制御する、制御装置であって、マルチコアプロセッサと、前記制御プログラム、システムプログラム、スケジューラプログラムの格納に用いられるメモリと、を備える。複数の制御プログラムは、実行周期１で周期的に実行させる、モータに対する制御指令値を演算するモーション演算プログラム１を含む、制御プログラム１と実行周期２で周期的に実行される、モータに対する制御指令値を演算するモーション演算プログラム２を含む制御プログラム２とを含む。スケジューラプログラムは、制御プログラム１および制御プログラム２とを並行して、マルチコアプロセッサに実行を開始させる命令を含む。システムプログラムは、制御プログラム１の実行が完了した時点で、制御プログラム１が演算に用いたモータの制御に関する変数を、制御プログラム２のバッファメモリに格納させる命令と、制御プログラム２が実行を開始するタイミングで、制御プログラム２のバッファメモリから読み出し、制御プログラムの作業領域へコピーさせる命令とを含む。制御プログラムの実行の周期に対して、予め定められたタイミングで前記制御プログラム間のデータの受け渡しを実行させる。
【発明の効果】
【００１４】
本発明は、複数のモータの制御を複数の制御プログラムで並列に実行することで実現する場合に、容易に制御プログラム間の同期を図ることができるといった効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態に係る制御装置システムの概略構成を示す模式図である。
【図２】ＣＰＵユニットのハードウェア構成を示す図である。
【図３】本発明の実施の形態に係るＣＰＵユニットで実行されるソフトウェア構成を示す模式図である。
【図４】本発明の実施の形態に係る制御装置のハードウェア構成を示す模式図である。
【図５】制御装置における制御装置の設定手順の一例を示す図である。
【図６】制御プログラムの設定を行う画面例を示す図である。
【図７】プログラムの割り当て設定の画面例を示す図である。
【図８】制御プログラムへの割り当てのイメージを示す図である。
【図９】制御プログラム１と制御プログラム２を定周期で複数のコアで実行される例を示す。
【図１０】軸変数の受け渡しのタイミングを示した例である。
【発明を実施するための形態】
【００１６】
＜システム構成＞
本実施の形態に係る制御装置は、機械や設備などの制御対象を制御する。本実施の形態に係る制御装置は、その構成要素としてＣＰＵユニットを含む。ＣＰＵユニットは、マイクロプロセッサと、マイクロプロセッサのメインメモリを含む記憶手段と、通信回路とを含む。本実施の形態に係る制御装置のＣＰＵユニットは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されている。
【００１７】
記憶手段は、制御プログラム、および当該制御プログラムの実行と入力データおよび出力データの入出力とを制御するシステムプログラムの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。
【００１８】
通信回路は、出力データを送信しおよび入力データを受信する。後述するように、本実施の形態に係る制御装置は、通信回路として、制御装置システムバスによって出力データの送信および入力データの受信を行う第１通信回路と、フィールドネットワークによって出力データの送信および入力データの受信を行う第２通信回路とを有している。
【００１９】
まず、図１を参照して、本実施の形態に係る制御装置１のシステム構成について説明する。図は、本発明の実施の形態に係る制御装置システムの概略構成を示す模式図である。図１を参照して、制御装置システムＳＹＳは、制御装置１と、制御装置１とフィールドネットワーク２を介して接続されるサーボモータドライバ３およびリモートＩＯターミナル５と、フィールド機器であるセンサ６およびリレー７とを含む。また、制御装置１には、接続ケーブル１０などを介して制御装置８が接続される。
【００２０】
制御装置１は、主たる演算処理を実行するＣＰＵユニット１３と、１つ以上のＩＯユニット１４と、特殊ユニット１５とを含む。これらのユニットは、制御装置システムバス１１を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット１２によって適切な電圧の電源が供給される。なお、制御装置１として構成される各ユニットは、制御装置メーカーが提供するものであるので、制御装置システムバス１１は、一般に制御装置メーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク２については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【００２１】
ＣＰＵユニット１３の詳細については、図２を参照して後述する。
ＩＯユニット１４は、一般的な入出力処理に関するユニットであり、オン／オフといった２値化されたデータの入出力を司る。すなわち、ＩＯユニット１４は、センサ６などのセンサが何らかの対象物を検出している状態（オン）および何らの対象物も検出していない状態（オフ）のいずれであるかという情報を収集する。また、ＩＯユニット１４は、リレー７やアクチュエータといった出力先に対して、活性化するための指令（オン）および不活性化するための指令（オフ）のいずれかを出力する。
【００２２】
特殊ユニット１５は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、ＩＯユニット１４ではサポートしない機能を有する。
【００２３】
フィールドネットワーク２は、ＣＰＵユニット１３と遣り取りされる各種データを伝送する。フィールドネットワーク２としては、典型的には、各種の産業用イーサネット（登録商標）を用いることができる。産業用イーサネット（登録商標）としては、たとえば、ＥｔｈｅｒＣＡＴ（登録商標）、Ｐｒｏｆｉｎｅｔ ＩＲＴ、ＭＥＣＨＡＴＲＯＬＩＮＫ（登録商標）−ＩＩＩ、Ｐｏｗｅｒｌｉｎｋ、ＳＥＲＣＯＳ（登録商標）−ＩＩＩ、ＣＩＰ Ｍｏｔｉｏｎなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット（登録商標）以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、ＤｅｖｉｃｅＮｅｔ、ＣｏｍｐｏＮｅｔ／ＩＰ（登録商標）などを用いてもよい。本実施の形態に係る制御装置システムＳＹＳでは、典型的に、本実施の形態においては、産業用イーサネット（登録商標）であるＥｔｈｅｒＣＡＴ（登録商標）をフィールドネットワーク２として採用する場合の構成について例示する。
【００２４】
なお、制御装置１は、ＣＰＵユニット１３にＩＯユニット１４の機能やサーボモータドライバ３の機能を持たせることにより、そのような内蔵機能でまかなえる範囲については、ＩＯユニット１４やサーボモータドライバ３などを介さずにＣＰＵユニット１３が直接制御対象を制御する構成でもよい。
【００２５】
サーボモータドライバ３は、フィールドネットワーク２を介してＣＰＵユニット１３と接続されるとともに、ＣＰＵユニット１３からの指令値に従ってサーボモータ４を駆動する。より具体的には、サーボモータドライバ３は、制御装置１から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ３は、サーボモータ４の軸に接続されている位置センサ（ロータリーエンコーダ）やトルクセンサといった検出器から、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ４の動作に係る実測値を取得する。そして、サーボモータドライバ３は、ＣＰＵユニット１３からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ３は、実測値が目標値に近づくようにサーボモータ４を駆動するための電流を調整する。なお、サーボモータドライバ３は、サーボモータアンプと称されることもある。
【００２６】
また、図１には、サーボモータ４とサーボモータドライバ３とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【００２７】
図１に示す制御装置システムＳＹＳのフィールドネットワーク２には、さらに、リモートＩＯターミナル５が接続されている。リモートＩＯターミナル５は、基本的には、ＩＯユニット１４と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートＩＯターミナル５は、フィールドネットワーク２でのデータ伝送に係る処理を行うための通信カプラ５２と、１つ以上のＩＯユニット５３とを含む。これらのユニットは、リモートＩＯターミナルバス５１を介して、データを互いに遣り取りできるように構成される。
【００２８】
制御装置サポート装置８については後述する。
＜ＣＰＵユニットのハードウェア構成＞
次に、図２を参照して、ＣＰＵユニット１３のハードウェア構成について説明する。図２は、本発明の実施の形態に係るＣＰＵユニット１３のハードウェア構成を示す模式図である。図２を参照して、ＣＰＵユニット１３は、マイクロプロセッサ１００と、マイクロプロセッサ１００のプロセッサコア１４０と、チップセット１０２と、メインメモリ１０４と、不揮発性メモリ１０６と、システムタイマ１０８と、通信コントローラ１５０と、システムバスコントローラ１２０と、フィールドネットワークコントローラ１４０と、ＵＳＢコネクタ（不図示）とを含む。チップセット１０２と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【００２９】
マイクロプロセッサ１００およびチップセット１０２は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ１００は、チップセット１０２から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット１０２は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ１００に必要な命令コードを生成する。さらに、チップセット１０２は、マイクロプロセッサ１００での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【００３０】
ＣＰＵユニット１３は、記憶手段として、メインメモリ１０４および不揮発性メモリ１０６を有する。
【００３１】
メインメモリ１０４は、揮発性の記憶領域（ＲＡＭ）であり、ＣＰＵユニット１３へ電源投入後にマイクロプロセッサ１００で実行されるべき各種プログラムを保持する。また、メインメモリ１０４は、マイクロプロセッサ１００による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ１０４としては、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）といったデバイスが用いられる。
【００３２】
一方、不揮発性メモリ１０６は、リアルタイムＯＳ（Operating  System）、制御装置１のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ１００がアクセスできるようにメインメモリ１０４にコピーされる。このような不揮発性メモリ１０６としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、ＤＶＤ−ＲＡＭ（Digital Versatile Disk Random Access Memory）のような光学記録媒体などを用いることもできる。
【００３３】
通信コントローラは、典型的には、ＦＰＧＡやＡＳＩＣ等のハードウェアで構成され、チップセットを介して、メインメモリとのデータの送受信が可能に構成される。通信制御コントローラは、メインメモリとのデータの通信に用いられるメモリ領域を有し、後述するシステムバスコントローラやフィールドネットワークコントローラに対して、メインメモリから転送されたデータの転送を行う。また、システムバスコントローラ及びフィールドネットワークコントローラに対して、メインメモリから転送したデータを送信させる命令を発行する。
【００３４】
通信制御コントローラは、さらにシステムタイマ１０８を備える。システムタイマ１０８は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ１００に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、ＯＳ（Operating  System）やＢＩＯＳ（Basic Input Output System）などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ１０８が発生する割り込み信号を利用して、後述するような制御サイクルごとの制御動作が実現される。
【００３５】
通信回路として、システムバスコントローラ１２０およびフィールドネットワークコントローラ１４０を有する。これらの通信回路は、出力データの送信および入力データの受信を行う。
【００３６】
なお、ＣＰＵユニット１３自体にＩＯユニット１４やサーボモータドライバ３の機能を持たせる場合は、制御装置システムバスコントローラ１２０による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてＣＰＵユニット１３の内部で行われる送信および受信となる。
【００３７】
通信コントローラ１５０は、制御装置システムバス１１を介したデータの遣り取りを制御する。より具体的には、システムバスコントローラ１２０と、ＤＭＡ（Dynamic MemoryAccess）制御回路１２２と、バッファ１２６とを含む。
【００３８】
バッファ１２６は、制御装置システムバス１１を介して他のユニットへ出力されるデータ（以下「出力データ」または「第１出力データ」とも称す。）の送信バッファ、および、制御装置システムバス１１を介して他のユニットから入力されるデータ（以下「入力データ」または「第１入力データ」とも称す。）の受信バッファとして機能する。なお、マイクロプロセッサ１００による演算処理によって作成された第１出力データは、原始的にはメインメモリ１０４に格納される。そして、特定のユニットへ転送されるべき第１出力データは、メインメモリ１０４から読み出されて、バッファ１２６に一次的に保持される。また、他のユニットから転送された第１入力データは、バッファ１２６に一次的に保持された後、メインメモリ１０４に移される。
【００３９】
ＤＭＡ制御回路１２２は、メインメモリ１０４からバッファ１２６への第１出力データの転送、および、バッファ１２６からメインメモリ１０４への第１入力データの転送を行う。
【００４０】
通信コントローラは、制御装置システムバス１１に接続される他のユニットとの間で、バッファ１２６の第１出力データを送信する処理および第１入力データを受信してバッファ１２６に格納する処理を行う。典型的には、システムバス通信制御コントローラは、制御装置システムバス１１における物理層およびデータリンク層の機能を提供する。
【００４１】
フィールドネットワークコントローラ１４０は、フィールドネットワーク２を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１４０は、用いられるフィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはＥｔｈｅｒＣＡＴ（登録商標）規格に従うフィールドネットワーク２が採用されるので、通常のイーサネット（登録商標）通信を行うためのハードウェアを含む、フィールドネットワークコントローラ１４０が用いられる。ＥｔｈｅｒＣＡＴ（登録商標）規格では、通常のイーサネット（登録商標）規格に従う通信プロトコルを実現する一般的なイーサネット（登録商標）コントローラを利用できる。但し、フィールドネットワーク２として採用される産業用イーサネット（登録商標）の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット（登録商標）コントローラが用いられる。また、産業用イーサネット（登録商標）以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【００４２】
バッファは、フィールドネットワーク２を介して他の装置などへ出力されるデータ（以下「出力データ」または「第２出力データ」と称す。）の送信バッファ、および、フィールドネットワーク２を介して他の装置などから入力されるデータ（以下「入力データ」または「第２入力データ」とも称す。）の受信バッファとして機能する。マイクロプロセッサ１００による演算処理によって作成された第２出力データは、原始的にはメインメモリ１０４に格納される。そして、特定の装置へ転送されるべき第２出力データは、メインメモリ１０４から読み出されて、第２通信回路バッファ１４６に一次的に保持される。また、他の装置から転送された第２入力データは、バッファ１４６に一次的に保持された後、メインメモリ１０４に移される。
【００４３】
ＤＭＡ制御回路１４２は、メインメモリ１０４からバッファへの第２出力データの転送、および、バッファからメインメモリ１０４への第２入力データの転送を行う。
【００４４】
フィールドネットワーク通信制御コントローラ１４４は、フィールドネットワーク２に接続される他の装置との間で、バッファの第２出力データを送信する処理および第２入力データを受信して第２通信回路バッファに格納する処理を行う。典型的には、フィールドネットワーク通信制御コントローラ１４４は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００４５】
ＵＳＢコネクタは、制御装置サポート装置８とＣＰＵユニット１３とを接続するためのインターフェイスである。典型的には、制御装置サポート装置８から転送される、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なプログラムなどは、ＵＳＢコネクタ１１０を介して制御装置１に取込まれる。
【００４６】
＜Ｃ．ＣＰＵユニットのソフトウェア構成＞
次に、図３を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、ＣＰＵユニット１３のマイクロプロセッサ１００、プロセッサコア１４０によって実行される。
【００４７】
図３は、本発明の実施の形態に係るＣＰＵユニット１３で実行されるソフトウェア構成を示す模式図である。図３を参照して、ＣＰＵユニット１３で実行されるソフトウェアとしては、リアルタイムＯＳ２００と、システムプログラム２１０と、ユーザプログラム２３６との３階層になっている。
【００４８】
リアルタイムＯＳ２００は、ＣＰＵユニット１３のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ１００がシステムプログラム２１０およびユーザプログラム２３６を実行するための基本的な実行環境を提供する。
【００４９】
システムプログラム２１０は、制御装置１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム２１０は、スケジューラプログラム２１２と、出力処理プログラム２１４と、入力処理プログラム２１６と、シーケンス命令演算プログラム２３２と、モーション演算プログラム２３４と、その他のシステムプログラム２２０とを含む。なお、一般には出力処理プログラム２１４および入力処理プログラム２１６は、連続的（一体として）に実行されるので、これらのプログラムを、ＩＯ処理プログラム２１８と総称する場合もある。
【００５０】
ユーザプログラム２３６は、ユーザにおける制御目的に応じて作成される。すなわち、制御装置システムＳＹＳを用いて制御する対象のライン（プロセス）などに応じて、任意に設計されるプログラムである。
【００５１】
後述するように、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム２３６は、シーケンス命令演算プログラム２３２およびモーション演算プログラム２３４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム２３６、シーケンス命令演算プログラム２３２、およびモーション演算プログラム２３４を、制御プログラム２３０と総称する場合もある。
【００５２】
このように、ＣＰＵユニット１３のマイクロプロセッサ１００は、記憶手段に格納されたシステムプログラム２１０および制御プログラム２３０を実行する。
【００５３】
以下、各プログラムについてより詳細に説明する。ユーザプログラム２３６は、上述したように、ユーザにおける制御目的（たとえば、対象のラインやプロセス）に応じて作成される。ユーザプログラム２３６は、典型的には、ＣＰＵユニット１３のマイクロプロセッサ１００で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム２３６は、制御装置サポート装置８などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム２３６は、制御装置サポート装置８から接続ケーブル１０を介してＣＰＵユニット１３へ転送され、不揮発性メモリ１０６などに格納される。
【００５４】
スケジューラプログラム２１２は、出力処理プログラム２１４、入力処理プログラム２１６、および制御プログラム２３０について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム２１２は、ユーザプログラム２３６およびモーション演算プログラム２３４の実行を制御する。
【００５５】
本実施の形態に係るＣＰＵユニット１３では、モーション演算プログラム２３４に適した一定周期の実行サイクル（制御サイクル）を処理全体の共通サイクルとして採用する。そのため、１つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム２１２は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム２１２は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【００５６】
出力処理プログラム２１４は、ユーザプログラム２３６（制御プログラム２３０）の実行によって生成された出力データを通信コントローラへ転送するのに適した形式に再配置する。システムバスコントローラ１２０またはフィールドネットワークコントローラ１４０が、マイクロプロセッサ１００からの、送信を実行するための指示を必要とする場合は、出力処理プログラム２１４がそのような指示を発行する。
【００５７】
入力処理プログラム２１６は、制御装置システムバスコントローラ１２０および／またはフィールドネットワークコントローラ１４０によって受信された入力データを、制御プログラム２３０が使用するのに適した形式に再配置する。
【００５８】
シーケンス命令演算プログラム２３２は、ユーザプログラム２３６で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【００５９】
モーション演算プログラム２３４は、ユーザプログラム２３６による指示に従って実行され、サーボモータドライバ３やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。
【００６０】
その他のシステムプログラム２２０は、図３に個別に示したプログラム以外の、制御装置１の各種機能を実現するためのプログラム群をまとめて示したものである。例えば機械の制御制御装置との通信や外部の機器からの要求からの処理、自己診断処理をマイクロプロセッサに実行させるプログラムである。また外部記憶媒体にメインメモリのデータを転送させる処理や外部記憶媒体からデータを読み出す処理も実行その他システムプログラムに含まれる。
【００６１】
リアルタイムＯＳ２００は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係る制御装置１においては、ＣＰＵユニット１３のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力（送信）するためのイベント（割り込み）として、制御サイクル開始の割り込みが初期設定される。リアルタイムＯＳ２００は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ１００での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム２１２に切り替える。なお、リアルタイムＯＳ２００は、スケジューラプログラム２１２およびスケジューラプログラム２１２がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム２１０に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、ＣＰＵユニット１３と制御装置サポート装置８との間の接続ケーブル１０（ＵＳＢ）などを介した通信処理に関するものが含まれる。
【００６２】
なお、制御プログラム２３０およびスケジューラプログラム２１２は、記憶手段であるメインメモリ１０４および不揮発性メモリ１０６に格納される。
【００６３】
＜サポート装置のハードウェア構成＞
次に、制御装置１で実行されるプログラムの作成および制御装置１のメンテナンスなどを行うための制御装置８について説明する。
【００６４】
図４は、本発明の実施の形態に係る制御装置８のハードウェア構成を示す模式図である。図４を参照して、制御装置８は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【００６５】
図４を参照して、制御装置８は、ＯＳを含む各種プログラムを実行するＣＰＵ８１と、ＢＩＯＳや各種データを格納するＲＯＭ（Read Only Memory）８２と、ＣＰＵ８１でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリＲＡＭ８３と、ＣＰＵ８１で実行されるプログラムなどを不揮発的に格納するハードディスク（ＨＤＤ）８４とを含む。ＣＰＵ８１が制御装置８の演算部に相当し、ＲＯＭ８２、ＲＡＭ８３およびハードディスク８４が制御装置８の記憶部に相当する。
【００６６】
制御装置８は、さらに、ユーザからの操作を受付けるキーボード８５およびマウス８６と、情報をユーザに提示するためのモニタ８７とを含む。さらに、制御装置８は、制御装置１（ＣＰＵユニット１３）などと通信するための通信インターフェイス（ＩＦ）８９を含む。
【００６７】
後述するように、制御装置８で実行される各種プログラムは、ＣＤＲＯＭ９に格納されて流通する。このＣＤ−ＲＯＭ９に格納されたプログラムは、ＣＤＲＯＭ（Compact Disk-Read Only Memory）ドライブ８８によって読取られ、ハードディスク（ＨＤＤ）８４などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００６８】
＜制御プログラム＞
本実施の形態では、制御プログラムは、IO処理プログラム、ユーザプログラム、ユーザプログラムの実行に伴って実行させる、シーケンス演算プログラム、モーション演算プログラムを含む、一連の動作が実行される単位として取り扱う。
【００６９】
並列実行されるプログラムについてプログラミングすることは、実行開始のタイミングや実行終了、データのコピー処理などのタイミングを考慮する必要がありユーザによって負担となる。
【００７０】
本実施形態では、制御プログラムごとに実行させる周期、実行される優先度、より短い周期での実行が可能なように、複数の制御プログラムごとに実行開始のタイミング、制約条件を設定している。図は、制御装置で実行される制御プログラムの種類を示している。スケジューラプログラムは制御プログラムの実行優先度、実行周期にしたがって、マイクロプロセッサに制御プログラムを実行させる。
【００７１】
制御プログラム１は、最も高優先で実行されるプログラムであり出力処理プログラム１、入力処理プログラム１の実行を含み出力データの生成、入力データの取り込み、割り当てられたユーザプログラム１の実行、モーション演算プログラム１の実行、モータへの指令値の算出をこの順序で実行する。
【００７２】
制御プログラム２は、制御プログラム１に次いで優先的に実行させる制御プログラムであり、出力処理プログラム２、入力処理プログラム２を含み、出力データの生成、入力データの取り込み、割り当てられたユーザプログラム２の実行、モーションプログラム２の実行をこの順序で実行する。
【００７３】
制御プログラム３は、定周期で実行させるプログラムであり、上述の制御プログラム１で実行させる出力データや入力データを読み込むことを前提とする制御プログラムである。具体的には、制御プログラム１のIOリフレッシュで取り込んだ入力データの受け渡しを受け、設定された周期毎に出力データを生成する制御プログラムである。
【００７４】
制御プログラム３は、制御プログラム１の実行周期を短縮するため、制御プログラム１に含まれる、やや長周期で実行する場合もある制御プログラムを割り当てるのに適したプログラムである。制御プログラム４は、ユーザプログラムのみで構成されるプログラムである。高速な制御演算には関係しない、通信処理やバックアップ処理などを記述するのに適したプログラムである。
【００７５】
次にコントローラサポート装置を用いた制御装置におけるプログラミングの手順を示す。図５は、制御装置における制御装置の設定手順の一例を示す。
【００７６】
ＳＴＥＰ１において、フィールドネットワークやシステムバスを介して接続される機器を特定する。具体的にはフィールドネットワーク乃至はシステムバスに接続されている機器について通信を行うための情報を設定する。図示しないが、フィールドネットワーク又はシステムバスを介して接続されている機器と通信を行いフィールドネットワークやシステムバスを介して接続されている機器、接続順序などの情報を自動的に取得しても良い。
【００７７】
ＳＴＥＰ２において、ユーザはコントローラサポート装置を用いて、上述したように制御目的に合わせてユーザプログラムを作成する。ＳＴＥＰ１で登録した、フィールドネットワーク乃至はシステムバスに接続されている機器から入力されるデータを用いて、シーケンス演算、モーション演算を実行し、出力データを生成するプログラムを作成する。このユーザプログラムは、複数のプログラムモジュールに分割されて作成されても良い。
【００７８】
ＳＴＥＰ３において、ユーザは制御プログラムの設定を行う。ユーザの制御目的に合わせて、制御プログラムを実行する周期を設定する。
【００７９】
ＳＴＥＰ４において、ＳＴＥＰ１で設定したネットワークを介して接続される機器それぞれについて、IOリフレッシュを行う制御プログラムを登録する。図６は、制御プログラムの設定を行う画面例を示す。フィールドネットワーク乃至はシステムバスに接続されている機器それぞれについて、IOリフレッシュを行う制御プログラムを登録する。制御対象機器が一覧で表示され、ユニット名称とともに表示される。それぞれについてIOリフレッシュを行う制御プログラムをプルダウン形式でユーザに選択させる。
【００８０】
ＳＴＥＰ５において、作成したユーザザプログラムを制御プログラムに割り当てる。
図８は、制御プログラムへの割り当てのイメージを示す。図７では、制御プログラムそれぞれについて、作成したユーザプログラム（Program0-Program6）を制御プログラムに割
り当てる。複数のユーザプログラムを制御プログラムに割り当てる場合には、ユーザプログラムの実行順序を登録させる。図７の例では、制御プログラム１にユーザプログラムProgram0、Program2が割り当てされている。制御プログラム２には、ユーザプログラムProgram4、Program5、Program6が割り当てられている。制御プログラム３には、Program1が割り当てされている。
【００８１】
上述の操作によって、制御プログラム毎に、実行される周期、制御プログラムに含まれるＩＯ処理プログラムにてデータ交換を行う機器を示す設定パラメータ、実行されるユーザプログラムを含む制御プログラムが生成される。制御装置のスケジューラプログラムは、転送された設定パラメータを参照し、制御プログラムの実行周期などを参照し、プログラムの実行開始や終了のタイミングを制御する。
【００８２】
また、本実施形態では制御プログラムの実行周期は、フィールドネットワーク乃至はシステムバスを介して外部の機器と通信（IOリフレッシュ）を行う周期となるため、設定パラメータに基づいて、通信プログラムは通信周期および当該周期にてIOリフレッシュを行う対象と機器を特定する。
【００８３】
次に図８を用いて、モーション演算プログラムを含む複数の制御プログラムでモータを制御する実例に関して説明する。図８に示す物理構成では、軸１（モータ１以下軸１とも称する）と軸２（モータ２、以下軸２とも称する）と軸３（モータ３、以下軸３とも称する）で構成される。軸１と軸２、軸３を同期させて制御する場合、軸１の指令値乃至はフィードバック値を参照して、軸２、軸３の制御指令値を計算することで軸２、軸３を制御する。例えば軸１の回転に対して、所定の比率で軸２、軸３の制御指令値を与えることにより、軸１に対するギア動作を実現することができる。これは主軸となる軸１の現在値乃至は、従軸のフィードバック値を参照し、従軸となる軸２、軸３への制御指令値を与えることで実現できる。
【００８４】
この軸１を主軸として、軸２、軸３を従軸としたギア動作を複数のモーション演算プログラムを含む制御プログラムで実現する場合を考える。後述するとおり、制御プログラム１では軸１、軸２に関する変数の値をIO処理プログラムを実行することにより、取得する。モーション演算プログラム１の命令に従い、取得した入力データを参照し、軸１の現在値乃至は指令値に基づいて軸２の指令値を算出して、出力する。これにより軸１と軸２のギア動作を実現する。
【００８５】
制御プログラム２では、軸１の状態を示すパラメータを制御プログラム１から転送し、制御装置上で仮想的に扱う、軸４に指令値として出力し、軸４を主軸として軸３の指令値を行う。
【００８６】
このように構成することにより、制御プログラム間で軸に関数変数の受け渡しができれば、制御プログラム１で制御する軸１と制御プログラム２で制御する軸３を同期させることが可能となる。
【００８７】
＜実施の形態１＞
図９は制御プログラム１と制御プログラム２を定周期で複数のコアで実行される例を示す。制御プログラム１と及び制御プログラム２はそれぞれ、ＩＯ処理プログラム１、ＩＯ処理プログラム２、ユーザプログラム１、ユーザプログラム２、モーション演算プログラム１、モーション演算プログラム２を含む。
【００８８】
次にマルチコアプロセッサを用いた、制御プログラム１、２の実行の開始のタイミングに関して説明する。図９は、制御プログラム１の実行のタイミングを示す図である。スケジューラプログラムは、所定の時刻の到来を検出すると、制御プログラム１、制御プログラム２の実行を開始させる。
【００８９】
図中に示す、制御プログラム１のIOはIO制御プログラムの命令に従った動作を示す。プロセッサのコア１はIO制御プログラム１の命令に従い、出力データの送信、入力データの取り込みを行う。具体的には、マイクロプロセッサのコア１は、ＩＯ制御プログラム１の出力処理プログラムの命令に従い、制御プログラム１に関連付けされた外部機器への出力データ１をメインメモリ上の通信バッファから通信コントローラ１５０のバッファメモリへ転送する処理を行う。また入力処理プログラムの命令に従い、通信コントローラから転送された通信バッファに格納された入力データ１をユーザプログラム１の作業領域へ転送する。
【００９０】
図中に示す、制御プログラム１のUPGは、ユーザプログラム１の命令に従った動作を示す。ユーザプログラム１の命令に従い、マイクロプロセッサのコア１は、ユーザプログラム１の作業領域に格納された入力データを用いてシーケンス演算を行い、出力データを通信バッファへ格納する処理を行うと共に、モーション演算プログラム１が演算する領域へ格納する。
【００９１】
図中に示す、制御プログラム１のMCは、モーション演算プログラム１の命令に従った動作を示す。マイクロプロセッサのコア１は、制御プログラム１の実行周期に対するモータへの指令値を演算し、出力データを算出し、出力データを通信コントローラへ転送するためのバッファへ格納する。
【００９２】
次に制御プログラム２の動作について説明する。図中に示す、制御プログラム２のIOはIO制御プログラム２の命令に従った動作を示す。プロセッサのコア２はIO制御プログラム２の命令に従い、出力データの送信、入力データの取り込みを行う。
【００９３】
具体的には、マイクロプロセッサのコア２は、ＩＯ制御プログラム２の出力処理プログラム２の命令に従い、制御プログラム２に関連付けされた外部機器への出力データをメインメモリ上の通信バッファから通信コントローラ１５０のバッファメモリへ転送する処理を行う。また入力処理プログラム２の命令に従い、通信コントローラから転送された通信バッファに格納された入力データをユーザプログラム２の作業領域へ転送する。
【００９４】
図中に示す、制御プログラム２のUPGは、ユーザプログラム２の命令に従った動作を示す。ユーザプログラム２の命令に従い、マイクロプロセッサのコア２は、ユーザプログラム２の作業領域に格納された入力データを用いてシーケンス演算を行い、出力データを通信バッファへ格納する処理を行うと共に、モーション演算プログラム２が演算する領域へ格納する。
【００９５】
図中に示す、制御プログラム２のMCは、モーション演算プログラム２の命令に従った動作を示す。マイクロプロセッサのコア２は、制御プログラム２の実行周期に対するモータへの指令値を演算し、出力データを算出し、出力データを通信コントローラへ転送するためのバッファへ格納する。
【００９６】
制御プログラム２に関して、IO制御プログラム２、ユーザプログラム２、モーション演算プログラム２を周期的に実行する。
【００９７】
＜制御プログラム間のデータの受け渡し＞
制御プログラムの間でデータの送受信を実行したい場合は、制御プログラム中に軸変数受け渡し命令を記述する。変数受け渡し命令では、他の制御プログラムで用いられている軸変数について、受信をしたい変数について定義される。この例では制御プログラム２に軸変数受け渡し命令が記述されている。
【００９８】
図９の例では、制御プログラム２のユーザプログラム２の命令に従って、軸変数受け渡し命令が起動される。
【００９９】
軸変数受け渡し命令が起動されると、システムプログラムが制御プログラムが実行開始されるタイミングが揃ったタイミングの１つ前周期の制御プログラム１の実行完了後、軸変数受け渡し命令で定義された変数について、制御プログラム２のバッファ領域へコピーする処理を実行させる。
【０１００】
図９では、制御プログラム２を制御プログラム１の実行周期の３倍の周期で並列に実行する例を示している。ここでは制御プログラム１の周期の３回に一度制御プログラム２と実行開始のタイミングが揃う。図中の矢印で示しているとおり、軸変数受け渡し命令で定義された軸変数について、制御プログラム１の実行が完了後、制御プログラム２のバッファ領域へコピーする処理を実行させる。
【０１０１】
図１０は、軸変数の受け渡しのタイミングを示した例である。図中のIO、UPG、MCは図９と同様であるため繰り返さない。図中に（A）で示しているとおり、制御プログラム１と制御プログラム２の実行開始のタイミングが揃う１つ前の制御プログラム１の軸変数が制御プログラム２に受け渡される。図中（B）で示しているとおり、制御プログラム１の実行終了のタイミング後で、制御プログラム２のユーザプログラム２の実行が開始されるが、軸変数を受け渡す処理は実行しない。
【０１０２】
これにより、必ず制御周期の開始タイミングが揃う周期の1つ前の周期の軸変数を受け渡すことができるため、制御プログラム１、制御プログラム２の実行状況に影響されず、所定の周期で演算を実行することができる。
【符号の説明】
【０１０３】
２１８  ＩＯ処理プログラム
２３４  モーション演算プログラム
２３６  ユーザプログラム
２１４  出力処理プログラム
２３０  制御プログラム
１、８  制御装置
１１  制御装置システムバス
２１６  入力処理プログラム
１４、５３  ＩＯユニット
１２２、１４２  ＤＭＡ制御回路
２１０、２２０  システムプログラム
【図１】
2019106225.tif 000003
【図２】
2019106225.tif 000004
【図３】
2019106225.tif 000005
【図４】
2019106225.tif 000006
【図５】
2019106225.tif 000007
【図６】
2019106225.tif 000008
【図７】
2019106225.tif 000009
【図８】
2019106225.tif 000010
【図９】
2019106225.tif 000011
【図１０】
2019106225.tif 000012