#include "billing.h"
|
#include "system_mem_para.h"
|
#include "pulse_and_alarm_line.h"
|
|
FlagStatus RS485_trigger_settle_flag = RESET;
|
|
ErrorStatus PulseSettlement(__IO SAVE_REALTIME_DATA_T *save_realtime_data_p,__IO int16_t *pulse_conut_p,float pulse_coe_in)
|
{
|
|
double dGas = 0;
|
// double dGasUseSum = 0;
|
double dFee = 0;
|
// double dFeeUseSum = 0;
|
// double dBlance = 0;
|
|
if((*pulse_conut_p > 1000)||(*pulse_conut_p < -1000)||(pulse_coe_in > 1000)) //Òì³£Êý¾Ý²»½áËã
|
return FAIL;
|
|
dGas = *pulse_conut_p * pulse_coe_in;
|
*pulse_conut_p = 0;
|
|
dFee = save_realtime_data_p->realtime_billing_data_s.price_now *0.0001 * dGas;
|
|
save_realtime_data_p->realtime_flow_data_s.forward_cumulate_sc += dGas;
|
save_realtime_data_p->realtime_billing_data_s.use_fee_sum += dFee;
|
save_realtime_data_p->realtime_billing_data_s.balance_now -= dFee;
|
|
return PASS;
|
}
|
|
|
ErrorStatus RS485Settlement(__IO SAVE_REALTIME_DATA_T *save_realtime_data_p)
|
{
|
|
double dGas = 0;
|
// double dGasUseSum = 0;
|
double dFee = 0;
|
// double dFeeUseSum = 0;
|
// double dBlance = 0;
|
|
if(save_realtime_data_p->realtime_flow_data_s.forward_cumulate_sc < save_realtime_data_p->realtime_billing_data_s.gas_use_base)
|
return FAIL;
|
|
dGas = save_realtime_data_p->realtime_flow_data_s.forward_cumulate_sc - save_realtime_data_p->realtime_billing_data_s.gas_use_base;
|
dFee = save_realtime_data_p->realtime_billing_data_s.price_now *0.0001 * dGas;
|
|
save_realtime_data_p->realtime_flow_data_s.forward_cumulate_sc += dGas;
|
save_realtime_data_p->realtime_billing_data_s.use_fee_sum += dFee;
|
save_realtime_data_p->realtime_billing_data_s.balance_now -= dFee;
|
|
return PASS;
|
}
|
|
/**********
|
*SettlementPro½áËã´¦Àí
|
*Âö³åºÍRS485¶ÀÁ¢½áË㣬ͬʱ¿ªÆôʱ£¬ ÒÔRS485½áËãΪ׼£¬Âö³åÖ»×÷Ϊ¹ý³Ì½áËã
|
*ÿ´ÎRS485½áËãÖ®ºó¶¼´æ´¢Ò»´ÎʵʱÊý¾Ý£¬µ±½öÂö³å½áËãʱ£¬ÐèÒª¶¨ÆÚ´æ´¢Ò»´Î£¬ÀýÈç5·ÖÖÓÒ»´Î
|
*ʵʱÊý¾ÝµÄ´æ´¢Îª¶à·Ý¿Õ¼äÑ»·´æ´¢
|
**********/
|
void SettlementPro(void)
|
{
|
FlagStatus trigger_realtime_data_save_flag = RESET;
|
|
if(pulse_count != 0){
|
if(PulseSettlement(&save_realtime_data_g,&pulse_count,flow_meter_para_g.pulse_coe) ==PASS){
|
|
}else{
|
|
}
|
}
|
|
if(RS485_trigger_settle_flag == SET){
|
RS485_trigger_settle_flag = RESET;
|
if(RS485Settlement(&save_realtime_data_g) ==PASS){
|
//RS485³É¹¦½áËãÖ®ºó´æ´¢Ò»´ÎÊý¾Ý
|
trigger_realtime_data_save_flag = SET;
|
}else{
|
|
}
|
|
|
}
|
|
//½öÂö³åʱ£¬¶¨ÆÚ´æ´¢Ò»´Î£¬±ÈÈç5·ÖÖÓ´æ´¢Ò»´Î
|
if(flow_meter_para_g.flow_meter_conn_type == FLOW_METER_CONN_PULSE){
|
if(((sys_clockBCD_g.min % 5)==0)&&(sys_clockBCD_g.sec == 0)){
|
trigger_realtime_data_save_flag = SET;
|
}
|
|
}
|
|
if(trigger_realtime_data_save_flag == SET){
|
trigger_realtime_data_save_flag = RESET;
|
//?ʵʱÊý¾Ý´æ´¢
|
|
}
|
|
|
}
|