JP2019133205A - モータ駆動システム、モータ制御システムおよび自走ロボット - Google Patents
モータ駆動システム、モータ制御システムおよび自走ロボット Download PDFInfo
- Publication number
- JP2019133205A JP2019133205A JP2016104065A JP2016104065A JP2019133205A JP 2019133205 A JP2019133205 A JP 2019133205A JP 2016104065 A JP2016104065 A JP 2016104065A JP 2016104065 A JP2016104065 A JP 2016104065A JP 2019133205 A JP2019133205 A JP 2019133205A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- time
- motor
- task
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004891 communication Methods 0.000 claims abstract description 68
- 230000001360 synchronised effect Effects 0.000 claims abstract description 59
- 230000003111 delayed effect Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 230000007423 decrease Effects 0.000 claims 2
- 238000000034 method Methods 0.000 description 46
- 230000008569 process Effects 0.000 description 34
- 238000012545 processing Methods 0.000 description 20
- 230000004048 modification Effects 0.000 description 15
- 238000012986 modification Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000003466 welding Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 230000000737 periodic effect Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000013078 crystal Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H02—GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
- H02P—CONTROL OR REGULATION OF ELECTRIC MOTORS, ELECTRIC GENERATORS OR DYNAMO-ELECTRIC CONVERTERS; CONTROLLING TRANSFORMERS, REACTORS OR CHOKE COILS
- H02P5/00—Arrangements specially adapted for regulating or controlling the speed or torque of two or more electric motors
- H02P5/46—Arrangements specially adapted for regulating or controlling the speed or torque of two or more electric motors for speed regulation of two or more dynamo-electric motors in relation to one another
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
- G05B19/414—Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
- G05B19/4141—Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by a controller or microprocessor per axis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/33—Director till display
- G05B2219/33213—Communication cpu to synchronize axis between different machines
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Human Computer Interaction (AREA)
- Manufacturing & Machinery (AREA)
- Computer Hardware Design (AREA)
- Power Engineering (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Programmable Controllers (AREA)
Abstract
【課題】リアルタイム分散システムにおいて、通信回線によって接続される複数のプロセッサ間でタスクの実行を同期させる。【解決手段】モータ駆動システムは、通信回線で接続された、第1プロセッサを有する第1モータユニットおよび第2プロセッサを有する第2モータユニットを備える。第1プロセッサは一定の間隔P1でデータを送信する。第2プロセッサは、第1時刻以後、一定の間隔P1でデータを受信し、データに基づいて動作するタスクを、第2時刻を起点として一定の間隔P2で実行する。同期モードにおいて、第2プロセッサは、第2時刻を、第1時刻以後の所定の許容時間内の時刻に更新する。通常動作モードにおいて、第1プロセッサは通信回線を介して一定の間隔P1でデータを送信し、第2プロセッサは、データに基づいて動作するタスクを、更新された第2時刻を起点として一定の間隔P2で実行する。【選択図】図11
Description
本開示は、マルチプロセッサ環境において、各プロセッサがタスクを開始するタイミングを調整する技術に関する。より具体的には、本開示は、互いにデータを送受信する複数のプロセッサの各々が、当該データを用いてタスクを動作させて別個のモータを制御する際の、タスクの開始タイミングを調整する技術に関する。
リアルタイムシステムでは、あるジョブの実行が命令された時、そのジョブが設定された時間通りに実行され、終了されることが必要とされる。リアルタイムシステムでは、たとえばミリ秒オーダ、またはマイクロ秒オーダの時間管理が要求される。
このようなリアルタイムシステムの一態様として、複数のプロセッサのネットワークによって構成されるリアルタイム分散システムが知られている。近年は、車載分野やロボット分野を中心に、複数のプロセッサが協調しながらそれぞれモータおよび/または機械の制御を行うリアルタイム分散システムの開発が進められている。
リアルタイム分散システムでは、あるプロセッサが他のプロセッサにデータを送信し、当該他のプロセッサは受信したデータを用いてジョブを実行する。たとえば、Vector Corporation,"Time Synchronization to FlexRay in OSEKtime and Autosar OS"は、TDMA通信を行うリアルタイム分散システムを開示する。当該リアルタイム分散システムでは、データの送受信を行うために、全てのプロセッサがTDMA通信によって相互に通信する。各プロセッサは、TDMA通信に同期したスケジューリングテーブルを持つ。プロセッサ間の通信遅延および実行時間をすべて考慮した上で、各タスクをスケジューリングテーブル上に正確に配置することにより、システム全体が順序よく動作する。
特表2012−516079号公報は、リアルタイム分散システムにおいて、すべての分散型モジュール(すなわちすべてのプロセッサ)を一つの統一された開始タイミングに同期させる方法を開示する。具体的には、当該リアルタイム分散システムには、すべての分散型モジュールに共通したタイミング情報(たとえばクロック)が与えられる。
特表2004−536538号公報は、リアルタイム分散システムに存在する複数の分散型モジュールについて、どの二つのモジュールの間でも通信が起こりうる場合、モジュールクロックの位相および周波数を整合させる方法を開示する。
Vector Corporation, "Time Synchronization to FlexRay in OSEKtime and Autosar OS", 2007
各プロセッサ間にTDMA通信を行わせる、または、各プロセッサにタイミング情報を与えるための複雑な機構を導入すると、コストがかかる。さらに、より低いコストで実現されるリアルタイム分散システムが必要とされている。
ただし、安価なシステムでは、各プロセッサが異なるクロックで動作したり、それらのプロセッサを動作させるソフトウェアの構成が相違することにより、プロセッサ間の動作の同期がとれないという状況が発生し得る。
本開示は、リアルタイム分散システムにおいて、通信回線によって接続される複数のプロセッサ間でタスクの実行を同期させ、必要とされるタイミングでリアルタイム分散システムを動作させることである。
本開示による例示的な第1のモータ駆動システムは、第1モータ、および、前記第1モータを制御する第1プロセッサを有する第1モータユニットと、第2モータ、および、前記第2モータを制御する第2プロセッサを有する第2モータユニットとを備えたモータ駆動システムであって、前記第1モータユニットおよび前記第2モータユニットは通信回線で接続されており、前記第1プロセッサは、前記通信回線を介して一定の間隔P1でデータを送信し、前記第2プロセッサは、前記通信回線を介して、第1時刻以後、一定の間隔P1で前記データを受信し、前記データに基づいて動作するタスクを、第2時刻を起点として前記一定の間隔P2で実行し、同期モードにおいて、前記第2プロセッサは、前記第2時刻を、前記第1時刻以後の所定の許容時間内の時刻に更新し、前記同期モードの後の通常動作モードにおいて、前記第1プロセッサは前記通信回線を介して前記一定の間隔P1でデータを送信し、前記第2プロセッサは、前記データに基づいて動作する前記タスクを、更新された第2時刻を起点として前記一定の間隔P2で実行する。
本開示による例示的な第2のモータ駆動システムは、前記第1モータ、および、前記第1モータを制御する第1プロセッサを有する第1モータユニットと、前記第2モータ、および、前記第2モータを制御する第2プロセッサを有する第2モータユニットとを備えたモータ駆動システムであって、前記第1モータユニットおよび前記第2モータユニットは通信回線で接続されており、同期モードにおいて、前記第1プロセッサは、前記通信回線を介して第1時刻にデータを送信し、前記第2プロセッサは、前記通信回線を介して、前記第2プロセッサにおいて前記データを受信した第2時刻、および、前記データに基づいて動作するタスクの実行開始時刻である第3時刻を示す情報を送信し、前記第1プロセッサは、予め保持されている前記第2プロセッサの動作周波数の情報、前記第2時刻および前記第3時刻を示す情報に基づいて、前記第1時刻を、前記第2時刻および前記第3時刻の差分に相当する時間分だけ遅らせた時刻に更新し、前記同期モードの後の通常動作モードにおいて、前記第1プロセッサは前記通信回線を介して、更新された第1時刻を起点にした一定の間隔P1でデータを送信し、前記第2プロセッサは、前記通信回線を介して、前記一定の間隔P2で前記データを受信し、前記タスクを実行する。
本開示による例示的な第1のモータ制御システムは、上述のいずれかのモータ駆動システムと、第3プロセッサを有するシステムコントローラとを備えたモータ制御システムであって、前記モータ駆動システムの第1プロセッサおよび前記第3プロセッサは制御用通信回線で接続されており、前記第1プロセッサおよび前記第2プロセッサの同期モードに先立って、前記第3プロセッサおよび前記第1プロセッサのシステム同期モードおよび通常動作モードが開始され、前記第3プロセッサは、前記制御用通信回線を介して一定の間隔P3でデータを送信し、前記第1プロセッサは、前記制御用通信回線を介して、第1時刻以後、一定の間隔P3で前記データを受信し、前記データに基づいて動作するタスクを、第2時刻を起点として前記一定の間隔P1で実行し、前記システム同期モードにおいて、前記第1プロセッサは、前記第2時刻を、前記第1時刻以後の所定の許容時間内の時刻に更新し、前記システム同期モードの後の通常動作モードにおいて、前記第3プロセッサは前記制御用通信回線を介して前記一定の間隔P3でデータを送信し、前記第1プロセッサは、前記データに基づいて動作する前記タスクを、更新された第2時刻を起点として前記一定の間隔P1で実行する。
本開示による例示的な自走ロボットは、上述の第1のモータ制御システムと、複数の車輪であって、前記第1モータによって駆動される第1車輪、および前記第2モータによって駆動される第2車輪を含む複数の車輪と、物を載置する搬送テーブルとを備えている。
本開示による例示的な第2のモータ制御システムは、第1プロセッサを有するシステムコントローラと、モータ、および、前記モータを制御する第2プロセッサを有するモータユニットとを備えたモータ制御システムであって、前記システムコントローラおよび前記モータユニットは通信回線で接続されており、前記第1プロセッサは、前記通信回線を介して一定の間隔P1でデータを送信し、前記第2プロセッサは、前記通信回線を介して、第1時刻以後、一定の間隔P1で前記データを受信し、前記データに基づいて動作するタスクを、第2時刻を起点として前記一定の間隔P2で実行し、同期モードにおいて、前記第2プロセッサは、前記第2時刻を、前記第1時刻以後の所定の許容時間内の時刻に更新し、前記同期モードの後の通常動作モードにおいて、前記第1プロセッサは前記通信回線を介して前記一定の間隔P1でデータを送信し、前記第2プロセッサは、前記データに基づいて動作する前記タスクを、更新された第2時刻を起点として前記一定の間隔P2で実行する。
本発明の例示的な実施形態によれば、異なるプロセッサ上で実行する周期タスクを同期させることが可能であり、最小制御周期でリアルタイム分散システムを構築することができる。
まず、図1〜図3を参照しながら、同期機構が存在しないリアルタイム分散システムを説明する。その後、本開示によるモータ駆動システムの実施形態を説明する。以下では、プロセッサによって実行されるタスクを、「プロセッサのタスク」と記述する。また、プロセッサがタスクを実行したことによって生成され、送信されたデータを、「タスクが出力したデータ」または「タスクによって出力されたデータ」と記述する。「タスク」は、プロセッサによって実行されるプログラムの一種であるが、擬人的に、データを生成し、送信する主体として表現する。
図1は、同期機構が存在しないリアルタイム分散システムにおける、プロセッサ間のデータ送受信および処理のタイミング例を示す。図1には、プロセッサAのタスクTから出力されたデータが、プロセッサBによって受信され、プロセッサBのタスクKの実行に利用されるタイミングが示されている。図1において、タスクTおよびKはそれぞれ同じ周期Pで実行される周期タスクである。プロセッサAのタスクTから出力されたデータは、所定の通信遅延を経た後、プロセッサBに受信され、タスクKの次の実行タイミングまで保持されて、タスクKの実行に利用される。
ここで、図1の破線の円で囲んだ部分に注目する。当該部分の拡大図が図2に示されている。
図2は、データの送信遅延Dと、プロセッサBにおけるデータ保持期間Lとを示す。図示されるように、データ保持期間Lが長くなると、それだけタスクTおよびKによって構成されるシステムの制御周期が長くなる。ここで、「制御周期」は、プロセッサAのタスクTの実行開始から、当該タスクTが出力したデータを利用する、プロセッサBのタスクKの実行が完了するまでの期間を言う。図2には制御周期Cも併せて示されている。以下では、タスクTの実行時間をETと表し、タスクKの実行時間をEKと表す。
図3は、制御周期が最長になったときの例を示す。プロセッサBがタスクKを実行した直後に、プロセッサAからデータを受信したとき、制御周期Cが最長になる。このとき、上述の保持期間LはタスクKの実行周期Pよりも僅かに短いだけであり、実質的に等しい。よって最長の制御周期は「ET+D+P+EK」と表現される。制御周期が長くなると、システムが破たんするおそれがある。たとえばプロセッサBのタスクKの出力結果を待ち、さらに他のプロセッサまたはタスクが存在する場合には、データの送受信に想定以上の時間がかかり、処理が間に合わなくなるからである。
一方、プロセッサ間の同期が取れ、タスクが順序よく実行する場合には、制御周期は最短になる。図4は、制御周期が最短になったときの例を示す。プロセッサBがタスクKを実行する直前に、プロセッサAからデータを受信したとき、制御周期が最短になる。このとき、上述の保持期間Lは実質的に0である。最短の制御周期は「ET+D+EK」と表現される。図2に示す最長の制御周期と比較すると、タスクKの周期Pに相当する時間だけ短い。
本開示は、プロセッサAの各周期タスクTがデータを送信し、他のプロセッサBがデータを受信した直後に、周期タスクKの実行を開始できるよう、タスクTおよび/またはタスクKの実行タイミングを調整する技術に関する。
以下、図5から図12を参照しながら、本開示のシステムの処理の考え方を説明する。当該説明の後、リアルタイム分散システムを採用したモータ駆動システムとその変形例および応用例を説明する。
本明細書において、プロセッサAのタスクとプロセッサBのタスクとが「同期」している、とは、プロセッサAの各周期タスクTがデータを出力し、他のプロセッサBが当該データを受信した直後に、プロセッサBが周期タスクKの実行を開始することをいう。ただし、本開示では、データの送信とデータの受信との間の通信遅延Dは含み得るとする。「直後」は予め定められ得る。たとえば、プロセッサBの動作クロックで10クロック以内を、「直後」の期間として定義し得る。
図5は、本開示によるリアルタイム分散システム1の構成を示す。以下、単に「システム1」と記述する。システム1は、非同期の通信回線16で接続された2つの制御システム10Aおよび10Bを有している。制御システム10Aは、プロセッサ12Aと制御対象14Aとを有する。また制御システム10Bは、プロセッサ12Bと制御対象14Bとを有する。制御システム10Aおよび制御システム10Bは、非同期の通信回線16を介して互いにデータを送受信することができる。
ここで、「非同期」とは、タイミングを示す特別の信号、たとえばクロック信号、を利用せずに、という意味である。非同期の通信方式は、典型的には、信号の先頭に一意に識別可能なスタートビットを付与し、信号の最後にも一意に識別可能なストップビットを付与することにより、伝送する信号の区切りを示し、これにより送受信側が互いにタイミングを合わせる必要がない通信方式をいう。
ただし、本開示にかかる技術は、非同期の通信を行う回線であるか、同期の通信を行う回線であるかは問わない。以下に説明する動作を行うシステムの動作は、いずれの通信回線を採用していても適用できるからである。
通信回線16は、有線であってもよいし無線であってもよい。
後に説明するように、システム1の一例は、モータで駆動される2つの駆動輪と2つ以上の従動輪(非駆動輪)とを有する自走ロボットに搭載されるモータ駆動システムである。制御システム10Aおよび10Bはそれぞれ、左輪および右輪をそれぞれ制御する制御システムである。プロセッサ12A、12Bはそれぞれ、制御対象14A、14Bの一例であるモータ駆動回路に制御信号(PWM信号)を送信し、不図示のモータの回転を制御する。
自走ロボットが所望の速度で直進し、所望の速度および回転半径で右旋回または左旋回するためには、双方の駆動輪の回転速度を調整する必要がある。回転速度を調整するため、たとえば制御システム10Aのプロセッサ12Aは、タスクを実行して制御対象14Aであるモータの回転速度を決定し、かつ、左輪の回転速度の情報からさらに決定される右輪の回転速度のデータを、制御システム10Bのプロセッサ12Bに送信する。プロセッサ12Bは当該データを用いて右輪のモータの回転速度を決定し、回転を制御する。
プロセッサAのタスクとプロセッサBのタスクとが同期せず、許容される量以上の遅延が生じると、左輪および右輪の起動に差が生じ、回転速度が所望値からずれ、目標とする速度で目標とする方向への移動が困難になる。そのため、プロセッサAのタスクとプロセッサBのタスクとを同期させる必要がある。当該同期にあたり、本開示による処理が利用される。
次に、プロセッサ12Aおよび12Bの内部構造を説明する。
図6は、プロセッサ12Aおよび12Bの内部構造を示す。以下では、プロセッサ12Aおよび12Bを包括して「プロセッサ12」と記述する。ただし、プロセッサ12Aおよび12Bの構造は同一である必要はない。便宜的に「プロセッサ12」と記載するに過ぎない。
プロセッサ12は、プロセッサコア20と、分周器21と、システムタイマー22と、ハードウェア(H/W)タイマー23aおよび23bと、SRAM24と、プログラム用フラッシュメモリ25と、EEPROM26と、定周期/可変周期タイマー群27と、周辺回路群28と、内部データバス29とを有する。
プロセッサコア20は、内部にさらに種々の構成を有する演算回路である。プロセッサコア20の内部には、たとえば、プログラムカウンタ、命令レジスタ、命令デコーダ、スタックポインタ、汎用レジスタ、タイマー割り込み制御回路を有している。これらはいずれも一般的であり、詳細な説明は省略する。
分周器21は、プロセッサ12の外部に設けられた、水晶またはシリコンを用いる発振子18から外部クロック信号を受け取り、外部クロック信号を分周して所定の周波数のクロック信号を出力する。
システムタイマー22は、分周器21から受け取ったクロック信号に基づいて、プロセッサ12を動作させるための所定周波数の内部クロック信号を生成する。
H/Wタイマー23aおよび23bは、それぞれ分周器21から受け取ったクロック信号を利用してタイマーカウンタ(後述)をカウントアップし、カウンタ値が予め定められた値になると割込信号をプロセッサコア20に出力する。なお、H/Wタイマーの数は任意である。3つ以上設けられていてもよい。また、タイマーカウンタは、カウントダウンを行ってもよい。
SRAM24は、プロセッサコア20が動作する際に利用されるワークメモリであり、書き換え頻度が高いデータを格納する。
プログラム用フラッシュメモリ25は、プログラムおよび書き換え頻度が低いデータを格納するメモリである。
EEPROM26は、電源が遮断されても記録内容が消えない不揮発メモリの一種であり、電気的に内容を書き換えることが可能なメモリである。以下で説明する、予め設定された各種の値は、EEPROM26に格納されている。
定周期/可変周期タイマー群27は、PWM信号を生成するための複数のタイマーが組み合わされた回路である。定周期タイマーと可変周期タイマーとを組み合わせることにより、パルス幅変調された信号を生成することができる。なお、本実施形態では、H/Wタイマーと定周期/可変周期タイマーとを別個に設けているが、この構成は一例である。H/Wタイマーと定周期/可変周期タイマーとを区別する必要はない。たとえば、定周期/可変周期タイマーはH/Wタイマーの一つとして設けられ得る。
周辺回路群28は、上述した回路以外の回路の集合である。周辺回路群28は、たとえば、高精度アナログ回路(ADコンバータ、DAコンバータ)、モータ制御回路、シリアル信号とパラレル信号とを相互に変換するUART(Universal Asynchronous Receiver Transmitter)、通信インタフェース装置を含む。
次に、H/Wタイマーの構成を説明する。H/Wタイマー23aおよび23bは同じ構成を有し得るが、以下では代表例としてH/Wタイマー23aを説明する。
図7は、H/Wタイマー23aの内部構成を示す。
H/Wタイマー23aは、タイマーカウンタ30および自動再ロードレジスタ(ARR:Auto Reload Register)32を有している。ARR32は、上限カウント値Cfを示すデータ36を保持している。タイマーカウンタ30は、分周器21から供給されるクロック信号に基づいてカウンタ値を、カウント初期値C0からカウントアップする。そしてタイマーカウンタ30は、カウンタ値がARR32に保持された上限カウント値Cfに到達するとカウントを停止し、プロセッサコア20に対して、タイマーカウンタ30においてオーバーフローが発生したことを通知するオーバーフロー割込信号を出力する。その後、タイマーカウンタ30は、カウント値をカウント初期値C0にリセットする。
発振子18および分周器21は十分な精度のクロック信号を出力する。当該クロック信号を受けてカウントアップするH/Wタイマー23aもまた、十分な精度でカウントアップし、周期Pごとにオーバーフローを発生させ得る。
図8は、クロック信号、H/Wタイマー23aのカウント値およびプロセッサコア20が実行するタスクTのタイミング図である。図8の(a)は、発振子18から出力される外部クロック信号の波形を示し、(b)は分周器21から出力されるクロック信号の波形例を示す。一例として、分周器21は1/2分周器であるとした。
図8の(c)は、初期値C0からカウントアップするH/Wタイマー23aのカウンタ値を示す。H/Wタイマー23aは、分周器21から出力されるクロック信号の立ち上がりのタイミングでカウントを開始し、カウンタを増加させる。カウンタ値が上限カウント値Cfに到達すると、H/Wタイマー23aはオーバーフロー割込信号をプロセッサコア20に出力する。
図8の(d)は、オーバーフロー割込信号の受信に応答したプロセッサコア20が、タスクTを実行するタイミングを示す。プロセッサコア20は、オーバーフロー割込信号の受信に応答して、その時点で実行していたプログラムを中断し、割り込みハンドラと呼ばれるプログラムを起動させる。割り込みハンドラは、プログラムであるタスクTを実行するよう、予めプログラミングされている。
H/Wタイマー23aが初期値C0から上限カウント値Cfまでカウントするために要する時間は「P」である。つまり、プロセッサコア20は、H/Wタイマー23aからのオーバーフロー割込信号をトリガとして、一定の周期PごとにタスクTを起動することが可能である。
再び図7を参照する。タイマーカウンタ30は、通常、カウント初期値C0から上限カウント値Cfまでカウントする。しかしながら、タイマーカウンタ30は、プロセッサコア20からカウント設定値Csを指定する信号を受け取ると、当該カウント設定値Csからカウントを開始する。カウント設定値Csを適宜設定することにより、タイマーカウンタ30がオーバーフローするまでの時間を調整することができる。
なお、本実施形態では、タイマーカウンタ30は指定されたカウント設定値Csからカウントアップし、上限カウント値Cfに到達すると、カウント値をカウント初期値C0にリセットする。したがって、タイマーカウンタ30は、カウント設定値Csが指定された時だけ、カウントを開始する値を変更する。
次に、図1に示す、プロセッサ12AのタスクTおよびプロセッサ12BのタスクKが同期していない非同期状態を、図4に示す同期状態に調整するための処理を説明する。上述のように、タスクTおよびタスクKが同期しないことによって制御周期が長くなると、システム1が破たんするおそれがある。タスクTおよびタスクKの間の同期を可能な限り速く取ることが必要されている。
図9は、プロセッサ12Aおよびプロセッサ12B間でタスクの実行を同期させるための動作の流れを示す。本実施形態では、プロセッサ12Bが自らの動作タイミングを変更することにより、プロセッサ12Bが実行するタスクKの動作周期を、プロセッサ12Aが実行するタスクTの動作周期に整合させる例を説明する。そのような主従関係を踏まえ、以下では、プロセッサ12Aを「マスタプロセッサ」と呼び、プロセッサ12Bを「スレーブプロセッサ」と呼ぶことがある。
プロセッサ12Aおよび12Bは、まず「同期モード」で動作する。同期モードでは、プロセッサ12Aおよび12Bは、同期していないプロセッサ12AのタスクTおよびプロセッサ12BのタスクKを、図4に示すような同期状態に遷移させる。
同期モードが終了すると、プロセッサ12Aおよび12Bは、通常動作モードに遷移する。通常動作モードでは、プロセッサ12Aおよび12Bが、予定されている通常の動作を行う。ただし同期モードによってタスクTおよびタスクKは同期しているため、図4に関連して説明したとおり、タスクTおよびKの動作周期は最も短い時間「ET+D+EK」になる。
同期モードは、たとえばシステム1の動作開始時に自動的に実行される。動作開始時は、たとえば電源投入時である。
同期モードでは、マスタプロセッサであるプロセッサ12Aの動作は通常動作モードと概ね同じである。プロセッサ12Aは、たとえば図1の「プロセッサA」と同様、周期PでタスクTを実行し、その結果、周期Pでデータをプロセッサ12Bに送信する。
同期モードにおいて、プロセッサ12Bは、プロセッサ12Aから周期Pでデータを受信する。プロセッサ12Bは、データを受信した時刻、および、自らが実行するタスクKが実行される時刻との差分が十分小さくなるよう、タスクKが実行される時刻を調整する。「十分小さく」とは、予め定められた許容時間内に収まることをいう。タスクKが実行される時刻の調整は、H/Wタイマー23aのタイマーカウンタ30を調整することによって実現される。
タスクKの動作タイミングを調整することによってプロセッサ12AのタスクTおよびプロセッサ12BのタスクKが同期したと判断すると、プロセッサ12Bは、プロセッサ12Aに、同期モードの終了通知を送信する。当該通知の送信および受信をトリガとして、プロセッサ12Aおよび12Bの動作は同期モードから通常動作モードへと遷移する。
なお、同期モードが終了した後であっても、プロセッサ12Aおよび12B内の各H/Wタイマー23aは引き続き同じ周期でカウントアップおよびカウンタ値のリセットを継続している。したがって、プロセッサ12Aおよび12Bは、同期モードによって調整された動作タイミングを維持しながら、タスクTおよびKを実行することができる。
次に、図10および11を参照しながら、プロセッサ12Aおよびプロセッサ12Bのそれぞれの処理を説明する。
図10は、プロセッサ12Aの処理の手順を示す。以下で説明するステップS11およびS12が同期モードの処理であり、ステップS13からS15までは通常動作モードの処理である。なお、プロセッサ12Aの処理は、実質的にはプロセッサコア20によって実現される。
同期モードのステップS11において、プロセッサ12Aは、タスクTを実行し、実行結果として得られたデータをプロセッサ12Bに送信する。タスクTの実行、および、データの送信はそれぞれ周期Pである。この周期Pは、タイマーカウンタ30(図7)がカウント初期値C0から上限カウント値Cfまでのカウントアップに要する時間に相当する。
ステップS12において、プロセッサ12Aは、ステップS11の実行から所定時間内に、プロセッサ12Bから同期モード終了通知を受信したか否かを判定する。「所定時間」は、タスクTの実行周期であってもよいし、実行周期を超える期間であってもよい。後者を許容する理由は、プロセッサ12Aがプロセッサ12Bから同期モード終了通知を受け取る際、通信遅延が存在するため、必ずしも実行周期内に当該通知を受信できるとは限らないからである。
受信した場合には処理はステップS13に進み、受信していない場合には処理はステップS11に戻る。同期モード終了通知の受信は、プロセッサ12AのタスクTと、プロセッサ12BのタスクKとが同期したことを意味する。プロセッサ12A内では、タイマーカウンタ30が引き続き同じ周期でアップカウントを行えばよい。
通常動作モードのステップS13において、プロセッサ12Aは、タスクTを実行し、実行結果として得られたデータをプロセッサ12Bに送信する。ステップS13の処理はステップS11の処理と実質的に同じである。
ステップS14において、プロセッサ12Aは、タスクTの終了指令を受信したか否かを判定する。終了指令はユーザから、または不図示の上位装置から送信される。 終了指令を受信した場合には処理はステップS15に進み、終了指令を受信していない場合には、引き続きステップS13に戻り、タスクTの実行およびデータの送信を周期Pで実行する。
ステップS15において、プロセッサ12Aは、プロセッサ12Bに終了指令を送信し、処理を終了する。これにより、プロセッサ12Aを含む制御システム10Aは動作を停止する。
図11は、プロセッサ12Bの処理の手順を示す。以下で説明するステップS21からS25までが同期モードの処理であり、ステップS26およびS27は通常動作モードの処理である。プロセッサ12Bの処理に関しては、プロセッサコア20の動作とH/Wタイマー23aの動作とを分けて説明する。
同期モードのステップS21において、プロセッサコア20は、プロセッサ12Aからデータを受信したか否かを判定する。データを受信していなければ引き続きデータの受信を待つ。データを受信した場合には処理はステップS22に進む。なお、データの受信の有無は、周辺回路群28(図6)として示される通信インタフェース装置からの割り込み信号の有無によって判定することができる。インタフェース装置は、データを受信すると割り込み信号をプロセッサコア20に送信する。
ステップS22において、プロセッサコア20は、H/Wタイマー23aから、タイマーカウンタ30の現在のカウンタ値C1を取得する。カウンタ値C1は、データの受信時刻を示している。
その後、タイマーカウンタ30のカウントアップが進み、上限カウント値Cfに到達すると、タイマーカウンタ30はプロセッサコア20にオーバーフロー割込信号を送信する。プロセッサコア20は当該信号の受信に応答して割り込みハンドラを起動する。そして割り込みハンドラの処理により、プロセッサコア20はタスクKを実行する。
ステップS23において、プロセッサコア20は、H/Wタイマー23aから、タイマーカウンタ30の現在のカウンタ値C2を取得する。カウンタ値C2は、タスクKが実行された時刻を示している。
ステップS24において、プロセッサコア20は、取得した2つのカウンタ値C1およびC2の差分を計算し、当該差分値をカウント初期値C0に加算した値をH/Wタイマー23aに送信する。H/Wタイマー23aは、プロセッサコア20から受信した値を、カウント設定値Csとして設定する。これにより、H/Wタイマー23aは、タイマーカウンタ30が次にリセットされるタイミングで、当該カウント設定値Csからタイマーカウンタ30によるカウントアップを開始する。
ステップS24の処理は、プロセッサ12Aからのデータの受信時刻と、プロセッサ12BにおけるタスクKが実行される時刻との時間差Dに相当する時刻だけ、タイマーカウンタ30を早めることを意味する。その結果、当該時間差Dに相当する時刻だけ早く、タイマーカウンタ30は上限カウント値Cfに到達する。つまり、タスクKが起動される時刻が、時間差Dに相当する時刻だけ早くなる。そして、当該起動時刻は、プロセッサ12Aからデータを受信する時刻に等しい。プロセッサコア20がデータを受信した直後に、タスクKは、当該データを利用した処理を実行できる。すなわち、プロセッサ12AのタスクTと、プロセッサ12BのタスクKとを同期させることができる。同期信号に基づいて同期通信を行う通信回線を利用する必要はない。
ステップS25において、プロセッサ12Bのプロセッサコア20は、同期モード終了通知をプロセッサ12Aに送信する。これによりプロセッサ12Bの同期モードは終了する。
通常動作モードのステップS26において、プロセッサ12Bのプロセッサコア20は、タイマーカウンタ30のカウント値が上限カウント値Cfを取るごとにタスクKを実行する。同期モードにおいて、データの受信時刻とタスクKの起動時刻とが一致しているため、プロセッサ12Bは図2に示す例のように受信したデータを保持し続ける必要はない。
ステップS27において、プロセッサ12Bのプロセッサコア20は、タスクKの終了指令を受信したか否かを判定する。終了指令は、プロセッサ12Aから送信される。終了指令を受信した場合には処理は終了する。これにより、プロセッサ12Bを含む制御システム10Bは動作を停止する。
終了指令を受信していない場合には、処理は引き続きステップS26に戻る。プロセッサ12BはタスクKの実行およびデータの受信を周期Pで実行する。
ここで、図12を参照しながら、プロセッサ12BのステップS22からS24の処理を具体的に説明する。
図12は、プロセッサ12Bのタイマーカウンタ30のカウンタ値と、プロセッサ12AのタスクTおよびプロセッサ12BのタスクKの各実行タイミングを示すタイミング図である。なお、理解の便宜のため、カウンタ値の段数は簡略化して記載している。
時刻T0においてプロセッサ12AのタスクTがデータを送信し、時刻T1においてプロセッサ12Bがデータを受信する。図12には、時刻T1におけるカウンタ値C1が示されている。プロセッサ12Bのプロセッサコア20は、タイマーカウンタ30の時刻T1現在のカウンタ値C1を取得する(図11のステップS22)。
次に、プロセッサ12Bのカウンタ値が上限カウント値Cfを取る時刻T2に注目する。プロセッサ12Bのプロセッサコア20は、時刻T2が到来すると、H/Wタイマー23aからのオーバーフロー割込信号に応答して、タスクK実行する。プロセッサコア20は、時刻T2におけるカウンタ値C2を取得する(図11のステップS23)。
なお、カウンタ値C2は上限カウント値Cfと同値とすることもできる。プロセッサコア20は、タイマーカウンタ30のカウンタ値を取得しなくてもよく、予め定められた値としてC2を採用してもよい。
次にプロセッサ12Bのプロセッサコア20は、時刻T2からT4までの間に、カウント設定値Csを求める演算を行う。すなわち、プロセッサコア20は、差分値C3として、C3=C2−C1を演算し、さらにC0+C3を演算する。プロセッサコア20は、求めた値をカウント設定値Csとして設定する(図11のステップS24)。
図12によれば、時刻T4から、カウント設定値Csからカウントが開始されていることが理解される。時刻T4までは、プロセッサ12BのH/Wタイマー23aは、周期Pでオーバーフロー割込信号を出力していたが、時刻T4からT5の間の時区間Qは、周期Pの時区間よりも短い。時刻T5において、カウンタ値はCfを取る。これにより、時刻T5において、プロセッサ12Bのプロセッサコア20はタスクKを実行する。
時刻T0からT4までは、プロセッサ12Aからのデータを受信した後、プロセッサ12BがタスクKを実行するまでには遅延Lが生じていた。しかしながら、時刻T4におけるカウント設定値Csの設定以後の時刻T5からT9では、当該遅延は生じない。つまり、プロセッサ12AのタスクTと、プロセッサ12BのタスクKとは同期している。
上述の説明で求めたカウント設定値Csは、プロセッサ12Bがデータを受信してから、タスクKを実行するまでの時刻を最短にする実装例である。しかしながら、本開示は当該実装例に限定されない。プロセッサ12Bにおける、データの受信時刻からタスク実行時刻までの遅延時間の最大許容可能値αは、設計によって求められ得る。よって、C3≦(C2−C1)+αとしてもよい。このように求めた値C3を用いてカウント設定値Csを求めることにより、データの受信から、所定の許容時間内の時刻にタスクKが実行される。
プロセッサ12Bのプロセッサコア20は、時刻T1を起点として一定の周期Pでデータを受信しており、また時刻T2を起点として、一定の周期PでタスクKを実行していた。しかしながら、上述の手順でカウント設定値Csを設定することにより、プロセッサコア20は、タスクKが実行される時刻を、データの受信時刻から一定の許容時間内の時刻に更新したと言うことができる。
時刻T0においてプロセッサ12AのタスクTがデータを送信し、時刻T1においてプロセッサ12Bがデータを受信する。図12には、時刻T1におけるカウンタ値C1が示されている。プロセッサ12Bのプロセッサコア20は、タイマーカウンタ30の時刻T1現在のカウンタ値C1を取得する(図11のステップS22)。
次に、プロセッサ12Bのタイマーカウンタ30のカウンタ値が上限カウント値Cfを取った時刻T2aの後に、プロセッサ12Bのプロセッサコア20がタスクKを実行する時刻T2bに注目する。
なお、時刻T2aと時刻T2bとを分けた理由は、両者が異なり得るからである。時刻T2aにおいて、H/Wタイマー23aからオーバーフロー割込信号が出力される。するとプロセッサ12Bのプロセッサコア20は、それまで他のタスクを実行していた場合には、当該他のタスクのデータを退避させ、タスクKの読み込みを行う必要がある。それらの一連の処理が完了すると、タスクKの実行時刻T2bが到来する。時刻T2aから時刻T2bまでの間で行われる処理は実時間を要する。その間に、タイマーカウンタ30のリセット、および、カウント値C0からのカウント開始が行われる。
プロセッサ12Bのプロセッサコア20は、時刻T2aが到来すると、H/Wタイマー23aからのオーバーフロー割込信号に応答して、タスクK実行する。プロセッサコア20は、時刻T2bにおけるカウンタ値C2を取得する(図11のステップS23)。
次にプロセッサ12Bのプロセッサコア20は、時刻T2bからT4までの間に、カウント設定値Csを求める演算を行う。具体的には、プロセッサコア20は、差分値C3として、C3=(Cf−C1)+(C2−C0)を演算し、さらにC0+C3を演算する。プロセッサコア20は、求めた値をカウント設定値Csとして設定する(図11のステップS24)。結論としてプロセッサコア20は、Cs=(Cf−C1)+C2を演算すればよい(図11のステップS24)。
なお、カウンタ値C2は上限カウント値Cfと同値として取り扱ってもよい。プロセッサコア20は、タイマーカウンタ30のカウンタ値を取得しなくてもよく、予め定められた値CfをC2として採用してもよい。
図12によれば、時刻T4以後、カウント設定値Csからカウントが開始されていることが理解される。時刻T4までは、プロセッサ12BのH/Wタイマー23aは、周期Pでオーバーフロー割込信号を出力していたが、時刻T4からT5aの間の時区間Qは、周期Pの時区間よりも短い。時刻T5aにおいて、カウンタ値はCfを取る。その後、時刻T5bにおいて、プロセッサ12Bのプロセッサコア20はタスクKを実行する。なお、本例では時刻(T5b−T5a)=(T2b−T2a)であるとしている。
時刻T0からT4までは、プロセッサ12Aからのデータを受信した後、プロセッサ12BがタスクKを実行するまでには遅延Lが生じていた。しかしながら、時刻T4におけるカウント設定値Csの設定以後の時刻T5bからT9では、当該遅延は生じない。つまり、プロセッサ12AのタスクTと、プロセッサ12BのタスクKとは同期している。
上述の説明で求めたカウント設定値Csは、プロセッサ12Bがデータを受信してから、タスクKを実行するまでの時刻を最短にする実装例である。しかしながら、本開示は当該実装例に限定されない。プロセッサ12Bにおける、データの受信時刻からタスク実行時刻までの遅延時間の最大許容可能値αは、設計によって求められ得る。よって、C3≦(Cf−C1)+(C2−C0)+αとしてもよい。このように求めた値C3を用いてカウント設定値Csを求めることにより、データの受信から、所定の許容時間内の時刻にタスクKが実行される。
プロセッサ12Bのプロセッサコア20は、時刻T1を起点として一定間隔(周期)Pでデータを受信しており、また時刻T2を起点として、一定間隔PでタスクKを実行していた。しかしながら、上述の手順でカウント設定値Csを設定することにより、プロセッサコア20は、タスクKが実行される時刻を、データの受信時刻から一定の許容時間内の時刻に更新したと言うことができる。
次に、2つの変形例を説明する。
(変形例1)
上述の例では、プロセッサAがプロセッサBに周期Pでデータを送信し、プロセッサBがカウント設定値Csを調整することにより、プロセッサAのタスクTと、プロセッサBのタスクKとを同期させた。
上述の例では、プロセッサAがプロセッサBに周期Pでデータを送信し、プロセッサBがカウント設定値Csを調整することにより、プロセッサAのタスクTと、プロセッサBのタスクKとを同期させた。
以下に説明する変形例では、プロセッサAが上限カウント値Cfを調整することにより、プロセッサAのタスクTと、プロセッサBのタスクKとを同期させる。
変形例によるリアルタイム分散システムの構成は図5〜9と同じである。また、図12の時刻T2までのプロセッサ12Aおよび12Bの動作も同じである。
本変形例では、プロセッサ12Aは、予め、プロセッサ12Bの動作周波数fbの情報を予め保持している。動作周波数fbは、プロセッサ12BのH/Wタイマー23aのカウント周期の逆数として定義する。
プロセッサ12Bは、図12に示す時刻T1におけるカウンタ値C1と、時刻T2bにおけるカウンタ値C2(または時刻T2aにおける上限カウント値Cf)とを取得する。プロセッサ12Bは、カウンタ値C1およびC2をプロセッサ12Aに送信する。
プロセッサ12Aは、C3=(Cf−C1)+(C2−C0)を演算する。差分値C3は、プロセッサ12AのタスクTのデータが、タスクKが実行される時刻までプロセッサ12Bに保持されていた期間を表す。ただしC3の値は、プロセッサ12BのH/Wタイマー23aのカウント周期に基づいてカウントされた値である。
そこでプロセッサ12Aは、予め保持していたプロセッサ12Bの動作周波数fbの情報と、みずからの動作周波数faの情報とを用いて、C4=C3・(fa/fb)の値を算出する。値C4は、データがプロセッサ12Bに保持されていた現実の時間を、プロセッサ12AのH/Wタイマー23aのカウント数に変換した値である。
プロセッサ12Aは、値C4に相当する時刻だけ遅くタスクTが実行され、データが送信されるよう、上限カウント値Cfを変更する。具体的には以下のとおりである。
なお、変更前の上限カウント値をCf0と表現する。
プロセッサ12Aは、上限カウント値Cfを、Cf=Cf0+C4に変更する。これにより、プロセッサ12AのH/Wタイマー23aは、値C4に相当する時間だけ長くカウントすることになる。その後、タイマーカウンタ30が一旦上限カウント値Cfに到達すると、プロセッサ12Aは、上限カウント値Cfを、再びCf0に変更する。これにより、タイマーカウンタ30の上限カウント値Cfを2回変更した後と変更前とを比較すると、変更した後のタイマーカウンタ30のオーバーフローの発生時刻は変更する前の発生時刻よりも、カウント値C4に相当する時間だけ遅くなる。当該遅れは、プロセッサ12Bの差分値C3に相当する。プロセッサ12Bは、差分値C3に相当する時刻だけ遅れてデータを受信するため、データ受信直後にタスクTを実行することができる。
(変形例2)
上述の例において、プロセッサAのタスクTおよびプロセッサBのタスクKは、同じ周期Pにて実行されていた。しかしながら、本開示は、タスクTの実行周期とタスクKの実行周期とが異なっていても適用することができる。より具体的には、本開示は、タスクTの実行間隔P1と、タスクKの実行間隔P2とが倍数の関係である場合でも適用することができる。
上述の例において、プロセッサAのタスクTおよびプロセッサBのタスクKは、同じ周期Pにて実行されていた。しかしながら、本開示は、タスクTの実行周期とタスクKの実行周期とが異なっていても適用することができる。より具体的には、本開示は、タスクTの実行間隔P1と、タスクKの実行間隔P2とが倍数の関係である場合でも適用することができる。
この場合、プロセッサ12Bは、直前にプロセッサ12Aからデータを受信した時刻を取得する。
その後上述した処理と同様の処理により、データ受信時刻と、プロセッサ12BにおけるタスクKの実行開始時刻との時間差Dに相当する時刻だけ、プロセッサ12Bのタイマーカウンタ30を早める。
本変形例を適用しない場合、プロセッサ12Bの制御周期は、P1+P2+Dであった。プロセッサ12Aの制御周期Pが含まれている理由は、プロセッサ12Aからのデータを利用するため、プロセッサ12Aの制御周期Pがプロセッサ12Bに影響を与えるからである。
一方、本変形例によると、プロセッサBの制御周期をP2+Dにすることができる。なお、プロセッサBの実行間隔は、間隔P1の等倍または整数倍の間隔P2でもよい。間隔P2は、間隔P1を包括する概念である。
(応用例)
以下、上述のリアルタイム分散システム1を搭載した応用例を説明する。応用例では、プロセッサBがカウント設定値Csを調整することにより、プロセッサAのタスクとプロセッサBのタスクとを同期させてもよいし、上述の変形例1のように、プロセッサAが上限カウント値Cfを調整することにより、プロセッサAのタスクとプロセッサBのタスクとを同期させてもよい。さらに、変形例2のように、プロセッサAのタスクとプロセッサBのタスクとが異なる実行周期を有していてもよい。
以下、上述のリアルタイム分散システム1を搭載した応用例を説明する。応用例では、プロセッサBがカウント設定値Csを調整することにより、プロセッサAのタスクとプロセッサBのタスクとを同期させてもよいし、上述の変形例1のように、プロセッサAが上限カウント値Cfを調整することにより、プロセッサAのタスクとプロセッサBのタスクとを同期させてもよい。さらに、変形例2のように、プロセッサAのタスクとプロセッサBのタスクとが異なる実行周期を有していてもよい。
図13は、自走ロボット100の構成を示す。自走ロボット100は、搬送テーブル101と、システムコントローラ102と、モータ駆動システム103と、2つの駆動輪104Aおよび104Bとを有する。
搬送テーブル101は運搬物を載置するテーブルである。
システムコントローラ102は、上位装置150からの有線または無線による指示に基づいて、自走ロボット100の進行方向および走行速度を制御する。具体的には、システムコントローラ102は、2つの駆動輪である左輪104Aおよび右輪104Bの回転速度および回転方向を決定し、モータ駆動システム103へ制御信号を送信する。
モータ駆動システム103は、2つのシステム(左輪制御システムおよび右輪制御システム)の総称である。モータ駆動システム103は、システムコントローラ102からの制御信号に基づいて、2つの駆動輪104Aおよび104Bの回転速度および回転方向をそれぞれ独立して制御する。なお、システムコントローラ102およびモータ駆動システム103をあわせて、モータ制御システム105と呼ぶことがある。
図14は、自走ロボット100のハードウェア構造を示す。参考のため、自走ロボット100を構成しない上位装置150を破線で示す。
システムコントローラ102は、プロセッサ112Cを有している。プロセッサ112Cは、図6で示すハードウェア構造を有している。そのため、プロセッサ112Cの詳細な説明は省略する。
モータ駆動システム103は、図5に示すリアルタイム分散システム1に相当する。モータ駆動システム103は、左輪制御システム110Aおよび右輪制御システム110Bを有している。左輪制御システム110Aは、プロセッサ112Aと、モータ駆動回路114Aと、モータ116Aとを有する。右輪制御システム110Bは、プロセッサ112Bと、モータ駆動回路114Bと、モータ116Bとを有する。プロセッサ112Aとプロセッサ112Bとは、本実施形態では同じメーカの同じ型番の製品であるとするが、必ずしも同じメーカの同じ型番の製品である必要はない。モータ駆動回路114Aとモータ駆動回路114B、およびモータ116Aとモータ116Bについても同様であり、自走ロボット100として必要とされる性能を有していればよい。左輪制御システム110Aおよび右輪制御システム110Bは、それぞれインテリジェントモータと呼ばれることもある。
システムコントローラ102のプロセッサ112Cとモータ駆動システム103のプロセッサ112Aとの間には、無線または有線の制御用通信回線118が設けられている。制御信号は当該制御用の通信回線118を介してプロセッサ112Cからプロセッサ112Aに送信される。
また、プロセッサ112Aとプロセッサ112Bとの間にも、有線または無線の通信回線119が設けられている。右輪制御システム110Bのための制御信号は、プロセッサ112Cから、プロセッサ112Aを経由して、プロセッサ112Bに送信される。
図5から図11を参照した説明では、図5に示すプロセッサ12AのタスクTと、プロセッサ12Bのタスクとを同期させた。
本応用例では、2つの同期処理(1)および(2)が順次実行される。同期処理(1)として、システムコントローラ102のプロセッサ112Cによって実行されるタスクと、左輪制御システム110Aのプロセッサ112Aのタスクとを同期させる。同期処理(1)による動作モードを、システム同期モードと呼ぶことがある。システム同期モードが完了した後、同期処理(2)として、左輪制御システム110Aのプロセッサ112Aのタスクと右輪制御システム110Bのプロセッサ112Bのタスクとを同期させる。自走ロボット100には、システムコントローラ102と右輪制御システム10Bとのタスク間の同期を取るために直接通信を行うための通信回線は設けていなくてもよい。
上述の同期処理(1)および(2)はいずれも、図5から図11を参照した説明と同じである。すなわち同期処理(1)では、図14におけるプロセッサ112Cおよび112Aが、図5のプロセッサ12Aおよびプロセッサ12Bとして動作すればよい。また同期処理(2)では、図14におけるプロセッサ112Aおよび112Bが、図5のプロセッサ12Aおよびプロセッサ12Bとして動作すればよい。同期処理(1)および(2)の少なくとも1つは、上述した変形例1または2にかかる処理であってもよいし、同期処理(1)が変形例1および2の一方で、同期処理(2)が変形例1および2の他方であってもよい。
同期処理(1)が完了した後に同期処理(2)を実行することにより、プロセッサ112Cのタスクとプロセッサ112Aのタスクとが同期し、かつプロセッサ112Aのタスクとプロセッサ112Bのタスクとが同期する。いずれの同期状態においても、データを受信した後、タスクを実行するまでの期間は許容時間内である。よって、プロセッサ112Aおよび112Bは、それぞれモータ駆動回路114Aおよび114BにPWM信号を出力することにより、システムコントローラ102が指示した通りの回転速度および回転方向で、左輪および右輪の回転を制御することができる。これにより、システムコントローラ102は、自走ロボット100を所望の速度で直進させ、所望の速度および回転半径で右旋回または左旋回させることが可能になる。
なお、上述の例は、2つの後輪が駆動輪であるとして説明したが、これは一例である。たとえば前輪および後輪を別個のモータで駆動する二輪車、複数の車輪を別個のモータで駆動する三輪車、四輪車などにも、本開示は適用可能である。さらに、本開示は、システムコントローラが1つのモータを有するモータ駆動システムの動作を制御するモータ制御システムにも適用可能である。たとえば2輪車の後輪のみをモータで駆動するモータ制御システムの、システムコントローラのプロセッサと、モータ駆動システムのプロセッサとの間で、上述した同期処理を行ってもよい。
図15は、溶接ロボット200の構成を示す。溶接ロボット200は、システムコントローラ102と、第1関節制御システム210Aと、第2関節制御システム210Bと、第3関節制御システム210Cと、溶接トーチ230とを備えている。
溶接ロボット200は、モータによって回転可能な複数の関節を有しており、各関節の動きは第1〜第3関節制御システム210A〜210Cによって別個独立に制御される。システムコントローラ102、第1〜第3関節制御システム210A〜210Cは、この順序でカスケード接続されている。
第1〜第3関節制御システム210A〜210Cの各々は、システムコントローラ102から送信される制御信号、および/または、上流側に位置する各関節制御システムから出力されたデータを利用して動作する。すなわち第1〜第3関節制御システム210A〜210Cの各々は、当該データを利用して、各モータを適正な回転速度で回転させ、所望の角度で停止させる。これにより、溶接トーチ230を溶接すべき位置に移動させることができる。なお、第1〜第3関節制御システム210A〜210Cの各々には、アーム220内に敷設された不図示の通信回線を介して制御データが送信される。
図16は、溶接ロボット200のハードウェア構造を示す。図14の構造と比較すると、システムコントローラ102は同じである。また、第1関節制御システム210Aおよび第2関節制御システム210Bは、左輪制御システム110Aおよび右輪制御システム110Bに対応する。溶接ロボット200では、第3関節制御システム210Cが新たに追加されている。
システムコントローラ102と第1関節制御システム210Aとの間で行われる同期処理は、図14のシステムコントローラ102と左輪制御システム110Aとの間で行われる同期処理と同じである。また、第1関節制御システム210Aと第2関節制御システム210Bとの間で行われる同期処理は、図14の左輪制御システム110Aと右輪制御システム110Bとの間で行われる同期処理と同じである。さらに、第2関節制御システム210Bと第3関節制御システム210Cの間で行われる同期処理の内容も、図14の左輪制御システム110Aと右輪制御システム110Bとの間で行われる同期処理と同様である。
したがって、特にこれ以上の詳細な説明は省略する。なお、図16においても、システムコントローラ102、第1関節制御システム210A、第2関節制御システム210Bおよび第3関節制御システム210Cを、モータ制御システムと呼ぶことができる。
上述した、変形例および応用例を含む本開示のいずれの説明についても、タスクの実行周期は、プロセッサが制御しようとする制御対象(図5)に応じて異なる。たとえば、同じモータ制御と言っても、タスクの実行周期は、回転速度を制御する場合にはたとえば1ミリ秒であり、回転角度を制御する場合にはたとえば10ミリ秒である。ただしこれらの値自体も、個々のモータの特性によって異なり得る。
そのような相違を端的に表す例として、図13〜図16の応用例が挙げられる。たとえば、モータの回転を制御するプロセッサの制御周期をPとしたとき、システムコントローラのプロセッサの制御周期はPとは異なり得る。自走ロボット100を挙げて説明する。
通常、システムコントローラ102のプロセッサ112Cは、自走ロボット100の位置を制御する。プロセッサ112Cは、各時刻における自走ロボット100の位置を計画し、そこから各時刻における両輪のモータへの速度要求を算出し、各輪の制御システムに与える。つまりこの場合、プロセッサ112Cは位置制御を行い、各輪の制御システムではモータの回転速度制御を行う。両者の制御周期は制御対象の特性に応じて決定される。一般的に、位置制御は、スピード制御よりも長い周期で実行する。つまり、システムコントローラ102のプロセッサ112Cの制御周期は、モータの回転を制御するプロセッサの制御周期とは異なり得る。このような場合には、上述した変形例2による制御が有効である。
本開示のモータ駆動システムは、複数のプロセッサが、同期通信の仕組みを有しない一つのリアルタイム分散システムを構成する場合において、各プロセッサのタスクの動作のタイミングを同期させ、システム全体を効率的に動作させるために有用である。
1 リアルタイム分散システム
10A、10B
12A、12B
14A、14B
16 通信回線
20 プロセッサコア
21 分周器
22 システムタイマー
23a、23b H/Wタイマー
24 SRAM
25 プログラム用フラッシュメモリ
26 EEPROM
27 定周期/可変周期タイマー群
28 周辺回路群
30 タイマーカウンタ
32 自動再ロードレジスタ
Cs カウント設定値
Cf 上限カウント値
10A、10B
12A、12B
14A、14B
16 通信回線
20 プロセッサコア
21 分周器
22 システムタイマー
23a、23b H/Wタイマー
24 SRAM
25 プログラム用フラッシュメモリ
26 EEPROM
27 定周期/可変周期タイマー群
28 周辺回路群
30 タイマーカウンタ
32 自動再ロードレジスタ
Cs カウント設定値
Cf 上限カウント値
Claims (12)
- 第1モータ、および、前記第1モータを制御する第1プロセッサを有する第1モータユニットと、
第2モータ、および、前記第2モータを制御する第2プロセッサを有する第2モータユニットと
を備えたモータ駆動システムであって、
前記第1モータユニットおよび前記第2モータユニットは通信回線で接続されており、
前記第1プロセッサは、前記通信回線を介して一定の間隔P1でデータを送信し、
前記第2プロセッサは、
前記通信回線を介して、第1時刻以後、一定の間隔P1で前記データを受信し、
前記データに基づいて動作するタスクを、第2時刻を起点として前記一定の間隔P2で実行し、
同期モードにおいて、前記第2プロセッサは、前記第2時刻を、前記第1時刻以後の所定の許容時間内の時刻に更新し、
前記同期モードの後の通常動作モードにおいて、前記第1プロセッサは前記通信回線を介して前記一定の間隔P1でデータを送信し、前記第2プロセッサは、前記データに基づいて動作する前記タスクを、更新された第2時刻を起点として前記一定の間隔P2で実行する、モータ駆動システム。 - 前記第2モータユニットは、所定のクロックに基づいてカウント値を増加または減少させるカウンタをさらに有しており、
前記同期モードおよび前記通常動作モードにおいて、前記第2プロセッサは、前記カウンタのカウント値が予め定められた値になった時刻を前記第2時刻として更新し、
前記第2プロセッサは、更新された第2時刻を起点として前記タスクを実行する、請求項1に記載のモータ駆動システム。 - 前記カウンタは、設定されたカウント開始値から前記カウント値を増加または減少させ、
前記同期モードにおいて、前記第2プロセッサは、前記第1時刻と前記第2時刻との差分に基づいて、前記カウント開始値を設定する、請求項2に記載のモータ駆動システム。 - 前記第2プロセッサは、前記第1時刻と前記第2時刻との差分を示すカウント値を前記予め定められた値から減算し、または前記予め定められた値に加算して得られた値を、前記カウント開始値として設定する、請求項3に記載のモータ駆動システム。
- 前記第1プロセッサおよび前記第2プロセッサは、異なるクロック周波数で動作する、請求項1から4のいずれかに記載のモータ駆動システム。
- 前記第2プロセッサは、
前記同期モードにおいて、前記更新された第2時刻を起点として、前記第1時刻以後の所定の許容時間内にタスクが起動されているか否かを検証し、前記所定の許容時間内にタスクが起動されている場合には、前記同期モードの終了を前記第1プロセッサに通知を送信して前記通常動作モードに移行する、請求項1から5のいずれかに記載のモータ駆動システム。 - 前記第1プロセッサは、前記一定の間隔P1でタスクを実行し、前記タスクの実行結果として、前記データを生成する、請求項1から6のいずれかに記載のモータ駆動システム。
- 前記間隔P1と前記間隔P2とは等しい、請求項1から7のいずれかに記載のモータ駆動システム。
- 前記第1モータ、および、前記第1モータを制御する第1プロセッサを有する第1モータユニットと、
前記第2モータ、および、前記第2モータを制御する第2プロセッサを有する第2モータユニットと
を備えたモータ駆動システムであって、
前記第1モータユニットおよび前記第2モータユニットは通信回線で接続されており、
同期モードにおいて、
前記第1プロセッサは、前記通信回線を介して第1時刻にデータを送信し、
前記第2プロセッサは、前記通信回線を介して、前記第2プロセッサにおいて前記データを受信した第2時刻、および、前記データに基づいて動作するタスクの実行開始時刻である第3時刻を示す情報を送信し、
前記第1プロセッサは、予め保持されている前記第2プロセッサの動作周波数の情報、前記第2時刻および前記第3時刻を示す情報に基づいて、前記第1時刻を、前記第2時刻および前記第3時刻の差分に相当する時間分だけ遅らせた時刻に更新し、
前記同期モードの後の通常動作モードにおいて、前記第1プロセッサは前記通信回線を介して、更新された第1時刻を起点にした一定の間隔P1でデータを送信し、前記第2プロセッサは、前記通信回線を介して、前記一定の間隔P2で前記データを受信し、前記タスクを実行する、モータ駆動システム。 - 請求項1から9のいずれかに記載のモータ駆動システムと、
第3プロセッサを有するシステムコントローラと
を備えたモータ制御システムであって、
前記モータ駆動システムの第1プロセッサおよび前記第3プロセッサは制御用通信回線で接続されており、
前記第1プロセッサおよび前記第2プロセッサの同期モードに先立って、前記第3プロセッサおよび前記第1プロセッサのシステム同期モードおよび通常動作モードが開始され、
前記第3プロセッサは、前記制御用通信回線を介して一定の間隔P3でデータを送信し、
前記第1プロセッサは、
前記制御用通信回線を介して、第1時刻以後、一定の間隔P3で前記データを受信し、
前記データに基づいて動作するタスクを、第2時刻を起点として前記一定の間隔P1で実行し、
前記システム同期モードにおいて、前記第1プロセッサは、前記第2時刻を、前記第1時刻以後の所定の許容時間内の時刻に更新し、
前記システム同期モードの後の通常動作モードにおいて、前記第3プロセッサは前記制御用通信回線を介して前記一定の間隔P3でデータを送信し、前記第1プロセッサは、前記データに基づいて動作する前記タスクを、更新された第2時刻を起点として前記一定の間隔P1で実行する、モータ制御システム。 - 請求項10に記載のモータ制御システムと、
複数の車輪であって、前記第1モータによって駆動される第1車輪、および前記第2モータによって駆動される第2車輪を含む複数の車輪と、
物を載置する搬送テーブルと
を備えた自走ロボット。 - 第1プロセッサを有するシステムコントローラと、
モータ、および、前記モータを制御する第2プロセッサを有するモータユニットと
を備えたモータ制御システムであって、
前記システムコントローラおよび前記モータユニットは通信回線で接続されており、
前記第1プロセッサは、前記通信回線を介して一定の間隔P1でデータを送信し、
前記第2プロセッサは、
前記通信回線を介して、第1時刻以後、一定の間隔P1で前記データを受信し、
前記データに基づいて動作するタスクを、第2時刻を起点として前記一定の間隔P2で実行し、
同期モードにおいて、前記第2プロセッサは、前記第2時刻を、前記第1時刻以後の所定の許容時間内の時刻に更新し、
前記同期モードの後の通常動作モードにおいて、前記第1プロセッサは前記通信回線を介して前記一定の間隔P1でデータを送信し、前記第2プロセッサは、前記データに基づいて動作する前記タスクを、更新された第2時刻を起点として前記一定の間隔P2で実行する、モータ制御システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016104065A JP2019133205A (ja) | 2016-05-25 | 2016-05-25 | モータ駆動システム、モータ制御システムおよび自走ロボット |
PCT/JP2017/007834 WO2017203778A1 (ja) | 2016-05-25 | 2017-02-28 | モータ駆動システム、モータ制御システムおよび自走ロボット |
US16/194,481 US10606225B2 (en) | 2016-05-25 | 2018-11-19 | Motor drive system, motor control system, and self-propelled robot |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016104065A JP2019133205A (ja) | 2016-05-25 | 2016-05-25 | モータ駆動システム、モータ制御システムおよび自走ロボット |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019133205A true JP2019133205A (ja) | 2019-08-08 |
Family
ID=60412307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016104065A Pending JP2019133205A (ja) | 2016-05-25 | 2016-05-25 | モータ駆動システム、モータ制御システムおよび自走ロボット |
Country Status (3)
Country | Link |
---|---|
US (1) | US10606225B2 (ja) |
JP (1) | JP2019133205A (ja) |
WO (1) | WO2017203778A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109891733A (zh) * | 2016-12-22 | 2019-06-14 | 日本电产株式会社 | 马达驱动系统 |
JP2019101480A (ja) * | 2017-11-28 | 2019-06-24 | オムロン株式会社 | 制御装置および制御方法 |
CN112639681B (zh) * | 2018-08-23 | 2024-07-09 | 苹果公司 | 用于进程数据共享的方法和设备 |
CN110340872A (zh) * | 2019-07-15 | 2019-10-18 | 赵智泉 | 穿戴式遥控机器人及控制方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1280024B1 (en) | 2001-07-26 | 2009-04-01 | Freescale Semiconductor, Inc. | Clock synchronization in a distributed system |
US6864646B2 (en) | 2003-02-14 | 2005-03-08 | General Motors Corporation | Multiple inverter system with low power bus ripples and method therefor |
JP2005354856A (ja) * | 2004-06-14 | 2005-12-22 | Canon Inc | アクチュエータードライブシステム |
CN102217207B (zh) | 2009-01-23 | 2014-04-30 | 上海贝尔股份有限公司 | 用于实时分布式系统的同步方法及其装置 |
US8963453B2 (en) * | 2010-12-16 | 2015-02-24 | Rockwell Automation Technologies, Inc. | Method and apparatus for synchronization of pulse width modulation |
-
2016
- 2016-05-25 JP JP2016104065A patent/JP2019133205A/ja active Pending
-
2017
- 2017-02-28 WO PCT/JP2017/007834 patent/WO2017203778A1/ja active Application Filing
-
2018
- 2018-11-19 US US16/194,481 patent/US10606225B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20190086885A1 (en) | 2019-03-21 |
US10606225B2 (en) | 2020-03-31 |
WO2017203778A1 (ja) | 2017-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017203778A1 (ja) | モータ駆動システム、モータ制御システムおよび自走ロボット | |
KR101044521B1 (ko) | 네트워크에 연결된 슬레이브 장치들의 동기 제어장치 | |
CN100448190C (zh) | 控制系统 | |
EP2555068B1 (en) | Synchronization control apparatus | |
CN109117395B (zh) | 微计算机 | |
EP3361635B1 (en) | Control system and pulse output device | |
JP2007219642A (ja) | 制御システム | |
JP3386777B2 (ja) | 数値制御システム | |
JP3852469B2 (ja) | 同期コントローラおよびコントローラシステム | |
WO2019107022A1 (ja) | 制御装置および制御方法 | |
JP7059973B2 (ja) | 制御システム、装置および制御方法 | |
WO2017203776A1 (ja) | モータ駆動システム、モータ制御システムおよび自走ロボット | |
JP5402401B2 (ja) | モーションコントロールシステム | |
JP5763961B2 (ja) | 通信装置、通信システム、通信装置の制御方法およびプログラム | |
WO2015127717A1 (zh) | 一种流量控制方法、装置及计算机存储介质 | |
US20160048156A1 (en) | Automation device and method for reducing jitter | |
JP7248044B2 (ja) | コントローラ、機器制御システム、時刻同期方法、および時刻同期プログラム | |
JP2008289259A (ja) | 位置決め制御装置、駆動制御装置および制御システム演算交信処理方法 | |
CN104871474A (zh) | 使用异步通信的运动控制系统和控制器及其方法 | |
CN118778555A (zh) | 一种设备运行控制方法及相关装置 | |
CN114375552A (zh) | 在基于以太网的网络中进行时间同步的方法 | |
JPH11338516A (ja) | 位置制御装置 | |
JP2020060962A (ja) | 制御演算装置および制御システム | |
JP2012226475A (ja) | モータ制御装置 |