(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
<システム構成>
本実施の形態に係る制御装置は、機械や設備などの制御対象を制御する。本実施の形態に係る制御装置は、その構成要素としてCPUユニットを含む。CPUユニットは、マイクロプロセッサと、マイクロプロセッサのメインメモリを含む記憶手段と、通信回路とを含む。本実施の形態に係る制御装置のCPUユニットは、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを繰り返すことによって制御対象を制御するように構成されている。
【0016】
記憶手段は、制御プログラム、および当該制御プログラムの実行と入力データおよび出力データの入出力とを制御するシステムプログラムの格納に用いられる。マイクロプロセッサは、記憶手段に格納されたシステムプログラムおよび制御プログラムを実行する。
【0017】
通信回路は、出力データを送信しおよび入力データを受信する。後述するように、本実施の形態に係る制御装置は、通信回路として、制御装置システムバスによって出力データの送信および入力データの受信を行う第1通信回路と、フィールドネットワークによって出力データの送信および入力データの受信を行う第2通信回路とを有している。
【0018】
まず、
図1を参照して、本実施の形態に係る制御装置1のシステム構成について説明する。図は、本発明の実施の形態に係る制御装置システムの概略構成を示す模式図である。
図1を参照して、制御装置システムSYSは、制御装置1と、制御装置1とフィールドネットワーク2を介して接続されるサーボモータドライバ3およびリモートIOターミナル5と、フィールド機器であるセンサ6およびリレー7とを含む。また、制御装置1には、接続ケーブル10などを介して制御装置8が接続される。
【0019】
制御装置1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、制御装置システムバス11を介して、データを互いに遣り取りできるように構成される。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、制御装置1として構成される各ユニットは、制御装置メーカーが提供するものであるので、制御装置システムバス11は、一般に制御装置メーカーごとに独自に開発され、使用されている。これに対して、後述するようにフィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
【0020】
CPUユニット13の詳細については、
図2を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、センサ6などのセンサが何らかの対象物を検出している状態(オン)および何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令(オン)および不活性化するための指令(オフ)のいずれかを出力する。
【0021】
特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
【0022】
フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。たとえば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。本実施の形態に係る制御装置システムSYSでは、典型的に、本実施の形態においては、産業用イーサネット(登録商標)であるEtherCAT(登録商標)をフィールドネットワーク2として採用する場合の構成について例示する。
【0023】
なお、制御装置1は、CPUユニット13にIOユニット14の機能やサーボモータドライバ3の機能を持たせることにより、そのような内蔵機能でまかなえる範囲については、IOユニット14やサーボモータドライバ3などを介さずにCPUユニット13が直接制御対象を制御する構成でもよい。
【0024】
サーボモータドライバ3は、フィールドネットワーク2を介してCPUユニット13と接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。より具体的には、サーボモータドライバ3は、制御装置1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボモータドライバ3は、サーボモータ4の軸に接続されている位置センサ(ロータリーエンコーダ)やトルクセンサといった検出器から、位置、速度(典型的には、今回位置と前回位置との差から算出される)、トルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボモータドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボモータドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボモータドライバ3は、サーボモータアンプと称されることもある。
【0025】
また、
図1には、サーボモータ4とサーボモータドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
【0026】
図1に示す制御装置システムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。より具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。
【0027】
制御装置サポート装置8については後述する。
<CPUユニットのハードウェア構成>
次に、
図2を参照して、CPUユニット13のハードウェア構成について説明する。
図2は、本発明の実施の形態に係るCPUユニット13のハードウェア構成を示す模式図である。
図2を参照して、CPUユニット13は、マイクロプロセッサ100と、マイクロプロセッサ100のプロセッサコア140と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、通信コントローラ150と、システムバスコントローラ120と、
フィールドネットワークコントローラと、USBコネクタ(不図示)とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
【0028】
マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
【0029】
CPUユニット13は、記憶手段として、メインメモリ104および不揮発性メモリ106を有する。
【0030】
メインメモリ104は、揮発性の記憶領域(RAM)であり、CPUユニット13へ電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
【0031】
一方、不揮発性メモリ106は、リアルタイムOS(Operating System)、制御装置1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD−RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
【0032】
通信コントローラ150は、典型的には、FPGAやASIC等のハードウェアで構成され、チップセットを介して、メインメモリとのデータの送受信が可能に構成される。通信コントローラは、メインメモリとのデータの通信に用いられるメモリ領域を有し、後述するシステムバスコントローラやフィールドネットワークコントローラに対して、メインメモリから転送されたデータの転送を行う。また、システムバスコントローラ及びフィールドネットワークコントローラに対して、メインメモリから転送したデータを送信させる命令を発行する。
【0033】
通信コントローラは、さらにシステムタイマ108を備える。システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するような実行周期ごとの制御動作が実現される。
【0034】
通信回路として、システムバスコントローラ120および
フィールドネットワークコントローラを有する。これらの通信回路は、出力データの送信および入力データの受信を行う。
【0035】
なお、CPUユニット13自体にIOユニット14やサーボモータドライバ3の機能を持たせる場合は、制御装置システムバスコントローラ120による出力データの送信および入力データの受信は、それらの機能を担う部分を通信の相手方としてCPUユニット13の内部で行われる送信および受信となる。
【0036】
通信コントローラ150は、制御装置システムバス11を介したデータの遣り取りを制御する。より具体的には、システムバスコントローラ120と、DMA(Dynamic Memory Access)制御回路122と、バッファメモリとを含む。
【0037】
バッファ126は、制御装置システムバス11を介して他のユニットへ出力されるデータ(以下「出力データ」)の送信バッファ、および、制御装置システムバス11を介して他のユニットから入力されるデータ(以下「入力データ」)の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファ126に一次的に保持された後、メインメモリ104に移される。
【0038】
DMA制御回路122は、メインメモリ104からバッファ126への出力データの転送、および、バッファ126からメインメモリ104への入力データの転送を行う。
【0039】
通信コントローラは、制御装置システムバス11に接続される他のユニットとの間で、バッファ126の出力データを送信する処理および第1入力データを受信してバッファ126に格納する処理を行う。典型的には、システムバスコントローラは、制御装置システムバス11における物理層およびデータリンク層の機能を提供する。
【0040】
フィールドネットワークコントローラは、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、
フィールドネットワークコントローラは、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。上述したように、本実施の形態においてはEtherCAT(登録商標)規格に従うフィールドネットワーク2が採用されるので、通常のイーサネット(登録商標)通信を行うためのハードウェアを含む、
フィールドネットワークコントローラが用いられる。EtherCAT(登録商標)規格では、通常のイーサネット(登録商標)規格に従う通信プロトコルを実現する一般的なイーサネット(登録商標)コントローラを利用できる。但し、フィールドネットワーク2として採用される産業用イーサネット(登録商標)の種類によっては、通常の通信プロトコルとは異なる専用仕様の通信プロトコルに対応した特別仕様のイーサネット(登録商標)コントローラが用いられる。また、産業用イーサネット(登録商標)以外のフィールドネットワークを採用した場合には、当該規格に応じた専用のフィールドネットワークコントローラが用いられる。
【0041】
バッファメモリ126は、フィールドネットワーク2を介して他の装置などへ出力されるデータ(以下「出力データ」)の送信バッファ、および、フィールドネットワーク2を介して他の装置などから入力されるデータ(以下「入力データ」)の受信バッファとして機能する。マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定の装置へ転送されるべき出力データは、メインメモリ104から読み出されて、通信回路バッファ146に一次的に保持される。また、他の装置から転送された入力データは、バッファ146に一次的に保持された後、メインメモリ104に移される。
【0042】
DMA制御回路142は、メインメモリ104からバッファへの出力データの転送、および、バッファからメインメモリ104への入力データの転送を行う。
【0043】
フィールドネットワークコントローラは、フィールドネットワーク2に接続される他の装置との間で、バッファの出力データを送信する処理および入力データを受信して通信回路バッファに格納する処理を行う。典型的には、
フィールドネットワークコントローラは、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。
【0044】
USBコネクタは、制御装置サポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、制御装置サポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介して制御装置1に取込まれる。
【0045】
<C.CPUユニットのソフトウェア構成>
次に、
図3を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100、プロセッサコア140によって実行される。
【0046】
図3は、本発明の実施の形態に係るCPUユニット13で実行されるソフトウェア構成を示す模式図である。
図3を参照して、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。
【0047】
リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。
【0048】
システムプログラム210は、制御装置1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的(一体として)に実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。
【0049】
ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、制御装置システムSYSを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。
【0050】
後述するように、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。
【0051】
このように、CPUユニット13のマイクロプロセッサ100は、記憶手段に格納されたシステムプログラム210および制御プログラム230を実行する。
【0052】
以下、各プログラムについてより詳細に説明する。
ユーザプログラム236は、上述したように、ユーザにおける制御目的(たとえば、対象のラインやプロセス)に応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、制御装置サポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、制御装置サポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。
【0053】
スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。
【0054】
本実施の形態に係るCPUユニット13では、モーション演算プログラム234に適した一定周期の実行サイクル(制御サイクル)を処理全体の共通サイクルとして採用する。そのため、1つの制御サイクル内で、すべての処理を完了することは難しいので、実行すべき処理の優先度などに応じて、各制御サイクルにおいて実行を完了すべき処理と、複数の制御サイクルに亘って実行してもよい処理とが区分される。スケジューラプログラム212は、これらの区分された処理の実行順序などを管理する。より具体的には、スケジューラプログラム212は、各制御サイクル期間内において、より高い優先度が与えられているプログラムほど先に実行する。
【0055】
出力処理プログラム214は、ユーザプログラム236(制御プログラム230)の実行によって生成された出力データを通信コントローラへ転送するのに適した形式に再配置する。システムバスコントローラ120または
フィールドネットワークコントローラが、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。
【0056】
入力処理プログラム216は、制御装置システムバスコントローラ120および/または
フィールドネットワークコントローラによって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。
【0057】
シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
【0058】
モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボモータドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を実行されるごとに算出するプログラムである。
【0059】
その他のシステムプログラム220は、
図3に個別に示したプログラム以外の、制御装置1の各種機能を実現するためのプログラム群をまとめて示したものである。例えば機械の制御制御装置との通信や外部の機器からの要求からの処理、自己診断処理をマイクロプロセッサに実行させるプログラムである。また外部記憶媒体にメインメモリのデータを転送させる処理や外部記憶媒体からデータを読み出す処理も実行その他システムプログラムに含まれる。
【0060】
リアルタイムOS200は、複数のプログラムを時間の経過に従い切り替えて実行するための環境を提供する。本実施の形態に係る制御装置1においては、CPUユニット13のプログラム実行によって生成された出力データを他のユニットまたは他の装置へ出力(送信)するためのイベント(割り込み)として、制御サイクル開始の割り込みが初期設定される。リアルタイムOS200は、制御サイクル開始の割り込みが発生すると、マイクロプロセッサ100での実行対象を、割り込み発生時点で実行中のプログラムからスケジューラプログラム212に切り替える。なお、リアルタイムOS200は、スケジューラプログラム212およびスケジューラプログラム212がその実行を制御するプログラムが何ら実行されていない場合に、その他のシステムプログラム210に含まれているプログラムを実行する。このようなプログラムとしては、たとえば、CPUユニット13と制御装置サポート装置8との間の接続ケーブル10(USB)などを介した通信処理に関するものが含まれる。
【0061】
なお、制御プログラム230およびスケジューラプログラム212は、記憶手段であるメインメモリ104および不揮発性メモリ106に格納される。
【0062】
<サポート装置のハードウェア構成>
次に、制御装置1で実行されるプログラムの作成および制御装置1のメンテナンスなどを行うための制御装置8について説明する。
【0063】
図4は、本発明の実施の形態に係る制御装置8のハードウェア構成を示す模式図である。
図4を参照して、制御装置8は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
【0064】
図4を参照して、制御装置8は、OSを含む各種プログラムを実行するCPU81と、BIOSや各種データを格納するROM(Read Only Memory)82と、CPU81でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM83と、CPU81で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)84とを含む。CPU81が制御装置8の演算部に相当し、ROM82、RAM83およびハードディスク84が制御装置8の記憶部に相当する。
【0065】
制御装置8は、さらに、ユーザからの操作を受付けるキーボード85およびマウス86と、情報をユーザに提示するためのモニタ87とを含む。さらに、制御装置8は、制御装置1(CPUユニット13)などと通信するための通信インターフェイス(IF)89を含む。
【0066】
後述するように、制御装置8で実行される各種プログラムは、CDROM9に格納されて流通する。このCD−ROM9に格納されたプログラムは、CDROM(Compact Disk-Read Only Memory)ドライブ88によって読取られ、ハードディスク(HDD)84などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【0067】
<制御プログラム>
本実施の形態では、制御プログラムは、IO処理プログラム、ユーザプログラム、ユーザプログラムの実行に伴って実行させる、シーケンス演算プログラム、モーション演算プログラムを含む、一連の動作が実行される単位として取り扱う。
【0068】
本発明による制御装置1では、制御プログラムごとに実行させる周期、実行される優先度、より短い周期での実行が可能なように、制御プログラムそれぞれに実行開始のタイミング、制約条件を設定している。ユーザはこれらの制御プログラムの特性を勘案しながら制御目的を達成するためにプログラミングを行う。スケジューラプログラムは制御プログラムの実行優先度、実行周期にしたがって、マイクロプロセッサに制御プログラムを実行させる。次にそれぞれの制御プログラムについて説明をする。
【0069】
制御プログラム1は、最も高優先で周期的に実行される。出力処理プログラム1、入力処理プログラム1を含み出力データの送信、入力データの取り込み、割り当てられたユーザプログラム1の実行、出力データの生成、モーション演算プログラム1の実行、モータへの指令値の算出をこの順序で実行される。
【0070】
制御プログラム2は、制御プログラム1に次いで優先的に周期的に実行される。出力処理プログラム2、入力処理プログラム2を含み、出力データの送信、入力データの取り込み、割り当てられたユーザプログラム2の実行、モーションプログラム2の実行をこの順序で実行される。
【0071】
制御プログラム3は、定周期で周期的に実行させる。上述の制御プログラム1で実行させる出力データや入力データを読み込むことを前提とする制御プログラムである。具体的には、制御プログラム1で実行される、出力処理プログラム、入力処理プログラムの命令に従い取り込まれる入力データの受け渡しを受け、出力データを演算が実行される。
【0072】
制御プログラム3は、制御プログラム1の実行周期を短縮するため、制御プログラム1に含まれる、やや制御プログラム1の実行周期よりも、長周期で実行することを許容する場合にユーザプログラムを割り当てるのに適したプログラムである。
【0073】
制御プログラム4は、ユーザプログラムのみで構成されるプログラムである。高速な制御演算には関係しない、通信処理やバックアップ処理などを記述するのに適したプログラムである。
【0074】
次にコントローラサポート装置を用いた制御装置におけるプログラミングの手順を示す。
図5は、制御装置における制御装置の設定手順の一例を示す。
【0075】
STEP1において、フィールドネットワークやシステムバスを介して接続される機器を特定する。具体的にはフィールドネットワーク乃至はシステムバスに接続されている機器について通信を行うための情報を設定する。また後述するユーザプログラムで用いられる、変数として登録する。図示しないが、フィールドネットワーク又はシステムバスを介して接続されている機器と通信を行いフィールドネットワークやシステムバスを介して接続されている機器、接続順序などの情報を自動的に取得しても良い。
【0076】
STEP2において、ユーザはコントローラサポート装置を用いて、上述したように制御目的に合わせてユーザプログラムを作成する。STEP1で登録した、フィールドネットワーク乃至はシステムバスに接続されている機器から入力されるデータを用いて、シーケンス演算、モーション演算を実行し、出力データを生成するプログラムを作成する。このユーザプログラムは、複数のプログラムモジュールに分割されて作成されても良い。
【0077】
STEP3において、ユーザは制御プログラムの設定を行う。ユーザの制御目的に合わせて、制御プログラムを実行する周期を設定する。
【0078】
STEP4において、STEP1で設定したネットワークを介して接続される機器それぞれについて、前述したIO処理プログラムの命令に従って実行される、入力データの受信と出力データの送信を行う制御プログラムを登録する。
図6は、制御プログラムの設定を行う画面例を示す。フィールドネットワーク乃至はシステムバスに接続されている機器それぞれについて、IOリフレッシュを行う制御プログラムを登録する。制御対象機器が一覧で表示され、ユニット名称とともに表示される。それぞれについてIOリフレッシュを行う制御プログラムをプルダウン形式でユーザに選択させる。
【0079】
STEP5において、作成したユーザプログラムを制御プログラムに割り当てる。
図8は、制御プログラムへの割り当てのイメージを示す。
図7では、制御プログラムそれぞれについて、作成したユーザプログラム(Program0-Program6)を制御プログラムに割り当てる。複数のユーザプログラムを制御プログラムに割り当てる場合には、ユーザプログラムの実行順序を登録させる。
図7の例では、制御プログラム1にユーザプログラムProgram0、Program2が割り当てされている。制御プログラム2には、ユーザプログラムProgram4、Program5、Program6が割り当てられている。制御プログラム3には、Program1が割り当てされている。
【0080】
上述の操作によって、制御プログラム毎に、実行される周期、制御プログラムに含まれるIO制御プログラムにてデータ交換を行う機器を示す設定パラメータ、実行されるユーザプログラムを含む制御プログラムが生成される。制御装置のスケジューラプログラムは、転送された設定パラメータを参照し、制御プログラムの実行周期などを参照し、プログラムの実行開始や終了のタイミングを制御する。また、本実施形態では制御プログラムの実行周期は、フィールドネットワーク乃至はシステムバスを介して外部の機器と通信(IOリフレッシュ)を行う周期となるため、設定パラメータに基づいて、通信プログラムは通信周期および当該周期にてIOリフレッシュを行う対象と機器を特定する。
【0081】
<実施の形態1>
図8は制御プログラム1と制御プログラム2を定周期で複数のコアで実行される例を示す。制御プログラム1と及び制御プログラム2はそれぞれ、IO処理プログラム1、IO処理プログラム2、ユーザプログラム1、ユーザプログラム2、モーション演算プログラム1、モーション演算プログラム2を含む。
【0082】
スケジューラプログラムは、タイマのカウント値を監視する。所定の周期が到来すると、スケジューラプログラムは、マイクロプロセッサのコア1において制御プログラム1の実行を開始させる。同時にマイクロプロセッサのコア2において制御プログラム2の実行を開始させる。
【0083】
制御プログラム1の実行において、マイクロプロセッサのコア1は、IO制御プログラム1の出力処理プログラムの命令に従い、制御プログラム1に関連付けされた外部機器への出力データ1をメインメモリ上の通信バッファから通信コントローラ150のバッファメモリへ転送する処理を行う(図中A)。また入力処理プログラムの命令に従い、通信コントローラから転送された通信バッファに格納された入力データ1をユーザプログラム1の作業領域へ転送する(図中C)。
【0084】
ユーザプログラム1の命令に従い、マイクロプロセッサのコア1はユーザプログラム1の作業領域に格納された入力データを用いてシーケンス演算を行い、出力データをメインメモリ上通信バッファへ格納する処理を行う。また入力データを用いて演算を行い、出力されたモーション制御用データを算出する。算出されたモーション制御用データをモーション演算プログラムが作業を行う領域へ転送する。
【0085】
モーション演算プログラム1の命令に従い、マイクロプロセッサのコア1は、モーション演算プログラム1を用いた演算を行い、制御プログラム1の実行周期に対するモータへの指令値を演算し、出力データを算出する。出力データを通信コントローラに転送するバッファ領域へ転送する。
【0086】
スケジューラプログラムは次の実行周期の到来を監視し、実行周期の到来を検出すると、制御プログラム1をマイクロプロセッサのコア1に実行させる。一連の処理を定周期で繰り返し、マイクロプロセッサのコア1に実行させる。
【0087】
次に制御プログラム2の実行について説明する。制御プログラム2の実行において、IO制御プログラム2の命令に従い、マイクロプロセッサのコア2は、制御プログラム2に関連付けされた外部機器への出力データ1をメインメモリ上から通信コントローラのバッファメモリへ転送する処理を行う(図中B)。また入力処理プログラムの命令に従い、通信コントローラから転送された通信バッファに格納された入力データ1をユーザプログラム1の作業領域へ転送する(図中D)。
【0088】
ユーザプログラム2の命令に従い、マイクロプロセッサのコア2は、ユーザプログラム2の作業領域に格納された入力データを用いてシーケンス演算を行い、出力データをメインメモリ上の通信バッファへ格納する処理を行う。また入力データを用いて演算を行い、出力されたモーション制御等データを算出する。算出されたモーション制御用データをモーション演算プログラム2が作業を行う領域へ転送する。
モーション演算プログラム2の命令に従い、マイクロプロセッサのコア1はモーション演算2を用いた演算を行い、制御プログラム2の実行周期に対応するモータへの指令値を演算し、出力データを算出する。その後に出力データを通信コントローラに転送するための通信バッファへ転送する。
【0089】
モーション
演算プログラム2の実行が完了すると制御プログラム2の実行が完了する。スケジューラプログラムは次の実行周期の到来を監視し、実行周期の到来を検出すると、制御プログラム2をマイクロプロセッサのコア2に実行させる。一連の処理を定周期で繰り返しマイクロプロセッサのコア2に実行させる。
【0090】
この例では、制御プログラム2は、制御プログラム1の2周期目の演算が終了する前に演算が終了しているが、設定された実行周期のタイミング(制御プログラム1の実行周期の3倍)で出力データを外部機器に送信する。
【0091】
スケジューラプログラムは次の実行周期の到来を監視し、実行周期の到来を検出すると、制御プログラム2をマイクロプロセッサのコア2に実行させる。一連の処理を定周期で繰り返し、マイクロプロセッサのコア2に実行させる。
【0092】
本実施例では、複数のモータに対する指令値を制御プログラム1及び制御プログラム2で並列にマイクロプロセッサのコア1、コア2にそれぞれ並列で実行させる。この例では、制御プログラム2は、制御プログラム1の実行周期の3倍の実行周期にて並列で実行される説明をしたが、同じ周期で実行しても良い。制御プログラム1の実行周期の複数倍の周期で実行しても良い。複数のモータの制御を含む制御プログラムを分割することにより、より、制御プログラム1においてモータへの指令値の演算を含むモーションプログラムを制御プログラム2へ分割することにより、実行周期1の周期を短縮させることが可能となる。
【0093】
本実施例では、制御プログラム1及び制御プログラム2の実行にあたって、IOを制御するプログラムに含まれる、出力処理プログラムの実行から開始したが、図に示すように入力処理プログラムから実行を開始し、ユーザプログラム、モーション演算プログラム、出力処理プログラムの順に周期的に実行させる構成としても良い。
【0094】
さらに本実施例では、制御プログラム1及び2にモーション
演算プログラムを含む例を説明したが、何れかの制御プログラムにモーション演算プログラムの実行を含まない場合があっても良い。
【0095】
<実施例2>
次にマルチコアプロセッサを用いた、制御プログラム1、2及び3の実行の開始のタイミングに関して説明する。
【0096】
図9は、制御プログラム1−3の実行のタイミングを示す図である。スケジューラプログラムは、所定の時刻の到来を検出すると、制御プログラム1、制御プログラム2の実行を開始させる。制御プログラム3の実行を待ち状態とする。
【0097】
図中に示す、制御プログラム1のIOはIO制御プログラムの命令に従った動作を示す。プロセッサのコア1はIO制御プログラム1の命令に従い、出力データの送信、入力データの取り込みを行う。(前述した説明と同様の処理のため説明を略す)
図中に示す、制御プログラム1のUPGは、ユーザプログラム1の命令に従った動作を示す。ユーザプログラム1の命令に従い、マイクロプロセッサのコア1は、ユーザプログラム1の作業領域に格納された入力データを用いてシーケンス演算を行い、出力データを通信バッファへ格納する処理を行うと共に、モーション演算プログラム1が演算する領域へ格納する。
【0098】
図中に示す、制御プログラム1のMCは、モーション演算プログラム1の命令に従った動作を示す。マイクロプロセッサのコア1は、制御プログラム1の実行周期に対するモータへの指令値を演算し、出力データを算出し、出力データを通信コントローラへ転送するためのバッファへ格納する。制御プログラム1の終了にあたり、図示しないが、システムプログラムの命令に従い、制御プログラム1で用いた入力データ、出力データ、中間データについて制御プログラム3の演算に用いられるデータを制御プログラム3の作業領域へ転送する。
【0099】
図中に示す、制御プログラム2のIOはIO制御プログラム2の命令に従った動作を示す。プロセッサのコア2はIO制御プログラム2の命令に従い、出力データの送信、入力データの取り込みを行う。(前述した説明と同様の処理のため説明を略す)
図中に示す、制御プログラム2のUPGは、ユーザプログラム2の命令に従った動作を示す。ユーザプログラム2の命令に従い、マイクロプロセッサのコア2は、ユーザプログラム2の作業領域に格納された入力データを用いてシーケンス演算を行い、出力データを通信バッファへ格納する処理を行うと共に、モーション演算プログラム2が演算する領域へ格納する。
【0100】
図中に示す、制御プログラム2のMCは、モーション演算プログラム2の命令に従った動作を示す。マイクロプロセッサのコア2は、制御プログラム2の実行周期に対するモータへの指令値を演算し、出力データを算出し、出力データを通信コントローラへ転送するためのバッファへ格納する。
【0101】
スケジューラプログラムは、制御プログラム1の実行が上述の通り完了すると、マイクロプロセッサのコア3に制御プログラム3の実行を開始させる。
【0102】
図中に示す制御プログラムのUPGは、制御プログラム3に含まれる、ユーザプログラム3の命令に従った動作を示す。ユーザプログラム3の命令に従って、制御プログラム3の実行領域に格納されているデータを用いて、ユーザプログラム3の演算を実行し出力データを算出し、制御プログラム3の出力データを制御プログラム3の出力バッファへ格納する。
【0103】
図示しないが、スケジューラプログラムとシステムプログラムは、制御プログラム1及び制御プログラム3の実行周期が揃うタイミングの前に、制御プログラム1の開始前に、制御プログラム3の出力バッファから、出力データを通信コントローラへ転送するためのバッファへコピーする。
【0104】
この処理により、図中で(A)で示したとおり制御プログラム3の出力データは、制御プログラム1の実行周期の4周期目の出力処理プログラム1の命令に従い、通信コントローラへ転送される。
【0105】
この例では、3のプロセッサコア(コア1−コア3)を用いることにより、制御プログラム1、制御プログラム2、制御プログラム3を実行する例を説明したが、2のプロセッサコアを用いて実行することも可能である。2のプロセッサコアでこれらのプログラムを実行する場合、スケジューラプログラムは、制御プログラム1乃
至制御プログラム2の空き時間で、かつ制御プログラム1の実行が完了した後に、制御プログラム3の実行を開始させる。制御プログラム3が実行途中であっても、スケジューラプログラムは、制御プログラム1または制御プログラム2の実行開始のタイミングが到来すると、制御プログラム実行3を停止し、制御プログラム1または制御プログラム3の空き時間で実行を再開されるようにする。
【0106】
所定の制御プログラムの実行開始の開始タイミング(実行周期が開始されるタイミング)が到来すると、制御プログラム3の実行を待ち状態とし、制御プログラム3の実行開始のタイミングを制御プログラム1の実行終了のタイミングとし、制御プログラム1から制御プログラム3の作業領域へコピーするように構成している。
【0107】
これにより、ユーザは制御プログラム1で実行させるプログラムを検討する際に、比較的長い時間がかかっても良いプログラムを制御プログラム3に割り当てることができる。これにより、制御プログラム1の実行周期をさらに短縮させることができる可能性がある。