Skip to content

Commit 107a98c

Browse files
committed
fixed adr on Pylon inverter binding
1 parent 6530807 commit 107a98c

1 file changed

Lines changed: 53 additions & 53 deletions

File tree

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

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
*/
3333
@ApplicationScoped
3434
public class PylonInverterRS485Processor extends Inverter {
35-
private final static byte ADDRESS = 0x12;
3635

3736
public PylonInverterRS485Processor() {
3837
super();
@@ -47,60 +46,64 @@ protected PylonInverterRS485Processor(final EnergyStorage energyStorage) {
4746
@Override
4847
protected List<ByteBuffer> createSendFrames(final ByteBuffer requestFrame, final BatteryPack aggregatedPack) {
4948
final List<ByteBuffer> frames = new ArrayList<>();
50-
requestFrame.position(3);
51-
final byte adr = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
52-
final byte cid1 = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
53-
final byte cid2 = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
54-
final byte[] lengthBytes = new byte[4];
55-
requestFrame.get(lengthBytes);
56-
final int length = ByteAsciiConverter.convertAsciiBytesToShort(lengthBytes) & 0x0FFF;
57-
final byte[] data = new byte[length];
58-
requestFrame.get(data);
59-
60-
if (cid1 != 0x46) {
61-
// not supported
62-
return frames;
63-
}
6449

65-
byte[] responseData = null;
66-
67-
switch (cid2) {
68-
case 0x4F:
69-
responseData = createProtocolVersion(aggregatedPack);
70-
break; // 0x4F Protocol Version
71-
case 0x51:
72-
responseData = createManufacturerCode(aggregatedPack);
73-
break; // 0x51 Manufacturer Code
74-
case (byte) 0x92:
75-
responseData = createChargeDischargeManagementInfo(aggregatedPack);
76-
break; // 0x92 Charge/Discharge Management Info
77-
case 0x42:
78-
responseData = createCellInformation(aggregatedPack);
79-
break; // 0x42 Cell Information
80-
case 0x47:
81-
responseData = createVoltageCurrentLimits(aggregatedPack);
82-
break; // 0x47 Voltage/Current Limits
83-
case 0x60:
84-
responseData = createSystemInfo(aggregatedPack);
85-
break; // 0x60 System Info
86-
case 0x61:
87-
responseData = createBatteryInformation(aggregatedPack);
88-
break; // 0x61 Battery Information
89-
case 0x62:
90-
responseData = createAlarms(aggregatedPack);
91-
break; // 0x62 Alarms
92-
case 0x63:
93-
responseData = createChargeDischargeIfno(aggregatedPack);
94-
break; // 0x63
95-
96-
default:
50+
if (requestFrame != null) {
51+
requestFrame.position(3);
52+
final byte adr = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
53+
final byte cid1 = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
54+
final byte cid2 = ByteAsciiConverter.convertAsciiBytesToByte(requestFrame.get(), requestFrame.get());
55+
final byte[] lengthBytes = new byte[4];
56+
requestFrame.get(lengthBytes);
57+
final int length = ByteAsciiConverter.convertAsciiBytesToShort(lengthBytes) & 0x0FFF;
58+
final byte[] data = new byte[length];
59+
requestFrame.get(data);
60+
61+
if (cid1 != 0x46) {
9762
// not supported
9863
return frames;
99-
}
64+
}
65+
66+
byte[] responseData = null;
67+
68+
switch (cid2) {
69+
case 0x4F:
70+
responseData = createProtocolVersion(aggregatedPack);
71+
break; // 0x4F Protocol Version
72+
case 0x51:
73+
responseData = createManufacturerCode(aggregatedPack);
74+
break; // 0x51 Manufacturer Code
75+
case (byte) 0x92:
76+
responseData = createChargeDischargeManagementInfo(aggregatedPack);
77+
break; // 0x92 Charge/Discharge Management Info
78+
case 0x42:
79+
responseData = createCellInformation(aggregatedPack);
80+
break; // 0x42 Cell Information
81+
case 0x47:
82+
responseData = createVoltageCurrentLimits(aggregatedPack);
83+
break; // 0x47 Voltage/Current Limits
84+
case 0x60:
85+
responseData = createSystemInfo(aggregatedPack);
86+
break; // 0x60 System Info
87+
case 0x61:
88+
responseData = createBatteryInformation(aggregatedPack);
89+
break; // 0x61 Battery Information
90+
case 0x62:
91+
responseData = createAlarms(aggregatedPack);
92+
break; // 0x62 Alarms
93+
case 0x63:
94+
responseData = createChargeDischargeIfno(aggregatedPack);
95+
break; // 0x63
96+
97+
default:
98+
// not supported
99+
return frames;
100+
}
101+
102+
frames.add(prepareSendFrame(adr, cid1, (byte) 0x00, responseData));
100103

101-
frames.add(prepareSendFrame(adr, cid1, (byte) 0x00, responseData));
104+
frames.stream().forEach(f -> System.out.println(Port.printBuffer(f)));
105+
}
102106

103-
frames.stream().forEach(f -> System.out.println(Port.printBuffer(f)));
104107
return frames;
105108
}
106109

@@ -134,8 +137,6 @@ private byte[] createManufacturerCode(final BatteryPack pack) {
134137
// 0x92
135138
private byte[] createChargeDischargeManagementInfo(final BatteryPack pack) {
136139
final ByteBuffer buffer = ByteBuffer.allocate(4096);
137-
buffer.put(ByteAsciiConverter.convertByteToAsciiBytes(ADDRESS)); // BMS ID
138-
139140
buffer.put(ByteAsciiConverter.convertShortToAsciiBytes((short) (pack.maxPackVoltageLimit * 100)));
140141
buffer.put(ByteAsciiConverter.convertShortToAsciiBytes((short) (pack.minPackVoltageLimit * 100)));
141142
buffer.put(ByteAsciiConverter.convertShortToAsciiBytes((short) (pack.maxPackChargeCurrent * 10)));
@@ -156,7 +157,6 @@ private byte[] createChargeDischargeManagementInfo(final BatteryPack pack) {
156157
// 0x42
157158
private byte[] createCellInformation(final BatteryPack pack) {
158159
final ByteBuffer buffer = ByteBuffer.allocate(4096);
159-
buffer.put(ByteAsciiConverter.convertByteToAsciiBytes(ADDRESS)); // BMS ID
160160
buffer.put(ByteAsciiConverter.convertByteToAsciiBytes((byte) pack.numberOfCells));
161161

162162
for (int cellNo = 0; cellNo < pack.numberOfCells; cellNo++) {

0 commit comments

Comments
 (0)