📄 over_kwh.h
字号:
// CHU SHI
void init_over_kwh()
{
unsigned int i,i1;
over_kwh_status=noguozai;
over_kwh_status_use=noguozai;
over_kwh_continue_time=0;
over_kwh_status_a=noguozai;
over_kwh_status_a_use=noguozai;
over_kwh_a_continue_time=0;
over_kwh_status_b=noguozai;
over_kwh_status_b_use=noguozai;
over_kwh_b_continue_time=0;
over_kwh_status_c=noguozai;
over_kwh_status_c_use=noguozai;
over_kwh_c_continue_time=0;
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_F);
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_A_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_A_F);
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_B_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_B_F);
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_C_KWOVER_RECORD,12,20, R_OVERKW_CURRENT_KWH_C_F);
}
void over_kwh_use_start(a,addr)
unsigned char a;
unsigned int addr;
{unsigned char l;
if(1==next_point(a,4))
{
data_addr.addri=current_twobiaofm_block_addr(a,0);
if(data_addr.addri!=0xffff)
{
time_to_wrdata();
for(l=6;l<12;l++)
wr_data[l]=0;
for(l=0;l<20;l++)
wr_data[l+12]=RAM[addr+l];
write(FM,32);
}
}
}
void over_kwh_start()
{unsigned char j;
over_kwh_status=guozai;
over_kwh_status_use=guozai;
over_kwh_continue_time=0;
byte_3_bcd_add_copy_to_fm(R_OVER_KW_NUM);
for(j=0;j<20;j++)
RAM[R_OVERKW_CURRENT_KWH_F+j]=0;
for(j=0;j<4;j++)
RAM[R_OVERKW_CURRENT_MAX_KW+j]=RAM[R_KW_Z+j];
over_kwh_use_start(TYPE_FM_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_F);
}
void over_kwh_a_start()
{unsigned char j;
over_kwh_status_a=guozai;
over_kwh_status_a_use=guozai;
over_kwh_a_continue_time=0;
for(j=0;j<4;j++)
RAM[R_OVERKW_CURRENT_A_MAX_KW+j]=RAM[R_KW_A+j];
for(j=0;j<20;j++)
RAM[R_OVERKW_CURRENT_KWH_A_F+j]=0;
over_kwh_use_start(TYPE_FM_A_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_A_F);
}
void over_kwh_b_start()
{unsigned char j;
over_kwh_status_b=guozai;
over_kwh_status_b_use=guozai;
over_kwh_b_continue_time=0;
for(j=0;j<4;j++)
RAM[R_OVERKW_CURRENT_B_MAX_KW+j]=RAM[R_KW_B+j];
for(j=0;j<20;j++)
RAM[R_OVERKW_CURRENT_KWH_B_F+j]=0;
over_kwh_use_start(TYPE_FM_B_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_B_F);
}
void over_kwh_c_start()
{unsigned char j;
over_kwh_status_c=guozai;
over_kwh_status_c_use=guozai;
over_kwh_c_continue_time=0;
for(j=0;j<4;j++)
RAM[R_OVERKW_CURRENT_C_MAX_KW+j]=RAM[R_KW_C+j];
for(j=0;j<20;j++)
RAM[R_OVERKW_CURRENT_KWH_C_F+j]=0;
over_kwh_use_start(TYPE_FM_C_KWOVER_RECORD,R_OVERKW_CURRENT_KWH_C_F);
}
void over_kwh_use(unsigned int addr)
{unsigned char l;
time_to_wrdata();
for(l=0;l<20;l++)
wr_data[l+6]=RAM[addr+l];
data_addr.addri=data_addr.addri+6;
write(FM,26);
}
void over_kwh_end()
{
over_kwh_status=noguozai;
over_kwh_status_use=noguozai;
over_kwh_continue_time=0;
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff)
over_kwh_use(R_OVERKW_CURRENT_KWH_F);
}
void over_kwh_a_end()
{
over_kwh_status_a=noguozai;
over_kwh_status_a_use=noguozai;
over_kwh_a_continue_time=0;
// zhang cun
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_A_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff)
over_kwh_use(R_OVERKW_CURRENT_KWH_A_F);
}
void over_kwh_b_end()
{
over_kwh_status_b=noguozai;
over_kwh_status_b_use=noguozai;
over_kwh_b_continue_time=0;
// zhang cun
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_B_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff)
over_kwh_use(R_OVERKW_CURRENT_KWH_B_F);
}
void over_kwh_c_end()
{
over_kwh_status_c=noguozai;
over_kwh_status_c_use=noguozai;
over_kwh_c_continue_time=0;
// zhang cun
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_C_KWOVER_RECORD,0);
if(data_addr.addri!=0xffff)
over_kwh_use(R_OVERKW_CURRENT_KWH_C_F);
}
unsigned long overkwmodeuse(unsigned int addr)
{
union ll
{ unsigned char a[4];
unsigned long l;
} tempdata1;
unsigned char m;
tempdata1.l=0;
for(m=0;m<3;m++)
tempdata1.a[m]=RAM[addr+m];
//l2=RAM[addr+0];
//l1=RAM[addr+1];
//l1=256*l1+l2;
//l2=RAM[addr+2];
//l1=l1+256*256*l2;
return tempdata1.l;
}
void over_kw_move_data(status,kw_addr,max_kw_addr)
unsigned char status;
unsigned int kw_addr,max_kw_addr;
{unsigned char j1;
if(status==guozai)
if(1==compare_4_byte(kw_addr,max_kw_addr))
{
for(j1=0;j1<4;j1++)
RAM[max_kw_addr+j1]=RAM[kw_addr+j1];
}
}
void over_kwh_mode()
{unsigned long l,l1,l2;
unsigned char j,j1,value;
// add time
if(over_kwh_rtc_minute!=RSOFT_RTC_MINUTE)
{
over_kwh_rtc_minute=RSOFT_RTC_MINUTE;
if(over_kwh_status==guozai)
{
byte_3_bcd_add_copy_to_fm(R_OVER_KW_TIME);
}
}
// zon
if(over_kwh_rtc_second!=RSOFT_RTC_SECOND)
{
over_kwh_rtc_second=RSOFT_RTC_SECOND;
l=overkwmodeuse(R_OVER_KW_CONDITION+1);// condition over kw , when cal, addr+1
j=value_hex_from_bcd(RAM[R_OVER_KW_CONDITION]);// condition continue time ack
l1=overkwmodeuse(R_KW_Z+1);
if(l1>=l)
value=guozai;
else
value=noguozai;
if(1==translate_status(&over_kwh_status,&over_kwh_status_use,&over_kwh_continue_time,j,value))
{
if(over_kwh_status==guozai)
over_kwh_start();
else
over_kwh_end();
}
// zui da
over_kw_move_data(over_kwh_status,R_KW_Z,R_OVERKW_CURRENT_MAX_KW);
// fen
l=overkwmodeuse(R_OVER_KW_ABC_CONDITION+1);// condition over kw
j=value_hex_from_bcd(RAM[R_OVER_KW_ABC_CONDITION]);// codition continue time ack
// a
l1=overkwmodeuse(R_KW_A+1);
if(l1>=l)
value=guozai;
else
value=noguozai;
if(1==translate_status(&over_kwh_status_a,&over_kwh_status_a_use,&over_kwh_a_continue_time,j,value))
{
if(over_kwh_status_a==guozai)
over_kwh_a_start();
else
over_kwh_a_end();
}
// zui da
over_kw_move_data(over_kwh_status_a,R_KW_A,R_OVERKW_CURRENT_A_MAX_KW);
// b
// changed by zhanglong ---->start
if(progfunction_biaotype==type_3_4)
{
l1=overkwmodeuse(R_KW_B+1);
if(l1>=l)
value=guozai;
else
value=noguozai;
if(1==translate_status(&over_kwh_status_b,&over_kwh_status_b_use,&over_kwh_b_continue_time,j,value))
{
if(over_kwh_status_b==guozai)
over_kwh_b_start();
else
over_kwh_b_end();
}
// zui da
over_kw_move_data(over_kwh_status_b,R_KW_B,R_OVERKW_CURRENT_B_MAX_KW);
}
// changed by zhanglong ---->end
// c
l1=overkwmodeuse(R_KW_C+1);
if(l1>=l)
value=guozai;
else
value=noguozai;
if(1==translate_status(&over_kwh_status_c,&over_kwh_status_c_use,&over_kwh_c_continue_time,j,value))
{
if(over_kwh_status_c==guozai)
over_kwh_c_start();
else
over_kwh_c_end();
}
// zui da
over_kw_move_data(over_kwh_status_c,R_KW_C,R_OVERKW_CURRENT_C_MAX_KW);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -