三段式电流保护设计论文

  • 格式:doc
  • 大小:292.50 KB
  • 文档页数:8

三段式电流保护设计
【设计目的】
1.理论与实践相结合,强化学生的工程实际能力。

2.通过具体电路的设计和调试,加深对电力系统微机保护整个流程的理解,锻
炼运用常用算法编程解决问题的能力。

【设计任务】
用DSP或单片机实现简单的三段式(瞬时电流速断,限时电流速断,定时限过流)电流保护功能。

【实施方案】
三段式电流保护装置的设计包括电压形成回路、采样保持电路。

模拟低通滤波、A/D转换和输出几部分。

装置的工作回路属于二次回路,根据模数转换器输入范围要求,采用电流变换器将输入信号变换为正负5V范围内的电压信号。

由于采用DSP设计,故转换为3.3V。

系统频率为50HZ,即周期为20ms,低通滤波器的频率为100hz,滤波后电压信号存在正负值,采用电压跟随器保留正值,且范围在0~2.5V。

实际操作中由信号发生器产生低压工频输入信号,用以模拟实际电网测量调理后的信号。

输出用三对红绿两色LED指示三段保护是否启动和发布跳闸命令。

相邻线路三段保护动作时限和整定值自定,采用两点积分法进行采样,采样间隔为5ms,严格满足采样定理(fs>2fmax)。

将处理后的电流值与整定值比较,用以判定哪段动作。

当I>I1时,I段启动并动作,通过一定延时后II段,III段有感应但不动作;当I2<I<I1时,II段启动并动作,通过延时后III 段有感应但不动作;当I3<I<I2时,则III段启动并动作。

在整个保护装置中,电流I段、II段构成线路主保护,且II段兼做I段的近后备;电流III段作为本线路的近后备,相邻线路的远后备。

【电路图】 1. 设计原理图
2. 保护装置图
3. 微机保护跳闸原理图
【程序成图】
1.系统主程序流程图
2.中断服务程序
【问题解决】
出于每次只能采样一个数据,第二次采样就会覆盖第一次的数据,这次我们编程造成了极大的困扰.采样计算后的数据存在负值,对究竟是用程序实现将其正值化还是利用硬件来实现不太清楚.若由编程来实现不知道该如何处理,但是由硬件来做的话就简单很多,因为电压跟随器就是用来实现这一功能的。

用信号发生器提供输入信号时我们同样遇到一些问题,A/D采样数据不正确,没有把RESULT0中的数据右移,后来将RESULT0中数据右移6位再进行数据处理.调试的时候每次亮灯顺序不对,因此在每次亮灯前都要先将B口清零。

【设计收获】
课程设计培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。

刚开始着手时,我思绪全无,举步维艰,对于理论知识学习不够扎实的我深感“书到用时方恨少”,于是想起圣人之言“温故而知新”,便找出了上学期的继电保护资料,进行了系统的梳理,经过努力学习,我基本掌握了较难的知识,学会了如何思考的思维方式,找到了设计灵感。

最后,感谢各位给予我帮助的老师同学们!!
【程序清单】
#include"2407c.h"
#include"math.h"
#define unit unsigned int
#define uchar unsigned char
unit dat()=0,array[5 12];
float ad_dat[128],outdat=0,I=0,I1=1.8,I2=1.6,I3=1.2;
unit k=0;
void inline disable()
if(k==1)
{
k=0;
I=sqrt(outdat/2);
outdat=0;
}
else k++;
*ADCTRL2=*ADCTRL2\0X4200,//CLR FLAG Bit
enbale(); //开中断
}
void interrupt nothing()
{
enbale();
return;
}
void main()
{
disable();
initial();
t4_init();
ad_init();
MCRA= MCRA&0X00c7;
PBDATDIR=0XFF00;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
enbale();
adsoc();
while(1)
{if(I>I1)
{PBDATDIR= PBDATDIR&0x0ff00;
PBDATDIR= PBDATDIR/0x0003;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
delay(4000);
PBDATDIR= PBDATDIR&0x0ff00;
PBDATDIR= PBDATDIR/0x0007;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
delay(4000);
PBDATDIR= PBDATDIR&0x0ff00;
PBDATDIR= PBDATDIR/0x0017;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
}
{
asm("setc INTM");
}
void inline enbale()
{
asm("clrc INTM");
}
void initial()
{
asm("setc SXM");
asm("clrc OVM");
asm("clrc CNF");
*SCSR1=0X81fe; //CLKIN=40M
*WDCR=0X0e8; //DISABLE WD
*IMR=0X0001; //ENABLE INT1
*IFR=0X0ffff; //CLR INT FLAG
}
void t4_init()
{
*T4CNT=0X0000; //CLR T4
*T4CON=0X100C; //连续增计数模式,1分频,用内部时钟源
*T4PER=0X186a; //SET T4_PER f=6.4KHZ;128分频
*GPTCOND=0X0400; //T4 周期中断标志触发AD转换
*EVBIMRB/=0X0001; //允许T4周期中断
*EVBIFRB=0X0FFFF; //复位T4中断标志位
}
void ad_init()
{
*ADCTRL1=0X0010; //SEQ为级联工作模式
*ADCTRL2=0X8404; //EVB SOC SEQ=1, 允许SEQ //被EVB的SOC 信号启动,SEQ1和SEQ2均采用中断模式1.
*MAXCONV=0X00;//转换1 个通道
*CHSALSEQ1=0X0b; //通道12
}
void adsoc()
{
*T4CON=T4CON/0X40; //定时开始
}
void interrupt ad_int() //AD中断处理
{
dat()=*RESULT0>>6;array[k]=dat();
ad_dat[k]=((dat()*3.30)/1024-1.65)*2;
outdat+=ad_dat[k]*ad_dat[k];
if(I>I2&I<I1)
{ PBDATDIR= PBDATDIR&0x0ff00;
PBDATDIR= PBDATDIR/0x000c;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
delay(4000);
PBDATDIR= PBDATDIR&0x0ff00;
PBDATDIR= PBDATDIR/0x001c;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
}
if(I>I3&I<I2)
{PBDATDIR= PBDATDIR&0x0ff00;
PBDATDIR= PBDATDIR/0x0030;
PADATDIR= PADATDIR&0x0ff00;
PADATDIR= PADATDIR/0x0FF38;
}
}
}。