3. 状態と統計¶
対象:IMU600-V2/FW 0.11.2/GUI v1.6.1。
仕様v1.1の第3章、10–14ページに対応します。初期設定では、毎秒STAT 3行、FUS 1行、SYS 1行を出力します。fw 0.4.3以降は、すべてのカウンターを同じ時点で取得し、その後の主ループでSTAT1 → STAT2 → STAT3 → FUS → SYS → HB(有効時)の順に送ります。送信時刻が違っても、同じ時点の統計を表しています。
番号はメッセージ名の後からです。<...>とXXはプレースホルダー、[...]は任意項目で実際には送信しません。行末はCRLF、XOR範囲は$と*の間のASCIIです。$SPNVCMD,STAT,nowで即時取得できます。
3.1 $SPNVSTAT — 個別IMU統計(各1行)¶
$SPNVSTAT,<id>,<dry>,<out>,<crc_err>,<frame_err>,<spi_timeout>,<dropped>,<dcnt_skip>,<dry_timeout>,<dry_kicks>,<dry_pin>,<isr_us_max>,<isr_us_last>,<isr_cpu>,<resync>[,<read_retry>,<read_bad>]*XX
| # | フィールド | 説明 | 正常値/目安 |
|---|---|---|---|
| 1 | id |
IMU番号1–3 | 1–3 |
| 2 | dry |
DRY割り込み累計、約+1470/s;生サンプリング数 | ≈1470/s |
| 3 | out |
出力累計;毎秒増加量はRATE付近 | RATE/s |
| 4 | crc_err |
内部SPI応答CRCエラー、通常0 | 0 |
| 5 | frame_err |
S/CE/IDS付きSPI応答数;通信エラー数ではない | 0 |
| 6 | spi_timeout |
内部SPIタイムアウト累計、通常0;fw 0.10.6設定100 µs | 0 |
| 7 | dropped |
サンプリング/出力キュー満杯による破棄、通常0 | 0 |
| 8 | dcnt_skip |
標本カウンター不連続、読み落とし/重複の可能性、通常0 | 0 |
| 9 | dry_timeout |
100 ms超DRYなし:0いいえ、1はい | 0 |
| 10 | dry_kicks |
DRY High継続解除用追加読み出し。資料の正常例は起動後1固定 | 起動後1固定 |
| 11 | dry_pin |
現在DRY電位0/1、通常0 | 通常0 |
| 12 | isr_us_max |
DRY ISR最長実行時間(µs)。 | ≈≤100 µs |
| 13 | isr_us_last |
直近DRY ISR実行時間(µs)。 | ≈≤100 µs |
| 14 | isr_cpu |
直近1秒の当該ISR CPU整数百分率、目安約13% | ≈13% |
| 15 | resync |
出力境界再同期累計、通常0 | 0 |
| 16 | read_retry |
fw 0.10.6以降、ASCIIのみ;初回CRC失敗後の即時再読数 | 0 |
| 17 | read_bad |
fw 0.10.6以降、ASCIIのみ;再読失敗で破棄した生標本数 | 0 |
dry・outは起動後の累計で、毎秒値はスナップショット差から求めます。dry_timeoutは現在状態で累計ではありません。fw 0.10.6の内部SPIタイムアウトは100 µs、転送中は一時的に割り込みを無効にします。read_retry/read_badはASCII末尾に追加されBinary STATにはありません。省略や将来の末尾追加を許容します。
3.1.1 frame_err増加時の調査¶
GUIの「センサーフラグ」はframe_errで、S1:S0≠00・CE・IDSを含むSPI応答数です。独立故障数や配線品質そのものではありません。1標本7応答のため1事象で7増加し得ます。約5 msの激しい動作で+52でも52事象ではありません。通信はcrc_err/spi_timeout(GUI「SPIエラー」)で確認します。
| PDF基板試験:fw 0.4.3、2026-10-08 | crc_err / spi_timeout | frame_err |
|---|---|---|
| 静止 | 0 | 0、増加なし |
| 範囲内の緩い揺れ | 0 | 0、増加なし |
| 激しい動作、ピーク >300 °/s | 0 | 3個それぞれ+52(飽和) |
| 原因/status | 3個同時? | 判定と対処 |
|---|---|---|
| S_SAT / 16 | 通常は同じ動作を受ける | ±300 °/s/±156.9 m/s²、フィルター前ピークも対象で平均範囲内でも飽和し得る。Δθ/Δvが過小。通常動作で継続するならモーター・プロペラ・エンジンの高周波振動と防振を確認。頻繁な超過は広範囲ジャイロを検討。 |
| S_INIT / 32 | はい | 起動/REINIT後約250 ms。短時間増加後固定なら通常正常。運転中再発は電源低下によるリセットを確認。データ信頼不可。 |
| S_ERROR / 8 + IDS / 4 | 3個:共通条件、1個:部品 | 自己診断異常、信頼不可。3.3 V/VDDIOノイズ・低下・温度を確認。REINIT後も継続なら半田・部品を確認。 |
| CE / 2 | — | 無効命令。データ自体は有効だが合成はエラーマスクで除外。通常は発生しないためメーカーへ報告。 |
- 最初にcrc_err/spi_timeoutも増加するか確認し、増加なら通信・タイミングを確認。
- 3個か1個かを判別。共通なら運動・振動・共通電源・温度を確認。
$SPNVCMD,OUT,rawを送信し、2.1.1 statusで16・32・8/12を識別。- 通常(status & 0x7F) ≠ 0を除外し、PPSはエラーとしません。3個ともエラーなら3個へフォールバック。FUSED継続だけで正常とせずRAW statusも確認。
3.2 $SPNVFUS — 合成統計¶
$SPNVFUS,<outputs>,<rej1>,<rej2>,<rej3>,<incomplete>,<degraded>,<gth>,<ath>*XX
| # | フィールド | 型/小数桁 | 単位 | 説明 |
|---|---|---|---|---|
| 1 | outputs |
整数 | — | 合成出力累計。 |
| 2–4 | rej1 / rej2 / rej3 |
整数 | — | エラーフラグや継続偏差による各IMU除外区間累計。PPSを除く。通常使用・一般手持ち動作で増加しない。 |
| 5 | incomplete |
整数 | — | 3個が揃う前に合成した累計。 |
| 6 | degraded |
整数 | — | 使用可能IMUが2個未満の累計。 |
| 7 | gth |
浮動小数点 3桁 | °/s | 現在のジャイロ除外しきい値。 |
| 8 | ath |
浮動小数点 3桁 | m/s² | 現在の加速度除外しきい値。 |
3.3 $SPNVSYS — システム統計¶
$SPNVSYS,<uart_drop>,<loops_per_s>,<isr_cpu_total>,<rate_hz>,<out_mode>,<uart_resets>,<pps_cnt>,<baro_samples>,<baro_i2c_err>,<baro_timeouts>,<baro_stale>,<baro_hz>,<proto_mode>,<baud>,<pps_state>,<u2_drop>,<trig_cnt>,<trig_rej>*XX
| # | フィールド | 説明 |
|---|---|---|
| 1 | uart_drop |
UART1送信キュー満杯でのメッセージ破棄数 |
| 2 | loops_per_s |
直近1秒主ループ回数、資料の目安約77000 |
| 3 | isr_cpu_total |
3個ISR合計CPU百分率、目安約40% |
| 4 | rate_hz |
現在IMUレート |
| 5 | out_mode |
none / raw / fused / both |
| 6 | uart_resets |
UART送信停止後の自動リセット数、通常0 |
| 7 | pps_cnt |
ノイズを含むPPS生取得数。有効数はSPNVPPS edges |
| 8 | baro_samples |
成功気圧標本累計、毎秒約BRATE増加 |
| 9 | baro_i2c_err |
I2C NACK/競合累計、通常0 |
| 10 | baro_timeouts |
I2Cタイムアウト後の再初期化累計、通常0 |
| 11 | baro_stale |
200 ms超気圧新データなし:1はい、0いいえ |
| 12 | baro_hz |
気圧出力レート |
| 13 | proto_mode |
ascii / binary |
| 14 | baud |
現在UART1速度 |
| 15 | pps_state |
0 OFF / 1 NO_SIGNAL / 2 ACQUIRING / 3 LOCKED / 4 HOLDOVER |
| 16 | u2_drop |
UART2満杯で破棄したメッセージ数 |
| 17 | trig_cnt |
トリガーモードで採用した立ち上がり数。連続モードでは加算しない |
| 18 | trig_rej |
0.5 ms未満のノイズ、または主ループ繁忙時のトリガーキュー溢れで除外したエッジ数 |
uart_drop継続増加は通常UART1帯域超過です。RATE・内容を減らすかbinary・高速化を使用。baro_samplesは初期約+50/s。baro_staleは現在状態で累計ではありません。pps_state/u2_dropはfw 0.8.0、trig_cnt/trig_rejはfw 0.9.0以降です。
上記はASCII順序です。Binary SYSは順序が異なり、out_mode/proto_modeが数値、baudなしです。Binary表に従ってください。
3.4 $SPNVHB — 診断ハートビート¶
メーカー診断をkey=value形式で提供。通常のアプリケーションでは読み飛ばせます。有効にすると毎秒1回出力します。PDFは固定キー名・順序・各型を公表していないため、STAT/SYSのような固定列パケットではありません。
以下は構造の模式表記です。<key>・<value>・[...]は実送信文字ではなく、診断キー一覧が公開されている意味でもありません。
$SPNVHB,<key>=<value>[,<key>=<value>...]*XX
| コマンド | 説明 |
|---|---|
$SPNVCMD,HB,0 |
診断ハートビート無効。 |
$SPNVCMD,HB,1 |
診断ハートビート有効。 |
資料間の相違:仕様3.4は初期状態で毎秒1回と記載しますが、ユーザーマニュアルのパラメーター表はHB初期値0です。有効・無効の初期値が一致しないためHB,0またはHB,1を明示し、HB有無だけで計測出力を判定しないでください。
診断を保存する場合、まず行XORを確認しkey=valueを保持します。未知キーは原文保持または無視し、固定列番号を割り当てません。ASCII例はホスト解析と統合を参照。
原資料:IMU600-V2 Communication Protocol v1.1 · PDFページ 10–14