JP4823207B2 - コントローラシステム - Google Patents

コントローラシステム Download PDF

Info

Publication number
JP4823207B2
JP4823207B2 JP2007310841A JP2007310841A JP4823207B2 JP 4823207 B2 JP4823207 B2 JP 4823207B2 JP 2007310841 A JP2007310841 A JP 2007310841A JP 2007310841 A JP2007310841 A JP 2007310841A JP 4823207 B2 JP4823207 B2 JP 4823207B2
Authority
JP
Japan
Prior art keywords
data
cycle
transmission
processing unit
positioning device
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.)
Expired - Fee Related
Application number
JP2007310841A
Other languages
English (en)
Other versions
JP2009134568A (ja
Inventor
堅太 藤本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007310841A priority Critical patent/JP4823207B2/ja
Publication of JP2009134568A publication Critical patent/JP2009134568A/ja
Application granted granted Critical
Publication of JP4823207B2 publication Critical patent/JP4823207B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、工作機械等の制御対象機器を目標位置に位置決めする位置決め装置と、この位置決め装置の動作を制御するプログラマブルコントローラとを備えたコントローラシステムに関するものである。
例えば、特許文献1には、位置決め装置であるモーションコントローラとこのモーションコントローラの動作を制御するプログラマブルコントローラとを備えたコントローラシステムにおいて、モーションコントローラとプログラマブルコントローラとの間のデータ授受方法が開示されている。このデータ授受方法では、プログラマブルコントローラのスキャン周期とは独立した一定周期のクロック信号ごとにプログラマブルコントローラの割り込みプログラムを動作させることにより、プログラマブルコントローラとモーションコントローラとの間で上記一定周期ごとに直接データの授受を行っている。
特許第3350904号公報
従来のコントローラシステムでは、位置決め装置が制御対象機器の移動速度や位置を算出する周期とは無関係な一定周期のクロック信号ごとにデータが授受される。この場合、プログラマブルコントローラから位置決め装置へ送られるデータ量や通信オーバヘッドが多くなると、位置決め装置が処理を補間するタイミングでプログラマブルコントローラから必要なデータを受け取ることができない。このため、位置決め装置の応答速度が遅くなるという課題があった。
このように、従来では、プログラマブルコントローラから別ユニットの位置決め装置へデータを送るとき、位置決め装置が速度や位置を計算する周期ごとにプログラマブルコントローラから必要なデータを受け取るための最適な方法が検討されていなかった。
この発明は、上記のような課題を解決するためになされたもので、位置決め装置の応答遅延を抑制することができるコントローラシステムを得ることを目的とする。
この発明に係るコントローラシステムは、シーケンスプログラムを格納するプログラムメモリと、シーケンスプログラムの命令コードの内容に従った演算を行う演算部とを有したプログラマブルコントローラと、プログラマブルコントローラから受信した演算部の演算データを用いて、制御対象機器を目標位置に位置決めする位置決め装置とを備えたコントローラシステムにおいて、プログラマブルコントローラが、演算部の演算データ及びこの演算データの位置決め装置への送信周期を示す周期フラグが格納されるデータメモリと、データメモリのメモリアドレスに対応付けて、演算部の演算データ及びその周期フラグに基づく送信周期のカウント値が登録された変更データテーブルと、データメモリのメモリアドレスとこれに対応するデータを識別するためのID番号が登録された第1の変換表と、位置決め装置へ送信する周期ごとに演算データ及びそのID番号が、周期送信データとして格納される周期送信用バッファと、周期送信用バッファの内容を位置決め装置へ送信する送信処理部と、プログラマブルコントローラから、位置決め装置がプログラマブルコントローラから受信したデータで処理内容を補間するタイミングを示す補間周期信号が入力されると、変更データテーブルの送信周期のカウント値を更新する更新処理部と、位置決め装置へ送信する演算データ及びそのメモリアドレスで第1の変換表から取得したID番号を、周期送信データとして周期送信用バッファに格納する登録処理部と、周期送信データの送信及び変更データテーブルの送信周期のカウント値の更新がなされる度に、更新後の送信周期のカウント値に基づいて変更データテーブルから次周期で送信する演算データを特定し、この演算データ及びそのメモリアドレスを周期送信データとして登録処理部へ通知する次周期処理部とを有し、位置決め装置が、制御対象機器の位置決めに用いるデータが格納される位置決め装置用メモリと、プログラマブルコントローラから受信した周期送信データが格納される周期受信用バッファと、位置決め装置用メモリのメモリアドレスとこれに対応するデータのID番号とが登録された第2の変換表と、周期送信データのID番号に対応するメモリアドレスを第2の変換表から取得し、このメモリアドレスに周期送信データを書き込む解析処理部とを有するものである。
この発明によれば、上述の構成を有することにより、位置決め装置が、制御対象機器の移動速度や位置を算出するタイミングで、その処理に必要なデータをプログラマブルコントローラから取得することができるという効果がある。また、送信すべき周期になるまでデータ送信が行われないので、必要最小限のデータ送信で済み、プログラマブルコントローラと位置決め装置の間の通信帯域の利用率を低減させることができ、他の通信用に帯域を空けることが可能である。これにより、通信オーバヘッドを抑制でき、位置決め装置の応答遅延を低減することができるという効果がある。
実施の形態1.
図1は、この発明の実施の形態1によるコントローラシステムの構成を示すブロック図である。図1において、実施の形態1によるコントローラシステムは、プログラマブルコントローラ1及び位置決め装置2を備える。プログラマブルコントローラ1と位置決め装置2とはバスで接続されており、このバスを介してプログラマブルコントローラ1と位置決め装置2との間でデータ送受が行われる。
プログラマブルコントローラ1は、プログラムメモリ3、演算部4、ライト処理部5、データメモリ6、周期送信バッファ送信処理部(送信処理部)7、変更データ書き換え処理部(書き換え処理部)8、周期カウントチェック処理部9、周期送信用バッファデータ登録処理部(登録処理部)10、周期送信用バッファ11、変更データテーブル12、変更データテーブル更新処理部(更新処理部)13、デバイス名変換表(第1の変換表)14a、次周期送信データコピー処理部(次周期処理部)15、周期送信完了チェック処理部16及び初期化処理部17を備える。
プログラムメモリ3は、制御対象機器(不図示)をシーケンス制御するためのシーケンスプログラムを格納する。シーケンスプログラムは、ラダープログラム言語で設計されている。ラダープログラムでは、母線間に、スイッチ、コイル等の記号、機能を表した図形、これらに関連するデータやラベル等を、シーケンスに沿って順に配置したラダーコードで、制御の内容及び手順が表現される。演算部4は、プログラムメモリ3から取得(フェッチ)したシーケンスプログラムの命令コードをデコードし、命令コードの内容に従った演算処理を実行する。この演算処理に生じた演算結果データは、ライト処理部5に出力される。
ライト処理部5は、演算部4から入力した演算結果データをデータメモリ6に書き込むとともに、演算結果データのうち、周期フラグを有するデータ及びそのアドレスデータ(メモリアドレスを示すデバイス番号)を変更データ書き換え処理部8へ出力する。周期フラグとは、何周期ごとに位置決め装置2へ送信するデータであるかを示すデータである。ここで、位置決め装置2へ送信される演算データとしては、例えば位置決め装置2で実行される位置決めプログラムの起動指令等がある。
データメモリ6は、演算部4による演算結果の演算データをそのメモリアドレス(デバイス番号)に対応付けて記憶する記憶部である。なお、演算データが周期フラグを有する場合は、演算データ及びその周期フラグをメモリアドレスに対応付けて記憶する。図2は、図1中のデータメモリの記憶内容を示す図である。図2に示すように、データメモリ6には、周期フラグを設定する領域と周期フラグを設定しない領域がある。
周期フラグを設定しない領域には、シーケンスプログラムを実行して得られた演算データn0,n1,・・・,n10,・・・,n20が、メモリアドレスx0,x1,・・・,x10,・・・,x20に対応付けて記憶される。これにより、メモリアドレスごとにデータが管理される。
また、周期フラグを設定する領域には、演算データn0,n1,・・・,n10,・・・,n20及びその周期フラグ1,0,・・・,2,・・・,3が、メモリアドレスD0,D1,・・・,D10,・・・,D20に対応付けて記憶される。これにより、メモリアドレスごとに周期フラグとデータが管理される。なお、図2の例では、メモリアドレスをラダーコードのデバイス番号で示している。
また、図2に示す周期フラグは、位置決め装置2へのデータ送信周期として10進数の数値が設定されている。例えば、周期フラグが1である場合、1周期ごとに位置決め装置2へ送信すべきデータであることを示している。なお、データメモリ6や変更データテーブル12に実際に設定される周期フラグのデータ形態は、送信周期を示す2進数の数値を設定したビットデータである。
周期送信バッファ送信処理部7は、周期送信用バッファ11に一時記憶された周期送信データである演算データ及びそのデータIDを位置決め装置2へ送信する処理を行う。変更データ書き換え処理部8は、ライト処理部5から取得したメモリアドレスが変更データテーブル12にあるか否かを判定する。
図3は、図1中の変更データテーブルの内容を示す図である。図3において、変更データテーブル12には、レコードごとにデータID、変更フラグ、周期カウント、データ及びメモリアドレスが設定される。データIDとしては、同一レコードのデータを識別するためのID番号が設定される。データIDとしては、図3に示すような通し番号が考えられるが、周期送信データを構成した際にメモリアドレスよりもデータサイズが小さいデータ形態であればよい。
変更フラグには、同一レコードのデータが変更(書き換え)されたか否かを示すデータが設定される。ここでは、変更フラグとしてデジタル値1を設定することで変更フラグがオン、即ちデータ変更ありとなり、デジタル値0を設定することで変更フラグをオフ、即ちデータ変更なしとなる。この変更フラグがオンで、かつ送信周期に達したデータが周期送信用バッファ11に登録され、周期送信データとして位置決め装置2へ送信される。
周期カウントには、同一レコードのデータを位置決め装置2へ送信する周期のカウント値が設定される。例えば、カウント値として所定の初期値が設定しておき、周期送信用バッファ11のデータが送信されるたびにカウント値が減算され、カウント値が0等の所定値になると、位置決め装置2へ送信する周期になったものとして対応するデータを周期送信用バッファ11に登録する。メモリアドレスは、同一レコードのデータに対応するメモリアドレス(デバイス番号)である。
変更データ書き換え処理部8は、ライト処理部5から取得したメモリアドレスが変更データテーブル12にある場合、そのメモリアドレスに対応するレコードの周期カウント値を変更データテーブル12から取得して、上記メモリアドレス、これに対応するデータ及び周期カウント値を周期カウントチェック処理部9へ出力する。また、変更データ書き換え処理部8は、周期カウントチェック処理部9から今周期で位置決め装置2へ送信するデータではないと判定されたデータを取得すると、この判定結果を受けたデータで変更データテーブル12の対応するデータ内容を書き換え、このデータに対応する変更フラグをオンにする。
周期カウントチェック処理部9は、変更データ書き換え処理部8から取得した周期カウントの値から、この周期カウント値に対応するデータが今周期で位置決め装置2へ送信するデータであるか否かを判定し、今周期で位置決め装置2へ送信するデータである場合、この周期カウント値に対応するデータ及びそのメモリアドレスを周期送信用バッファデータ登録処理部10へ出力する。一方、今周期で位置決め装置2へ送信するデータではない場合、この周期カウント値に対応するデータを変更データ書き換え処理部8へ出力する。
周期送信用バッファデータ登録処理部10は、周期カウントチェック処理部9若しくは次周期送信データコピー処理部15から取得したデータを周期送信用バッファ11に登録する。周期送信用バッファ11は、位置決め装置2へ送信するデータを一時記憶する。図4は、図1中の周期送信用バッファの内容を示す図である。図4に示すように、周期送信用バッファ11には、周期送信データとしてデータID及びこれに対応するデータが登録される。また、図5は、図1中のデバイス名変換表の内容を示す図である。図5に示すように、デバイス名変換表14a,14bには、データID及びこれに対応するデータのメモリアドレスが登録される。
周期送信用バッファデータ登録処理部10は、周期カウントチェック処理部9若しくは次周期送信データコピー処理部15から取得したメモリアドレスでデバイス名変換表14aを検索して、このメモリアドレスに対応するデータIDを取得し、このデータIDとこれに対応するデータを周期送信用バッファ11に登録する。これにより、位置決め装置2には、データIDとこれに対応するデータが周期送信データとして送信される。
変更データテーブル更新処理部13は、プログラマブルコントローラ1が受信した補間周期信号(位置決め装置2がプログラマブルコントローラ1から受信したデータで処理内容を補間するタイミングを示す信号)を入力すると、変更データテーブル12の周期カウントの値を更新する。周期送信完了チェック処理部16は、周期送信バッファ送信処理部7から周期送信用バッファ11内のデータ送信完了が通知され、かつ、変更データテーブル更新処理部13から変更データテーブル12の周期カウント値の更新完了が通知されると、その旨を次周期送信データコピー処理部15へ通知する。
次周期送信データコピー処理部15は、周期送信完了チェック処理部16から通知を受けると、変更データテーブル12の各レコードの周期カウント値をモニタし、今周期で位置決め装置2へ送信するデータがあるか否かを判定する。ここで、今周期で位置決め装置2へ送信するデータであると判定された場合、このデータ及びメモリアドレスを周期送信用バッファデータ登録処理部10へ出力する。
初期化処理部17は、プログラマブルコントローラ1の変更データテーブル12と、プログラマブルコントローラ1及び位置決め装置2のデバイス名変換表14a,14bの内容を設定する。例えば、データメモリ6の記憶内容のうち、周期フラグが付与された命令コードに対応するデータ及びそのメモリアドレスに基づいて、変更データテーブル12、デバイス名変換表14a,14bを作成する。
位置決め装置2は、制御対象機器の位置決めを行う構成要素(不図示)を制御するための構成として、デバイス名変換表(第2の変換表)14b、周期受信用バッファ18、周期データ解析処理部(解析処理部)19及び位置決め装置用メモリ20を備える。デバイス名変換表14bは、図5で示したように、データIDとこれに対応するデータのメモリアドレスが登録されるテーブルデータである。デバイス名変換表14bのメモリアドレスには、位置決め装置用メモリ20のアドレス番号を示すデバイス番号が設定される。
周期受信用バッファ18は、バスを介してプログラマブルコントローラ1から受信したデータ及びそのデータIDを一時記憶する。周期データ解析処理部19は、周期受信用バッファ18から受信データ及びそのデータIDを取得し、このデータIDに対応するメモリアドレスをデバイス名変換表14bから特定して、位置決め装置用メモリ20の上記メモリアドレスに受信データを書き込む。
位置決め装置用メモリ20は、制御対象機器の位置決め処理に必要なデータをメモリアドレスに対応付けて記憶する。図6は、図1中の位置決め装置用メモリの内容を示す図である。図6に示す例では、位置決め装置用メモリ20が、プログラマブルコントローラ1から受信したデータn0,n1,・・・,n10,・・・,n20を、メモリアドレスD0,D1,・・・,D10,・・・,D20に対応付けて記憶する。位置決め装置2では、位置決め装置用メモリ20に格納されたプログラマブルコントローラ1からの受信データで処理を補間することにより、制御対象機器の位置決め処理が実行される。
次に実施の形態1によるコントローラシステムのデータ構成の概要を説明する。
図7は、図1中のプログラマブルコントローラと位置決め装置のデータ構成を示す図である。図7において、データメモリ6には、図2の周期フラグを有するデータが書き込まれたレコード内容を記載しており、周期送信用バッファ11、変更データテーブル12、デバイス名変換表14a,14b、周期受信用バッファ18及び位置決め装置用メモリ20には、図3〜6に示したレコード内容をそれぞれ記載している。
図8は、実施の形態1によるコントローラシステムで扱われるユーザラダーコードの一例を示す図である。ユーザラダーコードは、図12で後述する開発環境装置であるプログラミング装置を用いて、開発者であるユーザが記載するコードである。図8に示すコイル出力命令+D1 D2 D0(cyc)コード18中の(cyc)は、デバイス番号D0(D0を実行した演算データ)に付与された周期フラグである。このコード18を実行することにより、D0=D1+D2の結果が毎周期位置決め装置2へ送信される。
ラダーコード18のデバイス番号D0に対応する処理は、接点命令X0がオンのときに実行される。従って、D0に対応する処理が実行されると、図7に示すように、変更データテーブル12のD0に対応するレコードの変更フラグがオン(デジタル値1を設定)となり、データn0としてD1+D2の演算結果が設定される。
ラダーコード18をデータメモリ6に配置する場合、図7に示すように、デバイス番号D0に対応するレコードの周期フラグには1が設定されている。この場合、データメモリ6におけるD0に対応する周期フラグの設定領域には、01のデジタル値が設定される。また、デバイス番号D1の場合は、対応するレコードの周期フラグが0であるため、デジタル値00が設定される。
図9は、実施の形態1によるコントローラシステムで扱われるユーザラダーコードの他の例を示す図である。図9に示すラダーコードは3本のラングにより構成される。第1のラングにおけるコード18は、図8に示したものと同様である。第2のラングにおけるコイル出力命令+D8 D9 D10(2cyc)コード18a中の(2cyc)は、デバイス番号D10(D10を実行した演算データ)に付与された周期フラグである。このコード18aを実行することにより、D10=D8+D9の結果が2周期に1回位置決め装置2へ送信される。同様に、第3のラングにおけるコイル出力命令+D5 D6 D20(3cyc)コード18bを実行することにより、D20=D5+D6の結果が3周期に1回位置決め装置2へ送信される。
ラダーコード18aのデバイス番号D10に対応する処理は、接点命令X1がオンのときに実行される。従って、D10に対応する処理が実行されると、図7に示すように、変更データテーブル12のD10に対応するレコードの変更フラグがオンとなり、データn10としてD8+D9の演算結果が設定される。また、同様に、ラダーコード18bのデバイス番号D20に対応する処理は、接点命令X2がオンのときに実行される。従って、D20に対応する処理が実行されると、図7に示すように、変更データテーブル12のD20に対応するレコードの変更フラグがオンとなり、データn20としてD5+D6の演算結果が設定される。
ラダーコード18a,18bをデータメモリ6に配置する場合、図7に示すように、デバイス番号D10に対応するレコードの周期フラグには2が設定されており、D20に対応するレコードの周期フラグには3が設定されている。この場合、データメモリ6におけるD10に対応する周期フラグの設定領域には値10が設定され、D20に対応する周期フラグの設定領域には値11が設定される。また、デバイス番号D1の場合は、対応するレコードの周期フラグが0であるため、デジタル値00が設定される。
次に動作について説明する。
実施の形態1によるコントローラシステムでは、大きく分けて、初期化処理、プログラマブルコントローラ1によるデータライト処理、補間周期信号の受信後処理、及び周期送信用バッファ送信後処理、周期受信用バッファ受信時処理が実行される。
(1)初期化処理
図10は、変更データテーブル及びデバイス名変換表の初期化処理を説明するための図である。図10の例では、初期化処理部17が変更データテーブル12とデバイス名変換表14a,14bを作成し、デバイス名変換表14bを位置決め装置2へ送信する場合を示している。また、図11は、初期化処理の流れを示すフローチャートであり、この図に沿って説明する。
先ず、初期化処理部17は、変更データテーブル12の変更データテーブルIDインデックスに0を設定する(ステップST1)。変更データテーブルIDインデックスとは、変更データテーブル12とデバイス名変換表14a,14bのどのレコードにデータを挿入するかを示すインデックスである。変更データテーブルIDインデックスとしては、例えば各レコードにそれぞれ設定した通し番号が考えられる。
次に、初期化処理部17は、図10に示すように、データメモリ6から周期フラグを有するレコードを順に検出し、その周期フラグの値が0か否かを判定する(ステップST2)。ここで、周期フラグの値が0である場合、そのレコードのデータは周期に依存しないデータであるので、ステップST6の処理に移行する。ステップST6において、データメモリ6の全レコードを処理していないと判定された場合、初期化処理部17は、ステップST2に戻って、次のメモリアドレスに対応するレコードを処理する。
一方、周期フラグの値が0以外である場合、初期化処理部17は、この周期フラグに対応するメモリアドレスに該当する変更データテーブル12の変更フラグをオフ(デジタル値0を設定)とし、この周期フラグの値を周期カウントに設定する(ステップST3)。
続いて、初期化処理部17は、現在の変更データテーブルIDインデックスに対応するレコードのメモリアドレスを、デバイス名変換表14aの空きレコードに登録する(ステップST4)。この後、初期化処理部17は、現在の変更データテーブルIDインデックスの値をインクリメントする(ステップST5)。ステップST2からステップST5までの一連の処理は、ステップST6における判定処理によって、データメモリ6における周期フラグがある全てのレコードに対して実行される。
このようにして変更データテーブル12及びデバイス名変換表14aが作成されると、初期化処理部17は、バスを介してデバイス名変換表14aのデータを位置決め装置2へ送信し、同一内容をデバイス名変換表14bに設定する(ステップST7)。
なお、入力装置(不図示)を用いてデータ及びその周期フラグを初期化処理部17に指定することで、初期化処理部17が、データメモリ6内の該当するデータに周期フラグを設定して、変更データテーブル及びデバイス名変換表を作成するように構成してもよい。このようにすることで、ユーザが、データメモリ6内のデータに周期フラグを適宜設定することができる。
図12は、実施の形態1によるコントローラシステムの他の構成例での初期化処理を説明するための図である。図12に示すプログラマブルコントローラ1は、初期化処理部17を備えておらず、プログラマブルコントローラ1の外部に設けたプログラミング装置等の開発環境装置21が、開発者であるユーザにより記述されたユーザラダーコード21aを有するシーケンスプログラムに基づいて、変更データテーブル及びデバイス名変換表を作成する。ユーザラダーコード21aには、図8や図9に示したように周期フラグを設定することができる。
開発環境装置21は、例えばバスを介してプログラマブルコントローラ1と位置決め装置2に接続しており、作成した変更データテーブル及びデバイス名変換表をプログラマブルコントローラ1及び位置決め装置2に送信して、プログラマブルコントローラ1内の変更データテーブル12及びデバイス名変換表14aに書き込み、位置決め装置2内のデバイス名変換表14bに書き込む。
また、入力装置(不図示)を用いてデータ及びその周期フラグを開発環境装置21に指定することで、開発環境装置21が、データメモリ6内の該当するデータに周期フラグを設定して、変更データテーブル及びデバイス名変換表を作成するように構成してもよい。
(2)データライト処理
図13は、図1中のプログラマブルコントローラによるデータライト処理を説明するための図であり、データライト処理における各構成要素間でのデータの流れを矢印で示している。また、図14は、データライト処理の流れを示すフローチャートであり、この図に沿って説明する。
演算部4は、プログラムメモリ3から取得(フェッチ)したシーケンスプログラムの命令コードをデコードし、命令コードの内容に従った演算処理を実行する。この演算処理に生じた演算結果データは、演算部4からライト処理部5に出力される。ライト処理部5では、図13に示すように、演算部4から入力した演算結果データをデータメモリ6に書き込むとともに、演算結果データのうち、周期フラグを有するデータ及びそのアドレスデータ(メモリアドレスを示すデバイス番号)を変更データ書き換え処理部8へ出力する(ステップST1a)。
変更データ書き換え処理部8は、ライト処理部5から取得したメモリアドレスが変更データテーブル12にあるか否かを判定する(ステップST2a)。ここで、該当するメモリアドレスがない場合、データライト処理を終了する。
一方、変更データテーブル12に該当するメモリアドレスがある場合、変更データ書き換え処理部8は、そのメモリアドレスに対応するレコードの周期カウント値を変更データテーブル12から取得して、上記メモリアドレス、これに対応するデータ及び周期カウント値を周期カウントチェック処理部9へ出力する。
周期カウントチェック処理部9は、変更データ書き換え処理部8から取得した周期カウントの値から、この周期カウント値に対応するデータが今周期で位置決め装置2へ送信するデータであるか否かを判定する(ステップST3a)。ここで、今周期で位置決め装置2へ送信するデータではない場合(次周期以降に送信すべき非送信周期である場合)、周期カウントチェック処理部9は、この周期カウント値に対応するデータを変更データ書き換え処理部8へ出力する。
変更データ書き換え処理部8は、周期カウントチェック処理部9から非送信周期であると判定されたデータを取得すると、この判定結果を受けたデータで変更データテーブル12の対応するデータ内容を書き換え、このデータに対応する変更フラグをオンにする(ステップST4a)。
また、ステップST3aにおいて今周期で位置決め装置2へ送信するデータである(送信周期)と判定されると、周期カウントチェック処理部9は、この周期カウント値に対応するデータ及びそのメモリアドレスを周期送信用バッファデータ登録処理部10へ出力する。周期送信用バッファデータ登録処理部10では、周期カウントチェック処理部9からのデータに対応するデータIDをデバイス名変換表14aから取得し、このデータID及びそのデータを周期送信用バッファ11に登録する(ステップST5a)。
(3)補間周期信号の受信後処理及び周期送信用バッファ送信後処理
図15は、図1中のコントローラシステムによる補間周期信号の受信後処理、周期送信用バッファ送信後処理及び周期受信用バッファ受信時処理を説明するための図である。図15において、各処理における各構成要素間でのデータの流れを矢印で示している。また、図16は、補間周期信号の受信後処理及び周期送信用バッファ送信後処理の流れを示すフローチャートであり、この図に沿って説明する。
プログラマブルコントローラ1が補間周期信号を受信すると(ステップST1b)、図15に示すように周期送信バッファ送信処理部7及び変更データテーブル更新処理部13に入力される。周期送信バッファ送信処理部7では、補間周期信号を入力すると、周期送信用バッファ11に記憶された演算データ及びそのデータIDを、周期送信データとして位置決め装置2へ送信する(ステップST2b)。位置決め装置2では、このデータ及びデータIDを周期受信用バッファ18に格納する。
また、変更データテーブル更新処理部13は、上記補間周期信号を入力すると、変更データテーブル12の各レコードの周期カウント値を更新する(ステップST3b)。更新内容としては、周期カウント値をデクリメントする。ここまでの処理が補間周期信号の受信後処理に相当する。
周期送信完了チェック処理部16は、ステップST3bまでの処理が実行されると、周期送信バッファ送信処理部7及び変更データテーブル更新処理部13からの通知待ち状態に移行する。ここで、周期送信バッファ送信処理部7から周期送信用バッファ11内のデータ送信完了、及び、変更データテーブル更新処理部13から変更データテーブル12の周期カウント値の更新完了が通知されると、周期送信完了チェック処理部16は、その旨を次周期送信データコピー処理部15へ通知する(ステップST4b)。
次周期送信データコピー処理部15では、周期送信完了チェック処理部16から通知を受けると、変更データテーブル12の各レコードの周期カウント値をモニタし、今周期で位置決め装置2へ送信するデータがあるか否かを判定する。判定内容としては、周期カウント値が0になっているレコードを特定し、このレコードのデータを送信周期データと判定する。ここで、今周期で位置決め装置2へ送信するデータ(送信周期である)であると判定されると、次周期送信データコピー処理部15は、このデータ及びメモリアドレスを周期送信用バッファデータ登録処理部10へ出力する。
周期送信用バッファデータ登録処理部10は、次周期送信データコピー処理部15から取得したメモリアドレスでデバイス名変換表14aを検索して、このメモリアドレスに対応するデータIDを取得し、このデータIDとこれに対応するデータを周期送信用バッファ11に登録する(ステップST5b)。この登録処理の後、変更データテーブル更新処理部13は、周期送信用バッファデータ登録処理部10によって周期送信用バッファ11に登録されたデータに対応する変更データテーブル12の変更フラグをオフとし、その周期カウント値を初期値に戻す。ここまでの処理が周期送信用バッファ送信後処理に相当する。
なお、変更データテーブル12で送信周期にあるデータは、変更データ書き換え処理部8によって変更フラグがオンにされている。つまり、次周期送信データコピー処理部15は、今周期に送信すべきであって、かつ変更フラグがオンのデータ及びメモリアドレスを、周期送信用バッファデータ登録処理部10へ出力する。これにより、データ内容の書き換えが無く、位置決め装置2へ送信済みのデータを再度送信することがなく、データ内容の書き換えがあったデータのみを位置決め装置2へ送信することができる。
(4)周期受信用バッファ受信時処理
図17は、周期受信用バッファ受信時処理の流れを示すフローチャートであり、この図に沿って説明する。上述のようにして送信された周期送信データは、バスを介して位置決め装置2に受信され、周期受信用バッファ18に格納される(ステップST1c)。次に、周期データ解析処理部19は、受信されたレコード数分の周期送信データを周期受信用バッファ18から取得(データコピー)する(ステップST2c)。
続いて、周期データ解析処理部19は、上記周期送信データのレコードごとに内容を解析してデータ及びそのデータIDを抽出し、このデータIDに対応するメモリアドレスをデバイス名変換表14bから特定する(ステップST3c)。この後、周期データ解析処理部19は、特定したメモリアドレスに対応する位置決め装置用メモリ20の記憶領域に受信データを書き込む(ステップST4c)。
周期データ解析処理部19は、周期受信用バッファ18に格納された周期送信データの全レコードに対して、ステップST2cからステップST4cまでの処理がなされたかを判定する(ステップST5c)。ここで、全ての受信データについて処理がなされていれば、処理を終了する。一方、未処理のデータがある場合は、ステップST2cに戻って、ステップST2cからステップST4cまでの処理を繰り返す。
このように、プログラマブルコントローラ1及び位置決め装置2では、互いに同一のデバイス番号で、プログラマブルコントローラ1と位置決め装置2との間で送受されるデータのメモリアドレスを管理している。また、プログラマブルコントローラ1は、演算部4による演算の結果、変更データテーブル12で管理しているメモリアドレスに対応するデータに変更があったか否か及び位置決め装置2への送信周期のデータであるか否かをモニタし、送信周期のデータであると、デバイス名変換表14aを用いてメモリアドレスをデータIDに変換し、このデータIDとデータ内容を位置決め装置2へ送信する。位置決め装置2では、プログラマブルコントローラ1と同一内容のデバイス名変換表14bを用いて、受信データのデータIDからメモリアドレスを復元し、そのデータ内容を位置決め装置用メモリ20に書き込む。これにより、位置決め装置2では、送信周期(位置決め装置2側でプログラマブルコントローラ1からの周期送信データを用いて処理を補間する周期)で必要なデータを取得して処理を行うことができる。
以上のように、この実施の形態1によれば、プログラマブルコントローラ1が、演算部4の演算データ及びその周期フラグが格納されるデータメモリ3と、データメモリ3のメモリアドレスに対応付けて、演算部4の演算データ及びその周期フラグに基づく送信周期のカウント値が登録された変更データテーブル12と、データメモリ3のメモリアドレスとこれに対応するデータのデータIDが登録されたデバイス名変換表14aと、位置決め装置2へ送信する周期ごとに演算データ及びそのデータIDが、周期送信データとして格納される周期送信用バッファ11と、周期送信用バッファ11の内容を位置決め装置2へ送信する周期送信バッファ送信処理部7と、周期送信バッファ送信処理部7によって周期送信データが送信されるごとに、変更データテーブル12の送信周期のカウント値を更新する変更データテーブル更新処理部13と、位置決め装置2へ送信する演算データ及びそのメモリアドレスでデバイス名変換表14aから取得したデータIDを、周期送信データとして周期送信用バッファ11に格納する周期送信バッファデータ登録処理部10と、周期送信データの送信及び変更データテーブル12の送信周期のカウント値の更新がなされる度に、更新後の送信周期のカウント値に基づいて変更データテーブル12から次周期で送信する演算データを特定し、この演算データ及びそのメモリアドレスを周期送信データとして登録処理部へ通知する次周期送信データコピー処理部15とを有し、位置決め装置2が、制御対象機器の位置決めに用いるデータが格納される位置決め装置用メモリ20と、プログラマブルコントローラ1から受信した周期送信データが格納される周期受信用バッファ18と、位置決め装置用メモリ20のメモリアドレスとこれに対応するデータを識別するデータIDとが登録されたデバイス名変換表14bと、デバイス名変換表14bから取得した周期送信データのデータIDに対応するメモリアドレスに、制御対象機器の位置決めに用いるデータとして周期送信データを書き込む周期データ解析処理部19とを有するので、位置決め装置2が、制御対象機器の移動速度や位置を算出するタイミングで、その処理に必要なデータをプログラマブルコントローラ1から取得することができる。また、送信すべき周期になるまでデータ送信が行われないので、必要最小限のデータ送信で済み、プログラマブルコントローラ1と位置決め装置2の間の通信帯域の利用率を低減させることができ、他の通信用に帯域を空けることが可能である。これにより、通信オーバヘッドを抑制でき、位置決め装置2の応答遅延を低減することができる。
また、この実施の形態1によれば、変更データテーブル12に、データメモリ3のメモリアドレスに対応付けて、演算部4の演算データ及びその送信周期のカウント値に加え、演算データの書き換えの有無を示す変更フラグを登録し、プログラマブルコントローラ1が、演算部4の演算データに対応する送信周期のカウント値に基づいて、この演算データが今周期に位置決め装置2への送信すべきデータか否かを判定する周期カウントチェック処理部9と、演算部4の演算データのうち、周期カウントチェック処理部9により今周期に送信すべきと判定されたデータ及びそのメモリアドレスを、周期送信データとして周期送信バッファデータ登録処理部10へ通知するとともに、次周期以降に送信すべきと判定されたデータ内容で変更データテーブル12の対応するメモリアドレスのデータを書き換え、その変更フラグにデータ書き換え有りを示す値を設定する変更データ書き換え処理部8とを備え、変更データテーブル更新処理部13が、周期送信用バッファ11に周期送信データが格納されると、この周期送信データに対応する変更フラグにデータ書き換え無しを示す値を設定するので、データ内容の書き換えが無く、位置決め装置2へ送信済みのデータを再度送信することがなく、データ内容の書き換えがあったデータのみを位置決め装置2へ送信することができる。これにより、プログラマブルコントローラ1と位置決め装置2の間の通信帯域の利用率を低減させることができ、他の通信用に帯域を空けることが可能である。これにより、通信オーバヘッドを抑制でき、位置決め装置2の応答遅延を低減することができる。
さらに、この実施の形態1によれば、変更データテーブル更新処理部13が、位置決め装置2へのデータ送信周期を示す周期信号の入力に応じて、変更データテーブル12の送信周期のカウント値を減算するとともに、このカウント値に対応する演算データ及びデータIDが周期送信用バッファ11に格納されると、このカウント値にカウントの初期値を設定し、周期送信バッファデータ登録処理部10が、変更データテーブル更新処理部13による減算処理により変更データテーブル12の送信周期のカウント値が所定値(例えば、0)になると、このカウント値に対応する演算データ及びそのデータIDを周期送信用バッファ11に格納するので、ユーザがカウントの初期値を適宜指定してやることにより、特定のデータのみを所望の周期で位置決め装置2へ送信することができ、プログラマブルコントローラ1と位置決め装置2の間の通信帯域の利用率を低減できる。
さらに、この実施の形態1によれば、データメモリ3に格納された演算データの周期フラグの内容に基づいて、変更データテーブル12、デバイス名変換表14a,14bを作成するとともに、外部から指定された演算データ及びその周期フラグをデータメモリ3に格納する開発環境装置21を備えたので、ユーザが指定したデータのみを所望の周期で位置決め装置2へ送信することができ、プログラマブルコントローラ1と位置決め装置2の間の通信帯域の利用率を低減できる。
さらに、この実施の形態1によれば、データIDがメモリアドレスよりもデータサイズが小さいデータ形態であるので、プログラマブルコントローラ1と位置決め装置2の間の通信帯域の利用率を低減できる。
この発明の実施の形態1によるコントローラシステムの構成を示すブロック図である。 図1中のデータメモリの記憶内容を示す図である。 図1中の変更データテーブルの内容を示す図である。 図1中の周期送信用バッファの内容を示す図である。 図1中のデバイス名変換表の内容を示す図である。 図1中の位置決め装置用メモリの内容を示す図である。 図1中のプログラマブルコントローラと位置決め装置のデータ構成を示す図である。 実施の形態1によるコントローラシステムで扱われるユーザラダーコードの一例を示す図である。 実施の形態1によるコントローラシステムで扱われるユーザラダーコードの他の例を示す図である。 変更データテーブル及びデバイス名変換表の初期化処理を説明するための図である。 初期化処理の流れを示すフローチャートである。 実施の形態1によるコントローラシステムの他の構成例での初期化処理を説明するための図である。 図1中のプログラマブルコントローラによるデータライト処理を説明するための図である。 データライト処理の流れを示すフローチャートである。 補間周期信号の受信後処理、周期送信用バッファ送信後処理及び周期受信用バッファ受信時処理を説明するための図である。 補間周期信号の受信後処理及び周期送信用バッファ送信後処理の流れを示すフローチャートである。 周期受信用バッファ受信時処理の流れを示すフローチャートである。
符号の説明
1 プログラマブルコントローラ、2 位置決め装置、3 プログラムメモリ、4 演算部、5 ライト処理部、6 データメモリ、7 周期送信バッファ送信処理部(送信処理部)、8 変更データ書き換え処理部(書き換え処理部)、9 周期カウントチェック処理部、10 周期送信用バッファデータ登録処理部(登録処理部)、11 周期送信用バッファ、12 変更データテーブル、13 変更データテーブル更新処理部(更新処理部)、14a,14b デバイス名変換表(第1の変換表、第2の変換表)、15 次周期送信データコピー処理部(次周期処理部)、16 周期送信完了チェック処理部、17 初期化処理部、18 周期受信用バッファ、19 周期データ解析処理部(解析処理部)、20 位置決め装置用メモリ、21 開発環境装置(開発装置)、21a ユーザラダーコード。

Claims (6)

  1. シーケンスプログラムを格納するプログラムメモリと、前記シーケンスプログラムの命令コードの内容に従った演算を行う演算部とを有するプログラマブルコントローラと、前記プログラマブルコントローラから受信した前記演算部の演算データを用いて、制御対象機器を目標位置に位置決めする位置決め装置とを備えたコントローラシステムにおいて、
    前記プログラマブルコントローラは、
    前記演算部の演算データ及びこの演算データの前記位置決め装置への送信周期を示す周期フラグが格納されるデータメモリと、
    前記データメモリのメモリアドレスに対応付けて、前記演算部の演算データ及びその周期フラグに基づく送信周期のカウント値が登録された変更データテーブルと、
    前記データメモリのメモリアドレスとこれに対応するデータを識別するためのID番号が登録された第1の変換表と、
    前記位置決め装置へ送信する送信周期ごとに前記演算データ及びそのID番号が、周期送信データとして格納される周期送信用バッファと、
    前記周期送信用バッファの内容を前記位置決め装置へ送信する送信処理部と、
    前記プログラマブルコントローラから、前記位置決め装置が前記プログラマブルコントローラから受信したデータで処理内容を補間するタイミングを示す補間周期信号が入力されると、前記変更データテーブルの送信周期のカウント値を更新する更新処理部と、
    前記位置決め装置へ送信する演算データ及びそのメモリアドレスで前記第1の変換表から取得したID番号を、周期送信データとして前記周期送信用バッファに格納する登録処理部と、
    前記周期送信データの送信及び前記変更データテーブルの送信周期のカウント値の更新がなされる度に、更新後の送信周期のカウント値に基づいて前記変更データテーブルから次周期に送信する演算データを特定し、この演算データ及びメモリアドレスを周期送信データとして前記登録処理部に通知する次周期処理部とを有し、
    前記位置決め装置は、
    前記制御対象機器の位置決めに用いるデータが格納される位置決め装置用メモリと、
    前記プログラマブルコントローラから受信した周期送信データが格納される周期受信用バッファと、
    前記位置決め装置用メモリのメモリアドレスとこれに対応するデータのID番号とが登録された第2の変換表と、
    前記周期送信データのID番号に対応するメモリアドレスを前記第2の変換表から取得し、このメモリアドレスに前記周期送信データを書き込む解析処理部とを有することを特徴とするコントローラシステム。
  2. 更新処理部は、位置決め装置へのデータ送信周期を示す周期信号の入力に応じて、変更データテーブルの送信周期のカウント値を減算するとともに、このカウント値に対応する演算データ及びID番号が周期送信用バッファに格納されると、このカウント値にカウントの初期値を設定し、
    登録処理部は、前記更新処理部による減算処理により前記変更データテーブルの送信周期のカウント値が所定値になると、このカウント値に対応する演算データ及びそのID番号を前記周期送信用バッファに格納することを特徴とする請求項1記載のコントローラシステム。
  3. データメモリに格納された演算データの周期フラグの内容に基づいて、変更データテーブル、第1及び第2の変換表を作成するとともに、外部から指定された演算データ及びその周期フラグをデータメモリに格納する開発装置を備えたことを特徴とする請求項1または請求項2記載のコントローラシステム。
  4. ID番号は、メモリアドレスよりもデータサイズが小さいデータ形態であることを特徴とする請求項1から請求項のうちのいずれか1項記載のコントローラシステム。
  5. シーケンスプログラムを格納するプログラムメモリと、前記シーケンスプログラムの命令コードの内容に従った演算を行う演算部とを備えたプログラマブルコントローラにおいて、
    前記演算部の演算データ及びこの演算データの位置決め装置への送信周期を示す周期フラグが格納されるデータメモリと、
    前記データメモリのメモリアドレスに対応付けて、前記演算部の演算データ及びその周期フラグに基づく送信周期のカウント値が登録された変更データテーブルと、
    前記データメモリのメモリアドレスとこれに対応するデータを識別するためのID番号が登録された第1の変換表と、
    前記位置決め装置へ送信する送信周期ごとに前記演算データ及びそのID番号が、周期送信データとして格納される周期送信用バッファと、
    前記周期送信用バッファの内容を前記位置決め装置へ送信する送信処理部と、
    前記プログラマブルコントローラから、前記位置決め装置が前記プログラマブルコントローラから受信したデータで処理内容を補間するタイミングを示す補間周期信号が入力されると、前記変更データテーブルの送信周期のカウント値を更新する更新処理部と、
    前記位置決め装置へ送信する演算データ及びそのメモリアドレスで前記第1の変換表から取得したID番号を、周期送信データとして前記周期送信用バッファに格納する登録処理部と、
    前記周期送信データの送信及び前記変更データテーブルの送信周期のカウント値の更新がなされる度に、更新後の送信周期のカウント値に基づいて前記変更データテーブルから次周期に送信する演算データを特定し、この演算データ及びメモリアドレスを周期送信データとして前記登録処理部に通知する次周期処理部とを備えたことを特徴とするプログラマブルコントローラ。
  6. プログラマブルコントローラから受信した演算データを用いて、制御対象機器を目標位置に位置決めする位置決め装置において、
    前記制御対象機器の位置決めに用いるデータが格納される位置決め装置用メモリと、
    前記プログラマブルコントローラから自装置へ送信される送信周期ごとに受信した前記演算データ及びそのID番号を含む周期送信データが格納される周期受信用バッファと、
    前記位置決め装置用メモリのメモリアドレスとこれに対応するデータのID番号とが登録された第2の変換表と、
    前記周期送信データのID番号に対応するメモリアドレスを前記第2の変換表から取得し、このメモリアドレスに前記周期送信データを書き込む解析処理部とを備えたことを特徴とする位置決め装置
JP2007310841A 2007-11-30 2007-11-30 コントローラシステム Expired - Fee Related JP4823207B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007310841A JP4823207B2 (ja) 2007-11-30 2007-11-30 コントローラシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007310841A JP4823207B2 (ja) 2007-11-30 2007-11-30 コントローラシステム

Publications (2)

Publication Number Publication Date
JP2009134568A JP2009134568A (ja) 2009-06-18
JP4823207B2 true JP4823207B2 (ja) 2011-11-24

Family

ID=40866386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007310841A Expired - Fee Related JP4823207B2 (ja) 2007-11-30 2007-11-30 コントローラシステム

Country Status (1)

Country Link
JP (1) JP4823207B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109040336A (zh) * 2018-07-17 2018-12-18 格力电器(武汉)有限公司 一种查找工装的方法及装置
JP6882235B2 (ja) 2018-07-20 2021-06-02 ファナック株式会社 産業用機械の制御システム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01147999A (ja) * 1987-12-04 1989-06-09 Toshiba Corp データ伝送方式
JP2000339009A (ja) * 1999-05-31 2000-12-08 Omron Corp 位置決め制御ユニット、cpuユニット、並びに、プログラマブル・コントローラ・システム

Also Published As

Publication number Publication date
JP2009134568A (ja) 2009-06-18

Similar Documents

Publication Publication Date Title
CN111857820B (zh) 一种用于执行矩阵加/减运算的装置和方法
Zago et al. A quantitative performance study on CAN and CAN FD vehicular networks
US11061377B2 (en) Control device
JP5507317B2 (ja) マイクロコンピュータ及び割込み制御方法
JP4823207B2 (ja) コントローラシステム
WO2017185384A1 (zh) 一种用于执行向量循环移位运算的装置和方法
CN111158756B (zh) 用于处理信息的方法和装置
CN107133064A (zh) 原生应用的页面热更新方法及装置
CN110427551A (zh) 信息推送方法、装置、电子设备和计算机可读介质
US20040131074A1 (en) Method and device for managing transmit buffers
CN109074336A (zh) 用于对微控制器内的数据传输进行编程的系统和方法
JP2008059312A (ja) 制御装置およびその開発システム
JP2007102651A (ja) データ処理システム
JP7312002B2 (ja) 分散したソフトウェアコンポーネント間の通信におけるエラー処理のための方法および装置
CN111124499B (zh) 一种兼容多指令系统的处理器及其运行方法
EP3573342B1 (en) Multi-rate digital sensor synchronization
US20150205719A1 (en) Memory Control Circuit
KR102467544B1 (ko) 연산 장치 및 그 조작 방법
JP2011186918A (ja) データ転送回路及び方法
JP6053616B2 (ja) 表示部品制御システム
EP1999523B1 (en) Control and communication system including at least one automation unit
US7493619B1 (en) Methods for transmitting data between tasks of differing priority in a graphical modeling environment
CN116414550A (zh) 独立显卡及其任务管理方法、装置和电子设备
CN114116555A (zh) 直接存储器访问电路、操作方法及存取指令的产生方法
CN116471482A (zh) 摄影机器人系统的摄像机位姿转换方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110526

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110906

R150 Certificate of patent or registration of utility model

Ref document number: 4823207

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140916

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees