Добавил:
ktotogdetotam
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:БЭМЗ полищук доки / mogilev yst / МК7007БМ / CONTR_IF
.C/*”гЄжЁп гЇа ў«ҐЁп €”Њ ЊЉ7007Ѓ 2009Ј.*/
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ўгв२е ॣЁбва®ў 80‘31*/
#include <io51.h>
/*Ї®¤Є«о票Ґ § Ј®«®ўЄ®ў ЎЁЎ«Ё®вҐзле дгЄжЁ©*/
#include <stdlib.h>
extern void delayi(char); /*§ ¤Ґа¦Є б Єў ⮬ 10¬б*/
extern void delay1(char); /*§ ¤Ґа¦Є б Єў ⮬ 1б*/
extern void loadcwu(void); /*§ Јаг§Є гЇа.б«®ў ५Ґ U*/
extern void loadcwi(void); /*§ Јаг§Є гЇа.б«®ў ५Ґ I*/
extern void loadfreq(char); /*§ Јаг§Є з бв®вл бЁвҐ§ в®а®ў*/
extern void loadphase(char); /*§ Јаг§Є д §л бЁвҐ§ в®а®ў*/
/*Ї®¤Їа.ўЄ«. Їа.,в®Є */
extern void sw_on_u(float,float,float,char);
extern void sw_on_i(float,float,float,char);
/*®ЇаҐ¤Ґ«ҐЁҐ ¤аҐб®ў гбва®©бвў ўў®¤ -ўлў®¤ */
#define wrled_rdk1 (*(char*) 0x014800) /*§ ЇЁбм ў ॣЁбва ᢥ⮤Ё®¤®ў
Ё з⥨Ґ 1-Ј® Ў ©в Є« ўЁ вгал*/
#define wrreg_rdk2 (*(char*) 0x015000) /*§ ЇЁбм ў ॣЁбва гЇа ў«ҐЁп
Ё з⥨Ґ 2-Ј® Ў ©в Є« ўЁ вгал*/
/*®ЇЁб ЁҐ ЇҐаҐ¬Ґле*/
extern unsigned int voltage;
extern float volt_old;
extern float volt_new;
float lim_volt;
extern float current;
float curr_new;
float curr_old;
float lim_curr;
float l_curr_old;
extern float frequency;
extern unsigned int fi;
float fi_old;
float setfi;
extern unsigned char flag_stop;
extern unsigned char flag_prg;
extern unsigned char flag_fun;
extern unsigned char i;
extern unsigned char j;
extern unsigned char k;
extern unsigned char ireg_led;
extern unsigned char start_stop;
extern unsigned char sw_u;
extern unsigned char sw_i;
unsigned char old_faze_i;
extern unsigned char number;
extern float m_cor_flt[81];
unsigned long delta_phase;
unsigned int phase_shift;
void contr_ifm(void)
{
if(start_stop==1) goto start;
goto stop;
/* зЁ Ґвбп д®а¬Ёа®ў ЁҐ гЇа ў«пойЁе б«®ў*/
start:
if(flag_stop==0)goto sw_volt;
/*ўЄ«о票Ґ Їа殮Ёп*/
if(sw_u==0)cwu0.0=0;else cwu0.0=1;
loadcwu();
/*ўлЄ«о票Ґ ЈҐҐа жЁЁ бЁгб®Ё¤*/
TR2=0;
/*Їа®Ја ¬¬Ёа®ў ЁҐ з бв®вл*/
delta_phase=(long)(20615.843*frequency/m_cor_flt[8]);
loadfreq(0x01);
loadfreq(0x10);
/*гбв ®ўЄ гЈ«®ў б¤ўЁЈ бЁгб®Ё¤л Їа殮Ёп*/
phase_shift=0;
loadphase(0x01);
/*ўЄ«о票Ґ в®Є */
if(sw_i==0)cwi0.2=0;else cwi0.2=1;
if(current<0.001)
{
cwi0.2=0;
current=0.001;
}
sw_current:
/*ЇҐаҐЄ«о票Ґ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
if(current<=0.00605)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=1;
lim_curr=0.006;i=9;}
if(current>0.00606&¤t<=0.06005)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.06;i=11;}
if(current>0.06006&¤t<=0.60005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=1;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.6;i=13;}
if(current>0.60006&¤t<=6.00005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=1;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=6.0;i=15;}
if(current>6.00006&¤t<=12.0005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=1;cwi1.5=0;cwi1.0=0;
lim_curr=12.0;i=17;}
if(current>12.0006&¤t<=60.0005)
{cwi0.7=0;cwi0.3=1;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=60.0;i=19;}
loadcwi();
/*гбв ®ўЄ гЈ«®ў б¤ўЁЈ бЁгб®Ё¤л в®Є */
if(m_cor_flt[i+1]==1)
{
setfi=(360-fi+180)+m_cor_flt[i];
while(setfi>=360.0)setfi=setfi-360.0;
}
else
{
setfi=(360-fi+180)-m_cor_flt[i];
while(setfi>=360.0)setfi=setfi-360.0;
}
phase_shift=(int)(setfi/360*4095);
loadphase(0x10);
fi_old=fi;
/*ўЄ«о票Ґ ЈҐҐа жЁЁ бЁгб®Ё¤*/
TR2=1;
/*ЇаҐ¤ў аЁвҐ«мл© ЇгбЄ бЁвҐ§ в®а®ў Ї®б«Ґ бпвЁп ®Ї®а®Ј® Їа殮Ёп*/
sw_on_u(264,0,264,1);
sw_on_u(0,264,264,1);
sw_on_i(60,0,60,1);
sw_on_i(0,60,60,1);
sw_volt:
if(old_faze_i==0)
{
sw_on_i(60,0,60,1);
sw_on_i(0,60,60,1);
}
/*бЎа®б § йЁвл гбЁ«ЁвҐ«Ґ© Їа殮Ёп*/
cwu0.3=1;loadcwu();
delayi(4);
cwu0.3=0;loadcwu();
/*ўлЄ«о票Ґ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© Їа殮Ёп*/
cwu0.5=1;loadcwu();
delayi(4);
/*ўЄ«о票Ґ Їа殮Ёп*/
volt_new=(float)voltage;
sw_on_u(volt_new,volt_old,lim_volt,20);
volt_old=volt_new;
/*бЎа®б § йЁвл гбЁ«ЁвҐ«Ґ© в®Є */
cwi1.2=1;loadcwi();
if(current==0.02)goto block_prot; /*Ў«®ЄЁа®ўЄ § йЁвл ¤«п Їа®§ў® */
delayi(4);
cwi1.2=0;loadcwi();
block_prot:
if(cwi0.2==0)goto no_curr;
/*ўлЄ«о票Ґ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
cwi1.3=1;loadcwi();
delayi(4);
no_curr:
/*ўЄ«о票Ґ в®Є */
l_curr_old=lim_curr;
if((lim_curr==60.0)&&(current<=12.0005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==12.0)&&(current<=6.00005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==12.0)&&(current>12.0006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==6.0)&&(current<=0.60005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==6.0)&&(current>6.00006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.6)&&(current<=0.06005)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.6)&&(current>0.60006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.06)&&(current>0.06006)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.06)&&(current<=0.00605)&&(flag_stop==0))goto stop_curr_sw_lim;
if((lim_curr==0.006)&&(current>0.00606)&&(flag_stop==0))goto stop_curr_sw_lim;
if((old_faze_i!=sw_i)&&(flag_stop==0))goto stop_curr_sw_lim;
if((fi_old!=fi)&&(flag_stop==0))goto stop_curr_sw_lim;
goto start_curr;
stop_curr_sw_lim:
/*ўлЄ«о票Ґ в®Є */
curr_new=0;
sw_on_i(curr_new,curr_old,l_curr_old,20);
curr_old=0;
delay1(2);
/*ўЄ«о票Ґ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
cwi1.3=0;loadcwi();
delayi(4);
/*ўЄ«о票Ґ в®Є */
if(sw_i==0)cwi0.2=0;else cwi0.2=1;
if(current<0.001)
{
cwi0.2=0;
current=0.001;
}
/*ЇҐаҐЄ«о票Ґ ЇаҐ¤Ґ«®ў Ї® в®Єг*/
if(current<=0.00605)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=1;
lim_curr=0.006;i=9;}
if(current>0.00606&¤t<=0.06005)
{cwi0.7=1;cwi0.3=0;cwi0.4=0;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.06;i=11;}
if(current>0.06006&¤t<=0.60005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=1;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=0.6;i=13;}
if(current>0.60006&¤t<=6.00005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=1;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=6.0;i=15;}
if(current>6.00006&¤t<=12.0005)
{cwi0.7=0;cwi0.3=0;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=1;cwi1.5=0;cwi1.0=0;
lim_curr=12.0;i=17;}
if(current>12.0006&¤t<=60.0005)
{cwi0.7=0;cwi0.3=1;cwi0.4=1;cwi0.5=0;cwi0.6=0;cwi1.4=0;cwi1.5=0;cwi1.0=0;
lim_curr=60.0;i=19;}
loadcwi();
/*гбв ®ўЄ гЈ«®ў б¤ўЁЈ бЁгб®Ё¤л в®Є */
if(m_cor_flt[i+1]==1)
{
setfi=(360-fi+180)+m_cor_flt[i];
while(setfi>=360.0)setfi=setfi-360.0;
}
else
{
setfi=(360-fi+180)-m_cor_flt[i];
while(setfi>=360.0)setfi=setfi-360.0;
}
phase_shift=(int)(setfi/360*4095);
loadphase(0x10);
fi_old=fi;
delay1(2);
l_curr_old=lim_curr;
if(cwi0.2==0)goto start_curr;
/*ўлЄ«о票Ґ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
cwi1.3=1;loadcwi();
delayi(4);
start_curr:
curr_new=current;
sw_on_i(curr_new,curr_old,l_curr_old,20);
curr_old=curr_new;
if(flag_stop==0) goto end_start;
delay1(2);
end_start:
ireg_led=0xfb;
wrled_rdk1=ireg_led; /*ўЄ«озЁвм ᢥ⮤Ё®¤ "Џ“‘Љ"*/
old_faze_i=cwi0.2;
flag_stop=0;
return;
stop:
/*ўлЄ«о票Ґ в®Є */
curr_new=0;
sw_on_i(curr_new,curr_old,l_curr_old,20);
curr_old=0;
/*ўЄ«о票Ґ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© в®Є */
cwi1.3=0;loadcwi();
delayi(4);
/*ўлЄ«о票Ґ Їа殮Ёп*/
volt_new=0;
sw_on_u(volt_new,volt_old,lim_volt,20);
volt_old=0;
/*ўЄ«о票Ґ Ў«®ЄЁа®ўЄЁ гбЁ«ЁвҐ«Ґ© Їа殮Ёп*/
cwu0.5=0;loadcwu();
delayi(4);
ireg_led=0xf7;
wrled_rdk1=ireg_led; /*ўЄ«озЁвм ᢥ⮤Ё®¤ "‘’ЋЏ"*/
flag_stop=1;
return;
}
Соседние файлы в папке МК7007БМ