Comments
Description
Transcript
取扱説明書 - ニッタ株式会社
I ntelligent F orce S ensor レシーバーボード 取扱説明書 ニッタ株式会社 RETS事業部 センサーグループ 5907Cj1.4 マ ニ ュ ア ル の 概 観 ..........................................................................................................................1 マ ニ ュ ア ル の レ イ ア ウ ト ...........................................................................................................1 ま ず 最 初 に .................................................................................................................................1 ア ー キ テ ク チ ャ ー の 概 観 ...........................................................................................................2 D S P ベ ー ス 力 セ ン サ レ シ ー バ の デ ー タ ロ ケ ー シ ョン お よ び 定 義 ...........................................5 FORCE_SENSOR_DATA.............................................................................................................5 RAW_CHANNELS ......................................................................................................................5 COPYRIGHT ...............................................................................................................................5 SHUNTS ......................................................................................................................................6 DEFAULT_FS..............................................................................................................................6 LOAD_ENVELOPE_NUM ...........................................................................................................6 MIN_FULL_SCALE.....................................................................................................................6 TRANSFORM_NUM....................................................................................................................7 MAX_FULL_SCALE ...................................................................................................................7 PEAK_ADDRESS ........................................................................................................................7 FULL_SCALE..............................................................................................................................7 OFFSETS .....................................................................................................................................8 OFFSET_NUM.............................................................................................................................8 VECT_AXES ...............................................................................................................................8 FILTER0 ......................................................................................................................................8 FILTER1_FILTER6......................................................................................................................9 RATE_DATA ...............................................................................................................................9 MINIMUM_DATA .......................................................................................................................9 MAXIMUM_DATA......................................................................................................................9 NEAR_SAT_VALUE .................................................................................................................10 SAT_VALUE .............................................................................................................................10 RATE_ADDRESS ......................................................................................................................10 RATE_DIVISOR ........................................................................................................................10 RATE_COUNT ..........................................................................................................................10 COMMAND_WORD2 ................................................................................................................11 COMMAND_WORD1 ................................................................................................................11 COMMAND_WORD0 ................................................................................................................11 COUNT1_COUNT6....................................................................................................................11 ERROR_COUNT........................................................................................................................11 COUNT_X .................................................................................................................................12 WARNINGS...............................................................................................................................12 ERRORS ....................................................................................................................................12 THRESHOLD_BITS...................................................................................................................12 LAST_CRC ................................................................................................................................12 EEPROM_VER_NO ...................................................................................................................12 SOFTWARE_VER_NO ..............................................................................................................12 SOFTWARE_DAY .....................................................................................................................13 SOFTWARE_YEAR ...................................................................................................................13 SERIAL_NO ..............................................................................................................................13 MODEL_NO ..............................................................................................................................13 CAL_DAY .................................................................................................................................13 CAL_YEAR ...............................................................................................................................13 UNITS .......................................................................................................................................14 BITS ..........................................................................................................................................14 -- ii CHANNELS ...............................................................................................................................14 THICKNESS ..............................................................................................................................14 LOAD_ENVELOPES .................................................................................................................14 TRANSFORMS ..........................................................................................................................15 デ ー タ ス ト ラ ク チ ャ の 詳 細 .........................................................................................................16 RAW_CHANNEL.......................................................................................................................16 RAW_TIME ...........................................................................................................................16 RAW_DATA ..........................................................................................................................16 FORCE_ARRAY ........................................................................................................................17 SIX_AXIS_ARRAY ...................................................................................................................17 VECT_BITS ...............................................................................................................................18 WARNING_BITS .......................................................................................................................18 XX_NEAR_SAT.....................................................................................................................18 ERROR_BITS ............................................................................................................................19 XX_SAT ................................................................................................................................19 MEMORY_ERROR ................................................................................................................19 SENSOR_CHANGE ...............................................................................................................19 SYSTEM_BUSY ....................................................................................................................19 CAL_CRC_BAD ....................................................................................................................19 WATCH_DOG .......................................................................................................................20 WATCH_DOG2......................................................................................................................20 FORCE_UNITS ..........................................................................................................................20 THRESH_STRUCT ....................................................................................................................21 DATA_ADDRESS ..................................................................................................................21 THRESHOLD .........................................................................................................................21 BIT_PATTERN ......................................................................................................................21 LE_STRUCT ..............................................................................................................................21 LATCH_BITS ........................................................................................................................21 NUMBER_OF_GE_THRESHOLDS ........................................................................................22 NUMBER_OF_LE_THRESHOLDS ........................................................................................22 LINK_TYPES ............................................................................................................................23 TRANSFORM ............................................................................................................................24 C 言 語 入 門 ...................................................................................................................................25 コ マ ン ド の 詳 細 ............................................................................................................................27 コ マ ン ド 例 ( 0 ) ....................................................................................................................27 メ モ リ リ ー ド ( 1 ) ................................................................................................................28 メ モ リ ラ イ ト ( 2 ) ................................................................................................................28 ビ ッ ト セ ッ ト ( 3 ) ................................................................................................................29 ビ ッ ト リ セ ッ ト ( 4 ) .............................................................................................................30 座 標 変 換 番 号 ( 5 ) ................................................................................................................31 オ フ セ ッ ト 番 号 ( 6 ) .............................................................................................................32 セ ッ ト オ フ セ ッ ト ( 7 ) .........................................................................................................33 リ セ ッ ト オ フ セ ッ ト ( 8 ) .....................................................................................................34 セ ッ ト ベ ク ト ル ( 9 ) .............................................................................................................35 セ ッ ト フ ル ス ケ ー ル ( 1 0 ) .................................................................................................36 リ セ ッ ト ピ ー ク ( 1 1 ) .........................................................................................................37 リ ー ド ピ ー ク ( 1 2 ) .............................................................................................................38 コ マ ン ド の 使 用 例 ........................................................................................................................39 例 1 − ソ フ ト ウ ェ ア バ ー ジ ョ ン の 表 示 ..................................................................................39 例 2 − 計 算 後 の F x 力 デ ー タ の 表 示 ......................................................................................39 -- iii 例 3 − オ フ セ ッ ト の リ セ ッ ト .................................................................................................39 例 4 − F z の オ フ セ ッ ト 変 更 .................................................................................................40 例 5 − ベ ク ト ル の 設 定 .............................................................................................................40 例 6 − 座 標 変 換 ........................................................................................................................41 例 7 − 複 雑 な 座 標 変 換 .............................................................................................................41 例 8 − ロ ー ド エ ン ベ ロ ー プ .....................................................................................................42 デ ー タ ロ ケ ー シ ョ ン ....................................................................................................................43 コ マ ン ド 一 覧 ...............................................................................................................................44 用 語 の 説 明 ...................................................................................................................................45 処 理 速 度 に つ い て ........................................................................................................................46 I S A − 2 1 0 5 ........................................................................................................................48 -- iv マニュアルの概観 本マニュアルは、レシーバボードのセットアップ及び操作法を説明するものです。本マニュ アルの大部分は、各種レシーバボードに共通な情報を説明します。個別のレシーバボードに 対する情報は、付録において説明します。 本 概 観 は 3 つ の 項 か ら 成 り 立 っ て い ま す 。最 初 にマ ニ ュ ア ル の レ イ ア ウ ト を 、次 に 結 果 を 迅 速に得ていただくための、いくつかの提案をする”スタートの前に”を示します。最後に、 レ シ ー バ ボ ー ド の ア ー キ テ ク チ ャ ー の 概 観 を 示 し ます 。 マニュアルのレイアウト レシーバボードは、ユーザー及びボード自体がともに読み書きできるデュアルポートRAM を持っています。ボードは力モーメントデータをこのRAMに書き込みます。それからユー ザーは、このデータをRAMから読み込むことができます。本マニュアルでは、主にこの共 有領域を説明することになります。データ構造の宣言は、C言語スタイルコードでフォーマ ッ ト さ れ ま す 。 第 1 項 は「 デ ー タ ロ ケ ー シ ョ ン 及 び定 義 」で 5 ペ ー ジ か ら 始 ま り 、 変 数 の 宣 言 及 び 記 述 に つ い て 説 明 し ま す 。第 2 項「 デ ー タ ス ト ラ ク チ ャ の 定 義 」は 16 ペ ー ジ か ら 始 ま り、データ型宣言をします。このふたつの項のデータ宣言はC言語スタイルで示されます。 簡 単 な 「 C 言 語 入 門 」 を 25 ペ ー ジ に 示 し ま し た 。 次 の 項「 コ マ ン ド の 定 義 」は 27 ペ ー ジ か ら 始 ま り、ボ ー ド が 受 け 付 け 可 能 な コ マ ン ド を 説 明 しています。これらのコマンドは、いろいろなデータ位置とともに、レシーバボードによっ て な さ れ る タ ス ク を 変 更 す る た め に 使 わ れ ま す 。39 ペ ー ジ か ら は 、使 用 例 を 説 明 し ま す 。そ の後は、データ位置及びコマンドをまとめた表、用語の説明、性能に関する簡単な考案と続 き ま す 。 付 録 に は レ シ ー バ の 各 々 特 定 バ ー ジ ョ ン のデ ー タ を 示 し ま す 。 まず最初に 本 マ ニ ュ ア ル で ま ず 最 初 に 読 ん で い た だ き た いの は 、本 項 に 続 く「 ア ー キ テ ク チ ャ ー の 概 観 」 の項です。そこでは、レシーバボードの能力について考案しています。次に目を通していた だ き た い の は 、御 購 入 い た だ い た レ シ ー バ に 関 し 、説 明 し て い る 付 録 の 部 分 で す 。そ こ に は 、 ハードウェア及びソフトウェアからレシーバをどのようにインタフェースするかが示されて います。 も し も 、C 言 語 に 関 し て あ ま り 知 識 や 経 験 の ない 場 合 に は 、25 ペ ー ジ の「 C 言 語 入 門 」を 読 んで下さい。C言語の簡単な説明を読んだあとに、「データロケーション及び定義」の項、 及び「データストラクチャの定義」の項にざっと目を通して下さい。最後に、「コマンドの 定 義 」 の 項 及 び コ マ ン ド の 実 行 法 を 説 明 し た 「 使 用例 」 を 読 ん で 下 さ い 。 ボ ー ド と は じ め て 交 信 し よ う と す る と き に は 、 ア ド レ ス 0x0040 の 著 作 権 表 示 (copyright statement) 及 び ア ド レ ス 0x00ef の count_x 変 数 を 読 み 込 ん で 下 さ い 。 共 有 ア ド レ ス 空 間 か ら デ ー タ を 読 む こ と が で き る か ど う か が す ぐ に わ か り ま す 。ま た 、0x0088 の Fx オ フ セ ッ ト 変 数 に あ る 値 を 書 き 込 み 、そ れ か ら そ の 変 数 を 読 み込 ん で 下 さ い 。そ う す る と 共 有 ア ド レ ス 空間への書き込みが成功したかどうかがすぐに判ります。 -- 1 アーキテクチャーの概観 レ シ ー バ ボ ー ド に は 、6 自 由 度 (6DOF)の 力 及 び モ ーメ ン ト デ ー タ を 極 め て 広 い 帯 域 幅 で 取 得 可 能 と す る 最 新 技 術 が 用 い て ら れ て い ま す 。10 MipsDSP チ ッ プ で あ る ア ナ ロ グ デ バ イ セ ズ 社 の ADSP-2105 を 使 用 す る こ と に よ っ て 、 本 シ ス テ ム は 干 渉 除 去 さ れ 、 デ ジ タ ル フ ィ ル タ リ ン グ さ れ た デ ー タ を 1 チ ャ ネ ル あ た り 8KHz で 取 得可 能 に な り ま し た 。こ の デ ー タ 取 得 速 度 は、従来品に比べ10倍もの高速となりました。レシーバは内蔵電子回路を有する本センサ と協調して動作するように最適化されています。 レシーバボードには、IBM−ATバス、VMEバス、NEC−98バスを含む数種のバス に対応したバージョンがあります。これらのボードは共通のアーキテクチャーを持っていま す。レシーバボードはデュアルポートRAMを有し、ホスト及びボードの両方から読み書き ができます。このRAMは、ホストがボードからデータを、ほとんどオーバーヘッドなしに 読み込むことを可能にします。また、ホストがRAMにコマンドを書き込むことにより動作 中であってもボードの設定を変更することが出来ます。 レシーバボードには、センサからのシリアルデジタル転送データを受信する回路の他にセン サへの供給電圧をモニタし調節する回路が搭載されています。自動的に遠隔供給電圧調整が できるということは、センサケーブルに対する要求が極めてゆるくなるということを意味し ています。長くて、細いゲージワイヤも使用可能となります。したがって、この内蔵電子回 路 を 有 す る 最 新 の セ ン サ で は 、 も は や 硬 く て 高 価 なケ ー ブ ル は 必 要 あ り ま せ ん 。 デュアルポートアドレス空間は、16kの2バイトワードで構成されます。この空間の最初 の8kはRAMで、残りの8kはスタータスレジスタや他の機能を構成します。たいていの 仕事は、共有アドレス空間の最初の256ワードで行われます。共有アドレス空間の変数の 位 置 に つ い て は 、本 マ ニ ュ ア ル 5 ペ ー ジ の「 デ ー タ 位 置 及 び 定 義 」9 項 に 説 明 し て あ り ま す 。 共有アドレス空間への読み書きの詳細は、レシーバによってちがうので、付録に各々のレシ ーバについて別個に説明してあります。 DSPはセンサから送られてきた生データを処理するために使われます。DSPは、次のよ うな処理をします。オフセットの除去、干渉除去、飽和の検出、デジタルローパスフィルタ リング、力及びモーメントベクトルの大きさの計算、ピークの検出、レイトの計算、座標変 換 及び 閾値のモニタリングなどです。 セ ン サ か ら 出 力 さ れ た 生 デ ー タ は 、干 渉 除 去 マ ト リ ク ス を 通 過 し 、オ フ セ ッ ト 除 去 さ れ ま す 。 このプロセスにより風袋重量の除去とともに、センサのクロストークの除去がなされます。 こ の プ ロ セ ス を 経 由 し た デ ー タ で は 、 A/D 変 換器 が 飽 和 し て い る か ど う か の 判 断 が 難 し く な る こ と が あ り ま す 。 A/D 変 換 器 が 飽 和 す る と 、 力 デ ー タ を 用 い た フ ィ ー ド バ ッ ク ル ー プ は 不 安定になります。それを防止するために、DSPはセンサの生データをモニタし、飽和が近 づいたときや飽和したときにアラームを発生します。 干渉除去データは、カスケードローパスフィルタを通ります。各フィルタは4データ毎に計 算 さ れ 、 そ の カ ッ ト オ フ 周 波 数 は 前 の フ ィ ル タ の 1/4 の カ ッ ト オ フ 周 波 数 と な り ま す 。 し た が っ て サ ン プ ル レ イ ト が 8KHz の 標 準 セ ン サ で は 、 最 初 の フ ィ ル タ の カ ッ ト オ フ 周 波 数 は 500Hz と な り ま す 。さ ら に 続 く フ ィ ル タ の カ ッ ト オ フ周 波 数 は 、125Hz, 31.25Hz, 7.81Hz ---- と な り ま す 。 フ ィ ル タ の 遅 延 時 間 は 、 次 式 で 近 似 さ れま す 。 -- 2 遅 延 時 間 = 1 /カットオフ周 波 数 し た が っ て 500Hz の フ ィ ル タ の 遅 延 時 間 は 、 1 / 500Hz = 2 ms と な り ま す 。し か し 、遅 延 時 間 は デ ー タ の 周 波 数 に よ っ て 変 化 す る の で 、こ の 値 は 良 好 な 近 似値とはなりますが、正しい値ではありません。正確なフィルタ特性については、フィルタ 応答を示した添付図を参照して下さい。 力モーメントベクトルの大きさは各々のデータ成分から計算されます。したがって、ベクト ルにはフィルタリングされていない干渉除去データから計算されるものと、フィルタリング されたデータから計算されたものがあります。フィルタリングされていないベクトルは、フ ィルタリングされていないデータの2分の1の帯域幅で計算されます。フィルタリングされ たデータから計算されるベクトルは、フィルタのカットオフ周波数の4倍で計算され、フィ ル タ リ ン グ 計 算 の 1 /4 の 頻 度 で 計 算 さ れ ま す 。 どの単一のデータセット(8項目)でもピーク(極大)と谷(極小)をモニタすることがで きます。データは全帯域幅でモニタされ、新しく最大値、最小値が検出されるとストアされ ます。その最大値、最小値はユーザコントロール下で読み込みやリセットができます。ユー ザ設定間隔で、データセットの1次導関数も計算され、出力されます。 センサ軸の原点及び方向を変更するために、座標変換を行うことができます。この機能を使 うと、たとえばセンサ座標をツール座標に合わせることができるため、力制御に必要とされ る数学演算を非常に単純化することができます。 閾値もモニタできます。DSPにはユーザ設定閾値をデータがクロスしたときに、あるビッ トをトグルされる機能があります。ロードエンベロープ機能を使用することによって、非常 に小さいオーバーヘッドで複数個の閾値制御を行うことが出来ます。 次のグラフはデジタルフィルタの特性を示します。このグラフでは、最初の3つのフィルタ の応答を示しました。フィルタの出力は、そのカスケード特性のために、フィルタ周波数が 低下するにつれてわずかに変化します。 3 番 目 以 降 の フ ィ ル タ デ ー タ は 、本 質 的 に フ ィ ル タ#3 と 同 じ な の で 、こ こ で は 省 略 し ま し た 。 フ ィ ル タ #4∼ #6 で た だ ひ と つ ち が う の は 周 波 数 の 軸 を 順 次 フ ィ ル タ #3 の グ ラ フ を 出 発 点 と して4分の1する必要があるということです。 -- 3 図1 フィルタ1の特性図 図2 フィルタ2の特性図 図3 フィルタ3の特性図 -- 4 DSPベース力センサレシーバのデータロケーションおよび定義 次の情報は、DSPベース力センサレシーバのメモリインタフェースの詳細を示します。デ ータストラクチャー宣言は、”C言語”形式で表示しています。サポートするストラクチャ ー宣言は、データストラクチャー宣言に続きます。宣言はクーリエ型文字でタイプされ、他 の 記 述 と 区 別 し や す い よ う に し ま し た 。 reserved と 書 か れ た 領 域 は 、 ユ ー ザ ー に よ っ て 書 き 込 む こ と は で き ま せ ん 。 43 ペ ー ジ に 変 数 の 図 表 を 、 45 ペ ー ジ に 用 語 の 解 説 集 を 示 し ま し た 。 /* For the following structure definitions : int: signed 16 bit value unsigned int: unsigned 16-bit value bit fields are shown with the lsb first */ FORCE_SENSOR_DATA force_sensor_data ス ト ラ ク チ ャ ー は 、 レ シ ー バ ー ボ ー ド 上 の デ ー タ の レ イ ア ウ ト を 示 し ま す 。 示されたオフセットはDSPアドレス空間へのオフセットで、16ビット長のデータ空間用 です。したがって、メモリが一度に8ビットしかアドレスされないような環境では、オフセ ットは2倍する必要があります。 struct force_sensor_data { RAW_CHANNELS セ ン サ か ら 出 力 さ れ る 生 デ ー タ (raw data)を ス トア す る た め の 領 域 で す 。 raw_channel[16] raw_channels /* offset 0x0000 */ COPYRIGHT 著 作 権 の 公 示 を 含 ん だ null terminated ASCII 文 字 列 で す 。 int[0x0018] copyright; int[0x0008] reserved1; -- 5 /* offset 0x0040 */ /* offset 0x0058 */ SHUNTS センサのシャントデータが書き込まれています。回路外付型センサにはそのゲインを調整す る機能があります。この機能によって用途に適した分解能やダイナミックレンジが得られる よ う に ハ ー ド ウ ェ ア の フ ル ス ケ ー ル を 調 整 す るこ と が で き ま す 。本 機 能 を 有 す る セ ン サ で は 、 キャリブレーション時に各々のセンサチャンネルのゲインを、シャント抵抗を使って測定す ることが出来ます。シャント抵抗は、抵抗ブリッジのひとつの抵抗に並列に結合され、その ために生じる出力変化が測定されます。このデータをシャントデータと呼び、ここに記録さ れます。センサのゲインを変更しようとするときには、ここでシャント測定を行うことがで きます。DSPはキャリブレーションマトリックスにスケールをかけて、指示されたシャン トの読みに適合したゲインを求めます。もしも、シャントが0であると、センサはそのゲイ ンを変更することができません。センサゲインの変更、シャントデータの詳細については、 回路外付型センサマニュアルを参照してください。これらの値を発効させるためには、コマ ン ド (5) use tranform# (p.31) ま た は コ マ ン ド (10) set new full scales (p.36) を コ ー ル し な け ればなりません。 six_axis_array int[2] shunts; reserved2; /* offset 0x0060 */ /* offset 0x0066 */ DEFAULT_FS フルスケールを指定していない場合に用いられるフルスケールが書き込まれています。 six_axis_array int default_FS; reserved3; /* offset 0x0068 */ /* offset 0x006e */ LOAD_ENVELOPE_NUM 現在使用されているロードエンベロープの番号です。この値は、ロードエンベロープの設定 を行った後にセットして下さい。 int load_envelope_num; /* offset 0x006f */ MIN_FULL_SCALE 推奨する最小のフルスケールです。 こ の 値 は max_full_scale(p.7)と と も に 、 フ ル ス ケ ー ル を 設 定 す る た め の 適 切 な 値 を 決 定 す る のに役立ちます。ソフトウェアによりセンサのフルスケールを任意の値に設定することがで きます。しかし、フルスケールを適切に設定しないと不都合が起こる場合があります。フル スケールをあまりに低く設定すると、データはすぐに飽和してしまうし、ダイナミックレン ジも失われてしまいます。また、フルスケールを大きく設定しすぎると、データが右にシフ ト す る に し た が っ て 分 解 能 も な く な り 、 lsb も 失 わ れ て し ま い ま す 。 し た が っ て 、 最 大 フ ル スケールは分解能が失われない最大の値であり、最小フルスケールはデータがすぐに飽和し てしまわない値としなければなりません。これらの値は、新しい座標変換が計算されるとき に は 、い つ で も 計 算 さ れ ま す 。推 奨 最 大 値 が 推 奨 最 小 値 よ り も 小 さ い と い う こ と が あ り 得 ま す。これは、主に座標変換を使用したときにおこります。このような場合には、フルスケー -- 6 ル の 選 択 は ダ イ ナ ミ ッ ク レ ン ジ と 分 解 能 の 間 で の妥 協 点 と い う こ と に な り ま す 。通 常 は 分 解 能を優先して、推奨最大フルスケールを選択することをお勧めします。 警 告:フ ル ス ケ ー ル が 、推 奨 最 小 フ ル ス ケ ー ル の 0.4% よ り も 大 き い こ と 確 認 し て く だ さ い 。 こ の 値 よ り も フ ル ス ケ ー ル が 小 さ い と 誤 っ た 結 果 が出 ま す 。 six_axis_array int min_full_scale; reserved4; /* offset 0x0070 */ /* offset 0x0076 */ TRANSFORM_NUM 現 在 使 用 中 の 座 標 変 換 番 号 で す 。こ の 値 は 、コ マ ン ド (5)use transform # (p.31) 実 行 後 に 、D SPによってセットされます。 int transform_num; /* offset 0x0077 */ MAX_FULL_SCALE 推 奨 す る 最 大 の フ ル ス ケ ー ル で す 。詳 細 に つ い て は min_full_scale (p.6) の 項 を 参 照 し て 下 さ い。 six_axis_array int max_full_scale; reserved5; /* offset 0x0078 */ /* offset 0x007e */ PEAK_ADDRESS ここにはピークルーチンでモニタするデータのアドレスを書き込みます。この値はユーザに より設定されます。ピークルーチンはピーク値を示す8つの連続するアドレスをモニタしま す 。 ( 例 : フ ィ ル タ 3 の ピ ー ク 値 を 見 る た め に は 、こ の 値 を 0x00a8 に 設 定 し て 下 さ い 。 ) int peak_address; /* offset 0x007f */ FULL_SCALE 現在使用中のセンサフルスケールを示します。干渉除去されフィルタリングされたデータは 処 理 さ れ て い る の で 、 ±16384 が フ ル ス ケ ー ル に 等 し く な り ま す 。 使 用 す る 工 学 単 位 に つ い て は 、14 ペ ー ジ に 示 し ま す 。Fx, Fy, Fz, Mx, My 及 び Mz の フ ル ス ケ ー ル は 、コ マ ン ド (10) set new full scale (p.36) を 呼 び 出 す 前 に 書 き 込 む こと が で き ま す 。V1, V2 の フ ル ス ケ ー ル は あ る 軸のフルスケールが変更されるか、またはベクトルを計算に使用する軸が変更されるときに 設 定 さ れ ま す 。V1, V2 の フ ル ス ケ ー ル は 常 に 、各 々 の ベ ク ト ル に 使 用 さ れ る 軸 の う ち で 最 大 のフルスケールに等しくなります。 force_array -- full_scale; 7 /* offset 0x0080 */ OFFSETS センサのオフセットが書き込まれています。これらの値は干渉除去データを得るためにセン サ デ ー タ か ら 引 か れ ま す 。オ フ セ ッ ト は キ ャ リ ブ レー シ ョ ン デ ー タ が 受 け 取 ら れ て か ら 数 秒 間( < 1 0 )で セ ッ ト さ れ ま す 。オ フ セ ッ ト は 出 力デ ー タ が ゼ ロ に な る よ う に 設 定 さ れ ま す 。 こ れ ら の 値 は 書 き 込 み も 読 み 込 み も で き ま す 。DS P は 書 き 込 ま れ た 値 を 、書 き 込 み 後 2ms 以内で使用することが出来ます。干渉除去データをゼロにするためには、この値を現在の干 渉除去データに加えて、その和を設定するようにして下さい。DSPは、新しい座標変換が 適 用 さ れ た と き に こ れ ら の 値 を 変 更 し ま す 。オ フ セ ッ ト が Fx は 5 で 、他 の す べ て が ゼ ロ に 設 定 さ れ て い る と 、Z 軸 に つ い て の 9 0 °回 転 後 に は、Fy が 5 で 他 の す べ て は ゼ ロ に な り ま す 。 six_axis_array offsets; /* offset 0x0088 */ OFFSET_NUM 現 在 使 用 中 の オ フ セ ッ ト 番 号 を 示 し ま す 。こ の 値 は、use offset # コ マ ン ド (p.32) が 実 行 さ れ て 後 、 D S P に よ っ て 設 定 さ れ ま す 。 そ の 値 は 0 ∼ 15 で す 。 int offset_num; /* offset 0x008e */ VECT_AXES ベ ク ト ル 計 算 に ど の 軸 が 使 わ れ て い る か を 示 す ビ ッ ト マ ッ プ で す 。 set vector axes コ マ ン ド (p.35)が 実 行 さ れ た 後 に D S P に よ り 設 定 さ れ ま す。 vect_bits vect_axes; /* offset 0x008f */ FILTER0 干渉除去されているがフィルタリングされていないデータを示します。この値はオフセット 除去されています。 force_array -- filter0; /* offset 0x0090 */ 8 FILTER1_FILTER6 フィルタリングされたデータです。干渉除去されたデータはカスケードローパスフィルタを 通 過 し ま す 。 filter 1 の カ ッ ト オ フ 周 波 数 は セ ン サ の サ ン プ ル レ イ ト の 1/16 で す 。 8KHz の サ ン プ ル レ イ ト の セ ン サ で は 、 filter1 の カ ッ ト オ フ 周 波 数 は 500Hz に な り ま す 。 以 後 の フ ィ ル タ で は 、 カ ッ ト オ フ 周 波 数 は 125Hz, 31.25Hz, 7.813Hz, 1.953Hz, 0.4833Hz と な り ま す 。 force_array force_array force_array force_array force_array force_array filter1; filter2; filter3; filter4; filter5; filter6; /* /* /* /* /* /* offset offset offset offset offset offset 0x0098 0x00a0 0x00a8 0x00b0 0x00b8 0x00c0 */ */ */ */ */ */ RATE_DATA 計 算 さ れ た レ イ ト デ ー タ で す 。こ れ は 1 次 導 関 数 で す 。変 数 rate_divisor(p.10) に よ り 指 定 さ れ た 周 期 で 計 算 さ れ ま す 。 レ イ ト が 計 算 さ れ る デ ータ は 変 数 rate_address に 示 さ れ ま す 。 force_array rate_data; /* offset 0x00c8 */ MINIMUM_DATA MAXIMUM_DATA 最 小 デ ー タ 値 、最 大( ピ ー ク )デ ー タ 値 で す 。D S P は セ ン サ の 全 帯 域 で 最 小 値 及 び 最 大 値 を示す8つの連続するデータをモニタできます。この領域は、ユーザリクエストによっての み 更 新 さ れ ま す 。い か な る ピ ー ク も 見 逃 さ な い よ うに 実 行 さ れ ま す 。デ ー タ を 読 む た め に は 、 read peaks コ マ ン ド (p.38) 又 は read and reset peaks コ マ ン ド (p.37) を 使 っ て 下 さ い 。ピ ー ク データは座標変換やフルスケール変更の実行時に消失します。また、新しいセンサをプラグ インしたときにも失われます。 force_array force_array -- minimum_data; maximum_data; 9 /* offset 0x00d0 */ /* offset 0x00d8 */ NEAR_SAT_VALUE SAT_VALUE 生データの飽和を判断する基準値が書き込まれています。干渉除去やオフセット除去後の処 理データからセンサが飽和しているかどうかを判断することは困難なことです。これらの値 は error and warning words (p.12) と と も に 、 こ の よ う な 重 要 な 情 報 を 与 え て く れ ま す 。 こ れ らの2つの値はDSPによって設定されます。飽和検出ロジックでは、生データの絶対値を 使 っ て い る の で こ れ ら の 値 は 正 符 号 の 値 と な り ま す。デ フ ォ ル ト 状 態 で は 、near_sat_value は A/D 変 換 器 の フ ル ス ケ ー ル の 約 8 0 % (26214)に 設 定 さ れ 、sat_value は A/D 変 換 器 の フ ル ス ケールに設定されています。 sat_value = 32768-2^(16-ADC bits) int int near_sat_value; sat_value; /* offset 0x00e0 */ /* offset 0x00e1 */ RATE_ADDRESS RATE_DIVISOR RATE_COUNT レ イ ト 計 算 を コ ン ト ロ ー ル す る た め の デ ー タ を 含 ん で い ま す 。 rate_address は レ イ ト 計 算 に 用いるデータのアドレスです。DSPは、8つの連続する値に対するレイトを計算します。 ( 例 filter3 デ ー タ の レ イ ト を 計 算 す る に は 、rate_address を 0x00a8 に セ ッ ト し て 下 さ い 。) rate_divisor は レ イ ト を ど れ く ら い の 頻 度 で 計 算 す る か を 示 し ま す 。rate_divisor が 1 な ら 、 レ イ ト は セ ン サ の 全 帯 域 幅 で 計 算 さ れ ま す 。rate_divisor が 200 な ら 、レ イ ト は 200 サ ン プ ル 毎 に 計 算 さ れ ま す 。rate_divisor は 1∼ 65536 の間 の 値 を と る こ と が で き ま す 。65536 サ ン プ ル 毎 に レ イ ト を 計 算 す る た め に は 、rate_divisor を 0 に セ ッ ト し て 下 さ い 。rate_count は 0 で ス タ ー ト し 、 そ の 値 が rate_divisor に 等 し く な る ま で カ ウ ン ト し ま す 。 そ の 時 点 で レ イ ト は 計 算 さ れ 、rate_count は 0 に リ セ ッ ト さ れ ま す。新 し い レ イ ト デ ィ バ イ ザ (rate divisor) を セ ッ ト す る と き に 、 レ イ ト デ ィ バ イ ザ よ り も 1 小 さ い 値 を rate_count に セ ッ ト す る の は 良 い方法です。こうすると、レイト計算をスタートさせるための時間を最小にできます。 int unsigned int unsigned int -- rate_address; rate_divisor; rate_count; 10 /* offset 0x00e2 */ /* offset 0x00e3 */ /* offset 0x00e4 */ COMMAND_WORD2 COMMAND_WORD1 COMMAND_WORD0 DSPにコマンドを送るために使われるロケーションです。この使い方はコマンドによって 異 な り ま す の で 、 詳 し く は コ マ ン ド の 定 義 ( Command Definitions,p.27) の 項 を 参 照 し て 下 さ い 。 一 般 的 に は 、 値 を い ろ い ろ な メ モ リ ロ ケ ー シ ョ ン に 入 れ て か ら 、 command word を command_word0 に 入 れ ま す 。D S P は コ マ ン ド を 処 理 し 、エ ラ ー が な け れ ば command_word0 に 0 を 、 エ ラ ー が 起 こ っ た 場 合 に は 負 の 数 を 入 れ ます 。 コ マ ン ド ロ ケ ー シ ョ ン は そ の 数 と は 逆 に な っ て い ま す の で 注 意 し て 下 さ い 。( つ まり 、command_word2 は command_word1 の 前 に来ます。) int int int command_word2; command_word1; command_word0; /* offset 0x00e5 */ /* offset 0x00e6 */ /* offset 0x00e7 */ COUNT1_COUNT6 対 応 す る フ ィ ル タ が 計 算 さ れ る 毎 に イ ン ク リ メン ト さ れ る 符 号 な し カ ウ ン タ で す 。 Filter1 は セ ン サ デ ー タ の 帯 域 幅 で 計 算 さ れ ま す 。 従 っ てこ の カ ウ ン タ は 、 標 準 セ ン サ で は 8KHz で イ ン ク リ メ ン ト さ れ ま す 。 残 り の カ ウ ン タ は そ の 前 のカ ウ ン タ の 1/4 の 間 隔 で イ ン ク リ メ ン ト さ れ る の で 、 2KHz, 500Hz, 125Hz ---- で カ ウ ン ト す る こ と に な り ま す 。 unsigned unsigned unsigned unsigned unsigned unsigned int int int int int int count1; count2; count3; count4; count5; count6; /* /* /* /* /* /* offset offset offset offset offset offset 0x00e8 0x00e9 0x00ea 0x00eb 0x00ec 0x00ed */ */ */ */ */ */ ERROR_COUNT データ受取エラーのカウントです。このカウンタが急激に変化している場合には、センサケ ーブルの接続不良またはその他のハードウェアに問題がある可能性があります。たいていの 実 装 状 況 で は 、error_count は 全 く 変 化 し な い は ず で す 。し か し 、極 め て 雑 音 の 多 い 環 境 で は 、 ハードウェアに問題がない場合でも時々エラーが発生することがあります。この様な環境の も と で も 、セ ン サ が 完 全 に グ ラ ウ ン ド さ れ て い れ ば 多 く の 場 合 エ ラ ー を 防 ぐ こ と が 出 来 ま す 。 カウンタがエラーを検出した場合には、そのサンプルデータは無視されます。 unsigned int -- error_count; 11 /* offset 0x00ee */ COUNT_X DSPがそのジョブキューをサーチし、実行すべきものがない場合にインクリメントされる カウンタです。DSPが使用可能なアイドルタイムの総量を示します。またDSPが正常に 動 作 し て い る か ど う か を 判 断 す る た め に も 使 用 で きま す 。 unsigned int count_x; /* offset 0x00ef */ WARNINGS ERRORS 各 々 warning bits, error bits が 書 き 込 ま れ て い ます 。こ れ ら の 2 ワ ー ド の フ ォ ー マ ッ ト に つ い て は 19 ペ ー ジ で 説 明 し ま す 。 warning_bits error_bits warnings; errors; /* offset 0x00f0 */ /* offset 0x00f1 */ THRESHOLD_BITS ロードエンベロープのモニタ結果を出力するワードです。詳細については load_envelopes(p.14) 及 び thresh_struct(p.21) を 御 参 照 下 さ い 。 int threshold_bits; /* offset 0x00f2 */ LAST_CRC 実 際 に 計 算 さ れ た CRC を 示 す 値 で す 。CRC は Cydlic Redundancy Code の 略 称 で す 。こ れ は ゼ ロ で あ る は ず で す 。 詳 し く は 、 cal_crc_bad の 説 明(p.19)を 御 参 照 下 さ い 。 int last_crc; /* offset 0x00f3 */ EEPROM_VER_NO SOFTWARE_VER_NO eeprom_ver_no は セ ン サ の EEPROM の バ ー ジ ョ ンナ ン バ ー が 書 き 込 ま れ て い ま す 。 EEPROM の バ ー ジ ョ ン ナ ン バ ー は 0 か ら 255 の 間 で す 。 software_ver_no は ソ フ ト ウ ェ ア の バ ー ジ ョ ン ナ ン バ ー が 書 き 込 ま れ て い ま す 。 バ ー ジ ョ ン 3.02 は 302 と し て ス ト ア さ れ ま す 。 int int -- eeprom_ver_no; software_ver_no; 12 /* offset 0x00f4 */ /* offset 0x00f5 */ SOFTWARE_DAY SOFTWARE_YEAR D S P を 動 作 さ せ て い る ソ フ ト ウ ェ ア の リ リ ー ス 日 を 示 し ま す 。 day は 日 で 、 う る う 年 で な い 年 で は 、 1 月 1 日 は 1 、 1 2 月 3 1 日 は 3 65 と し て 表 示 し ま す 。 int int software_day; software_year; /* offset 0x00f6 */ /* offset 0x00f7 */ SERIAL_NO MODEL_NO センサのシリアル番号及びモデル番号です。 unsigned int unsigned int serial_no; model_no; /* offset 0x00f8 */ /* offset 0x00f9 */ CAL_DAY CAL_YEAR セ ン サ を キ ャ リ ブ レ ー シ ョ ン し た 日 を 示 し ま す 。day は 日 で 、う る う 年 以 外 の 場 合 、1 月 1 日は1、12月31日は365と表示されます。 int int -- cal_day; cal_year; 13 /* offset 0x00fa */ /* offset 0x00fb */ UNITS BITS CHANNELS units は 、セ ン サ の フ ル ス ケ ー ル を 示 す た め に 用 い られ る 工 学 単 位 を 定 義 す る も の で す 。こ れ ら の 値 の 意 味 は force_units structure(P.20) の 項 で 説 明 し ま す 。 bits は 、 セ ン サ に 使 用 さ れ て い る A/D 変 換 器 の 分 解 能 を 示 し ま す 。 channels は 、 セ ン サ の ど の チ ャ ン ネ ル が 送 信 可 能 か を 示 す ビ ッ ト フ ィ ー ル ド で す 。 bit 0 が ア ク テ ィ ブ で あ れ ば 、セ ン サ は channel 0 を 送 信 で き、bit13 が ア ク テ ィ ブ で あ れ ば 、channel 13 を送信できるということです。このビットは、センサがその対応するチャンネルを送信して い な く て も ア ク テ ィ ブ に な り 得 ま す 。 あ る セ ンサ で は ど の チ ャ ン ネ ル を 送 る か を 設 定 で き 、 こ の ビ ッ ト フ ィ ー ル ド は 送 信 可 能 な チ ャ ン ネ ル の情 報 を 含 む だ け で 、現 在 の コ ン フ ィ ギ ュ レ イションに関する情報は含んでいません。どのチャンネルが現在送信されているかを見るた め に は 、 raw_channel array (p.5) の 中 の raw_time fields (p.16) を モ ニ タ し て 下 さ い 。 時 間 が 周期的に変化しておれば、そのチャンネルは受信しているということになります。 force_units int int units; bit; channels; /* offset 0x00fc */ /* offset 0x00fd */ /* offset 0x00fe */ THICKNESS フ ラ ン ジ か ら フ ラ ン ジ ま で の セ ン サ の 全 厚 み を 示 し ま す 。厚 み の 工 学 単 位 は units(p.14)に 書 き込まれた単位です。この値を用いると、センサ中心からフランジ面への座標変換が容易に 行えます。 int thickness; /* offset 0x00ff */ LOAD_ENVELOPES ロードエンベロープを記述するためのテーブルです。このテーブルには16個のロードエン ベロープスロットの設定が可能です。各スロットは16ワードの大きさがあり、0−15の 番号がつけられています。各々のロードエンベロープはスロットの始めから書き始める必要 がありますが、そのスロットを最後まで満たす必要はありません。また、ひとつのロードエ ンベロープをひとつのスロットよりも大きくする事も可能です。本ソフトウェアでは50の 閾値をアクティブにした状態で満足に動作することが確認されています。この様な大きさの ロードエンベロープは16のスロットのうちの4つを占有します。ロードエンベロープのデ ータは、DSPにとって最も効率のよい配列でレイアウトされます。構造の詳細については le_struct structure の 定 義 の 項 (p.21) を 参 照 し てく だ さ い 。 le_struct[0x10] -- load_envelopes; 14 /* offset 0x0100 */ TRANSFORMS 座標変換の情報を記述するためのテーブルです。このテーブルには16個の座標変換スロッ トの設定が可能です。各スロットは16ワードの大きさがあり、0−15の番号がつけられ ています。各々の座標変換はスロットの始めから書き始める必要がありますが、そのスロッ トを最後まで満たす必要はありません。また、ひとつの座標変換はひとつのスロットよりも 大 き く す る こ と が で き ま す 。ひ と つ の 座 標 変 換 の 長さ は 2 *( リ ン ク )+ 1 ワ ー ド と な り ま す 。 したがって、ひとつのスロットは7リンクの座標変換を含むことができ、2スロットでは1 5 リ ン ク の 座 標 変 換 を 含 む こ と が で き ま す 。配 列 の詳 細 に つ い て は 、transform structure の 定 義 の 項 (p.24) を 参 照 し て く だ さ い 。 transform[0x10] transforms; }; -- 15 /* offset 0x0200 */ データストラクチャの詳細 RAW_CHANNEL raw data( 生 デ ー タ )は 、D S P に よ り 容 易 に 迅 速 な 処 理 が で き る よ う な フ ォ ー マ ッ ト で ス ト ア さ れ ま す 。raw_channel structure は 、単 一 の デ ー タ の フ ォ ー マ ッ ト を 示 し て い ま す 。各 チ ャ ンネルは4ワード占有します。 RAW_TIME raw_time は 、 各 チ ャ ン ネ ル 毎 の デ ー タ が 受 信 さ れ た 時 点 で の 、 D S P 内 部 ク ロ ッ ク に よ る 時 間 を 示 す 数 字 で す 。ク ロ ッ ク は 、D S P の サ イク ル タ イ ム の 1/10 で 動 い て い ま す 。D S P は 最 も 遅 い も の で 10Mhz で 動 作 し て い ま す 。 し たが っ て 、 10Mhz の D S P で は raw_time の ク ロ ッ ク は 1Mhz で す 。 RAW_DATA raw_data は 、 セ ン サ か ら 受 け 取 っ た ま ま の デ ータ で す 。 こ こ に は 1 6 チ ャ ン ネ ル の デ ー タ が 表示されています。チャンネル0は、センサにおける励起電圧を示しています。これは、ケ ーブルの長さなどの影響による電圧の降下を補正するために使用します。チャンネル1∼6 にはクロストークを含んだFxからMzのデータが表示されます。チャンネル7にはセンサ のキャリブレーションデータが表示されます。チャンネル8∼15は特殊品のセンサのみに 使用されます。 struct raw_channel { unsigned int int int[2] }; -- raw_time; raw_data; reserved; 16 FORCE_ARRAY force_array ス ト ラ ク チ ャ は 、 干 渉 を 除 去 し フ ィル タ リ ン グ し た 後 の 力 デ ー タ の レ イ ア ウ ト を 示すものです。 struct force_array { int fx; int fy; int fz; int mx; int my; int mz; int v1; int v2; }; SIX_AXIS_ARRAY six_axis_array ス ト ラ ク チ ャ は 、 オ フ セ ッ ト と フ ル ス ケ ー ル の レ イ ア ウ ト を 示 し て い ま す 。 struct six_axis_array { int fx; int fy; int fz; int mx; int my; int mz; }; -- 17 VECT_BITS vect_bits ス ト ラ ク チ ャ は 、ベ ク ト ル 計 算 に ど の 軸 を用 い る の か を 示 す た め の レ イ ア ウ ト で す 。 各 ビ ッ ト は 、 ひ と つ の 軸 の 選 択 す る こ と を 意 味 し ます 。 fx bit は 、 1 6 進 数 の 0x0001 に 対 応 し 、 mz bit は 0x0020 に 対 応 し ま す 。 た と え ば fx,fy,mx,my と い う 軸 を 使 用 す る に は 、 0x002b ということになります。ベクトル1のデフォルトは力ベクトルであり、ベクトル2のデフォ ル ト は モ ー メ ン ト ベ ク ト ル で す 。こ の デ フ ォ ル ト を変 更 す る こ と も 可 能 で す 。V1 bit、あ る い は V2 bit を 変 更 す る と 、各 ベ ク ト ル は デ フ ォ ル ト の逆 に な り ま す 。つ ま り 、V1 に 1 を セ ッ ト することによって両方をモーメントベクトルにすることが出来ます。 struct vect_bits { unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned }; fx : 1; fy : 1; fz : 1; mx : 1; my : 1; mz : 1; changeV1 : 1; changeV2 : 1; reserved : 8; WARNING_BITS warning_bits ス ト ラ ク チ ャ は 、 警 告 を 与 え る ワ ー ド で あ り ビ ッ ト パ タ ー ン で 表 示 し ま す 。 bit0(lsb)か ら bit15(msb)を 用 い て 表 示 し ま す 。 XX_NEAR_SAT xx_near_sat bits は 、 そ こ に 示 さ れ た 軸 が 飽 和 値 近 辺に ま で 到 達 し た か 、 あ る い は そ れ を 越 え たことを示しています。 struct warning_bits { unsigned unsigned unsigned unsigned unsigned unsigned unsigned }; -- fx_near_sat : 1; fy_near_sat : 1; fz_near_sat : 1; mx_near_sat : 1; my_near_sat : 1; mz_near_sat : 1; reserved : 10; 18 ERROR_BITS XX_SAT MEMORY_ERROR SENSOR_CHANGE error_ bits ス ト ラ ク チ ャ は 、 エ ラ ー を 示 す ワ ー ド で あ り 、 ビ ッ ト パ タ ー ン で 表 示 し ま す 。 bit0(lsb)か ら bit15(msb)を 用 い て 表 示 し ま す 。xx_sat bits は 、そ こ に 示 さ れ た 軸 が 飽 和 値 に 至 っ た 、あ る い は そ れ を 越 え た と い う こ と を 示 し て い ま す 。memory_error bit は 、電 源 投 入 時 に ボ ー ド 上 の R A M に 問 題 が 検 出 さ れ た こ と を 示 し ます 。sensor_change bit は 、先 に 接 続 さ れ て いたものとは別のセンサがCRCチェックをパスしたということを示しています。このビッ トはラッチされますので、リセットして下さい。 SYSTEM_BUSY system_busy bit は 、 D S P が B U S Y 状 態 に あり 、 力 デ ー タ を 計 算 で き な い 状 態 に あ る こ と を 示 し ま す 。新 し い 座 標 変 換 や フ ル ス ケ ー ル が 変 更さ れ る と 、こ の よ う な こ と が 起 こ り ま す 。 安定するまでには約4msを必要としますので、高速で力フィードバック制御をおこなって いる場合にはご注意下さい。新しいセンサが接続された場合にもシステムがCRCを再計算 するためにこのビットがアクティブになります。 CAL_CRC_BAD cal_crc_bad bit は 、 C R C 計 算 の 結 果 が 0 に な ら な か っ た こ と を 示 し ま す 。 C R C と は Cyclic Redundancy Code ( 巡 回 冗 長 符 号 )の 略 称 で 、デ ー タ コ ミ ュ ニ ケ ー シ ョ ン においてデータの一致性を決定する方法です。本システムでは力データとともにセンサ中の ROMに記録されているキャリブレーションデータがDSPに送られています。キャリブレ ーションデータの最後にはCRCが付加されており、センサから受け取ったキャリブレーシ ョンデータの一致性を決定することを支援します。CRCが0にならない場合は二つの原因 が考えられます。ひとつめは、全てのキャリブレーションデータを受信していないとき、ふ たつめは、キャリブレーションデータそのものが正しくなかったときです。通常、センサは 1秒間に30セット以上のキャリブレーションデータを送信しています。従って、センサを 起動して数秒経過してもCRCが0にならない場合にはセンサのキャリブレーションデータ に問題があるということです。 -- 19 WATCH_DOG WATCH_DOG2 watch_dog 及 び watch_dog2 bits は 、 プ ロ セ ッ サ で は な く セ ン サ の ウ ォ ッ チ ド ッ グ で す 。 watch_dog は セ ン サ ケ ー ブ ル 中 の デ ー タ ラ イ ン を 監 視 す る も の で あ り 、 watch_dog2 は デ ー タ ラ イ ン と ク ロ ッ ク ラ イ ン を 監 視 す る も の で す 。 watch_dog が 異 常 を 示 さ な く と も watch_dog2 が異常を示す可能性もあります。この場合はデータラインは正常で、クロックラインに異常 が 生 じ て い る こ と を 示 し て い ま す 。両 方 の watch dog が 異 常 を 示 し た 場 合 に は デ ー タ は 正 常 に 受信できていないことになります。 struct error_bits { unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned }; fx_sat : 1; fy_sat : 1; fz_sat : 1; mx_sat : 1; my_sat : 1; mz_sat : 1; reserved : 4; memory_error : 1; sensor_charge : 1; system_busy : 1: cal_crc_bad : 1; watch_dog2 : 1; watch_dog : 1; FORCE_UNITS force_units に は 、 セ ン サ に 使 用 し て い る 単 位 を 列 挙 し て い ま す 。 ( 1 台 の セ ン サ に 使 用 さ れ ているのはこの中のどれかひとつです。) 0 1 2 3 - lbs_in-lbs_mils: pound, inch*pound, inch*1000 N_Nm*10_mm*10: Newton, Newton*meter*10, mm*10 kgf*10_kgfcm_mm*10: kilogram-force*10, kilogram-Force*cm, mm*10 klbs_kin-lbs_mils: kilopound, kiloinch*pound, inch*1000 enum force_units { lbs_in-lbs_mils, N_dNm_mm10, kgf*10_kgFcm_mm10 klbs_kin-lbs_mils reserved_units_4 reserved_units_5 reserved_units_6 reserved_units_7 }; -- 20 THRESH_STRUCT thresh_struct は 、 ロ ー ド エ ン ベ ロ ー プ 内 の 一 組 の 閾 値 の レ イ ア ウ ト を 示 す ス ト ラ ク チ ャ で す 。 各ロードエンベロープにはいくつかのストラクチャを含むことが出来ます。 DATA_ADDRESS data_address は 、そ の 閾 値 の た め の デ ー タ ア ド レ ス で す 。閾 値 は ど の デ ー タ に も 設 定 す る こ と が出来ます。フィルタをかけた力データやフィルタをかけていない力データをモニタするこ とも出来ると同時に、生データ、レイトデータ、カウンタ、あるいはエラーや警告ワードを モニタすることも可能です。 THRESHOLD threshold は 、 デ ー タ が そ れ 上 ま わ っ た あ る い は 下 ま わ っ た 場 合 に 、 ビ ッ ト を セ ッ ト す る 閾 値 で す 。 す な わ ち 、 G E ( greater than equal) で 閾 値 を 設 定 し た 場 合 に は 、 デ ー タ が threshold を 上 ま わ っ た と き に 、 L E ( less than equal) で 閾 値を 設 定 し た 場 合 に は 、 デ ー タ が threshold を 下 ま わ っ た と き に bit_pattern に 指 定 し た ビ ッ ト が 0x00f2 の threshold 変 数 に O R 加 算 さ れ ま す。 BIT_PATTERN bit_pattern は 、 閾 値 を 越 え た 場 合 に セ ッ ト さ れ る ビ ッ ト で す 。 struct thresh_struct { int data_address; int threshold; int bit_pattern; }; LE_STRUCT le_struct は 一 組 の ロ ー ド エ ン ベ ロ ー プ の レ イ ア ウ トを 示 す ス ト ラ ク チ ャ で す 。 こ こ で は 4 点 の 閾 値 を 設 定 し て い ま す が 、実 際 に は さ ら に 多 く の閾 値 を 設 定 す る こ と が 出 来 ま す 。た だ し 、 4点以上の閾値を設定した場合にはそれに続くロードエンベロープの領域と重なりますの で、それを理解した上で引き続くロードエンベロープは使用しないで下さい。また、閾値は 初めにGEタイプ、その後にLEタイプをまとめて設定しなければなりません。GEが上限 設定、LEが下限設定とお考え下さい。 LATCH_BITS latch_bits は 、ラ ッ チ す る 必 要 の あ る ビ ッ ト を 示 す ビ ッ ト パ タ ー ン で す 。こ こ に セ ッ ト さ れ た ビットはデータが一度閾値を越えるとラッチされ、データが戻ってもリセットされません。 -- 21 リ セ ッ ト は reset_bit command で 行 う 必 要 が あ り ま す。 NUMBER_OF_GE_THRESHOLDS NUMBER_OF_LE_THRESHOLDS こ れ ら は 、 G E threshold と L E threshold の 数 を 示 す も の で す 。 struct le_struct { int latch_bits int number_of_ge_thresholds; int number_of_le_thresholds; thresh_struct[4] thresholds; int reserved; }; アドレス 0 1 2 データ latch Pattern No of GE No of LE ラ ッ チ す る ビ ット の パ タ ー ン GE閾値の数 LE閾値の数 3 4 5 data addr threshold bit pattern 最初のGEのアドレス 最初のGEの閾値 最初のGEのビットパターン 6 7 8 data addr threshold bit pattern ・ ・ ・ data addr threshold bit pattern 2番目のGEのアドレス 2番目のGEの閾値 2番目のGEのビットパターン data addr threshold bit pattern ・ ・ ・ data addr threshold bit pattern 最初のLEのアドレス 最初のLEの閾値 最初のLEのビットパターン GE*3 GE*3+1 GE*3+2 GE*3+3 GE*3+4 GE*3+5 (GE+LE)*3 (GE+LE)*3+1 (GE+LE)*3+2 図4 -- 最後のGEのアドレス 最後のGEの閾値 最後のGEのビットパターン 最後のLEのアドレス 最後のLEの閾値 最後のLEのビットパターン ロードエンベロープストラクチャ 22 LINK_TYPES link_types は 、 座 標 変 換 の た め の 変 数 を 列 挙 し た も の で す 。 end transform packet は transform chain の 最 後 に 付 加 す る も の で す 。 translate お よ び rotate は そ れ ぞ れ 、 平 行 移 動 、 回 転 移 動 に 使 用 す る た め の も の で す 。negate all axes は 全 て の軸 の 正 負 を 逆 転 し ま す 。こ れ は 座 標 系 を デフォルトの左手系から右手系に変更する場合に使用します。 0 1 2 3 4 5 6 7 - end tramsform packet translate along X axis (TX) translate along Y axis (TY) translate along Z axis (TZ) rotate about X axis (RX) rotate about Y axis (RY) rotate about Z axis (RZ) negate all axes enum { link_types end_x_form, tx, ty, tz, rx, ry, rz, neg }; -- 23 TRANSFORM transform は 、 座 標 変 換 の 内 容 を 示 す ス ト ラ ク チャ で す 。 変 換 の 順 序 は 任 意 で あ り 、 指 定 し た とおりの順序で行われます。各リンクは2ワードより成り、初めのワードはタイプを示し、 後 の ワ ー ド は 移 動 量 (link_amount)を 示 し ま す 。 タ イ プ は LINK_TYPES(P.23) に 示 し た と お り で す 。 平 行 移 動 量 は UNITS(P.14) に 示 し た 長 さ の 単 位 で 設 定 し 、 回 転 移 動 量 は 次 の よ う に設定します。 amount = degrees*32768/180 or amount = radians*32768/π 回転移動の場合は16ビットの整数で0∼360度をカバーできますが、平行移動の場合に は移動できる範囲に限度があります。一つのリンクで移動できない距離であっても、二つ以 上 の リ ン ク を 順 序 よ く 組 み 合 わ せ る こ と に よ り 移 動さ せ る こ と が 出 来 る 場 合 が あ り ま す 。 struct links { link_types int }; struct transform { links[8] }; アドレス 0 1 2 3 (n-1)*2 (n-1)*2+1 n*2 n*2+1 図5 -- link_type link_amount; link; データ link 1 - type リ ン ク 1 の タ イプ link 1 - amount リ ン ク 1 移 動 量 link 2 - type link 2 - amount ・ ・ ・ link n - type link n - amount 0 don't care リ ン ク 2 の タ イプ リンク2移動量 リ ン ク n の タ イプ リンクn移動量 リンク終了 座標変換ストラクチャ 24 C言語入門 「データロケーションと定義」及び「データストラクチャ定義」の項で説明したデータの宣 言はC言語形式で示しています。C言語を用いたのは、それが現在最も広く使われているコ ンピュータ言語であるからです。しかし、C言語をこれまであまり取り扱ったことがない方 々のために、簡単にC言語のデータ宣言について説明します。 /*と */は コ メ ン ト 文 の 初 め と 終 わ り を 示 し て い ま す 。 セ ミ コ ロ ン (;)は ス テ ー ト メ ン ト の 最 後 を 示 し 、コ ン マ (,)は リ ス ト 中 の ア イ テ ム を 分 け る た め に 使 わ れ ま す 。1 6 進 数 は 、数 字 の 最 初 に 0x を 付 け て 表 し ま す 。16 を 1 6 進 数 で 表 す と、0x0010 と な り 、157 は 0x009d と な り ま す 。変 数 を 宣 言 す る と き に は 、変 数 の 型 を 最 初 に 示し 、そ の 次 に 変 数 名 を 示 し ま す 。sat_value と い う 変 数 名 の 整 数 型 変 数 を 宣 言 す る 場 合 に は 、 次の よ う に な り ま す 。 int sat_value; int は C 言 語 で は 符 号 付 整 数 を 示 し ま す 。整 数 の サ イズ は 、C コ ン パ イ ラ が 書 か れ た 機 械 に よ って変わります。本システムで使用しているADSP−2105は16ビットの情報を一度 に 処 理 す る の で 、 整 数 の サ イ ズ は 1 6 ビ ッ ト で す 。し た が っ て 、 整 数 は -32768∼ +32767 ま で の値をとることができます。符号なし整数型でも整数型とサイズは同じですが、符号があり ません。したがって、次の unsigned int countx; は 、countx と い う 名 の 変 数 を 宣 言 す る こ と に な り 、0∼ 65535 ま で の 値 を と る こ と が で き ま す 。 C言語には、データをひとかたまりとしてストラクチャ(構造体)に結合する機能がありま す 。struct の 宣 言 は 、デ ー タ ス ト ラ ク チ ャ を 定 義 し ます 。struct を 定 義 し た 後 、struct の 型 に よ っ て 変 数 が 宣 言 さ れ 、struct の 個 々 の フ ィ ー ル ド を ア ク セ ス で き る よ う に な り ま す 。force array structure を 宣 言 す る に は 、 次 の よ う に な り ま す 。 struct { int int int }; force_structure fx; fy; fz; こ こ で は 、 fx,fy,fz と い う 名 の 3 つ の 整 数 フ ィ ー ル ドを 有 す る force_structure と い う 名 の ス ト ラ ク チ ャ を 宣 言 し て い ま す 。こ れ ら の 3 つ の フ ィ ー ル ド は fx が 最 下 位 ま た は 最 初 の ア ド レ ス 、 fz が 最 上 位 ま た は 最 後 の ア ド レ ス に な る よ う に メ モリ 内 に 配 列 し ま す 。 ス ト ラ ク チ ャ を 使 っ て 変 数 を 定 義 す る に は 、 ス ト ラ ク チ ャ 名 は 変 数宣 言 に お け る 変 数 の 型 と し て 使 用 さ れ ま す 。 force_structure filter0; は 、force_structure の 型 の filter0 と い う 名 の 変 数 を 宣 言 し て い ま す 。 前 の force_structure の 宣 言 を 用 い る と 、 fx,fy,fz と い う 名 の 3 つ の フ ィ ー ル ドを 持 つ こ と に な り ま す 。 C 言 語 に よ る デ ー タ の 配 列 は 、通 常 の デ ー タ 宣 言 に お け る 変 数 の 型 に [n]を つ け る こ と に よ り -- 25 宣 言 さ れ ま す 。 [n]の 中 の n は 配 列 に 含 ま れ る エ レメ ン ト の 数 を 示 し ま す 。 したがって、 force_structure[0x0010] force_data; は 、 force_structure の 型 の 16( 1 6 進 数 で は 0x0010) 個 の エ レ メ ン ト を 有 す る force_data と 呼 ば れ る 変 数 で あ る こ と を 示 し ま す 。 こ の と き 、 force_data は 48(16*3)個 の 整 数 か ら 構 成 さ れ る こ と に な り ま す 。 こ れ は 、 メ モ リ 上 に 連 続 し て配 列 さ れ た 16 セ ッ ト の 別 々 の force data と考えることもできます。 最後に、C言語には、変数の中の個々のビットやビットのグループを取り扱いやすいように ビットフィールドと呼ばれるデータストラクチャの型があります。ビットフィールドは、ス ト ラ ク チ ャ の 定 義 の 中 で エ レ メ ン ト 名 に :n を 付 加 す る こ と に よ っ て 示 さ れ ま す 。 :n の 中 の n はエレメントの使用するビット数を示します。ビットの順序はコンパイラにより指定でき、 本 シ ス テ ム で は lsb か ら msb の 方 向 に 宣 言 す るも の と 定 義 し ま す 。 こ れ を 2 進 数 に 換 算 す る 場合には最初のビットフィールドが最小の重みを持ち、最後のものが最大の重みを持つこと になります。 struct test_bits { fx_bit:1; mx_bit:1; reserved:14; } こ こ で は lsb は fx_bit、2 番 目 の ビ ッ ト は mx_bit、上 位 の 1 4 ビ ッ ト は reserved で あ る ス ト ラ クチャを宣言していることになります。 -- 26 コマンドの詳細 コマンド例(0) 引数: Data_1 Command_Word_0 こ こ に は command_word_0 を セ ッ ト す る に 先 立 っ て 変 更 す べ き デ ータ の 名 称 を 記 述 し て い ま す 。 0x0000 戻り値: Data_2 ここにはコマンドの実行によって変化するデータの 名 称 を 記 述 し てい ま す 。 Command_Word_0 0 ( 正 常 に コ マ ン ド が 実 行 さ れる と Command_Word_0 が0になります。) 実行時間: 40μS 125μS (平均) (最大) 備考: こ の コ マ ン ド 例 で は 、 こ の 章 に お け る 他 の コ マン ド の 表 示 形 式 を 示 し て い ま す 。 引数と戻り値に関しては、左側に変数の名称を示し右側にそこに設定すべき変数の値、ある いは送り返される変数の値を示しています。 実 際 に コ マ ン ド を 実 行 す る と き に は 、 ま ず Data_1 を 必 要 な 値 に 書 き 換 え 、 次 に Command_Word_0 に コ マ ン ド 番 号 を 書 き 込 み ます 。 こ こ で は コ マ ン ド 番 号 は 0x0000 で す 。 そ の 後 Command_Word_0 を モ ニ タ し 0 に な る の を 待 ち ま す 。 そ の 時 点 で コ マ ン ド の 実 行 が 完 了 し て い ま す の で Data_2 の 戻 り 値 を 読 み 出 し て下 さ い 。 -- 27 メモリリード(1) 引数: Command_Word_1 Command_Word_0 読み出すアドレス 0x0100 戻り値: Command_Word_2 Command_Word_0 読 み 出 し た デ ータ 0 実行時間: 40μS 125μS (平均) (最大) 備考: メモリは直接読み出すことが出来るので、通常このコマンドを使用することはありませ ん。試験用途でDSPの内部メモリを読み出すときにこのコマンドを使用します。 メモリライト(2) 引数: Command_Word_2 Command_Word_1 Command_Word_0 戻り値: Command_Word_2 Command_Word_0 実行時間: 40μS 125μS 書き込むデータ 書き込むアドレス 0x0200 ア ド レ ス よ り 読み 出 し た デ ー タ 0 (平均) (最大) 備考: これはメモリへデータを書き込むためのコマンドです。このコマンドはユーザが書き込 みを行うと同時にDSPがそのデータを変更する可能性があるような場合に使用します。 warning, error, threshold 等 の ラ ッ チ さ れ る ビ ッ ト が そ れ に 相 当 し ま す 。 ま た 、 こ の コ マ ン ド はデータが書き込まれる前のデータを戻り値として返します。 -- 28 ビットセット(3) 引数: Command_Word_2 Command_Word_1 Command_Word_0 戻り値: Command_Word_2 Command_Word_0 実行時間: 40μS 125μS セットすべきビットマップ ビットをセットするアドレス 0x0300 ア ド レ ス よ り 読み 出 し た デ ー タ 0 (平均) (最大) 備考: これは指定したアドレスのデータワードの単一あるいは複数のビットをセットするためのコ マンドです。このコマンドはユーザが書き込みを行うと同時にDSPがそのデータを変更す る 可 能 性 が あ る よ う な 場 合 に 使 用 し ま す 。 warning, error, threshold 等 の ラ ッ チ さ れ る ビ ッ ト がそれに相当します。また、このコマンドはデータが書き込まれる前のデータを戻り値とし て返します。 -- 29 ビットリセット(4) 引数: Command_Word_2 Command_Word_1 Command_Word_0 戻り値: Command_Word_2 Command_Word_0 実行時間: 40μS 125μS リセットすべきビットマップ リセットするアドレス 0x0400 ア ド レ ス よ り 読み 出 し た デ ー タ 0 (平均) (最大) 備考: これは指定したアドレスのデータワードの単一あるいは複数のビットをリセットするための コマンドです。このコマンドはユーザが書き込みを行うと同時にDSPがそのデータを変更 す る 可 能 性 が あ る よ う な 場 合 に 使 用 し ま す 。 warning, error, threshold 等 の ラ ッ チ さ れ る ビ ッ トがそれに相当します。また、このコマンドはデータが書き込まれる前のデータを戻り値と して返します。 -- 30 座標変換番号(5) 引数: transforms(@0x200-) 必 要 な ス ロ ッ トに 座 標 変 換 テ ー ブ ル を セ ッ ト Command_Word_0 0x050? こ こ で "?" は 座 標 変 換 ス ロ ッ ト の 番 号 ( 0x0 ∼ 0xf) 戻り値: Command_Word_0 Transform_Num(@0x77) 0 新たに使用を開始した座標の番号 実行時間: 3∼10mS (平均) こ の 実 行 時 間 は 座 標 変 換 の リ ン ク 数 に 依 存 し ます 。 (2.25+0.75*リンク数)mS 備考: このコマンドを実行する前に座標変換テーブルを作成し書き込んでおいて下さい。座標 変 換 を 1 種 類 し か 使 用 し な い 場 合 に は ア ド レ ス 0x200 か ら の ス ロ ッ ト 0 に 座 標 変 換 テ ー ブ ル を 書 き 込 み 、 Command_Word_0 に 0x0500 を 書 き 込 ん で 下 さ い 。 こ の コ マ ン ド の 実 行 に は 数 m S を 要 し ま す 。 コ マ ン ド の 実 行 中 に は error_bits の system_busy ビ ッ ト が セ ッ ト さ れ ま す 。 ま た 、 他 の コ マ ン ド と 同 様 に コ マ ン ド の 実 行 が 完 了 す る と Command_Word_0 が 0 に リセットされます。 -- 31 オフセット番号(6) 引数: Command_Word_0 0x060? こ こ で "?" は オ フ セ ッ ト 番 号( 0x0 ∼ 0xf) 戻り値: Command_Word_0 offset_num(@0x8e) offset(@0x88-) 実行時間: 150μS 225μS 0 新たに使用を開始したオフセット番号 指定したオフセット値 (平均) (最大) 備考: 本システムでは16通りのオフセット値をセーブしておくことが出来ます。使用する工 具を交換するような場合にこの機能が必要になります。このコマンドは使用するオフセット 番号を指定すると同時に、セーブされたオフセット値をロードします。後述のセットオフセ ットコマンドやリセットオフセットコマンドはここで指定しておいたオフセット番号に対し て実行されます。複数のオフセットを使用しない場合にはこのコマンドは必要なく、デフォ ルトのオフセット番号0が常に使用されることになります。使用中のオフセット値を変更せ ず に オ フ セ ッ ト 番 号 を 変 更 し た い 場 合 に は 、ア ド レ ス 0x8e の offset_num に 変 更 し た い 番 号 を直接書き込んで下さい。 -- 32 セットオフセット(7) 引数: offset(@0x88-) Command_Word_0 戻り値: Command_Word_0 current offset table entry 実行時間: 150μS 225μS セットしたいオフセット値 0x0700 0 0x88 に セ ッ ト さ れた オ フ セ ッ ト 値 (平均) (最大) 備考: ア ド レ ス 0x88 に セ ッ ト さ れ て い る オ フ セ ッ ト 値 を 直 ち に 使 用 す る と 同 時 に 、 使 用 中 の オ フ セ ッ ト 番 号 に そ の 値 を セ ー ブ し ま す 。 こ の コ マ ン ド を 使 用 し な く て も 0x88 に セ ッ ト さ れたオフセット値はセット後最大2mS後に使用が開始されますが、このコマンドを実行す ることによって直ちに使用が開始されます。 -- 33 リセットオフセット(8) 引数: Command_Word_0 戻り値: Command_Word_0 offsets(@0x88-) current offset table entry 実行時間: 150μS 225μS 0x0800 0 力 デ ー タ 出 力 が0 に な る よ う な オ フ セ ッ ト 値 同上 (平均) (最大) 備考: ア ド レ ス 0xa0 か ら の filter2 出 力 が 0 に な る よ う な オ フ セ ッ ト 値 を 採 用 す る と 同 時 に 、 使用中のオフセット番号にセーブする。 -- 34 セットベクトル(9) 引数: Command_Word_0 0x09?? こ こ で "??" は ベ ク ト ル 計 算 に 使 用 す る 軸 を ビ ッ ト マ ッ プ で 指定します。 戻り値: Command_Word_0 vect_axes(@0x8f) full_scale(@0x86-) 実行時間: 40μS 125μS 0 Command_Word_0 の ビ ッ ト マ ッ プ が セ ッ ト さ れ ま す 。 選択した軸のフルスケールの最大値になります。 (平均) (最大) 備考: V1 と V2 の 2 種 類 の ベ ク ト ル に 使 用 す る 軸 を指 定 し ま す 。各 ビ ッ ト の 意 味 は lsb よ り 、 V1x,V1y,V1z,V2x,V2y,V2z で す 。デ フ ォ ル ト で は V1 は 力 、 V2 は モ ー メ ン ト を 表 し ま す が 、 0x40 ビ ッ ト を セ ッ ト す る こ と に よ り 、 V2 も 力 ベ クト ル に 使 用 さ れ 、 0x80 ビ ッ ト を セ ッ ト す る と V1 が モ ー メ ン ト ベ ク ト ル に 使 用 さ れ ま す 。 例 : V1 を Fx,Fz、 V2 を Fy,Fz の ベ ク ト ル と 指 定 す る 場 合 . . . 0x75 V1 を Mx,My、 V2 を Mx,Mz の ベ ク ト ル と 指 定す る 場 合 . . . 0xab -- 35 セットフルスケール(10) 引数: full_scale(@0x80-) Command_Word_0 戻り値: Command_Word_0 設 定 し た い フ ルス ケ ー ル 0x0a00 0 実行時間: 3∼10mS (平均) こ の 実 行 時 間 は 座 標 変 換 の リ ン ク 数 に 依 存 し ます 。 (3.4+0.75*リンク数)mS 備考: こ の コ マ ン ド の 実 行 に は 数 m S を 要 し ま す 。 コ マ ン ド の 実 行 中 に は error_bits の system_busy ビ ッ ト が セ ッ ト さ れ ま す 。 ま た 、 他 の コ マ ン ド と 同 様 に コ マ ン ド の 実 行 が 完 了 す る と Command_Word_0 が 0 に リ セ ッ ト さ れ ま す。 このコマンドを実行すると座標変換の計算も同時に行われます。従って、座標変換番号 や有効になっている座標変換テーブルを変更してある場合にこのコマンドを実行すると座標 系が変わる事になります。これは便利な事もありますが、予想外の結果を招く事もあります ので、十分に注意して実行して下さい。 適 切 な フ ル ス ケ ー ル の 設 定 方 法 に つ い て は 、minimum full scale(P.6)の 項 を 参 照 し て 下 さ い。 -- 36 リセットピーク(11) 引数: peak_address(@0x7f) Command_Word_0 戻り値: Command_Word_0 minimums(@0xd0-) maximums(@0xd8-) 実行時間: 40μS 125μS ピ ー ク を 調 べ たい デ ー タ の ア ド レ ス 0x0b00 0 最 後 に ピ ー ク をリ セ ッ ト し て か ら の 最 小 値 最 後 に ピ ー ク をリ セ ッ ト し て か ら の 最 大 値 (平均) (最大) 備考: 本システムでは任意のデータの最小、最大の各ピーク値を監視出来ます。そのピーク値 は こ の コ マ ン ド に よ っ て ア ド レ ス 0xd0 ∼ 0xdf に 出 力 し て ラ ッ チ す る と 同 時 に 内 部 の ピ ー ク値を現在の出力値にリセットします。これらのデータは常に変化しているわけではありま せんがこの方法を取る事によって確実に同じデータサイクルのピーク値を測定する事が出来 ます。 -- 37 リードピーク(12) 引数: peak_address(@0x7f) Command_Word_0 戻り値: Command_Word_0 minimums(@0xd0-) maximums(@0xd8-) 実行時間: 40μS 125μS ピ ー ク を 調 べ たい デ ー タ の ア ド レ ス 0x0c00 0 最 後 に ピ ー ク をリ セ ッ ト し て か ら の 最 小 値 最 後 に ピ ー ク をリ セ ッ ト し て か ら の 最 大 値 (平均) (最大) 備考: 本システムでは任意のデータの最小、最大の各ピーク値を監視出来ます。そのピーク値 は こ の コ マ ン ド に よ っ て ア ド レ ス 0xd0 ∼ 0xdf に 出 力 し て ラ ッ チ し ま す 。 こ れ ら の デ ー タ は次にコマンドを実行するまで変化しません。この方法を取る事によって確実に同じデータ サイクルのピーク値を測定する事が出来ます。 -- 38 コマンドの使用例 ここでは、コマンドの使用例を疑似プログラムで示しています。1行の中で##以降はコメ ントです。いくつかの関数をあらかじめ定義します。 readData (addr) こ れ は addr で 示 し た D S P 上 の ア ド レ ス の 16bit デ ー タ を 読 み 出 す 関 数 で す 。 writeData (addr, data) こ れ は addr で 示 し た D S P 上 の ア ド レ ス に data を 書 き 込 む 関 数 で す 。 write ______________ こ れ は 下 線 で 示 し た 部 分 を デ ィ ス プ レ イ に 表 示 す る関 数 で す 。 例1−ソフトウェアバージョンの表示 使 用 中 の D S P の ソ フ ト ウ ェ ア バ ー ジ ョ ン を 表 示 す る 例 で す 。 バ ー ジ ョ ン No.は ア ド レ ス 0xf5 に あ り ま す 。 write 'ソフトウェアバージョン' write (readData (0xf5) / 100) 例2−計算後のFx力データの表示 こ の 例 で は ア ド レ ス 0x80 の F x フ ル ス ケ ー ル を 読 み 込 み 、 ア ド レ ス 0xa0 の フ ィ ル タ 2 の 力データを換算しています。 write 'Fx フィルタ 2' write (readData (0xa0) / 16384 * readData (0x80)) 例3−オフセットのリセット 全 て の 軸 の 力 デ ー タ を ゼ ロ に す る た め の リ セ ッ ト オ フ セ ッ ト の コ マ ン ド ( p.34) を 実 行 す る 例 で す 。 風 袋 除 去 に 使 用 し ま す 。 ア ド レ ス 0xe7 の command_word0 に 0x0800 を 書 き 込 む ことによってコマンド(8)が実行されます。 writeData (0x00e7, 0x0800) -- 39 例4−Fzのオフセット変更 こ こ で は F z の 出 力 を 2 0 に す る よ う な オ フ セ ッ トを 設 定 す る 例 を 示 し ま す 。ア ド レ ス 0xa2 の フ ィ ル タ 2 デ ー タ と ア ド レ ス 0x8a の 現 時 点 の オ フ セ ッ ト 値 か ら 風 袋 除 去 前 の F z デ ー タ が計算できます。その値から20引いたデータをオフセットとして設定することによって、 Fzの出力は20になります。 writeData (0x008a, readData (0x00a2) + readData (0x008a) - 20) 上記の1行だけでオフセットを変更した場合、オフセットが変更されたことをDSPが認識 するまで待たなければなりません。これには最大2mSかかりますがコマンド(7)を実行 す る こ と に よ り 、 即 座 に オ フ セ ッ ト を 変 更 す るこ と が 出 来 ま す 。 ## F z を 2 0 に 設 定 writeData (0x008a, readData (0x00a2) + readData (0x008a) - 20) ## 他 の 軸 も 必 要 に 応 じ 設 定 ## 最 後 に セ ッ ト オ フ セ ッ ト コ マ ン ド を 実 行 writeData (0x00e7, 0x0700) 例5−ベクトルの設定 これはベクトル計算に使用する軸を設定する例です。デフォルトにではV1とV2のベクト ルは、それぞれ力とモーメントのベクトルであり、x,y,z軸を全て使っています。V1 と V 2 に 用 い る 軸 を 変 更 す る に は コ マ ン ド ( 9 ) (p.35)を 使 用 し ま す 。 次 の 例 は 、 V 1 に F x と F y を 用 い 、V 2 に F x 、F y 、F z を 用 い る よ う に 設 定 を 行 っ て い ま す 。ア ド レ ス 0xe7 の command_word0 に 0x097b を 書 き 込 む こ と に よっ て 実 行 さ れ ま す 。 writeData (0x00e7, 0x097b) こ こ で 書 き 込 ん だ ビ ッ ト マ ッ プ デ ー タ 0x7b は 次 の よ う に し て 決 ま り ま す 。 lsb msb -- V1x V1y V1z V2x V2y V2z V2変更 V1変更 1 1 0 1 1 1 1 0 40 例6−座標変換 ここでは単純な座標変換の例を示します。この座標変換はY軸まわりに180度回転させる だ け の も の で す 。 座 標 変 換 テ ー ブ ル 0 を 用 い ま す 。 ま ず ア ド レ ス 0x0200 の 座 標 変 換 テ ー ブ ルにY軸まわりの回転を意味する5を書き込みます。次に回転量180度を書き込みます。 こ の 値 は (p.24)で 述 べ た と お り − 3 2 7 6 8 と 換 算 し て い ま す 。 最 後 に 末 尾 を 示 す 0 を 書 き 込 み ま す 。 ア ド レ ス 0xe7 の command_word0 に 0x0500 を 書 き 込 む こ と に よ っ て テ ー ブ ル 0でコマンド(5)が実行されます。 writeData writeData writeData writeData (0x0200, (0x0201, (0x0202, (0x00e7, 5) -32768) 0) 0x0500) ## ## ## ## Y軸まわりの回転 −180度回転 座標変換0はここまで 座標変換0を使用 例7−複雑な座標変換 ここでは複雑な座標変換の例を示します。この座標変換ではまずZ軸まわりに45度回転さ せ ま す 。 座 標 変 換 テ ー ブ ル 2 を 用 い ま す 。 ア ド レ ス 0x0220 の 座 標 変 換 テ ー ブ ル に Z 軸 ま わ り の 回 転 を 意 味 す る 6 を 書 き 込 み ま す 。 次 に 回 転 量 4 5 度 を 書 き 込 み ま す 。 こ の 値 は (p.24) で述べたとおり8192と換算しています。2番目のリンクとしてセンサの厚さの半分だけ Z軸に沿って並行移動します。こうすることによってセンサのフランジ面に座標の原点が移 動 し ま す 。 最 後 に 末 尾 を 示 す 0 を 書 き 込 み ま す 。 ア ド レ ス 0xe7 の command_word0 に 0x0502 を 書 き 込 む こ と に よ っ て テ ー ブ ル 2 で コ マン ド ( 5 ) が 実 行 さ れ ま す 。 writeData writeData writeData writeData writeData writeData -- (0x0220, (0x0221, (0x0222, (0x0223, (0x0224, (0x00e7, 6) 8192) 3) readData (000ff) / 2) 0) 0x0502) 41 ##Z 軸 ま わ り の 回 転 ##4 5 度 回 転 ##Z 軸 並 行 移 動 ##移 動 量 は セ ン サ 厚 の 半 分 ##座 標 変 換 2 は こ こ ま で ##座 標 変 換 2 を 使 用 例8−ロードエンベロープ ここでは、複数の閾値を持つロードエンベロープの設定と使い方の例を示します。2つの軸 に5種類の閾値を設定します。FxとFyの正負両側にフルスケールの1/4の閾値を設定 し、各閾値にそれぞれ2つのビットを割り当てて、1つのビットをラッチビットとします。 また、力ベクトルにフルスケールの1/2の閾値を設定します。最後に閾値ビット読み取っ た後それらをリセットします。 ## ロ ー ド エ ン ベ ロ ー プ 2 に 所 望 の 値 を 入 れ る writeData (0x0120, 0xff00) writeData (0x0121, 3) writeData (0x0122, 2) ## 上 位 8 ビ ッ ト は ラ ッ チ す る ## GE 閾 値 ( 上 限 値 ) を 3 点 ## LE 閾 値 ( 下 限 値 ) を 2 点 ## 最 初 の 上 限 値 writeData (0x0123, 9x0090) writeData (0x0l24, 4096) writeData (0x0125, Ox0101) ## フ ィ ル タ 0 、 F x の ア ド レ ス ## フ ル ス ケ ー ル の 1/4 ## ビ ッ ト 0 と 8 を 使 用 ## 2 番 目 の 上 限 値 writeData (0x0126, 0x0091) writeData (0x0127, 4096) writeData (0x0128, 0x0202) ## フ ィ ル タ 0 、 F y の ア ド レ ス ## フ ル ス ケ ー ル の 1/4 ## ビ ッ ト 1 と 9 を 使 用 ## 最 後 の 上 限 値 writeDeta (0x0129, 0x0096) writeData (0x012a, 8192) writeData (0x012b, 0x1010) ## フ ィ ル タ 0 、 v 1 の ア ド レ ス ## フ ル ス ケ ー ル の 1/2 ## ビ ッ ト 4 と 1 2 を 使 用 ## 最 初 の 下 限 値 writeData (0x012c, 0x0090) writeData (0x012d, -4096) writeData (0x012e, 0x0404) ## フ ィ ル タ 0 、 F x の ア ド レ ス ## フ ル ス ケ ー ル の -1/4 ## ビ ッ ト 2 と 1 0 を 使 用 ## こ の 閾 値 か ら ス ロ ッ ト 3 の 領 域 に 入 り ま す ## 最 後 の 下 限 値 writeData (0x012f, 0x0091) writeData (0x0130, -4096) writeData (0x0131, 0x0808) ## フ ィ ル タ 0 、 F y の ア ド レ ス ## フ ル ス ケ ー ル の -1/4 ## ビ ッ ト 3 と 1 1 を 使 用 writeData (0x006f, 2) ## ロ ー ド エ ン ベ ロ ー プ 2 を 使 用 write '現 在 の 閾 値 状 況 ' write (readData (0x00f2)) ## ラ ッ チ さ れ た ビ ッ ト の リ セ ッ ト writeData (0x00e5, 0xff00) writeData (0x00e6, 0x00f2) writeData (0x00e7, 0x0400) -- ## 上 位 8 ビ ッ ト を リ セ ッ ト ## リ セ ッ ト す る ア ド レ ス ## コ マ ン ド 4 ( ビットリセット) を 実 行 42 データロケーション 網掛け部はデータ書き込み可能 0x00 0x08 ∼ 0x38 0x40 0x48 0x50 0x58 0x60 0x68 0x70 0x78 0x80 0x88 0x90 0x98 0xa0 0xa8 0xb0 0xb8 0xc0 0xc8 0xd0 0xd8 0xe0 0xe8 0xf0 0xf8 0x00 ch0time ch2time 0x01 ch0data ch2data 0x02 ∼ chEtime 'C ' 't ' 'n ' ∼ chEdata 'o ' ' ' 'c ' 'p ' 'J ' ' ' shunt fx def fs fx min fs fx max fs fx fs fx ofs fx f0 fx f1 fx f2 fx f3 fx f4 fx f5 fx f6 fx rate fx min fx max fx near sat count 1 warning serial shunt fy def fs fy min fs fy max fs fy fs fy ofs fy f0 fy f1 fy f2 fy f3 fy f4 fy f5 fy f6 fy rate fy min fy max fy sat count 2 error model shunt fz def fs fz min fs fz max fs fz fs fz ofs fz f0 fz f1 fz f2 fz f3 fz f4 fz f5 fz f6 fz rate fz min fz max fz rate addr count 3 threshold cal day 0x03 0x04 ch1time ch3time 0x05 ch1data ch3data 'y ' 'R ' '1 ' ∼ chFtime 'r ' '3 ' '9 ' ∼ chFdata 'i ' ', ' '9 ' shunt mx def fs mx min fs mx max fs mx fs mx ofs mx f0 mx f1 mx f2 mx f3 mx f4 mx f5 mx f6 mx rate mx min mx max mx rate div count 4 crc cal year shunt my def fs my min fs my max fs my fs my ofs my f0 my f1 my f2 my f3 my f4 my f5 my f6 my rate my min my max my rate count count 5 rom ver # units shunt mz def fs mz min fs mz max fs mz fs mz ofs mz f0 mz f1 mz f2 mz f3 mz f4 mz f5 mz f6 mz rate mz min mz max mz comm 2 count 6 ver no bits 0x06 'g ' ' ' '3 ' 'h ' 'I ' null fs v1 ofs # f0 v1 f1 v1 f2 v1 f3 v1 f4 v1 f5 v1 f6 v1 rate v1 min v1 max v1 comm 1 errors ver day chans load env # xForm # peak addr fs v2 vect axes f0 v2 f1 v2 f2 v2 f3 v2 f4 v2 f5 v2 f6 v2 rate v2 min v2 max v2 comm 0 count x ver year thickness 概要 ch0time,ch0data shunt fx,.. def fs fx,... min fs fx,... max fs fx,... fs fx,... load env # xForm # peak addr ofs fx,... ofs # vect axes f0 fx,... f1 fx,... rate fx,... min fx,... , max fx,... near sat, sat rate addr rate div rate count comm 2,... count 1,... errors warning, error threshold rom ver # ver no, ver day serial, model cal day units bits chans thickness -- 0x07 参 照 ページ ch0のデータが最後に受信されてからの時間、そのデータの内容 F x の シ ャ ン ト の 値 ( オプション) Fxフルスケールのデフォルト Fxフルスケールの最小値 Fxフルスケールの最大値 Fxのフルスケール、Fxが16384を出力したときの単位付き計算値 現在有効になっているロードエンベロープの番号 現在有効になっている座標変換の番号 最大値、最小値を算出するために使用するデータのアドレス Fxのオフセット 現在使用中のオフセットの番号 合力計算に使用する軸を表すビットマップ 干渉除去後でフィルタをかけていない力データ フィルタ1を通過後の力データ Fxの差分データ Fxの最小値、最大値 warning word,error word に 使 用 す る た め の 飽 和 点 の 設 定 値 差分データ計算に使用するデータのアドレス 差分データを計算するデータの間隔 差分データの間隔のためのカウンタ コマンドワード フィルタ1のためのカウンタ エラー回数のカウンタ ワーニング、エラーのモニタ ロードエンベロープのモニタ セ ン サ 本 体 内 蔵 の R O M の バ ー ジ ョ ン No. レ シ ー バ ボ ー ド R O M の バ ー ジ ョ ン No.と 日 付 セ ン サ 本 体 の シ リ ア ル No.と モ デ ル No. センサ本体の校正日 センサに採用されている単位系 セ ン サ の A/D変 換 器 の b i t 数 センサが送信可能なチャンネルのビットマップ センサの高さ 43 5 6 6 6 7 7 6 7 7 8 8 8 8 9 9 9 10 10 10 10 11 11 11 12 12 12 12 13 13 14 14 14 14 コマンド一覧 -- コマンド メモリリード メモリライト ビットセット ビットリセット 座標変換 0上位 1 2 3 4 5 オフセット選 択 6 セットオフセット リセットオフセット セットベクトル セットフルスケール リセットピーク リードピーク 7 8 9 10 11 12 0下位 − − − − 座標変換 No. オフセット No. − − 軸 − − − 1 アドレス アドレス アドレス アドレス − 2 − データ ビットマップ ビットマップ − − − 入力データ − − − − 座標変換 テーブル − − − − − − − − − − − − − オフセット − − フルスケール − − 44 出力データ データ(com2) データ(com2) データ(com2) データ(com2) 座標変換 No. オフセットNo. 及 び オフセット オフセット ベクトル軸 最大、最小 最大、最小 用語の説明 0x0406 1 0 進 数 1 0 3 0 の 1 6 進 表記 ADC A /D 変 換 器 : セ ン サ に 内 蔵 さ れ た 歪 ゲ ー ジ か ら の ア ナ ロ グ 電 圧 を DSPで処理可能なデジタル信号に変換するためデバイス。 ビットフィールド 個 々 の ビ ッ ト が そ れ ぞ れ 異 な っ た 意 味を も つ デ ー タ フ ィ ー ル ド 。 バイト 8ビットデータ。 Fx、Fy、Fz 各々X方向、Y方向、Z方向の力を示す。 GE ”大なりイコール”の意味。 LE ”小なりイコール”の意味。 lsb Least Significant Bit: ビ ッ ト 0 ま た は 2 進 値 0 の ビ ッ ト で す 。 LSB Least Significant Byte: 複 数 バ イ ト デ ータ で 、 最 小 の 値 を 有 す る バ イ ト を 示 す 。 1 0 進 法 を 例 に とる と 、 1 2 3 4 の L S B は 4 。 LSW Least Significant Word: L S B 参 照 。 msb Most Significant Bit: l s b 参 照 。 MSB Most Significant Byte: L S B 参 照 。 MSW Most Significant Word: L S B 参 照 。 Mx、My、Mz 各々X軸、Y軸、Z軸まわりのモーメントを示す。 ロボット側の視点 本 力 セ ン サ の 座 標 系 は 、 セ ン サ の ツ ール 側 が 固 定 さ れ た と み な し 、 力 は ロ ボ ッ ト 側 か ら 加 え ら れ る とし た 時 右 手 の 法 則 に し た が う よ う に配向している。これをロボット側の視点と呼ぶ。 ツール側の視点 力 セ ン サ の ロ ボ ッ ト 側 が 固 定さ れ 、 力 は セ ン サ の ツ ー ル 側 か ら 加 え られるとした時の視点。この視点を用いると、本センサは左手系座 標 と な る 。 こ れ を 変 更 す る 必 要 が あ る 時 に は 座 標 変 換 の nagate を 使用する。 V1、V2 Vector1及びVector2の省略形。 ワード 16ビットデータ。 -- 45 処理速度について IFSレシーバーボードには、非常に高性能なDSP(デジタル信号プロセッサー)が使用 されています。しかし、このチップにも、能力の限界があります。したがって、いくつかの データ数値を用い計算によって妥協点を見出しています。この章では種々のデータ計算を行 ったときの周波数について詳しく述べています。これらの速度に関する詳細はデータを取り 扱う上で有用になります。 全ての計算周波数はセンサーのデータ速度に依存します。標準センサーのデータ速度は8k H z で す 。こ こ で は 計 算 周 波 数 を セ ン サ ー の 速 度 (bandwidth:帯 域 幅 )に よ っ て 表 し ま す 。例 え ば 標 準 の セ ン サ ー に お い て 1/2 bandwidth は 4 k H z で す 。 センサーデータは全帯域幅において干渉除去が行われオフセットが除去されています。フィ ルタ1とピークデータでも全帯域幅で計算がされています。レイトデータはユーザの設定し たパラメータに従ってセンサー速度の1/x(x:1∼16384)で計算されます。従っ てレイトデータのパラメータに1を設定した場合には全帯域幅において計算されることにな り ま す 。saturation status bit は 全 帯 域 幅 で モ ニ タ 出 来ま す が 、そ の 他 の デ ー タ は そ れ よ り も 小 さい帯域幅で計算されます。 ロードエンベロープの閾値はセンサー速度の1/4で監視されます。フィルタデータはその 前 段 階 の フ ィ ル タ デ ー タ の 1 / 4 帯 域 幅 で 計 算 さ れま す 。 フィルター1 フィルター2 フィルター3 フィルター4 フィルター5 フィルター6 - 1/1 bandwidth 1/4 bandwidth 1/16 bandwidth 1/64 bandwidth 1/256 bandwidth 1/1024 bandwidth それぞれの合力はそれぞれのデータから計算しています。合力データ自体にはフィルタをか けていませんがフィルタをかけたデータを用いて合力を計算しています。 フィルタ0の合力 フィルタ1の合力 フィルタ2の合力 フィルタ3の合力 フィルタ4の合力 フィルタ5の合力 フィルタ6の合力 - 1/2 bandwidth 1/4 bandwidth 1/16 bandwidth 1/64 bandwidth 1/256 bandwidth 1/256 bandwidth 1/1024 bandwidth ユーザーはDSPに対し自由に種々の命令を課すことが出来るので、DSPに対して重い負 荷 に な る 可 能 性 が あ り ま す 。2 つ の 主 要 因 は rate command と ロ ー ド エ ン ベ ロ ー プ で す 。2 番 目に大きな影響を与えるのはホストがDSPからデータを読み出す際にDSPを占拠する時 間 で す 。 ホ ス ト が command_word_0 が 0 に 変 化 す るこ と を 高 速 度 で モ ニ タ し た り 、 他 の 用 途 でDSPのバスを長時間占拠するとDSPの計算速度は遅くなります。正常な使い方をすれ ばこのような原因による速度低下は起こりませんが、非常に早いホストマシンでDSPにア クセスし続けた場合に問題となり得ます。 -- 46 count_x(p.12)の 変 化 に よ っ て D S P の 機 能 し てい る 速 度 を 確 認 す る こ と が 出 来 ま す 。count_x はDSPがジョブキューをサーチしたりすべきことが無いことを確認する毎に増加します。 各 デ ー タ パ ケ ッ ト に お い て count_x が 少 な く と も 1 増 加 し た こ と を 確 認 す る こ と に よ り 、 全 てのタスクが完了したことを確認できます。従って8kHzの標準センサの場合100%の 能 力 が 維 持 さ れ て い れ ば 1 秒 あ た り に count_x は 8 00 0 以 上 増 加 し ま す 。 ソ フ ト ウ ェ ア バ ー ジ ョ ン 2.0 の 場 合 count_x の 1 カ ウ ン ト に は 通 常 約 5 .4 μ S の 空 き 時 間 があります。従って1秒間につき5.4μS*カウント周波数の時間を他の作業に割り当て る こ と が 出 来 ま す 。 一 方 、 rate の 処 理 に は 一 回 当 た り 約 3 . 3 μ S 、 ロ ー ド エ ン ベ ロ ー プ の 処理には一回当たり約0.6μSの時間を要します。 例1 標 準 の 8 k H z セ ン サ に お い て あ る 条 件 下 で count_x は 約 2 0 0 0 0 H z で カ ウ ン ト さ れ て いると仮定します。この場合には(20000Hz−8000Hz)*5.4μSすなわち 1秒間に64.8mSの時間を他の作業に割り当てることが出来ます。これを全てロードエ ンベロープの処理に割り当てた場合、一つの閾値につき(0.6μS*2000Hz)すな わち1秒あたり1.2mSを必要とするので、最大54(64.8/1.2)の閾値を設定 できることが計算できます。 例2 標準の8kHzセンサでレイトを1/800に設定し、ロードエンベロープを使用しなかっ た 場 合 count_x の 実 測 値 は 約 3 0 5 0 0 H z で し た 。 こ の レ イ ト を 1 / 1 に 変 更 し た 場 合 の ロードエンベロープに設定できる閾値の最大値を計算します。1秒あたりに作業できる時間 は(30500Hz−8000Hz)*5.4μS=121.5mSです。レイトの設定を 変更することによって必要となる作業時間は799/800*8000Hz*3.3μSで すから1秒あたり26.4μSを要することになります。従って残された作業時間は1秒あ たりに124.5−26.4=95.1μSと言うことになります。例1でも述べたとおり 閾値1点につき1秒あたり1.2mSを必要とするので95.1/1.2=79が設定でき る閾値の最大値です。 こ れ ら の 例 は p.14 に 述 べ た 5 0 以 上 の 閾 値 の 使 用 を 推 奨 す る と い う 意 味 で は あ り ま せ ん 。し かし個々のアプリケーションに適した条件(特にレイト計算を必要としない場合)において は恐らくこれ以上の閾値を設定できることになります。 -- 47