[feat] move neg_concentration to modbus 0x530 address
This commit is contained in:
parent
2da2f32136
commit
5064b5fc5c
@ -148,7 +148,7 @@ int32_t concentration_calc(uint8_t ch)
|
|||||||
k = (p->concentration[idx_c] - p->concentration[idx_c - 1]) / (p->calc_b[idx_c] - p->calc_b[idx_c - 1]);
|
k = (p->concentration[idx_c] - p->concentration[idx_c - 1]) / (p->calc_b[idx_c] - p->calc_b[idx_c - 1]);
|
||||||
temp = k * (cnt - p->calc_b[idx_c - 1]) + p->concentration[idx_c - 1];
|
temp = k * (cnt - p->calc_b[idx_c - 1]) + p->concentration[idx_c - 1];
|
||||||
|
|
||||||
return concentration_neg_drift_compensation(ch, (int32_t)temp);
|
return (int32_t)temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void concentration_loop(void)
|
void concentration_loop(void)
|
||||||
@ -161,16 +161,20 @@ void concentration_loop(void)
|
|||||||
for (uint8_t i = 0; i < 4; i++) {
|
for (uint8_t i = 0; i < 4; i++) {
|
||||||
if ((data_gas_info.id[i] != GAS_ID_INVALID) && (data_gas_info.id[i] != GAS_ID_REF)) {
|
if ((data_gas_info.id[i] != GAS_ID_INVALID) && (data_gas_info.id[i] != GAS_ID_REF)) {
|
||||||
device_data.gas_concentration[i] = concentration_calc(i);
|
device_data.gas_concentration[i] = concentration_calc(i);
|
||||||
|
device_data.gas_neg_concentration[i] = concentration_neg_drift_compensation(i, device_data.gas_concentration[i]);
|
||||||
} else {
|
} else {
|
||||||
device_data.gas_concentration[i] = 0;
|
device_data.gas_concentration[i] = 0;
|
||||||
|
device_data.gas_neg_concentration[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (data_gas_info.comb == GAS_COMB_2_2) {
|
} else if (data_gas_info.comb == GAS_COMB_2_2) {
|
||||||
for (uint8_t i = 0; i < 4; i++) {
|
for (uint8_t i = 0; i < 4; i++) {
|
||||||
if ((data_gas_info.id[i] != GAS_ID_INVALID) && (data_gas_info.id[i] != GAS_ID_REF)) {
|
if ((data_gas_info.id[i] != GAS_ID_INVALID) && (data_gas_info.id[i] != GAS_ID_REF)) {
|
||||||
device_data.gas_concentration[i] = concentration_calc(i);
|
device_data.gas_concentration[i] = concentration_calc(i);
|
||||||
|
device_data.gas_neg_concentration[i] = concentration_neg_drift_compensation(i, device_data.gas_concentration[i]);
|
||||||
} else {
|
} else {
|
||||||
device_data.gas_concentration[i] = 0;
|
device_data.gas_concentration[i] = 0;
|
||||||
|
device_data.gas_neg_concentration[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (data_gas_info.comb == GAS_COMB_3_1) {
|
} else if (data_gas_info.comb == GAS_COMB_3_1) {
|
||||||
@ -181,15 +185,18 @@ void concentration_loop(void)
|
|||||||
if ((data_gas_info.id[i] != GAS_ID_INVALID) && (data_gas_info.id[i] != GAS_ID_REF)) {
|
if ((data_gas_info.id[i] != GAS_ID_INVALID) && (data_gas_info.id[i] != GAS_ID_REF)) {
|
||||||
conc = concentration_calc(i);
|
conc = concentration_calc(i);
|
||||||
device_data.gas_concentration[i] = conc;
|
device_data.gas_concentration[i] = conc;
|
||||||
|
device_data.gas_neg_concentration[i] = concentration_neg_drift_compensation(i, device_data.gas_concentration[i]);
|
||||||
sum += conc;
|
sum += conc;
|
||||||
} else {
|
} else {
|
||||||
ref = i;
|
ref = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
device_data.gas_concentration[ref] = sum / 3;
|
device_data.gas_concentration[ref] = sum / 3;
|
||||||
|
device_data.gas_neg_concentration[ref] = concentration_neg_drift_compensation(ref, device_data.gas_concentration[ref]);
|
||||||
} else {
|
} else {
|
||||||
for (uint8_t i = 0; i < 4; i++) {
|
for (uint8_t i = 0; i < 4; i++) {
|
||||||
device_data.gas_concentration[i] = 0;
|
device_data.gas_concentration[i] = 0;
|
||||||
|
device_data.gas_neg_concentration[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,7 +106,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_MAIN + 65] = (uint8_t *)(&flag.gas_fault) + 2,
|
[OFFSET_MAIN + 65] = (uint8_t *)(&flag.gas_fault) + 2,
|
||||||
[OFFSET_MAIN + 66] = (uint8_t *)(&flag.gas_fault) + 1,
|
[OFFSET_MAIN + 66] = (uint8_t *)(&flag.gas_fault) + 1,
|
||||||
[OFFSET_MAIN + 67] = (uint8_t *)(&flag.gas_fault) + 0,
|
[OFFSET_MAIN + 67] = (uint8_t *)(&flag.gas_fault) + 0,
|
||||||
[(OFFSET_MAIN + 68) ... (OFFSET_MAIN + 511)] = (uint8_t *)0,
|
[(OFFSET_MAIN + 68) ... (OFFSET_MAIN + 511)] = num_tab_ro + 0,
|
||||||
|
|
||||||
[OFFSET_GAS1 + 0] = (uint8_t *)(&bitmap_main->gas1_sub_id) + 3,
|
[OFFSET_GAS1 + 0] = (uint8_t *)(&bitmap_main->gas1_sub_id) + 3,
|
||||||
[OFFSET_GAS1 + 1] = (uint8_t *)(&bitmap_main->gas1_sub_id) + 2,
|
[OFFSET_GAS1 + 1] = (uint8_t *)(&bitmap_main->gas1_sub_id) + 2,
|
||||||
@ -360,7 +360,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_GAS1 + 249] = (uint8_t *)&((*bitmap_gas)[0].user_cali.span_data[4][6]) + 2,
|
[OFFSET_GAS1 + 249] = (uint8_t *)&((*bitmap_gas)[0].user_cali.span_data[4][6]) + 2,
|
||||||
[OFFSET_GAS1 + 250] = (uint8_t *)&((*bitmap_gas)[0].user_cali.span_data[4][6]) + 1,
|
[OFFSET_GAS1 + 250] = (uint8_t *)&((*bitmap_gas)[0].user_cali.span_data[4][6]) + 1,
|
||||||
[OFFSET_GAS1 + 251] = (uint8_t *)&((*bitmap_gas)[0].user_cali.span_data[4][6]) + 0,
|
[OFFSET_GAS1 + 251] = (uint8_t *)&((*bitmap_gas)[0].user_cali.span_data[4][6]) + 0,
|
||||||
[(OFFSET_GAS1 + 252) ... (OFFSET_GAS1 + 511)] = (uint8_t *)0,
|
[(OFFSET_GAS1 + 252) ... (OFFSET_GAS1 + 511)] = num_tab_ro + 0,
|
||||||
|
|
||||||
[OFFSET_GAS2 + 0] = (uint8_t *)(&bitmap_main->gas2_sub_id) + 3,
|
[OFFSET_GAS2 + 0] = (uint8_t *)(&bitmap_main->gas2_sub_id) + 3,
|
||||||
[OFFSET_GAS2 + 1] = (uint8_t *)(&bitmap_main->gas2_sub_id) + 2,
|
[OFFSET_GAS2 + 1] = (uint8_t *)(&bitmap_main->gas2_sub_id) + 2,
|
||||||
@ -646,7 +646,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_GAS2 + 249] = (uint8_t *)&((*bitmap_gas)[1].user_cali.span_data[4][6]) + 2,
|
[OFFSET_GAS2 + 249] = (uint8_t *)&((*bitmap_gas)[1].user_cali.span_data[4][6]) + 2,
|
||||||
[OFFSET_GAS2 + 250] = (uint8_t *)&((*bitmap_gas)[1].user_cali.span_data[4][6]) + 1,
|
[OFFSET_GAS2 + 250] = (uint8_t *)&((*bitmap_gas)[1].user_cali.span_data[4][6]) + 1,
|
||||||
[OFFSET_GAS2 + 251] = (uint8_t *)&((*bitmap_gas)[1].user_cali.span_data[4][6]) + 0,
|
[OFFSET_GAS2 + 251] = (uint8_t *)&((*bitmap_gas)[1].user_cali.span_data[4][6]) + 0,
|
||||||
[(OFFSET_GAS2 + 252) ... (OFFSET_GAS2 + 511)] = (uint8_t *)0,
|
[(OFFSET_GAS2 + 252) ... (OFFSET_GAS2 + 511)] = num_tab_ro + 0,
|
||||||
|
|
||||||
[OFFSET_GAS3 + 0] = (uint8_t *)(&bitmap_main->gas3_sub_id) + 3,
|
[OFFSET_GAS3 + 0] = (uint8_t *)(&bitmap_main->gas3_sub_id) + 3,
|
||||||
[OFFSET_GAS3 + 1] = (uint8_t *)(&bitmap_main->gas3_sub_id) + 2,
|
[OFFSET_GAS3 + 1] = (uint8_t *)(&bitmap_main->gas3_sub_id) + 2,
|
||||||
@ -932,7 +932,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_GAS3 + 249] = (uint8_t *)&((*bitmap_gas)[2].user_cali.span_data[4][6]) + 2,
|
[OFFSET_GAS3 + 249] = (uint8_t *)&((*bitmap_gas)[2].user_cali.span_data[4][6]) + 2,
|
||||||
[OFFSET_GAS3 + 250] = (uint8_t *)&((*bitmap_gas)[2].user_cali.span_data[4][6]) + 1,
|
[OFFSET_GAS3 + 250] = (uint8_t *)&((*bitmap_gas)[2].user_cali.span_data[4][6]) + 1,
|
||||||
[OFFSET_GAS3 + 251] = (uint8_t *)&((*bitmap_gas)[2].user_cali.span_data[4][6]) + 0,
|
[OFFSET_GAS3 + 251] = (uint8_t *)&((*bitmap_gas)[2].user_cali.span_data[4][6]) + 0,
|
||||||
[(OFFSET_GAS3 + 252) ... (OFFSET_GAS3 + 511)] = (uint8_t *)0,
|
[(OFFSET_GAS3 + 252) ... (OFFSET_GAS3 + 511)] = num_tab_ro + 0,
|
||||||
|
|
||||||
[OFFSET_GAS4 + 0] = (uint8_t *)(&bitmap_main->gas4_sub_id) + 3,
|
[OFFSET_GAS4 + 0] = (uint8_t *)(&bitmap_main->gas4_sub_id) + 3,
|
||||||
[OFFSET_GAS4 + 1] = (uint8_t *)(&bitmap_main->gas4_sub_id) + 2,
|
[OFFSET_GAS4 + 1] = (uint8_t *)(&bitmap_main->gas4_sub_id) + 2,
|
||||||
@ -1218,7 +1218,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_GAS4 + 249] = (uint8_t *)&((*bitmap_gas)[3].user_cali.span_data[4][6]) + 2,
|
[OFFSET_GAS4 + 249] = (uint8_t *)&((*bitmap_gas)[3].user_cali.span_data[4][6]) + 2,
|
||||||
[OFFSET_GAS4 + 250] = (uint8_t *)&((*bitmap_gas)[3].user_cali.span_data[4][6]) + 1,
|
[OFFSET_GAS4 + 250] = (uint8_t *)&((*bitmap_gas)[3].user_cali.span_data[4][6]) + 1,
|
||||||
[OFFSET_GAS4 + 251] = (uint8_t *)&((*bitmap_gas)[3].user_cali.span_data[4][6]) + 0,
|
[OFFSET_GAS4 + 251] = (uint8_t *)&((*bitmap_gas)[3].user_cali.span_data[4][6]) + 0,
|
||||||
[(OFFSET_GAS4 + 252) ... (OFFSET_GAS4 + 511)] = (uint8_t *)0,
|
[(OFFSET_GAS4 + 252) ... (OFFSET_GAS4 + 511)] = num_tab_ro + 0,
|
||||||
|
|
||||||
[OFFSET_DATA + 0] = (uint8_t *)&(device_data.detector_temperature) + 3,
|
[OFFSET_DATA + 0] = (uint8_t *)&(device_data.detector_temperature) + 3,
|
||||||
[OFFSET_DATA + 1] = (uint8_t *)&(device_data.detector_temperature) + 2,
|
[OFFSET_DATA + 1] = (uint8_t *)&(device_data.detector_temperature) + 2,
|
||||||
@ -1260,7 +1260,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_DATA + 37] = (uint8_t *)&(device_data.gas_sig[0]) + 2,
|
[OFFSET_DATA + 37] = (uint8_t *)&(device_data.gas_sig[0]) + 2,
|
||||||
[OFFSET_DATA + 38] = (uint8_t *)&(device_data.gas_sig[0]) + 1,
|
[OFFSET_DATA + 38] = (uint8_t *)&(device_data.gas_sig[0]) + 1,
|
||||||
[OFFSET_DATA + 39] = (uint8_t *)&(device_data.gas_sig[0]) + 0,
|
[OFFSET_DATA + 39] = (uint8_t *)&(device_data.gas_sig[0]) + 0,
|
||||||
[(OFFSET_DATA + 40) ... (OFFSET_DATA + 47)] = (uint8_t *)0,
|
[(OFFSET_DATA + 40) ... (OFFSET_DATA + 47)] = num_tab_ro + 0,
|
||||||
[OFFSET_DATA + 48] = (uint8_t *)&(device_data.gas_concentration[1]) + 3,
|
[OFFSET_DATA + 48] = (uint8_t *)&(device_data.gas_concentration[1]) + 3,
|
||||||
[OFFSET_DATA + 49] = (uint8_t *)&(device_data.gas_concentration[1]) + 2,
|
[OFFSET_DATA + 49] = (uint8_t *)&(device_data.gas_concentration[1]) + 2,
|
||||||
[OFFSET_DATA + 50] = (uint8_t *)&(device_data.gas_concentration[1]) + 1,
|
[OFFSET_DATA + 50] = (uint8_t *)&(device_data.gas_concentration[1]) + 1,
|
||||||
@ -1269,7 +1269,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_DATA + 53] = (uint8_t *)&(device_data.gas_sig[1]) + 2,
|
[OFFSET_DATA + 53] = (uint8_t *)&(device_data.gas_sig[1]) + 2,
|
||||||
[OFFSET_DATA + 54] = (uint8_t *)&(device_data.gas_sig[1]) + 1,
|
[OFFSET_DATA + 54] = (uint8_t *)&(device_data.gas_sig[1]) + 1,
|
||||||
[OFFSET_DATA + 55] = (uint8_t *)&(device_data.gas_sig[1]) + 0,
|
[OFFSET_DATA + 55] = (uint8_t *)&(device_data.gas_sig[1]) + 0,
|
||||||
[(OFFSET_DATA + 56) ... (OFFSET_DATA + 63)] = (uint8_t *)0,
|
[(OFFSET_DATA + 56) ... (OFFSET_DATA + 63)] = num_tab_ro + 0,
|
||||||
[OFFSET_DATA + 64] = (uint8_t *)&(device_data.gas_concentration[2]) + 3,
|
[OFFSET_DATA + 64] = (uint8_t *)&(device_data.gas_concentration[2]) + 3,
|
||||||
[OFFSET_DATA + 65] = (uint8_t *)&(device_data.gas_concentration[2]) + 2,
|
[OFFSET_DATA + 65] = (uint8_t *)&(device_data.gas_concentration[2]) + 2,
|
||||||
[OFFSET_DATA + 66] = (uint8_t *)&(device_data.gas_concentration[2]) + 1,
|
[OFFSET_DATA + 66] = (uint8_t *)&(device_data.gas_concentration[2]) + 1,
|
||||||
@ -1278,7 +1278,7 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_DATA + 69] = (uint8_t *)&(device_data.gas_sig[2]) + 2,
|
[OFFSET_DATA + 69] = (uint8_t *)&(device_data.gas_sig[2]) + 2,
|
||||||
[OFFSET_DATA + 70] = (uint8_t *)&(device_data.gas_sig[2]) + 1,
|
[OFFSET_DATA + 70] = (uint8_t *)&(device_data.gas_sig[2]) + 1,
|
||||||
[OFFSET_DATA + 71] = (uint8_t *)&(device_data.gas_sig[2]) + 0,
|
[OFFSET_DATA + 71] = (uint8_t *)&(device_data.gas_sig[2]) + 0,
|
||||||
[(OFFSET_DATA + 72) ... (OFFSET_DATA + 79)] = (uint8_t *)0,
|
[(OFFSET_DATA + 72) ... (OFFSET_DATA + 79)] = num_tab_ro + 0,
|
||||||
[OFFSET_DATA + 80] = (uint8_t *)&(device_data.gas_concentration[3]) + 3,
|
[OFFSET_DATA + 80] = (uint8_t *)&(device_data.gas_concentration[3]) + 3,
|
||||||
[OFFSET_DATA + 81] = (uint8_t *)&(device_data.gas_concentration[3]) + 2,
|
[OFFSET_DATA + 81] = (uint8_t *)&(device_data.gas_concentration[3]) + 2,
|
||||||
[OFFSET_DATA + 82] = (uint8_t *)&(device_data.gas_concentration[3]) + 1,
|
[OFFSET_DATA + 82] = (uint8_t *)&(device_data.gas_concentration[3]) + 1,
|
||||||
@ -1287,8 +1287,24 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_DATA + 85] = (uint8_t *)&(device_data.gas_sig[3]) + 2,
|
[OFFSET_DATA + 85] = (uint8_t *)&(device_data.gas_sig[3]) + 2,
|
||||||
[OFFSET_DATA + 86] = (uint8_t *)&(device_data.gas_sig[3]) + 1,
|
[OFFSET_DATA + 86] = (uint8_t *)&(device_data.gas_sig[3]) + 1,
|
||||||
[OFFSET_DATA + 87] = (uint8_t *)&(device_data.gas_sig[3]) + 0,
|
[OFFSET_DATA + 87] = (uint8_t *)&(device_data.gas_sig[3]) + 0,
|
||||||
[(OFFSET_DATA + 88) ... (OFFSET_DATA + 95)] = (uint8_t *)0,
|
[(OFFSET_DATA + 88) ... (OFFSET_DATA + 95)] = num_tab_ro + 0,
|
||||||
[(OFFSET_DATA + 96) ... (OFFSET_DATA + 511)] = (uint8_t *)0,
|
[OFFSET_DATA + 96] = (uint8_t *)&(device_data.gas_neg_concentration[0]) + 3,
|
||||||
|
[OFFSET_DATA + 97] = (uint8_t *)&(device_data.gas_neg_concentration[0]) + 2,
|
||||||
|
[OFFSET_DATA + 98] = (uint8_t *)&(device_data.gas_neg_concentration[0]) + 1,
|
||||||
|
[OFFSET_DATA + 99] = (uint8_t *)&(device_data.gas_neg_concentration[0]) + 0,
|
||||||
|
[OFFSET_DATA + 100] = (uint8_t *)&(device_data.gas_neg_concentration[1]) + 3,
|
||||||
|
[OFFSET_DATA + 101] = (uint8_t *)&(device_data.gas_neg_concentration[1]) + 2,
|
||||||
|
[OFFSET_DATA + 102] = (uint8_t *)&(device_data.gas_neg_concentration[1]) + 1,
|
||||||
|
[OFFSET_DATA + 103] = (uint8_t *)&(device_data.gas_neg_concentration[1]) + 0,
|
||||||
|
[OFFSET_DATA + 104] = (uint8_t *)&(device_data.gas_neg_concentration[2]) + 3,
|
||||||
|
[OFFSET_DATA + 105] = (uint8_t *)&(device_data.gas_neg_concentration[2]) + 2,
|
||||||
|
[OFFSET_DATA + 106] = (uint8_t *)&(device_data.gas_neg_concentration[2]) + 1,
|
||||||
|
[OFFSET_DATA + 107] = (uint8_t *)&(device_data.gas_neg_concentration[2]) + 0,
|
||||||
|
[OFFSET_DATA + 108] = (uint8_t *)&(device_data.gas_neg_concentration[3]) + 3,
|
||||||
|
[OFFSET_DATA + 109] = (uint8_t *)&(device_data.gas_neg_concentration[3]) + 2,
|
||||||
|
[OFFSET_DATA + 110] = (uint8_t *)&(device_data.gas_neg_concentration[3]) + 1,
|
||||||
|
[OFFSET_DATA + 111] = (uint8_t *)&(device_data.gas_neg_concentration[3]) + 0,
|
||||||
|
[(OFFSET_DATA + 112) ... (OFFSET_DATA + 511)] = num_tab_ro + 0,
|
||||||
|
|
||||||
[OFFSET_STAT + 0] = (uint8_t *)&(device_status.cali_zero_record_status[0]) + 1,
|
[OFFSET_STAT + 0] = (uint8_t *)&(device_status.cali_zero_record_status[0]) + 1,
|
||||||
[OFFSET_STAT + 1] = (uint8_t *)&(device_status.cali_zero_record_status[0]) + 0,
|
[OFFSET_STAT + 1] = (uint8_t *)&(device_status.cali_zero_record_status[0]) + 0,
|
||||||
@ -1312,5 +1328,5 @@ const uint8_t * const modbus_map_ro[] = {
|
|||||||
[OFFSET_STAT + 19] = (uint8_t *)&(device_status.cali_restore_status) + 0,
|
[OFFSET_STAT + 19] = (uint8_t *)&(device_status.cali_restore_status) + 0,
|
||||||
[OFFSET_STAT + 20] = (uint8_t *)&(device_status.heat_on_off_status) + 1,
|
[OFFSET_STAT + 20] = (uint8_t *)&(device_status.heat_on_off_status) + 1,
|
||||||
[OFFSET_STAT + 21] = (uint8_t *)&(device_status.heat_on_off_status) + 0,
|
[OFFSET_STAT + 21] = (uint8_t *)&(device_status.heat_on_off_status) + 0,
|
||||||
[(OFFSET_STAT + 22) ... (OFFSET_STAT + 511)] = (uint8_t *)0,
|
[(OFFSET_STAT + 22) ... (OFFSET_STAT + 511)] = num_tab_ro + 0,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -159,7 +159,7 @@ struct device_data_s {
|
|||||||
uint32_t gas_sig[4];
|
uint32_t gas_sig[4];
|
||||||
// uint32_t gas_sig_fliter[4];
|
// uint32_t gas_sig_fliter[4];
|
||||||
int32_t gas_concentration[4];
|
int32_t gas_concentration[4];
|
||||||
// int32_t gas_neg_concentration[4];
|
int32_t gas_neg_concentration[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct device_status_s {
|
struct device_status_s {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user