lost_v.h
来自「嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发」· C头文件 代码 · 共 441 行
H
441 行
unsigned char rstatus_quanshiya_use;
unsigned char rstatus_quanshiya_continue_time; //aa单片机工作下全失压AAAAA
void init_lost_v()
{unsigned char i;
unsigned int i1;
lost_v_continue_time=0;
get_last_envent_data_from_fm_twotable_to_ram(TYPE_FM_LOSTV_RECORD,7,16, R_LOSTV_CURRENT_KWH_F);
lost_v_quadrant=lost_v_no;
lost_v_quadrant_use=lost_v_no;
RSTATUS_QUANSHIYA=no_quanshiya;
rstatus_quanshiya_use=no_quanshiya;
rstatus_quanshiya_continue_time=0;
}
/*
void use_lostv()
{
unsigned char l1;
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_LOSTV_RECORD,0);
if(data_addr.addri!=0xffff)
{
wr_data[0]=table_guadrant_value_translate[lost_v_quadrant];
for(l1=0;l1<6;l1++)
wr_data[1+l1]=RAM[R_LOSTV_NUM+28+(lost_v_quadrant-1)*34+l1];
for(l1=0;l1<16;l1++)
wr_data[7+l1]=RAM[R_LOSTV_CURRENT_KWH_F+l1];
for(l1=0;l1<6;l1++)
wr_data[23+l1]=RAM[R_LOSTV_NUM+28+(lost_v_quadrant-1)*34+6+l1];
write(FM, 23+6);
}
}*/
void use_lost_cut_v(twotable_type,enventquadrant,addr_enventnum,addr_envent_data)
unsigned char twotable_type,enventquadrant;
unsigned int addr_enventnum,addr_envent_data;
{
unsigned char l1;
data_addr.addri=current_twobiaofm_block_addr(twotable_type,0);
if(data_addr.addri!=0xffff)
{
wr_data[0]=table_guadrant_value_translate[enventquadrant];
for(l1=0;l1<6;l1++)
wr_data[1+l1]=RAM[addr_enventnum+28+(enventquadrant-1)*34+l1];
for(l1=0;l1<16;l1++)
wr_data[7+l1]=RAM[addr_envent_data+l1];
for(l1=0;l1<6;l1++)
wr_data[23+l1]=RAM[addr_enventnum+28+(enventquadrant-1)*34+6+l1];
write(FM, 23+6);
}
}
// zhuan cun end
void lost_v_end()
{
unsigned int addr;
// an hui add---->start
time_to_wrdata();
data_addr.addri=FM_LAST_CUTV_START_DATE+6;
write(FM,6);
//an hui add end--------->end
// ji lu shi ya jie shu shi jian记录失压结束时间NNNNNN
addr=R_LOSTV_NUM+34+(lost_v_quadrant-1)*34;
lost_cun_shijian(addr);
// write fm
copy_ram_to_fm(addr,6,addr);
// zhuang cun 转存 10 ci JJJJJJJJJJJJJ
// xian zhuan cun zai eeprom ,yi hou geng gei
// read zhi zhen
//use_lostv();
use_lost_cut_v(TYPE_FM_LOSTV_RECORD, lost_v_quadrant, R_LOSTV_NUM, R_LOSTV_CURRENT_KWH_F);
lost_v_quadrant=lost_v_no;
lost_v_quadrant_use=lost_v_no;
lost_v_continue_time=0;
}
void lost_cut_v_start_use(twotable_type,enventquadrant,addr_enventnum,addr_envent_data)
unsigned char twotable_type,enventquadrant;
unsigned int addr_enventnum,addr_envent_data;
{unsigned char i;
unsigned int i1;
// ZON CI SHU JIA
byte_3_bcd_add_copy_to_fm(addr_enventnum);
// gei xian de ci shu lei jia 对应失压相累加次数NNNN
i1=addr_enventnum+6+(enventquadrant-1)*34;
byte_3_bcd_add_copy_to_fm(i1);
// ji lu shi ya qi shi shi jian记录失压起始时间NNNNNN
i1=addr_enventnum+28+(enventquadrant-1)*34;
lost_cun_shijian(i1);
copy_ram_to_fm(i1,6,i1);
// chu shi jie shu shi jian初始结束时间00000
i1=addr_enventnum+34+(enventquadrant-1)*34;
for(i=0;i<6;i++)
RAM[i+i1]=0;
copy_ram_to_fm(i1,6,i1);
i1=addr_envent_data;
for(i=0;i<16;i++)
RAM[i1+i]=0;
if(1==next_point(twotable_type,4))
//use_lostv();
use_lost_cut_v(twotable_type, enventquadrant, addr_enventnum, addr_envent_data);
}
// zhuan cun start
void lost_v_start()
{
unsigned char i;
unsigned int i1;
lost_v_quadrant=lost_v_quadrant_use;
lost_v_continue_time=0;
lost_v_rtc_minute=RSOFT_RTC_MINUTE;
// an hui add------------>start
time_to_wrdata();
for(i=6;i<12;i++)
wr_data[i]=0;
data_addr.addri=FM_LAST_CUTV_START_DATE;
write(FM,12);
// an hui add------------->end
lost_cut_v_start_use(TYPE_FM_LOSTV_RECORD, lost_v_quadrant, R_LOSTV_NUM, R_LOSTV_CURRENT_KWH_F);
}
void lost_v_chuli(unsigned char a)
{unsigned char acktime;
acktime=value_hex_from_bcd(RAM[R_LOSTV_ACK_TIME]);
if(lost_v_quadrant_use!=a)
{
lost_v_quadrant_use=a;
lost_v_continue_time=0;
}
else
{
if(lost_v_continue_time<=acktime) //10
lost_v_continue_time=lost_v_continue_time+1;
if(lost_v_continue_time>=acktime) //10
{
lost_v_continue_time=0;
if(lost_v_quadrant!=a)// status changed
{
if(a==lost_v_no)// end
lost_v_end();
else
{
if(lost_v_quadrant==lost_v_no)// start
lost_v_start();
else
{
lost_v_end();// lost v,but status changed
lost_v_quadrant=a;
lost_v_quadrant_use=a;
lost_v_start();
}
}
}
}
}
}
void lost_v_all(unsigned char a)
{unsigned char acktime;
acktime=value_hex_from_bcd(RAM[R_LOSTV_ACK_TIME]);
if(rstatus_quanshiya_use!=a)
{
rstatus_quanshiya_use=a;
rstatus_quanshiya_continue_time=0;
}
else
{
if(rstatus_quanshiya_continue_time<=acktime) //10
rstatus_quanshiya_continue_time=rstatus_quanshiya_continue_time+1;
if(rstatus_quanshiya_continue_time>=acktime) //10
{
rstatus_quanshiya_continue_time=0;
if(RSTATUS_QUANSHIYA!=a)
{
if(a!=no_quanshiya)
{
RSTATUS_QUANSHIYA=quanshiya;
byte_3_bcd_add_copy_to_fm(R_ALLLOSTV_NUM);
one_time_two_table_start(TYPE_FM_ALLLOSTV_RECORD);
}
else
{
RSTATUS_QUANSHIYA=no_quanshiya;
rstatus_quanshiya_use=no_quanshiya;
one_time_two_table_end(TYPE_FM_ALLLOSTV_RECORD);
}
}
}
}
}
void lost_v_pan(unsigned char a)
{unsigned char l;
l=lost_v_no;
switch(a)
{
//case 00 :
// zhen chang
// break;
case 1:
// a
l=lost_v_a;
break;
case 10:
// b
l=lost_v_b;
break;
case 100:
// c
l=lost_v_c;
break;
case 11:
// ab
l=lost_v_ab;
break;
case 101:
// ac
l=lost_v_ac;
break;
case 110:
// bc
l=lost_v_bc;
break;
default:
break;
}
lost_v_chuli(l);
if(a==111)
lost_v_all(1); // 111 all lost
else
lost_v_all(0); // no all lost
}
void lost_v_time_add()
{unsigned int i;
if(lost_v_rtc_minute!=RSOFT_RTC_MINUTE)
{
lost_v_rtc_minute=RSOFT_RTC_MINUTE;
// ADD ONE MINUTE
// ZON LEI JI失压相累加总时间AAAAA
if(lost_v_quadrant!=lost_v_no)
{
byte_3_bcd_add_copy_to_fm(R_LOSTV_NUM+3);
// gei xian de shi jian lei jia 对应失压相累加时间NNNN
if((0!=lost_v_quadrant)&&(lost_v_quadrant<7))
{
i=R_LOSTV_NUM+9+(lost_v_quadrant-1)*34;
byte_3_bcd_add_copy_to_fm(i);
}
}
if(RSTATUS_QUANSHIYA==quanshiya)
{
byte_3_bcd_add_copy_to_fm(R_ALLLOSTV_TIME);
// quan shi ya time add
}
}
}
unsigned char condition_i_lostv(unsigned int addr)
{unsigned long j1,j2,j3;
union ll
{ unsigned char a[4];
unsigned long l;
} tempdata1,tempdata2;
unsigned char m;
for(m=0;m<4;m++)
tempdata1.a[m]=RAM[addr+m];// xx xx dot xx xx
tempdata1.l=tempdata1.l>>4;// changed 0 x x x x dot x x x
tempdata2.l=0;
for(m=0;m<3;m++)
tempdata2.a[m]=RAM[R_LOSTV_CONDITION+2+m];//00 xx x dot x x x
if(tempdata1.l>=tempdata2.l)
return 1;
else
return 0;
}
void lost_v_mode_3_3()
{unsigned char la,lb,lc,k;
unsigned int j_condition,ja,jc,jb,jadd;
j_condition=value_hex_from_2bcd(R_LOSTV_CONDITION);
la=0;
lb=0;
lc=0;
// a shi ya
ja=value_hex_from_v_4bytebcd(&RAM[R_V_A]);
// b shi ya
jc=value_hex_from_v_4bytebcd(&RAM[R_V_C]);
jb=value_hex_from_v_4bytebcd(&RAM[R_V_B]);
k=0;
if(1==condition_i_lostv(R_I_A))
k=1;
if(1==condition_i_lostv(R_I_C))
k=1;
if(((ja+jc)<j_condition)&&(k==1))
{
la=1;
lb=1;
lc=1;
}
else
{
// if((j3+j4)<type_33_b_v_add)// question
jadd=ja+jc;
// |ja+jc-jb|<150(0 dot 1 v)
// |ja-jc|<150(0 dot 1 v)
if(jadd>jb)
jadd=jadd-jb;
else
jadd=jb-jadd;
if(jadd<type_33_b_v_sub)
{
if(ja>jc)
{
if((ja-jc)<type_33_b_v_sub)
lb=1;
}
else
{
if((jc-ja)<type_33_b_v_sub)
lb=1;
}
}
if(lb==0)
{
if((ja<j_condition)&&(1==condition_i_lostv(R_I_A)))
la=1;
// c shi ya
if((jc<j_condition)&&(1==condition_i_lostv(R_I_C)))
lc=1;
}
}
la=la+lb*10+lc*100;
lost_v_pan(la);
}
void lost_v_mode_3_4()
{unsigned char la,lb,lc;
unsigned int j1,j2,j3,ja,jb,jc;
la=0;
lb=0;
lc=0;
j1=value_hex_from_2bcd(R_LOSTV_CONDITION);
ja=value_hex_from_v_4bytebcd(&RAM[R_V_A]);
jb=value_hex_from_v_4bytebcd(&RAM[R_V_B]);
jc=value_hex_from_v_4bytebcd(&RAM[R_V_C]);
if((ja<j1)&&(1==condition_i_lostv(R_I_A)))
la=1;
// b shi ya
if((jb<j1)&&(1==condition_i_lostv(R_I_B)))
lb=1;
// c shi ya
if((jc<j1)&&(1==condition_i_lostv(R_I_C)))
lc=1;
la=la+lb*10+lc*100;
lost_v_pan(la);
}
void lost_v_mode()
{
// lei jia shi jian jia (minute)
lost_v_time_add();
if(lost_v_rtc_second!=RSOFT_RTC_SECOND)
{
lost_v_rtc_second=RSOFT_RTC_SECOND;
if(progfunction_biaotype==type_3_3)
lost_v_mode_3_3();
else
lost_v_mode_3_4();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?