Orion:MainとCANノードの通信¶
Mainと左右BLDC・Sub・電源基板の通信の正本。対象はOrionの現行Main送受信実装であり、Atlasの対応を示さない。
- フレーム形式: Classic CAN
- ID: Standard ID
- Bit rate: 約 1 Mbps
バスの使い分け¶
- FDCAN1: 右側モータ系、ドリブラー、電源 / キッカー系を送信対象に含む。
- FDCAN2: 左側モータ系、電源 / キッカー系を送信対象に含む。
- Mainは両バスで下表の受信IDを同じ形式として解釈する。Sub・センサの物理的な結線先は未確認である。
以下のID表は用途の一覧で、バイト配置は後述のペイロードに定義する。各基板の全パラメーターの許容範囲と物理配線の照合は含まない。
送信 CAN ID¶
| ID | 送信先 / 指令 | バス | データ |
|---|---|---|---|
| 0x010 | 電源制御 / パラメータ | FDCAN1, FDCAN2 | byte0: param id、byte1 以降: 値 |
| 0x100 | Front Right モータ | FDCAN1 | float duty |
| 0x101 | Back Right モータ | FDCAN1 | float duty |
| 0x102 | Back Left モータ | FDCAN2 | float duty |
| 0x103 | Front Left モータ | FDCAN2 | float duty |
| 0x104 | ドリブラーモータ | FDCAN1 | float duty |
| 0x110 | キッカー | FDCAN1, FDCAN2 | 充電、電圧、ストレート / チップ、キック強度 |
| 0x300 - 0x304 | モータパラメータ | FDCAN1/FDCAN2 | param id + float |
| 0x310 | モータキャリブレーション | FDCAN1 or FDCAN2 | dummy 8 byte |
| 0x000 | エラー通知 | FDCAN1, FDCAN2 | 8 byte |
| 0x001 | 電源基板リセット | FDCAN1, FDCAN2 | 0x5A, 0xA5 |
受信 CAN ID¶
| ID | 内容 |
|---|---|
| 0x000 - 0x001 | エラー ID / info / value |
| 0x200 - 0x204 | モータ・ドリブラーの rps と角度 |
| 0x210 - 0x216 | 各基板の電圧、電源バッテリ、キャパシタ電圧 |
| 0x220 - 0x223 | モータ温度、ドライバ温度 |
| 0x224 | 電源系 FET 温度、コイル温度 |
| 0x230 - 0x234 | 各系統の電流 |
| 0x240 | ボール検出 |
| 0x241 | マウスセンサ raw X/Y と quality |
| 0x500 - 0x503 | モータパラメータ rps |
ペイロードの配置¶
以下はOrionMainの送信・受信処理と4WS_MainFWの互換処理で照合した配置である。整数はlittle-endian、floatはIEEE 754 binary32のlittle-endianとする。角度の機体補正、輪の配置、受信値の有効性判定はこのバイト配置とは別に扱う。
電源指令¶
| 指令 | ID | byte配置 |
|---|---|---|
| 電源ON/OFF | 0x010 | byte 0=0、byte 1=OFF 0 / ON 1、byte 2..7=0 |
| 保護パラメーター | 0x010 | byte 0=パラメーターID、byte 1..4=float値、byte 5..7=0 |
| 電源リセット | 0x001 | byte 0=0x5A、byte 1=0xA5、byte 2..7=0 |
これらの指令は8バイトで、両バスへ送る。保護パラメーターIDは1=最低電圧、2=最高電圧、3=最大電流、4=FET温度上限、5=コイル温度上限。機器の許容範囲・値間の整合、両バスで受信した指令の重複処理、再送時の扱いは相手側との確認が必要である。Main側の送信キューへの登録成功だけで機器への反映を確認したことにはならない。
テレメトリー¶
| ID | byte配置と値 |
|---|---|
| 0x000–001 | byte 0..1=エラーID uint16、2..3=補足情報 uint16、4..7=値 float |
| 0x200–204 | byte 0..3=回転数 rps float、4..7=エンコーダー角度 rad float |
| 0x210–216 | byte 0..3=電圧 V float |
| 0x220–223 | byte 0..3=モーター温度 float、4..7=ドライバー温度 float |
| 0x224 | byte 0=FET温度、1..2=コイル2個の温度(各uint8) |
| 0x230–234 | byte 0..3=電流 float |
| 0x240 | byte 0..1=ボール検出2個(各uint8) |
| 0x241 | byte 0..1=マウスX int16、2..3=Y int16、4..5=品質 uint16 |
| 0x500–503 | byte 0..3=モーターパラメーター応答 float |
表にない末尾領域は、この照合では意味を定義していない。表の使用バイト数を各IDのDLCや送信周期の定義とみなさない。特に電源電圧のDLCは機器側との照合が必要で、4WS側の8バイト限定デコーダーを全機器の共通要件にしない。4WSの受信観測・破棄・非対応形式はFWの対応状況で管理する。
配置の照合範囲¶
OrionMainのactuatorPower_ONOFF()、actuator_power_param()、resetPowerBoard()、parseCanCmd()と、4WS_MainFWのpower_packet_*()、orion_telemetry_decode()を参照して配置を照合した。OrionMainはコミット500855ee2a2fa3e99715a6b71a97bf17d0c2f71c、4WS_MainFWは6f1d5f9ebae95e606414236afa25452d8f224ecb時点。これは配置を確認した範囲であり、CANノード側FW・物理配線・全DLCの一致や4WS機体への適合を保証しない。
更新・照会¶
更新用CANはデータID 0x480~0x4FF、コマンドID 0x610、応答ID 0x650 + node IDを使う。各データフレームのimageデータは7バイトとする。chunk上限と再送条件はMCU更新を参照する。FWバージョン照会は 0x611。更新対象・ノード番号と給電順序はMCU更新を参照する。
物理配線と回路図は未照合であり、バスの割当はMainの送受信実装から確認した論理構成である。FIFO実装とピン・割り込み設定はMain内部のハードウェア実装を参照する。