Cell balancing calculation added. Fixed rounding of real numbers to the second decimal place

This commit is contained in:
Yury Shuvakin
2022-08-26 09:30:07 +03:00
parent 6ae4386b37
commit 046d1f55ce
7 changed files with 34 additions and 14 deletions

View File

@@ -3,6 +3,7 @@ import QtQuick.Layouts 1.12
import Controls 1.0 as Controls import Controls 1.0 as Controls
import Cubo 1.0 import Cubo 1.0
import Utils 1.0
Item { Item {
ColumnLayout { ColumnLayout {
@@ -299,27 +300,27 @@ Item {
target: BmsInterface.commands() target: BmsInterface.commands()
onValuesReceived: { onValuesReceived: {
batteryChargeLevelLabel.text = values.soC batteryChargeLevelLabel.text = values.soC
batteryVoltageLabel.text = values.packVoltage batteryVoltageLabel.text = MathHelper.roundDouble(values.packVoltage)
batteryTemperatureLabel.text = values.tempBattHigh batteryTemperatureLabel.text = MathHelper.roundDouble(values.tempBattHigh)
bmsTemperatureLabel.text = values.tempBMSHigh bmsTemperatureLabel.text = MathHelper.roundDouble(values.tempBMSHigh)
maximumCellVoltageLabel.text = values.cVHigh maximumCellVoltageLabel.text = MathHelper.roundDouble(values.cVHigh)
minimumCellVoltageLabel.text = values.cVLow minimumCellVoltageLabel.text = MathHelper.roundDouble(values.cVLow)
currentLabel.text = values.packCurrent currentLabel.text = MathHelper.roundDouble(values.packCurrent)
} }
} }
Connections { Connections {
target: BmsInterface.bmsConfig() target: BmsInterface.bmsConfig()
onUpdated: { onUpdated: {
serialNumberField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold") // TODO serialNumberField.text = MathHelper.roundDouble(BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold")) // TODO
numberOfModulesLabel.text = BmsInterface.bmsConfig().getParamInt("cellMonitorICCount") numberOfModulesLabel.text = BmsInterface.bmsConfig().getParamInt("cellMonitorICCount")
numberOfCellsLabel.text = BmsInterface.bmsConfig().getParamInt("noOfCellsSeries") numberOfCellsLabel.text = BmsInterface.bmsConfig().getParamInt("noOfCellsSeries")
nominalCapacityLabel.text = BmsInterface.bmsConfig().getParamDouble("batteryCapacity") nominalCapacityLabel.text = MathHelper.roundDouble(BmsInterface.bmsConfig().getParamDouble("batteryCapacity"))
actualCapacityLabel.text = nominalCapacityLabel.text // TODO actualCapacityLabel.text = nominalCapacityLabel.text // TODO
} }
} }

View File

@@ -70,7 +70,7 @@ Item {
} }
Controls.SubtitleLabel { Controls.SubtitleLabel {
text: index + 1 id: indexLabel
color: Palette.tableHeaderTextColor color: Palette.tableHeaderTextColor
Layout.preferredWidth: 25 Layout.preferredWidth: 25
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
@@ -97,6 +97,10 @@ Item {
Item { Item {
Layout.preferredWidth: parent.width / 6 - 20 Layout.preferredWidth: parent.width / 6 - 20
} }
Component.onCompleted: {
indexLabel.text = index + ListView.view.indexOffset
}
} }
} }
@@ -113,6 +117,9 @@ Item {
clip: true clip: true
model: [] model: []
spacing: 0 spacing: 0
boundsBehavior: Flickable.StopAtBounds
property int indexOffset: 1
header: cellListHeader header: cellListHeader
delegate: cellListDelegate delegate: cellListDelegate
@@ -132,6 +139,9 @@ Item {
clip: true clip: true
model: [] model: []
spacing: 0 spacing: 0
boundsBehavior: Flickable.StopAtBounds
property int indexOffset: 17
header: cellListHeader header: cellListHeader
delegate: cellListDelegate delegate: cellListDelegate
@@ -149,7 +159,7 @@ Item {
var firstModel = [] var firstModel = []
for (var i = 0; i < Math.min(cellCount, 16); ++i) { for (var i = 0; i < Math.min(cellCount, 16); ++i) {
firstModel.push({"voltage": cellVoltageArray[i], "balancing": true}) firstModel.push({"voltage": MathHelper.roundDouble(cellVoltageArray[i]), "balancing": cellVoltageArray[i] < 0})
} }
firstCellGroup.model = firstModel firstCellGroup.model = firstModel
@@ -158,7 +168,7 @@ Item {
var secondModel = [] var secondModel = []
for (var j = 16; j < Math.min(cellCount, 32); ++j) { for (var j = 16; j < Math.min(cellCount, 32); ++j) {
secondModel.push({"voltage": cellVoltageArray[j], "balancing": true}) secondModel.push({"voltage": MathHelper.roundDouble(cellVoltageArray[j]), "balancing": cellVoltageArray[i] < 0})
} }
secondCellGroup.model = secondModel secondCellGroup.model = secondModel
} }

View File

@@ -23,9 +23,7 @@ Popup {
background: Rectangle { background: Rectangle {
radius: 6 radius: 6
color: good ? Palette.alternativeBackgroundColor : Palette.invalidColor color: good ? Palette.informationColor : Palette.invalidColor
border.width: 1
border.color: Palette.borderColor
} }
enter: Transition { enter: Transition {

8
qml/Utils/MathHelper.qml Normal file
View File

@@ -0,0 +1,8 @@
pragma Singleton
import QtQuick 2.12
QtObject {
function roundDouble(value) {
return Math.round((value + Number.EPSILON) * 100) / 100
}
}

View File

@@ -22,5 +22,6 @@ QtObject {
property color hoveredButtonColor: "#03AC61" property color hoveredButtonColor: "#03AC61"
property color pressedButtonColor: "#057845" property color pressedButtonColor: "#057845"
property color informationColor: "#4C68ED"
property color invalidColor: "#A31C00" property color invalidColor: "#A31C00"
} }

View File

@@ -1,2 +1,3 @@
module utils module utils
singleton Palette 1.0 Palette.qml singleton Palette 1.0 Palette.qml
singleton MathHelper 1.0 MathHelper.qml

View File

@@ -37,5 +37,6 @@
<file>Controls/DialogBackground.qml</file> <file>Controls/DialogBackground.qml</file>
<file>Screens/MessageDialog.qml</file> <file>Screens/MessageDialog.qml</file>
<file>Screens/StatusPopup.qml</file> <file>Screens/StatusPopup.qml</file>
<file>Utils/MathHelper.qml</file>
</qresource> </qresource>
</RCC> </RCC>