Comments (9)
Some more notes from the slack rant.
Individual cell voltages are a really good indicator of the battery health. The cell voltages might be pretty useless on a daily basis for the user. But when you have an incident on one of the 100s of batteries users may have in the future, they are useful.
I would suggest adding individual cell level voltage to the spec, since the it provides data points to predict failure cases before they actually happen. On the other hand, for a hobbyist all the individual cell voltages would be pretty superfluous.
The other ideology is to have the BMS do some of this cell failure analysis. But it imaginable that it would be extremely hard to associate the data in BMS to a specific flight profile easily. For example, if the battery was flown on a specific "cold/hot" day, and experienced issues, it would be hard to look at flight logs and find out if it was a battery issue if half of the data(such as cell voltages) are in the battery. So we'd have to go back, retrieve that data and associate it with the flight logs.
This is a cell voltage for a battery thats drained. Its a fairly new battery. Towards the end the voltages of the cells diverge. A min and max would show a range of voltages, but it would hide if most of the cells are doing that or if its one cell. This would obfuscate, in a bad way, whether the battery SOC is lower than expected or the particular cell is behaving off-nominal
from public_regulated_data_types.
I think, that the individual cell voltages should certainly be available for research purposes. However, the publication of these messages should be optional. In the common application, it is sufficient to supplement the cell_voltage_min_max
array with the "max" and "min" cell numbers. Specifying a cell number will identify a potentially "bad" cell.
In other cases, the value of SOH may well be sufficient. But in any case, in order to fully understand the state of the battery in case of such a need, individual cell voltages are required.
from public_regulated_data_types.
Okay. May I suggest we amend the battery service specification with a new, optional subject of type uavcan.primitive.array.Real16.1.0
where the battery cell voltages are to be published?
# SUBJECT TYPE TYP. RATE [Hz]
# energy_source reg.drone.physics.electricity.SourceTs 1...100
# battery_status reg.drone.service.battery.Status ~1
# battery_parameters reg.drone.service.battery.Parameters ~0.2
+# battery_cell_voltage uavcan.primitive.array.Real16.1.0 1
#
from public_regulated_data_types.
I think, that the individual cell voltages should certainly be available for research purposes. However, the publication of these messages should be optional. In the common application, it is sufficient to supplement the
cell_voltage_min_max
array with the "max" and "min" cell numbers. Specifying a cell number will identify a potentially "bad" cell.
In other cases, the value of SOH may well be sufficient. But in any case, in order to fully understand the state of the battery in case of such a need, individual cell voltages are required.
@dimracer Few thoughts about the comment:
- I believe that the battery behavior has not been modelled to a good certainty that voltages are only needed during the research phase and not the typical "drone-delivery" operations, yet.
- For example, though there is a definition for SOH, it is not a complete specification. SOH mentions about a log book method for determining battery health due to this complications.
- SOH vary based on age, the existing current draw, operating temperature etc. So even if you have an SOH, it would be a matrix which depends on these parameters(or more). This would be too complex to handle from a uavcan perspective. Due to the wider ranges at which drone power requirements change (reasons being varying payload, polynomial reduction of propeller efficiency at higher wing loading, electrical resistance of battery/motor etc) the approximation of SOH to a single value would also be challenging. This is a bit different from the automotive bms setup where the ranges of power draw are as varying.
@pavel-kirienko Regarding the thought of adding a cell_voltage_min_max
and an optional battery_cell_voltage uavcan.primitive.array.Real16.1.0 1 :
- 'cell_voltage_min_max' seems like an comforting data, but with reduce actional information. _We would see a min and max diverging at some cases during the flight. But the user would have to recreate the flight with the optional uavcan.primitive.array.Real16.1.0 to understand what is happening _
- Since UAVCAN is a standard that is looked up by its adopters , a
cell_voltage_min_max
might send a conflicting message that min_max may be enough for a typical operation? - I personally like to keep data minimal and believe that the BMS system should abstract away these voltage details that are sent to autopilot. But the battery models that are implemented are not advanced enough in my opinion to do this currently.
from public_regulated_data_types.
@echoGee I agree with your reasoning here. Based on your inputs, I suggest we create reg.drone.service.battery.Status.0.2
with the following differences compared to the current v0.1:
- Field
uavcan.si.unit.voltage.Scalar.1.0[2] cell_voltage_min_max
is replaced withvoid64
(to retain wire compatibility with v0.1). - The extent is enlarged up to 600 bytes.
- At the end of the definition we add:
uint8 MAX_CELLS = 255
float16[<=MAX_CELLS] cell_voltages # [volt]
-
Parameters.0.2
is to be released with the cell count replaced withvoid16
. This is because the cell count will be deducible from the Status message. -
Parameters.0.1
andStatus.0.1
are to be@deprecated
.
If you agree, please feel free to send a pull request.
from public_regulated_data_types.
I think we can do that. Would need a bit more reading/understanding to do what you suggested.
from public_regulated_data_types.
@pavel-kirienko : What do you think of this : https://github.com/rotoye/public_regulated_data_types/commits/master ?
from public_regulated_data_types.
@echoGee at a first glance it looks good except that there is one misleading comment:
- @extent 600 * 8 # Single-frame transfer over CAN FD.
+ @extent 600 * 8
Do send a pull request and I will give it another look.
from public_regulated_data_types.
Added a PR #105
from public_regulated_data_types.
Related Issues (20)
- reg.drone.service.battery.Parameters.0.2 is missing the nominal cell voltage HOT 17
- Pregenerated headers of public_regulated_data_types to ease development HOT 3
- Incorrect nested type in reg.drone.physics.kinematics.translation.Velocity3Var
- Suggestions and questions HOT 3
- Some questions about the dsdl file under /uavcan/equipment/power HOT 2
- Migrate to GitHub Actions
- uavcan.can.iface is not exposing available interfaces HOT 5
- Extend primitive types with small fixed-size arrays HOT 2
- pycyphal demo HOT 2
- Remove the translational/rotational segregation in `reg.udral.physics.kinematics` and `reg.udral.physics.dynamics` HOT 1
- Modify the servo interface for compatibility with common trajectory generators HOT 1
- Incorrect name of uavcan.si.magnetic_field_strength
- Define standard registers for publication priority setting
- Stabilize v0.x data types in the `uavcan` namespace
- Add luminance to si types HOT 1
- Allow full stop inside the PORT_NAME
- Transfer UDRAL definitions to the DS-015 project
- Define new minor versions of data types that contain strings
- Cyphal/UDP: provide a standard register for overriding the priority to DSCP mapping
- Add a `CMD_IDENTIFY` to ExecuteCommand HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from public_regulated_data_types.