|
|
@@ -228,6 +228,7 @@ static int threshold_proc(board_data_t *pbrd)
|
|
|
static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
{
|
|
|
int i,j,r=-1;
|
|
|
+ power_t *pwr,power;
|
|
|
uint16_t offset,tmp[144];
|
|
|
|
|
|
lock_d_hold(h->lck);
|
|
|
@@ -245,24 +246,25 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
|
|
|
for (i=0; i<pbrd->chs; i++) {
|
|
|
int idx = i * 12;
|
|
|
- // 解电压数据
|
|
|
+ pwr = &pbrd->pch[i].power[0];
|
|
|
+
|
|
|
val = (tmp[1 + idx] << 16) | tmp[0 + idx];
|
|
|
- pbrd->pch[i].power[0].voltage = val / 1000.0;
|
|
|
- // 解电流数据
|
|
|
+ pwr->voltage = val / 1000.0;
|
|
|
+
|
|
|
val = (tmp[3 + idx] << 16) | tmp[2 + idx];
|
|
|
- pbrd->pch[i].power[0].current = val / 1000.0;
|
|
|
- // 解功率数据
|
|
|
+ pwr->current = val / 1000.0;
|
|
|
+
|
|
|
val = (tmp[5 + idx] << 16) | tmp[4 + idx];
|
|
|
- pbrd->pch[i].power[0].power = val / 1000.0;
|
|
|
- // 解频率数据
|
|
|
+ pwr->power = val / 1000.0;
|
|
|
+
|
|
|
val = (tmp[7 + idx] << 16) | tmp[6 + idx];
|
|
|
- pbrd->pch[i].power[0].freq = val / 1000.0;
|
|
|
- // 解耗电量数据
|
|
|
+ pwr->freq = val / 1000.0;
|
|
|
+
|
|
|
val = (tmp[9 + idx] << 16) | tmp[8 + idx];
|
|
|
- pbrd->pch[i].power[0].consump = val / 1000.0;
|
|
|
- // 解功率因素数据
|
|
|
+ pwr->consump = val / 1000.0;
|
|
|
+
|
|
|
val = (tmp[11 + idx] << 16) | tmp[10 + idx];
|
|
|
- pbrd->pch[i].power[0].factor = val / 1000.0;
|
|
|
+ pwr->factor = val / 1000.0;
|
|
|
}
|
|
|
|
|
|
r = read_reg(h, pbrd->addr, POWER_AC_STAT_INFO_L, tmp, pbrd->chs);
|
|
|
@@ -296,21 +298,22 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
|
|
|
for (i = 0; i < pbrd->chs; i++) {
|
|
|
int Index = i * 8;
|
|
|
- // 解电压数据
|
|
|
+ pwr = &pbrd->pch[i].power[0];
|
|
|
+
|
|
|
float value = (tmp[1 + Index] << 16) + tmp[0 + Index];
|
|
|
- pbrd->pch[i].power[0].voltage = value / 1000.0;
|
|
|
- // 解电流数据
|
|
|
+ pwr->voltage = value / 1000.0;
|
|
|
+
|
|
|
value = (tmp[3 + Index] << 16) + tmp[2 + Index];
|
|
|
- pbrd->pch[i].power[0].current = value / 1000.0;
|
|
|
- // 解功率数据
|
|
|
+ pwr->current = value / 1000.0;
|
|
|
+
|
|
|
value = (tmp[5 + Index] << 16) + tmp[4 + Index];
|
|
|
- pbrd->pch[i].power[0].power = value / 1000.0;
|
|
|
+ pwr->power = value / 1000.0;
|
|
|
|
|
|
value = (tmp[7 + Index] << 16) + tmp[6 + Index];
|
|
|
- pbrd->pch[i].power[0].consump = value / 1000.0;
|
|
|
+ pwr->consump = value / 1000.0;
|
|
|
|
|
|
- pbrd->pch[i].power[0].freq = 0;
|
|
|
- pbrd->pch[i].power[0].factor = 1;
|
|
|
+ pwr->freq = 0;
|
|
|
+ pwr->factor = 1;
|
|
|
}
|
|
|
|
|
|
offset = POWER_DC_STAT_INFO;
|
|
|
@@ -325,7 +328,6 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
pbrd->pch[i].power[0].status = (flag >> i) & 0x1;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 获取报警状态
|
|
|
offset = POWER_DC_WARNING;
|
|
|
r = read_reg(h, pbrd->addr, offset, tmp, 16);
|
|
|
@@ -348,7 +350,6 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
case TREE_AC_TYPE:
|
|
|
{
|
|
|
uint8_t v=0;
|
|
|
-
|
|
|
offset = POWER_AC3_OUT_INFO;
|
|
|
r = read_reg(h, pbrd->addr, offset, tmp, 80);
|
|
|
if (r < 0) {
|
|
|
@@ -366,28 +367,37 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
|
|
|
|
|
|
for (i=0; i<pbrd->chs; i++) {
|
|
|
int Index = i * 16;
|
|
|
- // 解电压数据
|
|
|
+
|
|
|
+ if(h->prod->pwr_type==PDU_AC_I3O3) {
|
|
|
+ int ch_idx = pbrd->ch0+i/3;
|
|
|
+ int ph_idx = i%3;
|
|
|
+ pwr = &pbrd->pch[ch_idx].power[ph_idx];
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ pwr = &pbrd->pch[i].power[0];
|
|
|
+ }
|
|
|
+
|
|
|
float value = (tmp[1+Index] << 16) + tmp[0+Index];
|
|
|
- pbrd->pch[i].power[0].voltage = value / 1000.0f;
|
|
|
- // 解电流数据
|
|
|
+ pwr->voltage = value / 1000.0f;
|
|
|
+
|
|
|
value = (tmp[3+Index] << 16) + tmp[2+Index];
|
|
|
- pbrd->pch[i].power[0].current = value / 1000.0f;
|
|
|
- // 解功率数据
|
|
|
+ pwr->current = value / 1000.0f;
|
|
|
+
|
|
|
value = (tmp[5+Index] << 16) + tmp[4+Index];
|
|
|
- pbrd->pch[i].power[0].power = value / 1000.0f;
|
|
|
- // 无功
|
|
|
+ pwr->power = value / 1000.0f;
|
|
|
+
|
|
|
value = (tmp[7+Index] << 16) + tmp[6+Index];
|
|
|
- // 视在功率
|
|
|
+
|
|
|
value = (tmp[9+Index] << 16) + tmp[8+Index];
|
|
|
- // 解频率数据
|
|
|
+
|
|
|
value = (tmp[11+Index] << 16) + tmp[10+Index];
|
|
|
- pbrd->pch[i].power[0].freq = value / 1000.0f;
|
|
|
- // 解耗电量数据
|
|
|
+ pwr->freq = value / 1000.0f;
|
|
|
+
|
|
|
value = (tmp[13+Index] << 16) + tmp[12+Index];
|
|
|
- pbrd->pch[i].power[0].consump = value / 1000.0f;
|
|
|
- // 解功率因素数据
|
|
|
+ pwr->consump = value / 1000.0f;
|
|
|
+
|
|
|
value = (tmp[15+Index] << 16) + tmp[14+Index];
|
|
|
- pbrd->pch[i].power[0].factor = value / 1023.0f;
|
|
|
+ pwr->factor = value / 1023.0f;
|
|
|
}
|
|
|
|
|
|
//获取通道开关状态及零线状态
|
|
|
@@ -637,11 +647,11 @@ int power_scan(void)
|
|
|
|
|
|
if(h->prod->pwr_type==PDU_AC_I3O3) {
|
|
|
h->pbrd[i]->pch[j].info.ch = ch_idx+j/3; //序号程序从0开始
|
|
|
- h->pbrd[i]->pch[j].info.pid = j%3;
|
|
|
+ h->pbrd[i]->pch[j].info.ph_id = j%3;
|
|
|
}
|
|
|
else {
|
|
|
h->pbrd[i]->pch[j].info.ch = ch_idx+j; //序号程序从0开始
|
|
|
- h->pbrd[i]->pch[j].info.pid = 0;
|
|
|
+ h->pbrd[i]->pch[j].info.ph_id = 0;
|
|
|
}
|
|
|
}
|
|
|
|