Skip to content

Commit d54ef8e

Browse files
huseyinsahtsfeilmeier
andauthoredJun 1, 2023
ElementToChannelConverter: use static imports & add mathematical operators (OpenEMS#2197)
Use static imports for `ElementToChannelConverter`s throughout the project for brevity. Add multiply, divide, add, subtract methods in ElementToChannelConverter to modify the channel value. Co-authored-by: Stefan Feilmeier <stefan.feilmeier@fenecon.de>
1 parent 2136fb6 commit d54ef8e

File tree

58 files changed

+1672
-1920
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1672
-1920
lines changed
 

‎io.openems.edge.battery.bmw/src/io/openems/edge/battery/bmw/BmwBatteryImpl.java

+29-37
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package io.openems.edge.battery.bmw;
22

3+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.DIRECT_1_TO_1;
4+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.INVERT;
5+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.SCALE_FACTOR_2;
6+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.SCALE_FACTOR_MINUS_1;
7+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.SCALE_FACTOR_MINUS_2;
8+
39
import java.time.LocalDateTime;
410

511
import org.osgi.service.cm.ConfigurationAdmin;
@@ -27,7 +33,6 @@
2733
import io.openems.edge.battery.bmw.enums.State;
2834
import io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent;
2935
import io.openems.edge.bridge.modbus.api.BridgeModbus;
30-
import io.openems.edge.bridge.modbus.api.ElementToChannelConverter;
3136
import io.openems.edge.bridge.modbus.api.ModbusComponent;
3237
import io.openems.edge.bridge.modbus.api.ModbusProtocol;
3338
import io.openems.edge.bridge.modbus.api.element.BitsWordElement;
@@ -351,8 +356,7 @@ protected ModbusProtocol defineModbusProtocol() throws OpenemsException {
351356
m(BmwChannelId.HEART_BEAT, new UnsignedWordElement(1399)), //
352357
m(BmwChannelId.BMS_STATE_COMMAND, new UnsignedWordElement(1400)), //
353358
m(BmwChannelId.OPERATING_STATE_INVERTER, new UnsignedWordElement(1401)), //
354-
m(BmwChannelId.DC_LINK_VOLTAGE, new UnsignedWordElement(1402),
355-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
359+
m(BmwChannelId.DC_LINK_VOLTAGE, new UnsignedWordElement(1402), SCALE_FACTOR_MINUS_1), //
356360
m(BmwChannelId.DC_LINK_CURRENT, new UnsignedWordElement(1403)), //
357361
m(BmwChannelId.OPERATION_MODE_REQUEST_GRANTED, new UnsignedWordElement(1404)), //
358362
m(BmwChannelId.OPERATION_MODE_REQUEST_CANCELED, new UnsignedWordElement(1405)), //
@@ -375,23 +379,18 @@ protected ModbusProtocol defineModbusProtocol() throws OpenemsException {
375379
m(BmwChannelId.INFO_BITS, new UnsignedWordElement(1005)),
376380
m(BmwChannelId.MAXIMUM_OPERATING_CURRENT, new SignedWordElement(1006)), //
377381
m(BmwChannelId.MINIMUM_OPERATING_CURRENT, new SignedWordElement(1007)), //
378-
m(Battery.ChannelId.CHARGE_MAX_VOLTAGE, new UnsignedWordElement(1008),
379-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
380-
m(Battery.ChannelId.DISCHARGE_MIN_VOLTAGE, new UnsignedWordElement(1009),
381-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
382+
m(Battery.ChannelId.CHARGE_MAX_VOLTAGE, new UnsignedWordElement(1008), SCALE_FACTOR_MINUS_1), //
383+
m(Battery.ChannelId.DISCHARGE_MIN_VOLTAGE, new UnsignedWordElement(1009), SCALE_FACTOR_MINUS_1), //
382384
m(Battery.ChannelId.DISCHARGE_MAX_CURRENT, new SignedWordElement(1010)), //
383-
m(Battery.ChannelId.CHARGE_MAX_CURRENT, new SignedWordElement(1011),
384-
ElementToChannelConverter.INVERT), //
385+
m(Battery.ChannelId.CHARGE_MAX_CURRENT, new SignedWordElement(1011), INVERT), //
385386
m(BmwChannelId.MAXIMUM_LIMIT_DYNAMIC_VOLTAGE, new UnsignedWordElement(1012),
386-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
387+
SCALE_FACTOR_MINUS_1), //
387388
m(BmwChannelId.MINIMUM_LIMIT_DYNAMIC_VOLTAGE, new UnsignedWordElement(1013),
388-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
389+
SCALE_FACTOR_MINUS_1), //
389390
m(BmwChannelId.NUMBER_OF_STRINGS_CONNECTED, new UnsignedWordElement(1014)), //
390391
m(BmwChannelId.NUMBER_OF_STRINGS_INSTALLED, new UnsignedWordElement(1015)), //
391-
m(BmwChannelId.SOC_ALL_STRINGS, new UnsignedWordElement(1016),
392-
ElementToChannelConverter.SCALE_FACTOR_MINUS_2), //
393-
m(Battery.ChannelId.SOC, new UnsignedWordElement(1017),
394-
ElementToChannelConverter.SCALE_FACTOR_MINUS_2), //
392+
m(BmwChannelId.SOC_ALL_STRINGS, new UnsignedWordElement(1016), SCALE_FACTOR_MINUS_2), //
393+
m(Battery.ChannelId.SOC, new UnsignedWordElement(1017), SCALE_FACTOR_MINUS_2), //
395394
m(BmwChannelId.REMAINING_CHARGE_CAPACITY, new UnsignedWordElement(1018)), //
396395
m(BmwChannelId.REMAINING_DISCHARGE_CAPACITY, new UnsignedWordElement(1019)), //
397396
m(BmwChannelId.REMAINING_CHARGE_ENERGY, new UnsignedWordElement(1020)), //
@@ -400,50 +399,43 @@ protected ModbusProtocol defineModbusProtocol() throws OpenemsException {
400399
m(BmwChannelId.TOTAL_ENERGY, new UnsignedWordElement(1023)), //
401400
m(BmwChannelId.NOMINAL_CAPACITY, new UnsignedWordElement(1024)), //
402401
m(Battery.ChannelId.CAPACITY, new UnsignedWordElement(1025)), //
403-
m(Battery.ChannelId.SOH, new UnsignedWordElement(1026),
404-
ElementToChannelConverter.SCALE_FACTOR_MINUS_2), //
405-
m(Battery.ChannelId.VOLTAGE, new UnsignedWordElement(1027),
406-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
407-
m(BmwChannelId.DC_VOLTAGE_AVERAGE, new UnsignedWordElement(1028),
408-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1)), //
402+
m(Battery.ChannelId.SOH, new UnsignedWordElement(1026), SCALE_FACTOR_MINUS_2), //
403+
m(Battery.ChannelId.VOLTAGE, new UnsignedWordElement(1027), SCALE_FACTOR_MINUS_1), //
404+
m(BmwChannelId.DC_VOLTAGE_AVERAGE, new UnsignedWordElement(1028), SCALE_FACTOR_MINUS_1)), //
409405
new FC4ReadInputRegistersTask(1029, Priority.HIGH, //
410406
m(new SignedWordElement(1029)) //
411-
.m(BmwChannelId.DC_CURRENT, ElementToChannelConverter.SCALE_FACTOR_MINUS_1) //
412-
.m(Battery.ChannelId.CURRENT, ElementToChannelConverter.SCALE_FACTOR_MINUS_1) //
407+
.m(BmwChannelId.DC_CURRENT, SCALE_FACTOR_MINUS_1) //
408+
.m(Battery.ChannelId.CURRENT, SCALE_FACTOR_MINUS_1) //
413409
.build()), //
414410
new FC4ReadInputRegistersTask(1030, Priority.HIGH, //
415411
m(BmwChannelId.AVERAGE_TEMPERATURE, new SignedWordElement(1030))), //
416412
new FC4ReadInputRegistersTask(1031, Priority.HIGH, //
417413
m(new SignedWordElement(1031)) //
418-
.m(BmwChannelId.MINIMUM_TEMPERATURE, ElementToChannelConverter.DIRECT_1_TO_1) //
419-
.m(Battery.ChannelId.MIN_CELL_TEMPERATURE, ElementToChannelConverter.DIRECT_1_TO_1) //
414+
.m(BmwChannelId.MINIMUM_TEMPERATURE, DIRECT_1_TO_1) //
415+
.m(Battery.ChannelId.MIN_CELL_TEMPERATURE, DIRECT_1_TO_1) //
420416
.build()), //
421417
new FC4ReadInputRegistersTask(1032, Priority.HIGH, //
422418
m(new SignedWordElement(1032)) //
423-
.m(BmwChannelId.MAXIMUM_TEMPERATURE, ElementToChannelConverter.DIRECT_1_TO_1) //
424-
.m(Battery.ChannelId.MAX_CELL_TEMPERATURE, ElementToChannelConverter.DIRECT_1_TO_1) //
419+
.m(BmwChannelId.MAXIMUM_TEMPERATURE, DIRECT_1_TO_1) //
420+
.m(Battery.ChannelId.MAX_CELL_TEMPERATURE, DIRECT_1_TO_1) //
425421
.build()), //
426422
new FC4ReadInputRegistersTask(1033, Priority.HIGH,
427423
m(Battery.ChannelId.MIN_CELL_VOLTAGE, new UnsignedWordElement(1033)), //
428424
m(Battery.ChannelId.MAX_CELL_VOLTAGE, new UnsignedWordElement(1034)), //
429425
m(BmwChannelId.AVERAGE_CELL_VOLTAGE, new UnsignedWordElement(1035)), //
430426
// not defined by "BCS_HL-SW_Operating-Instructions_V1.0.2_under_work_ChL.pdf"
431427
m(BmwChannelId.INTERNAL_RESISTANCE, new UnsignedWordElement(1036)),
432-
m(BmwChannelId.INSULATION_RESISTANCE, new UnsignedWordElement(1037),
433-
ElementToChannelConverter.DIRECT_1_TO_1), //
428+
m(BmwChannelId.INSULATION_RESISTANCE, new UnsignedWordElement(1037), DIRECT_1_TO_1), //
434429
// not defined by "BCS_HL-SW_Operating-Instructions_V1.0.2_under_work_ChL.pdf"
435-
m(BmwChannelId.CONTAINER_TEMPERATURE, new UnsignedWordElement(1038),
436-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1),
430+
m(BmwChannelId.CONTAINER_TEMPERATURE, new UnsignedWordElement(1038), SCALE_FACTOR_MINUS_1),
437431
// not defined by "BCS_HL-SW_Operating-Instructions_V1.0.2_under_work_ChL.pdf"
438-
m(BmwChannelId.AMBIENT_TEMPERATURE, new UnsignedWordElement(1039),
439-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1),
432+
m(BmwChannelId.AMBIENT_TEMPERATURE, new UnsignedWordElement(1039), SCALE_FACTOR_MINUS_1),
440433
// not defined by "BCS_HL-SW_Operating-Instructions_V1.0.2_under_work_ChL.pdf"
441-
m(BmwChannelId.HUMIDITY_CONTAINER, new UnsignedWordElement(1040),
442-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1),
434+
m(BmwChannelId.HUMIDITY_CONTAINER, new UnsignedWordElement(1040), SCALE_FACTOR_MINUS_1),
443435
m(BmwChannelId.MAXIMUM_LIMIT_DYNAMIC_CURRENT_HIGH_RES, new SignedWordElement(1041),
444-
ElementToChannelConverter.SCALE_FACTOR_2), //
436+
SCALE_FACTOR_2), //
445437
m(BmwChannelId.MINIMUM_LIMIT_DYNAMIC_CURRENT_HIGH_RES, new SignedWordElement(1042),
446-
ElementToChannelConverter.SCALE_FACTOR_2), //
438+
SCALE_FACTOR_2), //
447439
m(BmwChannelId.FULL_CYCLE_COUNT, new UnsignedWordElement(1043)), //
448440
// not defined by "BCS_HL-SW_Operating-Instructions_V1.0.2_under_work_ChL.pdf"
449441
m(BmwChannelId.OPERATING_TIME_COUNT, new UnsignedDoublewordElement(1044)),

‎io.openems.edge.battery.bydcommercial/src/io/openems/edge/battery/bydcommercial/BatteryBoxC130Impl.java

+22-25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package io.openems.edge.battery.bydcommercial;
22

3+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.DIRECT_1_TO_1;
4+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.SCALE_FACTOR_2;
5+
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.SCALE_FACTOR_MINUS_1;
6+
37
import java.util.concurrent.atomic.AtomicReference;
48
import java.util.function.Consumer;
59

@@ -30,7 +34,6 @@
3034
import io.openems.edge.battery.protection.BatteryProtection;
3135
import io.openems.edge.bridge.modbus.api.AbstractOpenemsModbusComponent;
3236
import io.openems.edge.bridge.modbus.api.BridgeModbus;
33-
import io.openems.edge.bridge.modbus.api.ElementToChannelConverter;
3437
import io.openems.edge.bridge.modbus.api.ModbusComponent;
3538
import io.openems.edge.bridge.modbus.api.ModbusProtocol;
3639
import io.openems.edge.bridge.modbus.api.ModbusUtils;
@@ -188,44 +191,38 @@ protected ModbusProtocol defineModbusProtocol() throws OpenemsException {
188191
), //
189192
new FC3ReadRegistersTask(0x2100, Priority.HIGH, //
190193
m(new UnsignedWordElement(0x2100).onUpdateCallback(this.onRegister0x2100Update)) //
191-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_VOLTAGE, ElementToChannelConverter.SCALE_FACTOR_2) // [mV]
192-
.m(Battery.ChannelId.VOLTAGE, ElementToChannelConverter.SCALE_FACTOR_MINUS_1) // [V]
194+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_VOLTAGE, SCALE_FACTOR_2) // [mV]
195+
.m(Battery.ChannelId.VOLTAGE, SCALE_FACTOR_MINUS_1) // [V]
193196
.build(), //
194197
m(new SignedWordElement(0x2101)) //
195-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_CURRENT, ElementToChannelConverter.SCALE_FACTOR_2) // [mA]
196-
.m(Battery.ChannelId.CURRENT, ElementToChannelConverter.SCALE_FACTOR_MINUS_1) // [A]
198+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_CURRENT, SCALE_FACTOR_2) // [mA]
199+
.m(Battery.ChannelId.CURRENT, SCALE_FACTOR_MINUS_1) // [A]
197200
.build(), //
198201
m(BatteryBoxC130.ChannelId.BATTERY_WORK_STATE, new UnsignedWordElement(0x2102)), //
199202
m(Battery.ChannelId.SOC, new UnsignedWordElement(0x2103)), //
200203
m(new UnsignedWordElement(0x2104)) //
201-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_SOH, ElementToChannelConverter.DIRECT_1_TO_1) // [%]
202-
.m(Battery.ChannelId.SOH, ElementToChannelConverter.DIRECT_1_TO_1) // [%]
204+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_SOH, DIRECT_1_TO_1) // [%]
205+
.m(Battery.ChannelId.SOH, DIRECT_1_TO_1) // [%]
203206
.build(), //
204207
m(BatteryBoxC130.ChannelId.CLUSTER_1_MAX_CELL_VOLTAGE_ID, new UnsignedWordElement(0x2105)), //
205208
m(new UnsignedWordElement(0x2106)) //
206-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MAX_CELL_VOLTAGE,
207-
ElementToChannelConverter.DIRECT_1_TO_1) //
208-
.m(Battery.ChannelId.MAX_CELL_VOLTAGE, ElementToChannelConverter.DIRECT_1_TO_1) //
209+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MAX_CELL_VOLTAGE, DIRECT_1_TO_1) //
210+
.m(Battery.ChannelId.MAX_CELL_VOLTAGE, DIRECT_1_TO_1) //
209211
.build(), //
210212
m(BatteryBoxC130.ChannelId.CLUSTER_1_MIN_CELL_VOLTAGE_ID, new UnsignedWordElement(0x2107)), //
211213
m(new UnsignedWordElement(0x2108)) //
212-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MIN_CELL_VOLTAGE,
213-
ElementToChannelConverter.DIRECT_1_TO_1) //
214-
.m(Battery.ChannelId.MIN_CELL_VOLTAGE, ElementToChannelConverter.DIRECT_1_TO_1) //
214+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MIN_CELL_VOLTAGE, DIRECT_1_TO_1) //
215+
.m(Battery.ChannelId.MIN_CELL_VOLTAGE, DIRECT_1_TO_1) //
215216
.build(), //
216217
m(BatteryBoxC130.ChannelId.CLUSTER_1_MAX_CELL_TEMPERATURE_ID, new UnsignedWordElement(0x2109)), //
217218
m(new SignedWordElement(0x210A)) //
218-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MAX_CELL_TEMPERATURE,
219-
ElementToChannelConverter.DIRECT_1_TO_1) //
220-
.m(Battery.ChannelId.MAX_CELL_TEMPERATURE,
221-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1) //
219+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MAX_CELL_TEMPERATURE, DIRECT_1_TO_1) //
220+
.m(Battery.ChannelId.MAX_CELL_TEMPERATURE, SCALE_FACTOR_MINUS_1) //
222221
.build(), //
223222
m(BatteryBoxC130.ChannelId.CLUSTER_1_MIN_CELL_TEMPERATURE_ID, new UnsignedWordElement(0x210B)), //
224223
m(new SignedWordElement(0x210C)) //
225-
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MIN_CELL_TEMPERATURE,
226-
ElementToChannelConverter.DIRECT_1_TO_1) //
227-
.m(Battery.ChannelId.MIN_CELL_TEMPERATURE,
228-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1) //
224+
.m(BatteryBoxC130.ChannelId.CLUSTER_1_MIN_CELL_TEMPERATURE, DIRECT_1_TO_1) //
225+
.m(Battery.ChannelId.MIN_CELL_TEMPERATURE, SCALE_FACTOR_MINUS_1) //
229226
.build()), //
230227

231228
new FC3ReadRegistersTask(0x211D, Priority.HIGH, //
@@ -325,9 +322,9 @@ protected ModbusProtocol defineModbusProtocol() throws OpenemsException {
325322
), //
326323
new FC3ReadRegistersTask(0x216C, Priority.HIGH, //
327324
m(BatteryProtection.ChannelId.BP_CHARGE_BMS, new UnsignedWordElement(0x216C),
328-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
325+
SCALE_FACTOR_MINUS_1), //
329326
m(BatteryProtection.ChannelId.BP_DISCHARGE_BMS, new UnsignedWordElement(0x216D),
330-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1) //
327+
SCALE_FACTOR_MINUS_1) //
331328
), //
332329

333330
new FC3ReadRegistersTask(0x2183, Priority.LOW, //
@@ -717,10 +714,10 @@ public StartStop getStartStopTarget() {
717714
new UnsignedWordElement(0x210E))), //
718715
new FC3ReadRegistersTask(0x216E, Priority.LOW, //
719716
m(Battery.ChannelId.CHARGE_MAX_VOLTAGE, new UnsignedWordElement(0x216E), //
720-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1), //
717+
SCALE_FACTOR_MINUS_1), //
721718
m(Battery.ChannelId.DISCHARGE_MIN_VOLTAGE,
722719
new UnsignedWordElement(0x216F), //
723-
ElementToChannelConverter.SCALE_FACTOR_MINUS_1) //
720+
SCALE_FACTOR_MINUS_1) //
724721
));
725722
} catch (OpenemsException e) {
726723
BatteryBoxC130Impl.this.logError(BatteryBoxC130Impl.this.log,

0 commit comments

Comments
 (0)
Please sign in to comment.