**メモリマップ [#zf43e6b6] USS3の内部機能及び設定は次に示すメモリマップとして提供され、インストラクションパケットを使用して操作されます。USS3はコントロールテーブルに値を書くことで操作され、状態はコントロールテーブルから値を読むことで確認します。~ 16ビット幅を持つデータは(L)と(H)の2バイトで表されます。両方のバイトが1つのインストラクションパケットにおいて同時に読み書きされる必要があります。~ Address 0x03~0x24は不揮発メモリに割り当てられ、書き込まれた値は電源を切っても保持されます。しかし、不揮発メモリは電気的な制約として最大10万回の書き込み消去回数となるため、これらのアドレスへの頻繁な書き換えを伴う通信は絶対に行わ無いで下さい。Address 0x25~0x53はRAMになっており電源を切るとデータは保持されませんが、頻繁な書き換えを要するものや、USS3内部で計測されたデータ等に使用されます。~ なお、reserveとあるエリアは将来のために予約されていますので使用しないで下さい。 |Address|Item|Access|Initial Value| |0 (0x0)|Model number(L)|R|4 (0x04)| |1 (0x1)|Model number(H)|R|64 (0x40)| |2 (0x2)|Version of firmware|R|?| |3 (0x3)|ID|R/W|0 (0x00)| |4 (0x4)|Baudrate|R/W|34 (0x22)| |5 (0x5)|Return delay time|R/W|80 (0x50)| |6 (0x6)|Mode|R/W|1 (0x01)| |7 (0x7)|Number of pulses|R/W|5 (0x05)| |8 (0x8)|Cycle (L)|R/W|160 (0xA0)| |9 (0x9)|Cycle (H)|R/W|15 (0x0F)| |10 (0xA)|Deadband (L)|R/W|100 (0x64)| |11 (0xB)|Deadband (H)|R/W|0 (0x00)| |12 (0xC)|Threshold (L)|R/W|150 (0x96)| |13 (0xD)|Threshold (H)|R/W|0 (0x00)| |14 (0xE)|DAC (L)|R/W|44 (0x2C)| |15 (0xF)|DAC (H)|R/W|1 (0x01)| |16 (0x10)|Detect level (L)|R/W|0 (0x00)| |17 (0x11)|Detect level (H)|R/W|3 (0x03)| |18 (0x12)|Sound of speed (L)|R/W|87 (0x57)| |19 (0x13)|Sound of speed (L)|R/W|1 (0x01)| |20 (0x14)|Status return level|R/W|2 (0x02)| |21 (0x15)|reserve|-|?| |22 (0x16)|reserve|-|?| |23 (0x17)|reserve|-|?| |24 (0x18)|reserve|-|0 (0x00)| |25 (0x19)|LED|R/W|0 (0x00)| |26 (0x1A)|reserve|-|0 (0x00)| |27 (0x1B)|Number of pulses|R/W|5 (0x05)| |28 (0x1C)|Cycle (L)|R/W|160 (0xA0)| |29 (0x1D)|Cycle (H)|R/W|15 (0x0F)| |30 (0x1E)|Deadband (L)|R/W|100 (0x64)| |31 (0x1F)|Deadband (H)|R/W|0 (0x00)| |32 (0x20)|Threshold (L)|R/W|150 (0x96)| |33 (0x21)|Threshold (H)|R/W|0 (0x00)| |34 (0x22)|DAC (L)|R/W|44 (0x2C)| |35 (0x23)|DAC (H)|R/W|1 (0x01)| |36 (0x24)|Detect level (L)|R/W|0 (0x00)| |37 (0x25)|Detect level (H)|R/W|3 (0x03)| |38 (0x26)|Sound of speed (L)|R/W|87 (0x57)| |39 (0x27)|Sound of speed (L)|R/W|1 (0x01)| |40 (0x28)|reserve|R/W|-| |41 (0x29)|SCANSW|R/W|?| |42 (0x2A)|Distance (L)|R|?| |43 (0x2B)|Distance (H)|R|?| |44 (0x2C)|Detect1 (L)|R|?| |45 (0x2D)|Detect1 (H)|R|?| |46 (0x2E)|Detect2 (L)|R|?| |47 (0x2F)|Detect2 (H)|R|?| |48 (0x30)|Detect3 (L)|R|?| |49 (0x31)|Detect3 (H)|R|?| |50(x032)|Detect4 (L)|R|?| |51(0x33)|Detect4 (H)|R|?| |52(0x34)|Detect5 (L)|R|?| |53(0x35)|Detect5 (H)|R|?| **各アイテムの詳細 [#if2cddbc] -''Address 0x00, 0x01 Model number''~ 製品固有の番号で、USS3は0x4004です。 -''Address 0x02 Version of firmware''~ ファームウェアのバージョンです。 -''Address 0x03 ID''~ 各USS3を特定するための固有のID番号を0~253の間で設定します。~ 同じネットワーク内の各USS3には異なるID番号を設定する必要があります。また、出荷時は全てのUSS3のIDが0となりますので、複数台のUSS3を併用する場合は、ネットワーク上に1台のUSS3のみが存在する状態で各々のIDを変更して下さい。 -''Address 0x04 Baudrate''~ 通信速度を0~254の間で設定します。実際の通信速度は以下の公式で求められます。~ Speed(BPS)=2000000/(Value+1)~ ~ 主な通信速度とデータ |Value|Hex|計算値[bps]|汎用値[bps]|誤差率| |1|0x01|1000000.0|1000000|0.000%| |3|0x03|500000.0|500000|0.000%| |4|0x04|400000.0|400000|0.000%| |7|0x07|250000.0|250000|0.000%| |9|0x09|200000.0|200000|0.000%| |16|0x10|117647.1|115200|-2.124%| |34|0x22|57142.9|57600|0.794%| |103|0x67|19230.8|19200|-0.160%| |207|0xCF|9615.4|9600|-0.160%| なお、通信を正常に行うには±3%以下の誤差で接続する必要があります。 -''Address 0x05 Return delay time''~ インストラクションパケットが送られた後、ステータスパケットが返ってくるまでの時間を0~254の間で設定します。遅延時間は約Value×2μ秒です。 -''Address 0x06 Mode''~ ANALOG OUTの使用法を決定します。1(Analogモード)を設定すると計測距離に比例した電圧出力、0(Interruptモード)を設定すると指定された敷居値と計測距離によって0Vないし5VのON/OFF出力を行います。 -''Address 0x07 Number of pulse(※1''~ 超音波を出力する際のパルス数を2~250の間で指定します。パルスを送出している時間はValue×25μ秒で求められます。~ 数値が大きいと長時間超音波を出力することになり反射波を検出する確率が上がりますが、近距離における動作が不安定になります。 -''Address 0x08~0x09 Cycle(※1''~ 計測周期を200~8000の間で指定します。時間はValue×16μ秒で求められます。 計測周期内で反射波が検出されると、その時点の内部カウンタ(16μ秒刻みのフリーランカウンタ)値が検出値として採用されます。また内部カウンタはCycleで指定された値になると次の計測に備えリセットされます。計測周期内で反射波が検出され無い場合は全ての検出値が未検出値(=9999)となります。 -''Address 0x0A~0x0B Deadband(※1''~ 無感時間を0~8000の間で指定します。時間はValue×16μ秒で求められます。 内部カウンタが0(=計測開始直後)の時点で超音波を発振しますが、発振器の近傍にある受信器は反射波ではなく直接回りこむ音波で反応してしまいます。この間を検出対象とし無いための時間を指定しますが、一般にNumber of pluseで指定された時間以上の値を設定するべきです。 -''Address 0x0C~0x0D Threshold(※1''~ ModeでInterrupt(=0)が指定された場合に有効な値で、閾値を0~1000[cm]の間で指定します。~ Interruputモード時に計測距離がThresholdを越えるとANALOG OUTから5V、以下ならば0Vを出力します。~ -''Address 0x0E~0x0F DAC(※1''~ ModeでAnalog(=1)が指定された場合に有効な値で、5Vの出力を得る時の距離を1~4095[cm]の間で指定します。~ Analogモード時に距離が計測されるとANALOG OUTから5[V]×Distanceb[cm]÷Value[cm]の電圧が出力されます。なお、アナログ出力の分解能は本設定値に依存します。 -''4Address 0x10~0x11 Detect level(※1''~ 反射波検出のレベルを0~4095の間で指定します。~ 内部で常時増幅されている受信波に対して反射波とみなせるレベルを指定することであり、Valueが大きいと検出しにくくなり、小いさいと微小な反射波が検出しやすくなります。 -''Address 0x12~0x13 Sound of speed(※1''~ 音速度を0~999[m/秒]で指定します。~ 空中を伝播する音波の速度は温度・湿度・気圧に依存します。補正用のセンサをUSS3内に装備しても実際に伝播する空中を計測した値とはかけ離れる事が多いため、計測結果に大きな誤差を生じるだけとなってしまいます。よって、USS3は音速のみをパラメータとして内部カウンタ値を距離に変換しますので、周囲環境を計測している別の装置から音速を計算し、本パラメータへフィードバックすることで誤差を軽減できます。 ''※1)'' これらのアイテム(Address 0x07~0x19)はUSS3の電源投入直後に同名のRAMエリア(Address 0x1B~0x27)に初期値としてコピーされるだけで、運転中の変更は実際の動作に反映されません。運転中に変更を促す場合は、RAMエリアのアイテム(Address 0x1B~0x27)のを対象とする必要があります。~ つまり、Address 0x07~0x19の変更を運転に反映させるにはUSS3の電源を投入し直す必要があります。 -''Address 0x14 Status Return Level''~ インストラクションパケットを受けた後にUSS3がステータスパケットを返すかどうかを設定します。 |Value|ステータスパケット| |0|どんなインストラクションにも応答し無い| |1|READ_DATAだけに応答する| |2|すべてのインストラクションに応答する| -''Address 0x19 LED''~ 1が設定されるとSTATUS LEDが点灯し、0が設定されると消灯します。なお、SYNCモードに0を設定すると消灯しますが、モードは維持されます。 -''Address 0x1B Number of pulse(※2''~ 超音波を出力する際のパルス数を2~250の間で指定します。パルスを送出している時間はValue×25μ秒で求められます。~ 数値が大きいと長時間超音波を出力することになり反射波を検出する確率が上がりますが、近距離における動作が不安定になります。 -''Address 0x1C~0x1D Cycle(※2''~ 計測周期を200~8000の間で指定します。時間はValue×16μ秒で求められます。~ 計測周期内で反射波が検出されると、その時点の内部カウンタ(16μ秒刻みのフリーランカウンタ)値が検出値として採用されます。また内部カウンタはCycleで指定された値になると次の計測に備えリセットされます。計測周期内で反射波が検出され無い場合は全ての検出値が未検出値(=9999)となります。 -''Address 0x1E~0x1F Deadband(※2''~ 無感時間を0~8000の間で指定します。時間はValue×16μ秒で求められます。~ 内部カウンタが0(=計測開始直後)の時点で超音波を発振しますが、発振器の近傍にある受信器は反射波ではなく直接回りこむ音波で反応してしまいます。この間を検出対象とし無いための時間を指定しますが、一般にNumber of pluseで指定された時間以上の値を設定するべきです。 -''Address 0x20~0x21 Threshold(※2''~ ModeでInterrupt(=0)が指定された場合に有効な値で、閾値を0~1000[cm]の間で指定します。~ Interruputモード時に計測距離がThresholdを越えるとANALOG OUTから5V、以下ならば0Vを出力します。 -''Address 0x22~0x23 DAC(※2''~ ModeでAnalog(=1)が指定された場合に有効な値で、5Vの出力を得る時の距離を1~4095[cm]の間で指定します。~ Analogモード時に距離が計測されるとANALOG OUTから5[V]×Distanceb[cm]÷Value[cm]の電圧が出力されます。なお、アナログ出力の分解能は本設定値に依存します。~ -''Address 0x24~0x25 Detect level(※2''~ 反射波検出のレベルを0~4095の間で指定します。~ 内部で常時増幅されている受信波に対して反射波とみなせるレベルを指定することであり、Valueが大きいと検出しにくくなり、小いさいと微小な反射波が検出しやすくなります。 -''Address 0x26~0x27 Sound of speed(※2''~ 音速度を0~999[m/秒]で指定します。~ 空中を伝播する音波の速度は温度・湿度・気圧に依存します。補正用のセンサをUSS3内に装備しても実際に伝播する空中を計測した値とはかけ離れる事が多いため、計測結果に大きな誤差を生じるだけとなってしまいます。USS3は音速のみをパラメータとして内部カウンタ値を距離に変換しますので、周囲環境を計測している別の装置から音速を計算し、本パラメータへフィードバックすることで誤差を軽減できます。 ''※2)'' USS3の電源投入直後、Address 0x1B~0x27のアイテムは不揮発エリアにある同名のアイテム(Address 0x07~0x19)により初期化されます。運転中に動作の変更を促す場合は、これらRAMエリアのアイテム(Address 0x1B~0x27)を使用して下さい。 -''Address 0x29 SCANSW''~ 0が設定されると計測を中断し、1が設定されると計測を再開します。 -''Address 0x2A~0x2B Distance''~ Detect1とSound of speedを元に距離を算出し、ストアします。算定式は次の通りです。~ Value = Distance1×Sound of Speed÷1250~ 計測限界値を超えたり計算結果がオーバフローすると999となります。 -''Address 0x2C~0x35 Detect1~5''~ 内部カウンタがDeadband以上かつCycle以下の間で、Detect levelを超えた反射波を検出した早い順にその時の内部カウンタ値をDetect1からストアします。未検出の場合は9999となります。~ 計測周期内で検出されたものは最大5つまで保持されるため、一番近い物体以外も計測対象としたい場合に利用できる可能性があります。
(This host) = https://www.besttechnology.co.jp