📄 ddj.c
字号:
}
*p_temp=X5643_read((DZTAOHAO-1)*0x80+30);
if (DINGZHI_SUM==*p_temp)
{
DingZhiXiuGai();
}
}
void delaythree(void)
{
while(acc<15);
}
/************************************************
SPI初始化
功能: SPI初始化, 波特率设置, 中断使能
*************************************************/
void SPIInit(void)
{
SPICCR=0x0007; /*置准备初始化标志位SPI_SW_RESET , 位6=0表示上升沿OUT*/
SPICTL=0x0007; /* f SPI 主工作方式允许,中断允许*/
SPIPRI=0x0040; /*置SPI为高优先级中断,收发独立于仿真器*/
//SPIBRR=0x7f; /*SPI波特率=3.47M*/
SPIBRR=0x23; /*SPI波特率=0.98M*/
SPICCR=0x0087; /*c初始化完成,码长8*/
SPISTS=0;
//PCDATDIR= PCDATDIR|0x2000;
//PCDATDIR = PCDATDIR&0xE301; /*复位AT7022*/
}
void SCIInit()
{
SCICTL1 = 0x13;
SCICCR = 0x67;
SCICTL2 = 0x03;
SCIHBAUD=0x07;
SCILBAUD = 0x7f;/*波特率2400*/
SCIPRI = 0x60; /*低优先级*/
SCICTL1 = 0x33;
}
void BaohuSuanFaLJ()
{
if (GLSD_YaBan==0x01) // 速断保护
{
if ((IamVal>=DLSDHDingZhi2)||(IbmVal>=DLSDHDingZhi2)||(IcmVal>=DLSDHDingZhi2))
{
SdQiDong_flag=1;
}
else if ((IamVal<DLSDHFanHuiZhi)&&(IbmVal<DLSDHFanHuiZhi)&&(IcmVal<DLSDHFanHuiZhi))
{
SdQiDong_flag=0;
}
}
if (GLYSD_YaBan==0x01) // 延时速断保护
{
if ((IamVal>=DLYSDHDingZhi2)||(IbmVal>=DLYSDHDingZhi2)||(IcmVal>=DLYSDHDingZhi2))
{
if (YSdQiDong_flag==0)
{
YSdQiDong_flag=1;
YSdYanShi_time=DLYSDSDingZhi;
}
}
else if ((IamVal<DLYSDHFanHuiZhi)&&(IbmVal<DLYSDHFanHuiZhi)&&(IcmVal<DLYSDHFanHuiZhi))
{
YSdQiDong_flag=0;
}
}
if (GLYSD_YaBan==0x01) //过流三段压板
{
if (DLIIDFYS_YaBan==1) //选择定时限
{
if ((IamVal>=DLDSDHDingZhi2)||(IbmVal>=DLDSDHDingZhi2)||(IcmVal>=DLDSDHDingZhi2))
{
if (DSdQiDong_flag==0)
{
DSdQiDong_flag=1;
DSdYanShi_time=DLSDSDingZhi;
}
}
else if ((IamVal<DLDSDHFanHuiZhi)&&(IbmVal<DLDSDHFanHuiZhi)&&(IcmVal<DLDSDHFanHuiZhi))
{
DSdQiDong_flag=0;
}
}
else //选择反时限
{
FSXBaoHu(0);
}
}
}
void BaoHuChuKouLJ(void)
{
long int Umax=0,Imin=0;
unsigned int temp1=0,temp2=0;
if ((SdQiDong_flag==1)&&(GZTZ_flag==0)) //速断保护跳闸逻辑
{
soe_no++;
soe_xuhao[soe_no]=0x0091;
soe_value[soe_no]=1;
soe_millisecond[soe_no]=millisecond_get;
soe_second[soe_no]=second_get;
soe_minute[soe_no]=minute_get;
soe_hour[soe_no]=hour_get;
soe_day[soe_no]=day_get;
soe_month[soe_no]=month_get;
soe_year[soe_no]=year_get;
if (soe_no>16) soe_no=0;
ADC=1;
GZTZ_flag=1;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFD;//开关1分闸输出
}
if (YSdQiDong_flag==1)// 延时速断保护跳闸逻辑
{
if (YSdYanShi_time==0)
{
if (GZTZ_flag==0)
{
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFD;//开关1分闸输出
soe_no++;
soe_xuhao[soe_no]=0x0092;
soe_value[soe_no]=1;
soe_millisecond[soe_no]=millisecond_get;
soe_second[soe_no]=second_get;
soe_minute[soe_no]=minute_get;
soe_hour[soe_no]=hour_get;
soe_day[soe_no]=day_get;
soe_month[soe_no]=month_get;
soe_year[soe_no]=year_get;
if (soe_no>16) soe_no=0;
ADC=1;
GZTZ_flag=1;
ChzQiDong_YunXu = 1;
}
}
else
{
YSdYanShi_time--;
}
}
if (GLYSD_YaBan==1)// 过流保护跳闸逻辑
{
if ((DLIIDFYS_YaBan==1)&&(DSdQiDong_flag==1))
{
if (DSdYanShi_time==0)
{
if (GZTZ_flag==0)
{
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFD;//开关1分闸输出
soe_no++;
soe_xuhao[soe_no]=0x0093;
soe_value[soe_no]=1;
soe_millisecond[soe_no]=millisecond_get;
soe_second[soe_no]=second_get;
soe_minute[soe_no]=minute_get;
soe_hour[soe_no]=hour_get;
soe_day[soe_no]=day_get;
soe_month[soe_no]=month_get;
soe_year[soe_no]=year_get;
if (soe_no>16) soe_no=0;
ADC=1;
GZTZ_flag=1;
}
}
else
{
DSdYanShi_time--;
}
}
else
{
if (fsx_flag==1) //反时限
{
if (FSdYanShi_oldtime!=0)
{
if (FSdYanShi_time<FSdYanShi_oldtime)
{
FSdYanShi_oldtime=FSdYanShi_time;
}
FSdYanShi_oldtime--;
}
else
{
if (GZTZ_flag==0)
{
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFD;//开关1分闸输出
soe_no++;
soe_xuhao[soe_no]=0x0094;
soe_value[soe_no]=1;
soe_millisecond[soe_no]=millisecond_get;
soe_second[soe_no]=second_get;
soe_minute[soe_no]=minute_get;
soe_hour[soe_no]=hour_get;
soe_day[soe_no]=day_get;
soe_month[soe_no]=month_get;
soe_year[soe_no]=year_get;
if (soe_no>16) soe_no=0;
ADC=1;
GZTZ_flag=1;
}
}
}
}
}
}
void HeFenCaoZuo(void)
{
switch (JDQ_HeFen_flag)
{
case 100:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFE; //开关1合闸输出
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PCDATDIR|=0x0001;
//PFDATDIR|=0x0002;
PBDATDIR|=0x0001; // 开关1合闸返回
if (KaiGuan1HZover_flag==0xaa) KaiGuan1HZover_flag=0x55;
FuncTab[2].status=0x5555;
}
break;
case 101:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFD;//开关1分闸输出
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PCDATDIR|=0x0001;
//PFDATDIR|=0x0002;
PBDATDIR|=0x0002;//开关1分闸返回
if (KaiGuan1FZover_flag==0xaa) KaiGuan1FZover_flag=0x55;
FuncTab[2].status=0x5555;
}
break;
case 200:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFFB;//开关2合闸输出
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PCDATDIR|=0x0001;
//PFDATDIR|=0x0002;
PBDATDIR|=0x0004;//开关2合闸返回
FuncTab[2].status=0x5555;
}
break;
case 201:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFF7;
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PCDATDIR|=0x0001;
//PFDATDIR|=0x0002;
PBDATDIR|=0x0008;//开关2分闸输出
FuncTab[2].status=0x5555;
}
break;
case 300:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFEF;
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PCDATDIR|=0x0001;
//PFDATDIR|=0x0002;
PBDATDIR|=0x0010;//开关3合闸输出
FuncTab[2].status=0x5555;
}
break;
case 301:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PCDATDIR&=0xFFFE;
//PFDATDIR&=0xFFFD;
PBDATDIR&=0xFFDF;
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PCDATDIR|=0x0001;
//PFDATDIR|=0x0002;
PBDATDIR|=0x0020;//开关3分闸输出
FuncTab[2].status=0x5555;
}
break;
case 400:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PBDATDIR&=0xFFBF;
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PBDATDIR|=0x0040;//备用1合闸输出
FuncTab[2].status=0x5555;
}
break;
case 500:
if (MaiKuantimer<FHZShuChu_MaiKuan)
{
JDQ_DONGZUO_flag=0xaaaa;
PBDATDIR&=0xFF7F;
}
else
{
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
PBDATDIR|=0x0080;//蓄电池放电输出
FuncTab[2].status=0x5555;
}
break;
default :
JDQ_HeFen_flag=0;
MaiKuantimer=0;
JDQ_DONGZUO_flag=0x5555;
FuncTab[2].status=0x5555;
break;
}
}
void DingZhiXiuGai()
{
int *p_temp2,i;
int Mum;
unsigned int temp1,temp2;
p_temp2=&DUDINGZHI_TEMP;
for (i=0;i<15;i++)
{
DingZhi[i]=(*p_temp2)&0x00ff;
p_temp2++;
DingZhi[i]=DingZhi[i]+((*p_temp2)<<8);
DingZhiP[i]=DingZhi[i];
p_temp2++;
}
//DingZhi[0] BHYanBan1
//DingZhi[1] BHYanBanF1
//DingZhi[2] BHYanBan2
//DingZhi[3] BHYanBanF2
//DingZhi[4] DLSDHDingZhi
//DingZhi[5] DLYSDHDingZhi
//DingZhi[6] DLDSDHDingZhi
//DingZhi[7] DLSDSDingZhi //改为 ChzBiSuo_time
//DingZhi[8] DLYSDSDingZhi
//DingZhi[9] DLDSDSDingZhi
//DingZhi[10] XDLYXQDDingZhi
//DingZhi[11] GLFSXCSDingZhi
//DingZhi[12] GLFSXJZDingZhi
//DingZhi[13] GLFSXSJDingZhi //改为 HJSYXSDingZhi
//DingZhi[14] GLFSXMDingZhi
//DingZhi[15] HJSTZSDingZhi
//DingZhi[16] ChzYanShi_DingZhi1
//DingZhi[17] ChzYanShi_DingZhi2
//DingZhi[18] ChzYanShi_DingZhi3
//DingZhi[19] FHZShuChu_MaiKuan
//DingZhi[20] LXSDHDingZhi
//DingZhi[21] LXYSDHDingZhi
//DingZhi[22] LXGSDHDingZhi
//DingZhi[23] LXSDSDingZhi
//DingZhi[24] LXYSDSDingZhi
//DingZhi[25] LXGSDSDingZhi
//DingZhi[26] LXFSXCSDingZhi
//DingZhi[27] LXDLQDDingZhi
//DingZhi[28] LXFSXSJDingZhi
//DingZhi[29] LXFSXMDingZhi
//DingZhi[30] GZGLWYDingZhi
//DingZhi[31] GZGLYYDingZhi
//DingZhi[32] GZGLWLDingZhi
//DingZhi[33] GZGLYanShi_DingZhi1
//DingZhi[34] GZGLYanShi_DingZhi2
//DingZhi[35] GZGLYanShi_DingZhi3
//DingZhi[36] BaoHuDingZhi_sum
/* DingZhiError_flag 保护定值出错标志 */
temp1=(DingZhi[0]&0x0001);
temp2=(DingZhi[1]&0x0001);
if (temp1==temp2)
{
DingZhiError_flag=1;
}
else
{
GLSD_YaBan=temp1; /* 过流I段压板 */
}
temp1=(DingZhi[0]&0x0002)>>1;
temp2=(DingZhi[1]&0x0002)>>1;
if (temp1==temp2)
{
DingZhiError_flag=1;
}
else
{
GLYSD_YaBan=temp1; /* 过流II段压板 */
}
temp1=(DingZhi[0]&0x003C)>>2;
temp2=(DingZhi[1]&0x003C)>>2;
if (temp1==temp2)
{
DingZhiError_flag=1;
}
else
{
FSXXZ_YaBan=temp1; /* 反时限曲线选择压板 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -