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 — 無効命令。データ自体は有効だが合成はエラーマスクで除外。通常は発生しないためメーカーへ報告。
  1. 最初にcrc_err/spi_timeoutも増加するか確認し、増加なら通信・タイミングを確認。
  2. 3個か1個かを判別。共通なら運動・振動・共通電源・温度を確認。
  3. $SPNVCMD,OUT,rawを送信し、2.1.1 statusで16・32・8/12を識別。
  4. 通常(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

原ページを読む · 3資料の章対応と相違点

このカテゴリの概要 · 設定ガイド一覧