package com.concentrator; import com.util.ComBase; import java.nio.ByteBuffer; /** * 汇集器参数 */ public class Concentrator_Param { public final static int REG_COUNT = 17; //寄存器数量 public int dev_addr; //设备地址 public int first_monCount; //第一路单体数目 public int second_monCount; //第二路单体数目 public int thrid_monCount; //第三路单体数目 public int fourth_monCount; //第四路单体数目 public int fifth_monCount; //第五路单体数目 public int curr_range; //电流钳量程 public double float_currLimit; //浮充电流门限(0.1) public int backup1; //备份1 public int auto_resTestCount; //内阻自动测试周期(小时) public int backup2; //备份2 public int backup3; //备份3 public int monStdCap; //标称容量(AH) public int backup4; //备份4 public int backup5; //备份5 public int backup6; //备份6 public int backup7; //备份7 /** * 克隆当前对象 * @param param */ public void clone(Concentrator_Param param){ this.dev_addr = param.dev_addr; //设备地址 this.first_monCount = param.first_monCount; //第一路单体数目 this.second_monCount = param.second_monCount; //第二路单体数目 this.thrid_monCount = param.thrid_monCount; //第三路单体数目 this.fourth_monCount = param.fourth_monCount; //第四路单体数目 this.fifth_monCount = param.fifth_monCount; //第五路单体数目 this.curr_range = param.curr_range; //电流钳量程 this.float_currLimit = param.float_currLimit; //浮充电流门限(0.1) this.backup1 = param.backup1; //备份1 this.auto_resTestCount = param.auto_resTestCount; //内阻自动测试周期(小时) this.backup2 = param.backup2; //备份2 this.backup3 = param.backup3; //备份3 this.monStdCap = param.monStdCap; //标称容量(AH) this.backup4 = param.backup4; //备份4 this.backup5 = param.backup5; //备份5 this.backup6 = param.backup6; //备份6 this.backup7 = param.backup7; //备份7 } /** * 获取读取汇集参数时的数据 * @return */ public ByteBuffer getReadByteBuffer(){ ByteBuffer buffer = ByteBuffer.allocate(2); buffer.putShort(ComBase.changeIntToShort(REG_COUNT)); buffer.flip(); return buffer; } /** * 获取设置时的数据 * @return */ public ByteBuffer getWriteByteBuffer(){ ByteBuffer buffer = ByteBuffer.allocate(REG_COUNT*2+3); buffer.putShort(ComBase.changeIntToShort(REG_COUNT)); buffer.put(ComBase.changeIntToByte(REG_COUNT)); buffer.putShort(ComBase.changeIntToShort(dev_addr)); //设备地址 buffer.putShort(ComBase.changeIntToShort(first_monCount)); //第一路单体数目 buffer.putShort(ComBase.changeIntToShort(second_monCount)); //第二路单体数目 buffer.putShort(ComBase.changeIntToShort(thrid_monCount)); //第三路单体数目 buffer.putShort(ComBase.changeIntToShort(fourth_monCount)); //第四路单体数目 buffer.putShort(ComBase.changeIntToShort(fifth_monCount)); //第五路单体数目 buffer.putShort(ComBase.changeIntToShort(curr_range)); //电流钳量程 buffer.putShort(ComBase.changeIntToShort((int)(float_currLimit*10))); //浮充电流门限(0.1) buffer.putShort(ComBase.changeIntToShort(backup1)); //备份1 buffer.putShort(ComBase.changeIntToShort(auto_resTestCount)); //内阻自动测试周期(小时) buffer.putShort(ComBase.changeIntToShort(backup2)); //备份2 buffer.putShort(ComBase.changeIntToShort(backup3)); //备份3 buffer.putShort(ComBase.changeIntToShort(monStdCap)); //标称容量(AH) buffer.putShort(ComBase.changeIntToShort(backup4)); //备份4 buffer.putShort(ComBase.changeIntToShort(backup5)); //备份5 buffer.putShort(ComBase.changeIntToShort(backup6)); //备份6 buffer.putShort(ComBase.changeIntToShort(backup7)); //备份7 buffer.flip(); return buffer; } /** * 解析读取过来的汇集器参数 * @param bf * @return */ public boolean putByteBuffer(ByteBuffer bf) { if(bf.limit() < REG_COUNT*2) { return false; } ByteBuffer tmpbuf = bf; tmpbuf.position(0); dev_addr = ComBase.changeShortToByte(tmpbuf.getShort()); //设备地址 first_monCount = ComBase.changeShortToByte(tmpbuf.getShort()); //第一路单体数目 second_monCount = ComBase.changeShortToByte(tmpbuf.getShort()); //第二路单体数目 thrid_monCount = ComBase.changeShortToByte(tmpbuf.getShort()); //第三路单体数目 fourth_monCount = ComBase.changeShortToByte(tmpbuf.getShort()); //第四路单体数目 fifth_monCount = ComBase.changeShortToByte(tmpbuf.getShort()); //第五路单体数目 curr_range = ComBase.changeShortToByte(tmpbuf.getShort()); //电流钳量程 float_currLimit = ((double)ComBase.changeShortToByte(tmpbuf.getShort()))/10; //浮充电流门限(0.1) backup1 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份1 auto_resTestCount = ComBase.changeShortToByte(tmpbuf.getShort()); //内阻自动测试周期(小时) backup2 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份2 backup3 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份3 monStdCap = ComBase.changeShortToByte(tmpbuf.getShort()); //标称容量(AH) backup4 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份4 backup5 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份5 backup6 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份6 backup7 = ComBase.changeShortToByte(tmpbuf.getShort()); //备份7 return true; } //计算总的单体数目 public int countMonCount(){ //return this.first_monCount+second_monCount+thrid_monCount+fourth_monCount+fifth_monCount; return 50; } }