1818
1919import javax .enterprise .context .ApplicationScoped ;
2020
21+ import org .slf4j .Logger ;
22+ import org .slf4j .LoggerFactory ;
23+
2124import com .airepublic .bmstoinverter .core .AlarmLevel ;
2225import com .airepublic .bmstoinverter .core .Inverter ;
2326import com .airepublic .bmstoinverter .core .Port ;
3235 */
3336@ ApplicationScoped
3437public 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
0 commit comments