BMS Cyphal Registers
The registers for hardware.version and software.version (see below) are used during startup to check if the executed software matches the system.
If the compilation target hardware version (constant static value within the application) does not match the loaded version of the register (from flash storage),
the application is not executed any further.
If the compilation target software version (constant static value within the application) is a major version change to the flash stored software version,
the application is not executed any further.
Register Creation
BMD default registers
| name |
data_type |
default value |
flags |
comment |
| bms.board.software.version |
String[64] |
git hash |
- - |
|
| bms.board.hardware.version |
Natural8Array[2] |
e.g. [4,2] |
- p |
|
| bms.board.hardware.flash_date |
String[35] |
e.g. "2025-06-02 10:51:26+02:00" |
m p |
|
| bms.board.hardware.set_id |
Natural16[1] |
0x0000 |
m p |
|
| bms.board.hardware.set_index |
Natural8[1] |
0 |
m p |
|
| bms.board.hardware.pack_sn |
Natural32Array[1] |
0x00000000 |
m p |
|
| bms.board.hardware.bms_id |
String[35] |
e.g. "2031354D543050040032003000000000" |
m p |
|
| bms.measurement.vpack.gain |
Real32Array[1] |
1.0 |
m p |
|
| bms.measurement.vbat.gain |
Real32Array[1] |
1.0 |
m p |
|
| bms.measurement.ibat.offset |
Real32Array[1] |
0.0 |
m p |
|
| bms.cell_balance.threshold |
Real32Array[1] |
300.0 |
m p |
|
| bms.maintenance.active |
BitArray[1] |
0 = false |
m |
|
| bms.maintenance.exit_state |
Unstructured[1] |
FSM_STATE::IDLE = 2, see FSM state encoding |
m |
|
| bms.maintenance.latch |
BitArray[1] |
0 = false |
m |
|
| bms.maintenance.hotswap |
BitArray[1] |
0 = false |
m |
|
BMS Publisher
| name |
data_type |
default value |
flags |
comment |
| uavcan.pub.energy_source.id |
Natural16Array[1] |
6063 |
m - |
|
| uavcan.pub.energy_source.type |
String[40] |
"reg.udral.physics.electricity.Power.0.1" |
- - |
|
| uavcan.pub.energy_source.dt_ms |
Natural16Array[1] |
100 |
m p |
|
| uavcan.pub.power_data.id |
Natural16Array[1] |
6060 |
m - |
|
| uavcan.pub.power_data.type |
String[37] |
"starcopter.highdra.bms.PowerData.0.2" |
- - |
|
| uavcan.pub.power_data.dt_ms |
Natural16Array[1] |
2000 |
m p |
|
| uavcan.pub.temp_data.id |
Natural16Array[1] |
6061 |
m - |
|
| uavcan.pub.temp_data.type |
String[36] |
"starcopter.highdra.bms.TempData.0.1" |
- - |
|
| uavcan.pub.temp_data.dt_ms |
Natural16Array[1] |
2000 |
m p |
|
| uavcan.pub.state.id |
Natural16Array[1] |
6062 |
m - |
|
| uavcan.pub.state.type |
String[33] |
"starcopter.highdra.bms.State.0.2" |
- - |
|
| uavcan.pub.state.dt_ms |
Natural16Array[1] |
2500 |
m p |
|
| uavcan.pub.bms_data.id |
Natural16Array[1] |
6064 |
m - |
|
| uavcan.pub.bms_data.type |
String[33] |
"starcopter.highdra.bms.BMSData.0.1" |
- - |
|
| uavcan.pub.bms_data.dt_ms |
Natural16Array[1] |
100 |
m p |
|