#include "1billing.h"
|
|
#include "para.h"
|
#include "1gprs.h"
|
#include "ReadDeviceData.h"
|
#include "ex_rtc.h"
|
#include "1ValveControl.h"
|
#include "RW_Verification.h"
|
|
|
SETTLEMENT_PARA Settlement_Para;
|
|
u8 Settlement(void) //½áËã
|
{
|
float fFee=0;
|
double dBlanceBeforeSettlement=0;
|
u8 RecalculationFlag=0;
|
double dBlance=0;
|
double dCumulativeGasUsage=0;
|
double dCumulativeFeeUsage=0;
|
|
dBlanceBeforeSettlement = Settlement_Para.fBalance;
|
|
if((parameter_bil.cDataObtainType & PULSE_MODE) == PULSE_MODE) //Âö³å
|
{
|
Settlement_Para.fCurrentGasUsage = parameter_bil.fPulseCoefficient * Settlement_Para.u32PulseCounting_last; //±¾´ÎÓÃÆøÁ¿
|
|
if(parameter_bil.cBillingType==0x01)
|
{
|
|
fFee = Settlement_Para.fCurrentGasUsage * parameter_bil.fSingleBillingFee;
|
if((fFee>10000)||(fFee<0))
|
{
|
fFee = parameter_bil.fPulseCoefficient * parameter_bil.fSingleBillingFee;
|
}
|
if((fFee>10000)||(fFee<0))
|
{
|
fFee = 0;
|
}
|
dCumulativeGasUsage = Settlement_Para.fCumulativeGasUsage + Settlement_Para.fCurrentGasUsage;
|
dCumulativeFeeUsage = Settlement_Para.fCumulativeFeeUsage + fFee;
|
dBlance = Settlement_Para.fBalance - fFee;
|
//Write_Verification(Settlement_Para.fBalance,REALTIME_BALANCE_ADDR,REALTIME_BALANCE_B_ADDR,REALTIME_BALANCE_C_ADDR);
|
|
// #ifdef DEBUG_OUT
|
// sprintf(Debug," fBalance = %.2f \r\n", Settlement_Para.fBalance);
|
// UartDebugFun(Debug);
|
// #endif
|
|
// if(dCumulativeGasUsage>=99999999.99)
|
// {
|
// dCumulativeGasUsage = dCumulativeGasUsage -99999999.99;
|
// }
|
|
|
if( (dBlance>BALANCE_LOWER_LIMIT)&&(dBlance<BALANCE_UP_LIMIT) )
|
{
|
if( (dCumulativeFeeUsage>=0)&&(dCumulativeFeeUsage<FEE_USAGE_UP_LIMIT) )
|
{
|
if( (dCumulativeGasUsage>=0)&&(dCumulativeGasUsage<GAS_USAGE_UP_LIMIT) )
|
{
|
Settlement_Para.fBalance = dBlance;
|
Settlement_Para.fCumulativeFeeUsage = dCumulativeFeeUsage;
|
Settlement_Para.fCumulativeGasUsage = dCumulativeGasUsage;
|
RecalculationFlag=0;
|
}
|
else
|
{
|
RecalculationFlag=1;
|
}
|
|
}
|
else
|
{
|
RecalculationFlag=1;
|
}
|
|
|
}
|
else
|
{
|
RecalculationFlag=1;
|
}
|
|
|
}
|
// else if(parameter_bil.cBillingType==0x02)
|
// {
|
// fFee = StepBillingSettlement(Settlement_Para.fCumulativeGasUsage,Settlement_Para.fCurrentGasUsage);
|
// Settlement_Para.fBalance = Settlement_Para.fBalance-fFee;
|
// }
|
|
}
|
// else if((parameter_bil.cDataObtainType & RS485_MODE ) == RS485_MODE) //rs485
|
// {
|
// Settlement_Para.fCurrentGasUsage = LLJ_data_g.SC_Accumulation - Settlement_Para.fLastGasVolume;
|
// Settlement_Para.fLastGasVolume = LLJ_data_g.SC_Accumulation;
|
// if(parameter_bil.cBillingType==0x01)
|
// {
|
// Settlement_Para.fBalance = Settlement_Para.fBalance - Settlement_Para.fCurrentGasUsage * parameter_bil.fSingleBillingFee;
|
// Settlement_Para.fCumulativeGasUsage = Settlement_Para.fCumulativeGasUsage + Settlement_Para.fCurrentGasUsage;
|
// }
|
// else if(parameter_bil.cBillingType==0x02)
|
// {
|
|
// fFee = StepBillingSettlement(Settlement_Para.fCumulativeGasUsage,Settlement_Para.fCurrentGasUsage);
|
// Settlement_Para.fBalance = Settlement_Para.fBalance-fFee;
|
//
|
// }
|
//
|
// }
|
else
|
{
|
}
|
|
ArrearsCheck(dBlanceBeforeSettlement);
|
|
Valve_abnormal_judge(); //¹Ø·§×߯øÅжÏ
|
|
return RecalculationFlag;
|
}
|
|
|
|
float StepBillingSettlement(float fCumulativeGasUsage, float fCurrentGasUsage) //ÉÏÒ»´ÎÀÛ»ýÓÃÆøÁ¿£¬±¾´ÎÓÃÆøÁ¿ //´Ëº¯Êý¿ÉÄÜÓÐÎÊÌ⣬ÓÉÓÚÔÝʱ²»Ê¹Óý×ÌÝÆø¼Û£¬Ã»¶à¿¼ÂÇ¡£
|
{
|
//float Balance=0;
|
float fFee=0;
|
|
if((parameter_bil.cDataObtainType & PULSE_MODE) == PULSE_MODE) //Âö³å
|
{
|
Settlement_Para.fCumulativeGasUsage = fCumulativeGasUsage + fCurrentGasUsage;
|
}
|
// else if((parameter_bil.cDataObtainType & RS485_MODE)== RS485_MODE) //rs485
|
// {
|
// Settlement_Para.fCumulativeGasUsage = fCumulativeGasUsage + fCurrentGasUsage;
|
// }
|
|
if(fCumulativeGasUsage < parameter_bil.fStepBilling_First)
|
{
|
if(Settlement_Para.fCumulativeGasUsage > parameter_bil.fStepBilling_First)
|
{
|
fFee = (parameter_bil.fStepBilling_First - fCumulativeGasUsage)*parameter_bil.fStepBillingFee_First + (Settlement_Para.fCumulativeGasUsage - parameter_bil.fStepBilling_First)* parameter_bil.fStepBillingFee_Second;
|
}
|
else
|
{
|
fFee = fCurrentGasUsage*parameter_bil.fStepBillingFee_First;
|
}
|
}
|
else if((fCumulativeGasUsage >= parameter_bil.fStepBilling_First)&&(fCumulativeGasUsage< parameter_bil.fStepBilling_Second))
|
{
|
if(Settlement_Para.fCumulativeGasUsage > parameter_bil.fStepBilling_Second)
|
{
|
fFee = (parameter_bil.fStepBilling_Second - fCumulativeGasUsage)*parameter_bil.fStepBillingFee_Second + (Settlement_Para.fCumulativeGasUsage - parameter_bil.fStepBilling_Second)* parameter_bil.fStepBillingFee_Third;
|
}
|
else
|
{
|
fFee = fCurrentGasUsage*parameter_bil.fStepBillingFee_Second;
|
}
|
}
|
|
else if(fCumulativeGasUsage >= parameter_bil.fStepBilling_Second)
|
{
|
fFee = fCurrentGasUsage*parameter_bil.fStepBillingFee_Third;
|
}
|
|
return fFee;
|
}
|
|
void RS485Settlement(void) //485¶ÁÈ¡½áËã
|
{
|
u8 CheckCardinalityResult=0;
|
uint32_t RS485SCACC_Base;
|
uint32_t TotalDifference = 0; //ÓÃÆøÁ¿£¬Á½´Î±ê¿ö×ÜÁ¿¶ÁÈ¡µÄ²îÖµ
|
double RS485Balance_Base;
|
double RS485GasUsage_Base;
|
double RS485FeeUsage_Base;
|
double dBlanceBeforeSettlement=0;
|
dBlanceBeforeSettlement = Settlement_Para.fBalance;
|
if(Settlement_Para.RS485SettlementFlag ==1)
|
{
|
Settlement_Para.fCumulativeGasUsage = LLJ_data_g.SC_Accumulation_long ; //485½áËãģʽÏ£¬Ö»Òª¶ÁÈ¡³É¹¦¾Í°Ñ±ê¿ö×ÜÁ¿¸³Öµ¸ø·§×ÜÓÃÆøÁ¿
|
Write_Verification(Settlement_Para.fCumulativeGasUsage,REALTIME_CUMULATIVE_GAS_USAGE_ADDR,REALTIME_CUMULATIVE_GAS_USAGE_B_ADDR,REALTIME_CUMULATIVE_GAS_USAGE_C_ADDR);
|
|
Settlement_Para.RS485SettlementINGFlag = 1;//¿ªÊ¼Ð£Ñé
|
if(Settlement_Para.RS485BilDataReadableFlag == 1) //ÒÑÓлùÊý¿É¶Á£¬¿É¶ÁÈ¡½áËã¡£
|
{
|
RS485SCACC_Base = FM25V02_data_read_uint32(SCACC_BIL_ADDR);
|
RS485Balance_Base = FM25V02_data_read_double(BALANCE_BIL_ADDR);
|
RS485GasUsage_Base = FM25V02_data_read_double(GAS_USAGE_BIL_ADDR);
|
RS485FeeUsage_Base = FM25V02_data_read_double(FEE_USAGE_BIL_ADDR);
|
//Åж϶ÁÈ¡µÄ»ùÊýÊÇ·ñÓÐÃ÷ÏÔÒì³£
|
if(RS485SCACC_Base<=999999999)
|
{
|
if((RS485Balance_Base>BALANCE_LOWER_LIMIT)&&(RS485Balance_Base<=BALANCE_UP_LIMIT))
|
{
|
if((RS485GasUsage_Base>=0)&&(RS485GasUsage_Base<=GAS_USAGE_UP_LIMIT))
|
{
|
if((RS485FeeUsage_Base>=0)&&(RS485FeeUsage_Base<=FEE_USAGE_UP_LIMIT))
|
{
|
CheckCardinalityResult = 1;
|
}
|
}
|
}
|
}
|
if(CheckCardinalityResult == 0)
|
{
|
RS485SCACC_Base = FM25V02_data_read_uint32(SCACC_BIL_ADDR);
|
RS485Balance_Base = FM25V02_data_read_double(BALANCE_BIL_ADDR);
|
RS485GasUsage_Base = FM25V02_data_read_double(GAS_USAGE_BIL_ADDR);
|
RS485FeeUsage_Base = FM25V02_data_read_double(FEE_USAGE_BIL_ADDR);
|
|
//Åж϶ÁÈ¡µÄ»ùÊýÊÇ·ñÓÐÃ÷ÏÔÒì³£
|
if(RS485SCACC_Base<=999999999)
|
{
|
if((RS485Balance_Base>BALANCE_LOWER_LIMIT)&&(RS485Balance_Base<=BALANCE_UP_LIMIT))
|
{
|
if((RS485GasUsage_Base>=0)&&(RS485GasUsage_Base<=GAS_USAGE_UP_LIMIT))
|
{
|
if((RS485FeeUsage_Base>=0)&&(RS485FeeUsage_Base<=FEE_USAGE_UP_LIMIT))
|
{
|
CheckCardinalityResult = 1;
|
}
|
}
|
}
|
}
|
}
|
if(CheckCardinalityResult == 1)
|
{
|
if(LLJ_data_g.SC_Accumulation_long>=RS485SCACC_Base) //ÓÐÓÃÆø
|
{
|
system_alarm.alarm_RS485_Abnormal_Small_Reading_FLAG =0;
|
TotalDifference = LLJ_data_g.SC_Accumulation_long - RS485SCACC_Base;
|
|
if(TotalDifference==0) //ÎÞ×߯ø£¬ÎÞÐèºËË㣬»ùÊýÒ²¿ÉÒÔ²»¸üÐÂ
|
{
|
|
}
|
else if(TotalDifference<1000000) //½áËãÓÃÆøÁ¿Ôݶ¨Ð¡ÓÚ1000000£¬¸ßÁ˱íʾ¼ÆËã´íÎó£¬Ôõô´¦ÀíÓдý¿¼ÂÇ
|
{
|
//Settlement_Para.fCumulativeGasUsage = RS485GasUsage_Base + TotalDifference ;
|
// Settlement_Para.fCumulativeGasUsage = LLJ_data_g.SC_Accumulation_long ;
|
// Write_Verification(Settlement_Para.fCumulativeGasUsage,REALTIME_CUMULATIVE_GAS_USAGE_ADDR,REALTIME_CUMULATIVE_GAS_USAGE_B_ADDR,REALTIME_CUMULATIVE_GAS_USAGE_C_ADDR);
|
|
Settlement_Para.fCumulativeFeeUsage = RS485FeeUsage_Base + parameter_bil.fSingleBillingFee * TotalDifference ;
|
Settlement_Para.fBalance = RS485Balance_Base - parameter_bil.fSingleBillingFee * TotalDifference;
|
|
Write_Verification(Settlement_Para.fBalance,REALTIME_BALANCE_ADDR,REALTIME_BALANCE_B_ADDR,REALTIME_BALANCE_C_ADDR);
|
|
Write_Verification(Settlement_Para.fCumulativeFeeUsage,REALTIME_CUMULATIVE_FEE_USAGE_ADDR,REALTIME_CUMULATIVE_FEE_USAGE_B_ADDR,REALTIME_CUMULATIVE_FEE_USAGE_C_ADDR);
|
|
StorageCardinality();
|
|
}else //Êý¾Ý¿ÉÄÜÒì³££¬ÖØÐ´æ»ùÊý£¬µ«ÊÇ¿ÉÄÜ·¢ÉúÁËÆøÁ¿Â©¼Ç£¬´Ëʱ¸ÃÔõô´¦Àí£ºÅжϻùÊýÒì³£»¹ÊÇ485жÁµÄ±ê¿ö×ÜÁ¿Òì³££¬Èç¹ûжÁ×ÜÁ¿Òì³£Ôò»ùÊý²»¶¯£¬ÓÉÓÚÇ°Ãæ¼ì²é¹ý¶ÁÈ¡µÄ»ùÊý£¬ËùÒÔÕâÀïÖ»¿ÉÄÜÊÇжÁÊýÒì³££¬Ð¶ÁÊýÒì³£Ôò´Ë´Î×÷·Ï£¬Ï´ÎÔÙ¶Á
|
{ //Èç¹ûжÁÊýÒ»Ö±Òì³£Ôõô°ì£¿Ä¿Ç°Ã»ÓÐ×ÜÁ¿Ò»Ö±¶ÁÈ¡´íÎóµÄÇé¿ö¡£ÕâÖÖÇé¿öÊÇ·ñÓ¦¸ÃÖ±½ÓÈËΪ¸ÉÔ¤
|
|
}
|
}
|
else //жÁÈ¡µÄ×ÜÁ¿±È»ùÊý»¹Ð¡£¬´ËʱÔõô°ì£¬´ËʱÓпÉÄÜжÁÈ¡µÄ×ÜÁ¿Òì³££¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡´Ëʱ¿ÉÄÜ»ùÊý²»»á¸üУ¬Ð¶ÁÈ¡×ÜÁ¿Ò»Ö±±È»ùÊýС£¬Ò»Ö±²»¸üУ¬Ö»ÄÜÈËΪ¸ÉÔ¤£¬ÇåÁã»ùÊýÖØÐ¿ªÊ¼
|
{
|
if(system_alarm.alarm_RS485_Abnormal_Small_Reading_FLAG==0)
|
{
|
system_alarm.alarm_RS485_Abnormal_Small_Reading=1;
|
system_alarm.alarm_RS485_Abnormal_Small_Reading_FLAG=1;
|
}
|
|
}
|
//Èç¹ûÓÐÂö³å¿Û·Ñ¸¨Öú£¬ÄÇôһ´ÎÊý¾Ý´íÎóµ¼ÖÂÎÞ·¨½áË㣬ÄÇÊÇ¿ÉÒÔ¶ªÆúµÄ£¬´Óµ±Ç°¿ªÊ¼ÖØÐ³»ùÊý¼ÆËã¡£
|
//Èç¹ûûÓÐÂö³å¿Û·Ñ¸¨Öú£¬Ö»ÓÐ485½áË㣬ÄÇôÓÉÓÚÊý¾Ý¶ÁÈ¡´íÎóµ¼ÖµÄÎÞ·¨½áË㽫²»ÄÜÖØÐ³»ùÊý£¬²»È»Ö®Ç°µÄ»ùÊýûÓмÆËã¹ý£¬»áµ¼ÖÂÆøÁ¿Â©¼Ç¡£Õâ¸öÎÊÌâ±È½ÏÑÏÖØ£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡
|
//ÒÔÉϵÚÒ»¶þµã±ØÐë±£Ö¤»ùÊý´æ´¢ÊÇûÓÐÎÊÌâµÄ£¬Èç¹ûÓÐÎÊÌâÊý¾Ý²»×÷Ϊ»ùÊý±£´æ¡£
|
}else
|
{ //»ùÊý¶ÁÈ¡Òì³££¬ÏÈÇåÁã»ùÊý£¬ÔÙ´æ´¢»ùÊý
|
ClearCardinalFlag();
|
StorageCardinality();
|
|
}
|
}
|
else if(Settlement_Para.RS485BilDataReadableFlag == 0) //ÎÞ»ùÊý£¬´æ´¢Ò»´Î»ùÊý
|
{
|
|
//´æ´¢»ùÊý
|
StorageCardinality();
|
}
|
|
Settlement_Para.RS485SettlementINGFlag = 0; //УÑé½áÊø
|
|
if((Settlement_Para.u32PulseCounting_last>0)&&(Settlement_Para.u32PulseCounting_last<18000)) //Èç¹ûÓÐ묒ËãµÄÂö³å£¬ÔòÂö³å¼Æ·Ñ£¬´Ë¼ÆÊý²»¿ÉÄܴܺ󣬴˴¦ÏÈÉèÖÃСÓÚ18000.
|
{
|
|
if(Settlement()) //½áËãÊýÖµ³ö´íÖØÐ½áË㣬×î¶àÈý´Î
|
{
|
if(Settlement())
|
{
|
Settlement();
|
}
|
}
|
Settlement_Para.u32PulseCounting_last = 0;
|
|
|
Write_Verification(Settlement_Para.fBalance,REALTIME_BALANCE_ADDR,REALTIME_BALANCE_B_ADDR,REALTIME_BALANCE_C_ADDR);
|
Write_Verification(Settlement_Para.fCumulativeGasUsage,REALTIME_CUMULATIVE_GAS_USAGE_ADDR,REALTIME_CUMULATIVE_GAS_USAGE_B_ADDR,REALTIME_CUMULATIVE_GAS_USAGE_C_ADDR);
|
Write_Verification(Settlement_Para.fCumulativeFeeUsage,REALTIME_CUMULATIVE_FEE_USAGE_ADDR,REALTIME_CUMULATIVE_FEE_USAGE_B_ADDR,REALTIME_CUMULATIVE_FEE_USAGE_C_ADDR);
|
Settlement_Para.SettlementStorageFlag =0;
|
}
|
|
ArrearsCheck(dBlanceBeforeSettlement);
|
|
}
|
else
|
{
|
system_alarm.alarm_RS485Cardinalityfree_LCDFLAG=0;
|
|
|
}
|
Valve_abnormal_judge(); //¹Ø·§×߯øÅжÏ
|
}
|
|
u8 CheckCardinality(void)
|
{
|
//»ùÊý½øÐмì²é£¬ÊÇ·ñÓÐÎÊÌâ
|
if(LLJ_data_g.SC_Accumulation_long<=999999999)
|
{
|
if((Settlement_Para.fBalance>BALANCE_LOWER_LIMIT)&&(Settlement_Para.fBalance<=BALANCE_UP_LIMIT))
|
{
|
if((Settlement_Para.fCumulativeGasUsage>=0)&&(Settlement_Para.fCumulativeGasUsage<=GAS_USAGE_UP_LIMIT))
|
{
|
if((Settlement_Para.fCumulativeFeeUsage>=0)&&(Settlement_Para.fCumulativeFeeUsage<=FEE_USAGE_UP_LIMIT))
|
{
|
return 1;
|
}
|
}
|
}
|
}
|
return 0;
|
}
|
|
|
void StorageCardinality(void) //¶Ô»ùÊý½øÐмì²é£¬²»ÊÇÃ÷ÏÔÒ쳣ʱ´æ´¢
|
{
|
//±£´æ»ùÊýǰ¶Ô»ùÊý½øÐмì²é£¬ÊÇ·ñÓÐÎÊÌâ
|
|
if(CheckCardinality()==1)
|
{
|
FM25V02_data_write_uint32(SCACC_BIL_ADDR, LLJ_data_g.SC_Accumulation_long);
|
FM25V02_data_write_double(BALANCE_BIL_ADDR, Settlement_Para.fBalance);
|
FM25V02_data_write_double(GAS_USAGE_BIL_ADDR, Settlement_Para.fCumulativeGasUsage);
|
FM25V02_data_write_double(FEE_USAGE_BIL_ADDR, Settlement_Para.fCumulativeFeeUsage);
|
|
FM25V02_data_write(calendar.year&0x00FF, TIME_BIL_ADDR );
|
FM25V02_data_write(calendar.month&0xFF, TIME_BIL_ADDR +1 );
|
FM25V02_data_write(calendar.date&0xFF, TIME_BIL_ADDR + 2 );
|
FM25V02_data_write(calendar.hour&0xFF, TIME_BIL_ADDR + 3 );
|
FM25V02_data_write(calendar.min&0xFF, TIME_BIL_ADDR + 4 );
|
FM25V02_data_write(calendar.sec&0xFF, TIME_BIL_ADDR + 5 );
|
|
Settlement_Para.RS485BilDataReadableFlag = 1;
|
FM25V02_data_write(Settlement_Para.RS485BilDataReadableFlag,DATA_READABLE_FLAG_ADDR);
|
}
|
}
|
|
|
void ArrearsCheck(double dBlanceBeforeSettlement) //Ç··Ñ¼ì²é£¬·¢ÏÖÇ··Ñ±¨¾¯¹Ø·§µÈ´¦Àí
|
{
|
if((Settlement_Para.fBalance<=parameter_bil.iBalanceInsufAlarmAmount)&&(Settlement_Para.fBalance>(-parameter_bil.fCredits)))
|
{
|
if(dBlanceBeforeSettlement > parameter_bil.iBalanceInsufAlarmAmount)
|
{
|
if(device_Parm.AccountStatus== 0x01)
|
{
|
system_alarm.alarm_Balance_Small =1;
|
system_alarm.alarm_Balance_Small_LCDFLAG = 0x01;
|
}
|
|
#ifdef DEBUG_OUT
|
sprintf(Debug, "fCumulativeGasUsage = %.2f \r\n" ,Settlement_Para.fCumulativeGasUsage);
|
UartDebugFun(Debug);
|
|
sprintf(Debug, "fCumulativeFeeUsage = %.2f \r\n" ,Settlement_Para.fCumulativeFeeUsage);
|
UartDebugFun(Debug);
|
|
sprintf(Debug, "fBalance = %.2f \r\n" ,Settlement_Para.fBalance);
|
UartDebugFun(Debug);
|
#endif
|
}
|
}
|
|
if(Settlement_Para.fBalance<=0)
|
{
|
if(dBlanceBeforeSettlement > 0)
|
{
|
system_alarm.alarm_Balance_0 =1;
|
#ifdef DEBUG_OUT
|
sprintf(Debug, "fCumulativeGasUsage = %.2f \r\n" ,Settlement_Para.fCumulativeGasUsage);
|
UartDebugFun(Debug);
|
|
sprintf(Debug, "fCumulativeFeeUsage = %.2f \r\n" ,Settlement_Para.fCumulativeFeeUsage);
|
UartDebugFun(Debug);
|
|
sprintf(Debug, "fBalance = %.2f \r\n" ,Settlement_Para.fBalance);
|
UartDebugFun(Debug);
|
#endif
|
}
|
}
|
|
if(Settlement_Para.fBalance<(-parameter_bil.fCredits))
|
{
|
// close the valve
|
if(device_Parm.AccountStatus== 0x01)
|
{
|
system_alarm.alarm_Credits_0Times ++;
|
if(system_alarm.alarm_Credits_0Times<=2)
|
{
|
system_alarm.alarm_Credits_0 =1;
|
if(gprs_protocol_header.Valve_Status != 2) //·§ÃÅ״̬²»ÊÇΪ¹Ø
|
{
|
Valve_close();
|
}
|
}
|
}
|
if(dBlanceBeforeSettlement > (-parameter_bil.fCredits))
|
{
|
#ifdef DEBUG_OUT
|
sprintf(Debug, "fCumulativeGasUsage = %.2f \r\n" ,Settlement_Para.fCumulativeGasUsage);
|
UartDebugFun(Debug);
|
|
sprintf(Debug, "fCumulativeFeeUsage = %.2f \r\n" ,Settlement_Para.fCumulativeFeeUsage);
|
UartDebugFun(Debug);
|
|
sprintf(Debug, "fBalance = %.2f \r\n" ,Settlement_Para.fBalance);
|
UartDebugFun(Debug);
|
#endif
|
}
|
}else
|
{
|
system_alarm.alarm_Credits_0Times = 0;
|
|
}
|
}
|
|
|
void ClearCardinalFlag(void) //ÇåÁã»ùÊý±êÖ¾
|
{
|
system_alarm.alarm_RS485_Abnormal_Small_Reading_FLAG =0;//Çå»ùÊý²Ù×÷»áÇå³ý±¨¾¯Âë7
|
Settlement_Para.RS485BilDataReadableFlag = 0;
|
FM25V02_data_write(Settlement_Para.RS485BilDataReadableFlag,DATA_READABLE_FLAG_ADDR);
|
}
|
|
void BalanceModify(double dBalance) //Óà¶îÇåÁã
|
{///jlc´Ë´¦ÏȼÓÈëÓà¶îÇåÁ㹦ÄÜ,³ö³§ºóÓà¶îÇåÁã
|
Settlement_Para.fBalance = dBalance;
|
Write_Verification(Settlement_Para.fBalance,REALTIME_BALANCE_ADDR,REALTIME_BALANCE_B_ADDR,REALTIME_BALANCE_C_ADDR);
|
FM25V02_data_write_double(BALANCE_BIL_ADDR, Settlement_Para.fBalance);
|
|
}
|