説明

アクセラレータ装置及びサーボアンプ装置

【課題】通信用バッファからデータを読み出す際のCPUのアクセス時間を短縮し、CPUの処理効率を改善する。
【解決手段】アクセラレータ装置3が、CPU2の読み出しタイミングに先立って通信用バッファ41からデータを読み出し、CPU2の読み出しタイミングが到来すると予め読み出しているデータをCPU2に出力するため、CPU2はデータ読み出し速度が遅い通信用バッファ41からデータを読み出す必要がなく、CPU2のアクセス時間を短縮し、CPU2の処理効率を改善することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサ装置が周辺のデバイスにアクセスする際の効率化を図る技術に関する。
本発明は、例えば、FA(Factory Automation)システムにおいて、プロセッサ装置が周辺のデバイスにアクセスする際の効率化を図る技術に関する。
【背景技術】
【0002】
一般的なFAシステムでは、マスタ装置はスレーブ装置に指令を与え、スレーブ装置は各種ステータス情報をマスタ装置に応答する。
指令や応答のやり取りは、一定の時間間隔で行われるが、特にモーションコントロールシステムの分野においては、マスタ装置に相当するモーションコントローラ装置(以下、コントローラと記述する)から送るデータが、スレーブ装置に相当するサーボアンプ装置(以下、サーボアンプと記述する)に届いて、サーボモータを駆動するまでの時間が短い程、また、サーボアンプからコントローラにデータが送付される時間が短い程、高精度なモータ制御が可能となる。
【0003】
ここで、コントローラからサーボアンプへ送付する、モータを駆動するための制御データを指令データとする。
また、サーボアンプからコントローラへ送付する、モータの位置や速度などのステータス情報を応答データとする。
【0004】
本明細書では、一例として、サーボアンプを始めとするFA機器内部のデータ転送を高速化する方法を説明する。
また、データ転送が行われる機器の一例として、以下ではサーボアンプを説明する。
【0005】
サーボアンプ内部の一般的な構成を図5に示す。
1はサーボアンプ、2はCPU(Central Processing Unit)、4は通信用IC(Integrated Circuit)、5はモータ制御用IC、6はモータ、7はネットワークである。
通信用IC4は、指令データ又は応答データを蓄積するための通信用バッファ41を備えている。
ネットワーク7の先にはコントローラがあり、サーボアンプ1はネットワーク7を経由してコントローラから指令データを受信する。
サーボアンプ1の内部において、指令データはネットワーク7から通信用IC3が受信する。
この指令データは、CPU2がリードする。
CPU2は、必要に応じて指令データの演算を行ってモータ制御用IC5へ指令データを渡す。
モータ制御用IC5はCPU2から受け取った指令データによってモータ6を駆動する。
【0006】
また、サーボアンプ1は、ネットワーク7を経由して応答データをコントローラに送信する。
サーボアンプ1の内部において、モータ制御用IC5は、モータ6の位置や速度等のステータス情報をCPU2へ通知し、CPU2は、必要に応じて演算を行って応答データを作成する。
CPU2は、通信用IC4へ応答データをライトする。
【0007】
続いて、CPU2と通信用IC4のデータを送受するタイミングについて説明する。
【0008】
通信用IC4は、一定の時間間隔でネットワーク7から指令データを受信し、通信用バッファ41に指令データを蓄積する。
そして、CPU1は一定の時間間隔で指令データを通信用IC4(通信用バッファ41)からリードする。
同様に、CPU1は、一定の時間間隔で応答データを通信用IC4(通信用バッファ41)にライトし、通信用IC4は一定の時間間隔でネットワークへ指令を送出する。
ここで、CPU1と通信用IC4がデータを送受する時間の間隔と、通信用IC4がネットワーク7とデータを送受する時間の間隔(概ね数十マイクロ秒〜数ミリ秒)は必ずしも一致する必要は無い。
【0009】
CPU1によるアクセス性能に比べて、一般的に通信用IC4のアクセス応答性能は低い。
特にCPU1から通信用IC4に対してリードアクセスを行う際は、通信用IC4がデータを準備するまでCPU1が待たされ、その間CPU1は他の処理を行うことができずに無駄な時間となってしまう。
【0010】
特許文献1では、CPUによるROM(Read Only Memory)アクセスを高速化する方法が開示されており、特許文献1でROMとされている部分を通信用ICに置き換えると、特許文献1の技術を図5の構成に適用できるとも考えられる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2008−117414号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
特許文献1では、CPUとROMの間にメモリインターフェイス回路装置を配置し、CPUよりも広いデータバス幅を構成する1つ以上のROMへアクセスするときに効果が期待できる。
しかし、本明細書で想定している通信用ICは、一般的にCPUと同じデータバス幅、もしくはCPUより狭いデータバス幅であり、特許文献1の技術を適用しても効果が期待できない。
【0013】
本発明は、このような事情に鑑みたものであり、所定の時間間隔で通信用バッファに蓄積されたデータを読み出すプロセッサ装置のアクセス時間を短縮し、プロセッサ装置の処理効率を改善することを主な目的とする。
【課題を解決するための手段】
【0014】
本発明に係るアクセラレータ装置は、
プロセッサ装置と、受信した受信データを蓄積する通信用バッファとに接続され、
所定の時間間隔で繰り返し到来する前記プロセッサ装置の読み出しタイミングに先立ち、前記通信用バッファから規定データサイズのデータを読み出すのに要するバッファ読み出し時間に基づく開始タイミングであって、前記プロセッサ装置の読み出しタイミングまでに前記規定データサイズ分の受信データの読み出しが完了する開始タイミングにて、前記通信用バッファからの前記規定データサイズ分の受信データの読み出しを開始する受信データ読み出し部と、
前記プロセッサ装置の読み出しタイミングが到来した時点で、前記受信データ読み出し部により読み出されている受信データを前記プロセッサ装置に出力する受信データ出力部とを有することを特徴とする。
【発明の効果】
【0015】
本発明によれば、アクセラレータ装置が、プロセッサ装置の読み出しタイミングに先立って通信用バッファから受信データを読み出し、読み出しタイミングが到来した際に、読み出されている受信データをプロセッサ装置に出力するため、プロセッサ装置はデータ読み出し速度が遅い通信用バッファから受信データを読み出す必要がなく、プロセッサ装置のアクセス時間を短縮し、プロセッサ装置の処理効率を改善することができる。
【図面の簡単な説明】
【0016】
【図1】実施の形態1に係るサーボアンプ装置の構成例を示す図。
【図2】実施の形態1に係るサーボアンプ装置における指令データ転送タイミングを説明する図。
【図3】実施の形態1に係るサーボアンプ装置における応答データ転送タイミングを説明する図。
【図4】実施の形態1に係るアクセラレータ装置3の構成例を示す図。
【図5】一般的なサーボアンプ装置の構成例を示す図。
【発明を実施するための形態】
【0017】
実施の形態1.
本実施の形態では、一定の時間間隔で通信用ICとデータの送受を行うCPUのアクセス時間を短縮し、CPUの処理効率を改善する例を説明する。
【0018】
図1は、本実施の形態に係るサーボアンプ装置1の構成例を示す。
【0019】
1は、サーボアンプ装置(以下、サーボアンプと記述する)である。
2は、プロセッサ装置たるCPU(もしくはマイコン)である。
3は、メモリアクセラレータ(以下、アクセラレータ装置又はアクセラレータと記述する)である。
4は、通信用ICであり、指令データ又は応答データを蓄積するための通信用バッファ41を備えている。
5は、モータ制御用ICである。
6は、モータである。
7は、ネットワークである。
【0020】
次に、本実施の形態に係るアクセラレータ装置3の構成例を図4を参照して説明する。
【0021】
図4において、受信データ読み出し部31は、通信用バッファ41から指令データ(受信データの例)を読み出す。
後述するように、CPU2は、所定の時間間隔の読み出しタイミングで繰り返しリードアクセスを行う。
受信データ読み出し部31には、通信用バッファ41から規定データサイズ分のデータを読み出すのに要する時間(バッファ読み出し時間)が設定されている。
そして、受信データ読み出し部31は、CPU2の読み出しタイミングに先立ち、バッファ読み出し時間に基づき、CPU2の読み出しタイミングまでに規定データサイズ分の指令データの読み出しが完了する開始タイミングにて、通信用バッファ41から規定データサイズ分の指令データの読み出しを開始する。
より具体的には、受信データ読み出し部31は、CPU2の読み出しタイミングからバッファ読み出し時間と所定のガード時間とを合算した時間を遡ったタイミングを、開始タイミングとする。
ガード時間は、例えば、バッファ読み出し時間の1/10以下である。
そして、受信データ読み出し部31は、CPU2の読み出しタイミングが到来する時点では、指令データの読み出しを完了している。
このように、本実施の形態に係る受信データ読み出し部31は、CPU2の読み出しタイミングに間に合う範囲内で可能な限り通信用バッファ41からの読み出しを遅らせて、CPU2に最新の指令データを出力できるようにしている。
【0022】
受信データバッファ32は、受信データ読み出し部31が通信用バッファ41から読み出した指令データを一時的に蓄積する。
【0023】
受信データ出力部33は、CPU2の読み出しタイミングにて、受信データ読み出し部31により予め読み出され、受信データバッファ32に蓄積されている指令データをCPU2に出力する。
【0024】
タイマ34は、受信データ読み出し部31に対して通信用バッファ41からの指令データの読み出し開始タイミングを通知する。
なお、図5は、タイマ34のタイマ通知により受信データ読み出し部31が指令データを通信用バッファ41から読み出す場合の構成例であり、通信用IC4からの割込みを契機に受信データ読み出し部31が指令データを読み出す場合は、タイマ34は設けなくてもよい。
また、通信用IC4からの割込みを契機に受信データ読み出し部31が指令データを読み出す場合は、通信用IC4による指令データの受信前に、受信データ読み出し部31がバッファ読み出し時間を通信用IC4に通知しておき、通信用IC4側でバッファ読み出し時間に基づき読み出し開始タイミングを計時する。
【0025】
送信データ入力部35は、CPU2から応答データ(送信データの例)を入力する。
【0026】
送信データバッファ36は、送信データ入力部35が入力した応答データを一時的に蓄積する。
【0027】
送信データ書き込み部37は、所定の時間間隔ごとに、送信データバッファ36に蓄積されている応答データを通信用バッファ41に書き込む。
【0028】
次に、本実施の形態に係るサーボアンプ1の動作例として、まず指令データの受信時の動作例を説明する。
【0029】
ネットワーク7の先にはコントローラがあり、サーボアンプ1はネットワーク7を経由してコントローラから指令データを受信する。
サーボアンプ1の内部において、指令データはネットワーク7から通信用IC4が受信し、通信用IC内部の通信用バッファ41に保持される。
この指令データは所定の時刻(タイマ通知の場合)で、もしくは通信用IC4からアクセラレータ3への割込み通知によってアクセラレータ3の受信データ読み出し部31が通信用IC4の通信用バッファ41からリードし、アクセラレータ3内部の受信データバッファ32に保持される。
次に、所定の時刻でCPU2がアクセラレータ3を経由して通信用IC4にリードアクセスを行うが、実際にはアクセラレータ3の受信データ出力部33が指令データをCPU2のデータバスに出力する。
そしてCPU2は、必要に応じて、受け取った指令データに対して演算等を行い、モータ制御用IC5へ指令データを渡す。
モータ制御用IC5はCPU2から受け取った指令データによってモータ6を駆動する。
なお、アクセラレータ3は、CPU2からのリードアクセスやライトアクセス、アクセラレータ3自身による通信用IC4へのリードアクセスやライトアクセスを同時に行うことが考えられるため、FPGA(Field−Programmable Gate Array)等のハードウェアで実装することが望ましい。
【0030】
続いて、応答データの送信時の動作例を説明する。
サーボアンプ1は、ネットワーク7を経由して応答データをコントローラに送信する。
サーボアンプ1の内部において、モータ制御用IC5は、モータ6の位置や速度等のステータス情報をCPU2へ通知し、CPU2は、必要に応じて演算を行って応答データを作成する。
CPU2は、所定の時刻でアクセラレータ3を経由して通信用IC4へのライトアクセスを行うが、実際にはアクセラレータ3の送信データ入力部35がCPU2からの応答データを入力し、送信データバッファ36に一時的に保持する。
その後、アクセラレータ3の送信データ書き込み部37は、一時的に保持した応答データを通信用IC4にライトする。
【0031】
以上が、指令データと応答データを転送するときの動作の説明であるが、以降ではCPU2とアクセラレータ3と通信用IC4が指令データをやり取りするに必要な時間やアクセスタイミングについて図2を用いて説明し、その次に応答データをやり取りするのに必要な時間やアクセスタイミングについて図3を用いて説明する。
【0032】
まずは、指令データの転送について図2を用いて説明する。
【0033】
指令データは、CPU2やアクセラレータ3から通信用IC4に対してリードアクセスを行うことでデータ転送が行われる。
図2において、Tr1は、CPU2がアクセラレータ3から指令データを読み出す際のリードアクセス時間である。
つまり、Tr1は、アクセラレータ3の受信データ出力部33が指令データをCPU2に出力するのに要する時間である、
Tr2は、アクセラレータ3が通信用IC4から指令データを読み出す際のリードアクセス時間である。
つまり、Tr2は、アクセラレータ3の受信データ読み出し部31が通信用バッファ41から指令データを読み出すのに要する時間(バッファ読み出し時間)である。
Tr1とTr2は、それぞれ複数回のリードアクセスの合計時間である。
また、Tgは、ガード時間である。
ガード時間Tgは、アクセラレータ3の受信データ読み出し部31が最後の指令データを受信データバッファ32に格納するのに要する時間、受信データ出力部33が受信データバッファ32から最初の指令データを読み出すのに要する時間をもとに決定すればよい。
つまり、ガード時間Tgの間に受信データ読み出し部31による最後の指令データの受信データバッファ32への格納、受信データ出力部33による受信データバッファ32からの最初の指令データの読み出し、CPU2への出力が行われるようにする。
アクセラレータ3が指令データをリードするためにアクセスする通信用IC4のアドレス(通信用バッファ41のアドレス)とデータサイズは事前に決めておき、CPU2からアクセラレータ3に設定しておく。
図2に示すように、アクセラレータ3の受信データ読み出し部31は、CPU1の読み出しタイミングからリードアクセス時間Tr2とガード時間Tgとを合算した時間(Tr2+Tg)を遡ったタイミングにおいて指令データの読み出しを開始する。
このように、通信用IC4のアクセス応答性能が低く、CPU2が通信用IC4にリードアクセスを行う場合はTr2の時間を要するが、事前にアクセラレータ3が通信用IC4からリードおくことにより、CPU2のリードアクセス時間はTr1で済む。
【0034】
次に、リードアクセスのタイミングとして、CPU2はタイマ等によってTr_cycleの時間間隔でアクセラレータ3を経由して通信用IC4に対してリードアクセスを行う。
アクセラレータ3が通信用IC4にリードアクセスするタイミングは、幾つか方法が考えられる。
1つはCPU2と同様、タイマ等によって通信用IC4へのリードタイミングを決める方法である。
もう1つは、通信用IC4がネットワーク7からの指令データ受信完了をアクセラレータ3に対して割込み通知し、これをトリガとしてアクセラレータ3が通信用IC4からリードアクセスする方法が考えられる。
なお、通信用IC4がネットワーク7から指令データを受信した直後にアクセラレータ3が通信用IC4から指令データをリードし、その直後にCPU2からのリードアクセスを行えば、通信用ICが指令データを受信してからCPU2がリードするまでの時間が短く、コントローラが指令データを送出してからサーボアンプがモータを駆動するまでの時間を短くできる。
後者の割り込みによる方法であれば、この様な要件にも容易に対応できると考えられる。
【0035】
ここで、データの更新と泣き別れについて説明する。
CPU2がアクセラレータ3から指令データをリードするタイミング、同じくアクセラレータ3が通信用IC4から指令データをリードするタイミングでは、それぞれ前回リードした指令データから更新されていない可能性がある。
その際は、前回の指令データをそのまま出力するのが、サーボ制御システムのデータ転送では一般的な考え方である。
ただし、リードしている最中に、あるアドレスのワードから新規のデータに更新されてしまうこと(データの泣き別れ)は望ましくなく、アクセラレータ3や通信用IC4は3面バッファ等でデータの完全性を保証しなければならない。
【0036】
以上は、指令データの転送についてであるが、続いて応答データの転送について図3を用いて説明する。
【0037】
応答データは、CPU2からアクセラレータ3への書き込み、更には、アクセラレータ3から通信用IC4への書き込みによりデータ転送が行われる。
図3において、Tw1は、CPU2がアクセラレータ3に応答データを書き込む際のライトアクセス時間である。
Tw2は、アクセラレータ3が通信用IC4に応答データを書き込む際のライトアクセス時間である。
それぞれ、Tw1とTw2は、複数回のライトアクセスの合計時間である。
このように、通信用IC4のアクセス応答性能が低く、CPU2が通信用IC4にライトアクセスを行う場合はTw2の時間を要するが、一時的にアクセラレータ3が応答データを保持することにより、CPU2のライトアクセス時間はTw1で済む。
【0038】
次にライトアクセスのタイミングとして、CPU2はタイマ等によってTw_cycleの時間間隔でアクセラレータ3を経由して通信用IC4に対してライトアクセスを行う。
なお、一般的にTw_cycleと図2のTr_cycleの時間間隔は同一である。
【0039】
アクセラレータ3は、CPU2からライトアクセスがあった際にデータと同時にアドレスも保持しておくことで、後でライトアクセスすべき通信用IC4のアドレスを把握できる。
もしくは、指令データのリード時と同じく、アクセラレータ3が応答データをライトするためにアクセスする通信用IC4のアドレス(通信用バッファ41のアドレス)とデータサイズは事前に決めておき、CPU2からアクセラレータ3に設定しておく方法も考えられる。
【0040】
アクセラレータ3が通信用IC4にライトアクセスするタイミングを決める方法は、リード時と同じく、アクセラレータ3内部にタイマを持ち、Tw_cycleと同じ時間間隔で、アクセラレータ3が自動的に通信用IC4にアクセスする方法がある。
もしくは、Tw_cycleごとのCPU2からのライトアクセスをトリガとして、順次CPU2からライトされる応答データを、アクセラレータ3が通信用IC4にライトする方法が考えられる。
【0041】
以上のように、CPU2が指令データのリードアクセスを行う際には、アクセラレータ3が事前に通信用IC4からリードしておいた指令データをCPU2のデータバスに出力することで、CPU2のリードアクセス時間を短縮できる。
同様に、CPU2が応答データのライトアクセスを行う際には、アクセラレータ3が一時的に応答データを受け取り、後でアクセラレータ3が通信用IC4に応答データをライトすることで、CPU2のライトアクセス時間を短縮できる。
【0042】
なお、本発明は、開示された形態に限定されるものではなく、例えば、実施の形態1ではアクセラレータ3内部にバッファを有することを前提として説明したが、指令データや応用データを一時的に保持するためのメモリをアクセラレータ3の外部に持つ形態も考えられる。
また、以上の説明では、FAシステムにおけるサーボアンプ装置において、CPUが通信用IC4にアクセスする際のアクセス時間の短縮を図る方式を説明したが、本方式の適用対象の装置はサーボアンプ装置に限らない。
【0043】
以上、本実施の形態では、
所定の時間間隔で通信用ICにリードアクセスを行うCPUを有する機器において、CPUと通信用ICの中間に位置するアクセラレータが、通信用ICから事前にデータをリードしておき、CPUから通信用ICにリードアクセスがあった際に、アクセラレータが持つデータをリードデータとしてCPUに返すことで、CPUの外部IOアクセス時間を短縮する方法を説明した。
【0044】
また、本実施の形態では、
所定の時間間隔で通信用ICにライトアクセスを行うCPUを有する機器において、CPUと通信用ICの中間に位置するアクセラレータが、CPUからのライトデータを一時的に保持し、アクセラレータが通信用ICにデータをライトすることにより、CPU側のバストランザクションを素早く終えることで、CPUの外部IOアクセス時間を短縮する方法を説明した。
【符号の説明】
【0045】
1 サーボアンプ装置、2 CPU、3 アクセラレータ装置、4 通信用IC、5 モータ制御用IC、6 モータ、7 ネットワーク、31 受信データ読み出し部、32 受信データバッファ、33 受信データ出力部、34 タイマ、35 送信データ入力部、36 送信データバッファ、37 送信データ書き込み部、41 通信用バッファ。

【特許請求の範囲】
【請求項1】
プロセッサ装置と、受信した受信データを蓄積する通信用バッファとに接続され、
所定の時間間隔で繰り返し到来する前記プロセッサ装置の読み出しタイミングに先立ち、前記通信用バッファから規定データサイズのデータを読み出すのに要するバッファ読み出し時間に基づく開始タイミングであって、前記プロセッサ装置の読み出しタイミングまでに前記規定データサイズ分の受信データの読み出しが完了する開始タイミングにて、前記通信用バッファからの前記規定データサイズ分の受信データの読み出しを開始する受信データ読み出し部と、
前記プロセッサ装置の読み出しタイミングが到来した時点で、前記受信データ読み出し部により読み出されている受信データを前記プロセッサ装置に出力する受信データ出力部とを有することを特徴とするアクセラレータ装置。
【請求項2】
前記受信データ読み出し部は、
前記プロセッサ装置の読み出しタイミングから前記バッファ読み出し時間と所定のガード時間とを合算した時間を遡ったタイミングを前記開始タイミングとすることを特徴とする請求項1に記載のアクセラレータ装置。
【請求項3】
前記受信データ読み出し部は、
前記ガード時間を、前記バッファ読み出し時間の1/10以下とすることを特徴とする請求項2に記載のアクセラレータ装置。
【請求項4】
前記アクセラレータ装置は、
前記受信データ出力部が前記プロセッサ装置に前記規定データサイズ分の受信データを出力するのに要する時間が、前記受信データ読み出し部の前記バッファ読み出し時間以下であることを特徴とする請求項1〜3のいずれかに記載のアクセラレータ装置。
【請求項5】
前記アクセラレータ装置は、更に、
前記プロセッサ装置から出力された送信データを入力する送信データ入力部と、
前記送信データ入力部により入力された前記送信データを前記通信用バッファに書き込む送信データ書き込み部とを有することを特徴とする請求項1〜4のいずれかに記載のアクセラレータ装置。
【請求項6】
前記アクセラレータ装置は、
前記送信データ入力部が前記プロセッサ装置から送信データを入力するのに要する時間が、前記送信データ書き込み部が前記通信用バッファに前記送信データを書き込むのに要する時間以下であることを特徴とする請求項5に記載のアクセラレータ装置。
【請求項7】
請求項1〜6のいずれかに記載のアクセラレータ装置を有することを特徴とするサーボアンプ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−134896(P2012−134896A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−286931(P2010−286931)
【出願日】平成22年12月24日(2010.12.24)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】