特許第6540166号(P6540166)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

<>
  • 特許6540166-制御装置 図000002
  • 特許6540166-制御装置 図000003
  • 特許6540166-制御装置 図000004
  • 特許6540166-制御装置 図000005
  • 特許6540166-制御装置 図000006
  • 特許6540166-制御装置 図000007
  • 特許6540166-制御装置 図000008
  • 特許6540166-制御装置 図000009
  • 特許6540166-制御装置 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6540166
(24)【登録日】2019年6月21日
(45)【発行日】2019年7月10日
(54)【発明の名称】制御装置
(51)【国際特許分類】
   G05B 19/05 20060101AFI20190628BHJP
【FI】
   G05B19/05 A
【請求項の数】1
【全頁数】19
(21)【出願番号】特願2015-74554(P2015-74554)
(22)【出願日】2015年3月31日
(65)【公開番号】特開2016-194823(P2016-194823A)
(43)【公開日】2016年11月17日
【審査請求日】2017年8月4日
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100155712
【弁理士】
【氏名又は名称】村上 尚
(72)【発明者】
【氏名】江口 重行
(72)【発明者】
【氏名】前川 典弘
(72)【発明者】
【氏名】田村 嘉英
(72)【発明者】
【氏名】西山 佳秀
【審査官】 影山 直洋
(56)【参考文献】
【文献】 特開2012−194666(JP,A)
【文献】 特開平04−133102(JP,A)
【文献】 特開平05−046223(JP,A)
【文献】 特開2003−256221(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
制御対象機器とネットワークを介して接続され、前記制御対象機器からの入力データを演算し、演算結果を出力することで制御対象機器を制御する制御装置であって、
第1のコアおよび第2のコアを有するマイクロプロセッサと、
前記接続された制御対象機器との間で通信を行う通信回路と、
前記制御対象機器に対する制御内容を規定する、前記第1のコアで実行されるべき第1のユーザプログラム及び前記第2のコアで実行されるべき第2のユーザプログラムと、前記第1のコアまたは前記第2のコアのいずれかで実行されるべき第3のユーザプログラムと、
前記ユーザプログラムからの指示及び第1の周期に従い、前記制御対象機器に対する指令値を演算する、前記第1のコアで実行されるべき第1のモーション演算プログラムと、
前記ユーザプログラムからの指示及び第2の周期に従い、前記制御対象機器に対する指令値を演算する、前記第2のコアで実行されるべき第2のモーション演算プログラムと、
前記ユーザプログラムからの指示に従い、前記制御対象機器に対する指令値を演算する、前記第1のコアまたは前記第2のコアのいずれかで実行されるべき第3のモーション演算プログラムと、
前記通信回路を介してメモリに取り込まれた、前記制御対象機器からの入力データを演算可能な状態とする、前記第1のコアで実行されるべき第1の入力プログラム、前記第2のコアで実行されるべき第2の入力プログラム、及び前記第1のコアまたは前記第2のコアのいずれかで実行されるべき第3の入力プログラムと、
前記指令値を含む、通信回路を介して送出可能な出力データを生成する、前記第1のコアで実行されるべき第1の出力プログラム、前記第2のコアで実行されるべき第2の出力プログラム、及び前記第1のコアまたは前記第2のコアのいずれかで実行されるべき第3の出力プログラムと、
スケジューラプログラムとの格納に用いられるメモリと、を備え、
前記スケジューラプログラムは、
前記第1の入力プログラムと、前記第1の出力プログラムと、前記第1のユーザプログラムと、前記第1のモーション演算プログラムとを、第1の周期で繰り返し前記第1のコアに実行させ、
前記第2の入力プログラムと、前記第2の出力プログラムと、前記第2のユーザプログラムと、前記第2のモーション演算プログラムとを、第2の周期で繰り返し前記第2のコアに実行させ、
前記第3の入力プログラムと、前記第3の出力プログラムと、前記第3のユーザプログラムと、前記第3のモーション演算プログラムとを、前記第1のコアまたは前記第2のコアのいずれかの空き時間で、かつ前記第1の入力プログラム、前記第1の出力プログラム、前記第1のユーザプログラム、および前記第1のモーション演算プログラムの実行が完了した後に、前記第1の入力プログラムおよび前記第1の出力プログラムから転送された前記入力データおよび前記出力データを用いて実行または再開させ、
さらに、前記第1の入力プログラムおよび前記第1の出力プログラム、または、前記第2の入力プログラムおよび前記第2の出力プログラムの実行開始のタイミングが到来すると、前記第3の入力プログラムと、前記第3の出力プログラムと、前記第3のユーザプログラムと、前記第3のモーション演算プログラムとの実行を、停止させる、制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械や設備の動作を制御するために用いられる制御装置において、マルチコアプロセッサを用いた制御プログラムの実行のスケジューリングに関する。
【背景技術】
【0002】
機械、設備などの動作の制御としては、モータの運動を制御するためのモーション制御が含まれる場合がある。このようなモーション制御、典型的には、モータを駆動するモータドライバに対して周期的に指令値を出力するモーション演算プログラムの実行と、シーケンス演算とを1つのCPUで実行するプログラマブルコントローラが知られている。
【0003】
例えば特許文献1には、モータを駆動するモータドライバに対して周期的に指令値を出力するモーション演算プログラムを実行するプログラマブルコントローラを開示する。
【0004】
特許文献1では、第1のモーション演算プログラムを含み第1の制御サイクルで動作する制御プログラム1(短周期モーションプログラム)と、第2のモーション演算プログラム(長周期モーションプログラム)とを含む。第1の制御サイクルの整数倍の周期でモータに対して指令値を出力する制御プログラム2との実行にあたり、第1の制御プログラムの実行が終了した後に第2の制御プログラムの実行を開始させる。
【0005】
第2の制御プログラムが所定の制御周期内で終了しなかった場合には、第1の制御プログラムの次の制御サイクルにおいて、第1の制御プログラムの実行が終了した後に第2の制御プログラムの未処理部分を実行させる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許4752984号
【発明の概要】
【発明が解決しようとする課題】
【0007】
これらの制御装置が用いられるモータを制御する機械においては、制御対象機器である機器から入力される入力データの演算、演算結果としてモータに対する指令値を出力するまでの時間の短縮が求められている。制御装置の動作として、周期的に入力データの取り込み、入力データを用いた演算による出力データ算出、出力データの送信を繰り返し実行することを前提とすると、制御目的に合わせた異なる実行周期にて入力データの取り込み、入力データの演算、出力データの算出、出力データの送信を行えるようにすることが望ましい。
【0008】
特許文献1に記載の制御装置は、短周期モーションプログラムの実行を優先し、短周期モーションプログラムが終了した後に長周期モーションプログラムを実行させるため、長周期モーションプログラムが実行可能な時間が制限される。モーション演算プログラムは周期的にモータなど制御対象に指令値を出力する必要があるため、短周期モーションプログラムの実行時間を見積もった上で長周期モーションプログラムの実行周期を設定する必要があり、長周期モーションプログラムの実行周期が長くなってしまう。
【0009】
また、制御装置で実行させる、モーション演算プログラムを含む複数の制御プログラムを作成するにあたって、実行対象とする入力データの対象となる機器の設計、実行周期や実行タイミングの設計、はユーザに負担を強いる。
【0010】
本発明は、モーション演算プログラムを含む複数の制御プログラムを並列に実行することで、周期的に実行される複数の制御プログラムの実行周期の短縮を図ることが可能な制御装置を提供することにある。
【0011】
本発明の別の目的は、並列に実行される制御プログラムの作成が容易な制御装置を提供することである。
【課題を解決するための手段】
【0012】
上記の課題を解決するために、本発明の制御装置は、制御対象機器とネットワークを介して接続され、前記制御対象機器からの入力データを演算し、演算結果を出力することで制御対象機器を制御する制御装置であって、第1のコアおよび第2のコアを有するマイクロプロセッサと、前記接続された制御対象機器との間で通信を行う通信回路と、前記制御対象機器に対する制御内容を規定する、前記第1のコアで実行されるべき第1のユーザプログラム及び前記第2のコアでされるべき第2のユーザプログラムと、前記ユーザプログラムからの指示及び第1の周期に従い、前記制御対象機器に対する指令値を演算する、前記第1のコアで実行されるべき第1のモーション演算プログラムと、前記ユーザプログラムからの指示及び第2の周期に従い、前記制御対象機器に対する指令値を演算する、前記第2のコアでされるべき第2のモーション演算プログラムと、前記通信回路を介してメモリに取り込まれた、前記制御対象機器からの入力データを演算可能な状態とする、前記第1のコアで実行されるべき第1の入力プログラム及び前記第2のコアでされるべき第2の入力プログラムと、前記指令値を含む、通信回路を介して送出可能な出力データを生成する、前記第1のコアで実行されるべき第1の出力プログラム及び前記第2のコアでされるべき第2の出力プログラムと、スケジューラプログラムとの格納に用いられるメモリと、を備え、前記スケジューラプログラムは、前記第1の入力プログラムと、前記第1の出力プログラムと、前記第1のユーザプログラムと、前記第1のモーション演算プログラムとを、第1の周期で繰り返し前記第1のコアに実行させ、前記第2の入力プログラムと、前記第2の出力プログラムと、前記第2のユーザプログラムと、前記第2のモーション演算プログラムとを、第2の周期で繰り返し前記第2のコアに実行させる。
【発明の効果】
【0013】
本発明は、短周期モーション演算プログラムと長周期モーション演算プログラムとを並列に実行することで短周期モーション演算プログラムに関する入出力時間を短縮しつつも、長周期モーション演算プログラムの実行周期の短縮を図ることができるといった効果を奏する。
【図面の簡単な説明】
【0014】
図1】本実施の形態に係る制御装置のシステム構成を示す図である。
図2】CPUユニットのハードウェア構成を示す図である。
図3】本発明の実施の形態に係るCPUユニットで実行されるソフトウェア構成を示す模式図である。
図4】本発明の実施の形態に係る制御装置のハードウェア構成を示す模式図である。
図5】制御装置における制御装置の設定手順の一例を示すフローチャートである。
図6】制御プログラムの設定を行う画面例を示す図である。
図7】制御プログラムの割り当て設定の画面例を示す図である。
図8】制御プログラムへの割り当てのイメージを示す図である。
図9】制御プログラム1−3の実行のタイミングを示す図である。
【発明を実施するための形態】
【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の実行周期をさらに短縮させることができる可能性がある。
【符号の説明】
【0108】
1、8 制御装置
214 出力処理プログラム
216 入力処理プログラム
218 IO処理プログラム
230 制御プログラム
236 ユーザプログラム
14、53 IOユニット
122、142 DMA制御回路
210、220 システムプログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9