Skip to content

Commit 345c90f

Browse files
committed
supporting both active inverter request or actively sending to inverter
for PYLON_RS485 and added debug logging
1 parent f59159e commit 345c90f

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

inverter-pylon-rs485/src/main/java/com/airepublic/bmstoinverter/inverter/pylon/rs485/PylonInverterRS485Processor.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
import javax.enterprise.context.ApplicationScoped;
2020

21+
import org.slf4j.Logger;
22+
import org.slf4j.LoggerFactory;
23+
2124
import com.airepublic.bmstoinverter.core.AlarmLevel;
2225
import com.airepublic.bmstoinverter.core.Inverter;
2326
import com.airepublic.bmstoinverter.core.Port;
@@ -32,6 +35,7 @@
3235
*/
3336
@ApplicationScoped
3437
public class PylonInverterRS485Processor extends Inverter {
38+
private final static Logger LOG = LoggerFactory.getLogger(PylonInverterRS485Processor.class);
3539

3640
public PylonInverterRS485Processor() {
3741
super();
@@ -47,7 +51,9 @@ protected PylonInverterRS485Processor(final EnergyStorage energyStorage) {
4751
protected List<ByteBuffer> createSendFrames(final ByteBuffer requestFrame, final BatteryPack aggregatedPack) {
4852
final List<ByteBuffer> frames = new ArrayList<>();
4953

54+
// check if the inverter is actively requesting data
5055
if (requestFrame != null) {
56+
LOG.debug("Inverter actively requesting frames from BMS");
5157
requestFrame.position(3);
5258
final byte adr = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
5359
final byte cid1 = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
@@ -101,6 +107,21 @@ protected List<ByteBuffer> createSendFrames(final ByteBuffer requestFrame, final
101107

102108
frames.add(prepareSendFrame(adr, cid1, (byte) 0x00, responseData));
103109

110+
frames.stream().forEach(f -> System.out.println(Port.printBuffer(f)));
111+
} else {
112+
// try to send data actively
113+
final byte adr = 0x12;
114+
frames.add(prepareSendFrame(adr, (byte) 0x4F, (byte) 0x00, createProtocolVersion(aggregatedPack)));
115+
frames.add(prepareSendFrame(adr, (byte) 0x51, (byte) 0x00, createManufacturerCode(aggregatedPack)));
116+
frames.add(prepareSendFrame(adr, (byte) 0x92, (byte) 0x00, createChargeDischargeManagementInfo(aggregatedPack)));
117+
frames.add(prepareSendFrame(adr, (byte) 0x42, (byte) 0x00, createCellInformation(aggregatedPack)));
118+
frames.add(prepareSendFrame(adr, (byte) 0x47, (byte) 0x00, createVoltageCurrentLimits(aggregatedPack)));
119+
frames.add(prepareSendFrame(adr, (byte) 0x60, (byte) 0x00, createSystemInfo(aggregatedPack)));
120+
frames.add(prepareSendFrame(adr, (byte) 0x61, (byte) 0x00, createBatteryInformation(aggregatedPack)));
121+
frames.add(prepareSendFrame(adr, (byte) 0x62, (byte) 0x00, createAlarms(aggregatedPack)));
122+
frames.add(prepareSendFrame(adr, (byte) 0x63, (byte) 0x00, createChargeDischargeIfno(aggregatedPack)));
123+
124+
LOG.debug("Actively sending {} frames to inverter", frames.size());
104125
frames.stream().forEach(f -> System.out.println(Port.printBuffer(f)));
105126
}
106127

protocol-rs485/src/main/java/com/airepublic/bmstoinverter/protocol/rs485/JSerialCommPort.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public ByteBuffer receiveFrame() {
144144
try {
145145
frame = getNextFrame();
146146
} catch (final IOException e) {
147+
LOG.debug("Port " + getPortname() + ": Could not read next frame!", e);
147148
}
148149

149150
LOG.debug("Next frame: {}", Port.printBuffer(frame));

0 commit comments

Comments
 (0)