package com.fgkj.fbs5100; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Arrays; import com.fgkj.data.ComFn; public class FBS5100_FBSData { public static final int BYTE_LEN = 10 + 20*FBS5100_ComBase.BattGroupCountMax; private final int BATTGROUP_COUNT = FBS5100_ComBase.BattGroupCountMax; private final int BASIC_LEN = 10 + 20*BATTGROUP_COUNT; //public FBS9100_SysState m_SysState = new FBS9100_SysState(); public int dataType[] = {0xAA, 0xAA, 0xAA, 0xAA}; public int CRC = 0; public FBS5100_TestTime testTime = new FBS5100_TestTime(); public int battGroup = 1; public int battSum = 24; public int battGroupNum = 1; public float muxianvol_discharge; //放电母线电压 24Vd+ public float muxianvol_charge; //充电母线电压 24Vc+ public float boostDCDC_OutVol; //升压DCDC输出电压 48Vd+ public float muxianvol; //48V母线电压 48Vo+ public int battXuHangTime = 0; public int stationPowerOffTLong = 0; public int stationPowerOffCNT = 0; public double conresist = 0; //组1接触器导通阻抗 (0.001mR) public double conresist1 = 0; //组2接触器导通阻抗 (0.001mR) public double condvoldp = 0; //组1二极管压降(0.01V) public double condvoldp1 = 0; //组2二极管压降(0.01V) public float onlinevol[] = new float[FBS5100_ComBase.BattGroupCountMax]; //在线电压 public float groupvol[] = new float[FBS5100_ComBase.BattGroupCountMax]; //组端电压 public int battstate[] = new int[FBS5100_ComBase.BattGroupCountMax]; //充放电状态 3 5 9 public float battcurr[] = new float[FBS5100_ComBase.BattGroupCountMax]; //电池组电流 public float battcap[] = new float[FBS5100_ComBase.BattGroupCountMax]; //电池组容量 public float batttemp[] = new float[FBS5100_ComBase.BattGroupCountMax]; //电池组温度 public int monMAX_num[] = new int[FBS5100_ComBase.BattGroupCountMax]; //最大单体编号 public int monMIN_num[] = new int[FBS5100_ComBase.BattGroupCountMax]; //最低按单体编号 public double monvolMAX[] = new double[FBS5100_ComBase.BattGroupCountMax]; //最大单体电压 public double monvolMIN[] = new double[FBS5100_ComBase.BattGroupCountMax]; //最低单体电压 public float vol[] = new float[FBS5100_ComBase.MonomerCountMax]; //单体电压 public FBS5100_FBSData clone() { FBS5100_FBSData obj = new FBS5100_FBSData(); //obj.m_SysState = (FBS9100_SysState) m_SysState.clone(); obj.dataType = dataType.clone(); obj.CRC = CRC; obj.testTime = testTime; obj.battGroup = battGroup; obj.battSum = battSum; obj.onlinevol = onlinevol.clone(); obj.groupvol = groupvol.clone(); obj.battstate = battstate.clone(); obj.battcurr = battcurr.clone(); obj.battcap = battcap.clone(); obj.batttemp = batttemp.clone(); obj.monMAX_num = monMAX_num.clone(); obj.monMIN_num = monMIN_num.clone(); obj.monvolMAX = monvolMAX.clone(); obj.monvolMIN = monvolMIN.clone(); obj.vol = vol.clone(); return obj; } public void copy(FBS5100_FBSData source) { for(int i = 0 ; i < groupvol.length;i++) { this.groupvol[i] = source.groupvol[i]; } for(int i = 0 ; i < battcurr.length;i++) { this.battcurr[i] = source.battcurr[i]; } for(int i = 0 ; i < battstate.length;i++) { this.battstate[i] = source.battstate[i]; } this.muxianvol_discharge = source.muxianvol_discharge; //放电母线电压 24Vd+ this.muxianvol_charge = source.muxianvol_charge; //充电母线电压 24Vc+ this.boostDCDC_OutVol = source.boostDCDC_OutVol; //升压DCDC输出电压 48Vd+ this.muxianvol = source.muxianvol; //48V母线电压 48Vo+ } /** * 2021-05-11 911设备用于区分大功率假负载设备读取在线电压和组端电压数据修改 * @param bf * @param dev_type * @param soft_ver * @param hard_ver * @return */ public boolean putByteBuffer(byte[] data) { ByteBuffer bf = ByteBuffer.allocate(BASIC_LEN); bf.order(ByteOrder.LITTLE_ENDIAN); for(int i = 0 ;i FBS5100_ComBase.MonomerCountMax) { //System.out.println("单体数目"+battcount); return false; } ByteBuffer tmpbuf = bf; int crc0 = tmpbuf.getShort(4) & 0xFFFF; tmpbuf.putShort(4, (short) 0); int crc1 = FBS5100_Crc16.CalCRC16(tmpbuf, BASIC_LEN + 2*battcount); if(crc0 != crc1) { System.out.println(crc0 + "===" + crc1); return false; } tmpbuf.position(0); for(int n=0; n<4; n++) dataType[n] = FBS5100_ComBase.changeByteToInt(tmpbuf.get()); CRC = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); testTime.hour = FBS5100_ComBase.changeByteToInt(tmpbuf.get()); testTime.minute = FBS5100_ComBase.changeByteToInt(tmpbuf.get()); testTime.second = FBS5100_ComBase.changeByteToInt(tmpbuf.get()); battGroup = FBS5100_ComBase.changeByteToInt(tmpbuf.get()); battSum = FBS5100_ComBase.changeShortToInt(tmpbuf.getShort()); muxianvol_discharge = (float)FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10; //放电母线电压 24Vd+ muxianvol_charge = (float)FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10; //充电母线电压 24Vc+ boostDCDC_OutVol = (float)FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10; //升压DCDC输出电压 48Vd+ muxianvol = (float)FBS5100_ComBase.changeShortToFloat(tmpbuf.getShort())/10; //48V母线电压 48Vo+ /*** 2020-12-04 lijun 逆变版本的设备在线电压和组端电压不用/10 ****/ for(int n=0; n= 4) { type_tag = tag[0]; break; } if(true == file_end) { type_tag = 1; break; } } } catch (IOException e) { //e.printStackTrace(); } setType(type_tag&0xFF); return (type_tag&0xFF); } private void setType(int type) { for(int i = 0;i