|
|
@ -288,32 +288,30 @@ class Inverter { |
|
|
|
uint8_t end = ptr + rec->assign[pos].num; |
|
|
|
uint16_t div = rec->assign[pos].div; |
|
|
|
|
|
|
|
if(NULL != rec) { |
|
|
|
if(CMD_CALC != div) { |
|
|
|
uint32_t val = 0; |
|
|
|
do { |
|
|
|
val <<= 8; |
|
|
|
val |= buf[ptr]; |
|
|
|
} while(++ptr != end); |
|
|
|
|
|
|
|
if ((FLD_T == rec->assign[pos].fieldId) || (FLD_Q == rec->assign[pos].fieldId) || (FLD_PF == rec->assign[pos].fieldId)) { |
|
|
|
// temperature, Qvar, and power factor are a signed values
|
|
|
|
rec->record[pos] = ((REC_TYP)((int16_t)val)) / (REC_TYP)(div); |
|
|
|
} else if (FLD_YT == rec->assign[pos].fieldId) { |
|
|
|
rec->record[pos] = ((REC_TYP)(val) / (REC_TYP)(div)) + ((REC_TYP)config->yieldCor[rec->assign[pos].ch-1]); |
|
|
|
} else if (FLD_YD == rec->assign[pos].fieldId) { |
|
|
|
float actYD = (REC_TYP)(val) / (REC_TYP)(div); |
|
|
|
uint8_t idx = rec->assign[pos].ch - 1; |
|
|
|
if (mLastYD[idx] > actYD) |
|
|
|
mOffYD[idx] += mLastYD[idx]; |
|
|
|
mLastYD[idx] = actYD; |
|
|
|
rec->record[pos] = mOffYD[idx] + actYD; |
|
|
|
} else { |
|
|
|
if ((REC_TYP)(div) > 1) |
|
|
|
rec->record[pos] = (REC_TYP)(val) / (REC_TYP)(div); |
|
|
|
else |
|
|
|
rec->record[pos] = (REC_TYP)(val); |
|
|
|
} |
|
|
|
if(CMD_CALC != div) { |
|
|
|
uint32_t val = 0; |
|
|
|
do { |
|
|
|
val <<= 8; |
|
|
|
val |= buf[ptr]; |
|
|
|
} while(++ptr != end); |
|
|
|
|
|
|
|
if ((FLD_T == rec->assign[pos].fieldId) || (FLD_Q == rec->assign[pos].fieldId) || (FLD_PF == rec->assign[pos].fieldId)) { |
|
|
|
// temperature, Qvar, and power factor are a signed values
|
|
|
|
rec->record[pos] = ((REC_TYP)((int16_t)val)) / (REC_TYP)(div); |
|
|
|
} else if (FLD_YT == rec->assign[pos].fieldId) { |
|
|
|
rec->record[pos] = ((REC_TYP)(val) / (REC_TYP)(div)) + ((REC_TYP)config->yieldCor[rec->assign[pos].ch-1]); |
|
|
|
} else if (FLD_YD == rec->assign[pos].fieldId) { |
|
|
|
float actYD = (REC_TYP)(val) / (REC_TYP)(div); |
|
|
|
uint8_t idx = rec->assign[pos].ch - 1; |
|
|
|
if (mLastYD[idx] > actYD) |
|
|
|
mOffYD[idx] += mLastYD[idx]; |
|
|
|
mLastYD[idx] = actYD; |
|
|
|
rec->record[pos] = mOffYD[idx] + actYD; |
|
|
|
} else { |
|
|
|
if ((REC_TYP)(div) > 1) |
|
|
|
rec->record[pos] = (REC_TYP)(val) / (REC_TYP)(div); |
|
|
|
else |
|
|
|
rec->record[pos] = (REC_TYP)(val); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|