whychdw
2019-12-20 0a707989b1e298d6c22575ef573b6a4f65d0e036
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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;
    }
 
}