⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 limits.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
📖 第 1 页 / 共 3 页
字号:
          ACptr->VCont=ACptr->Qg;          ACptr->Cont=ACptr;          if (flagH) x0[ACptr->Gen->Nvar+1]=ACptr->Qg;          fCustomPrint(stderr,"***Warning: Generator %d %s has lost Q control\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            due to Eq_%3s limit problems.\n",str);        }        else if (Elim && Recover && strpbrk(ACptr->cont,"E") &&                 ((ACptr->Gen->Eq==ACptr->Gen->EqMax && ACptr->Qg>=ACptr->VCont) ||                  (ACptr->Gen->Eq==ACptr->Gen->EqMin && ACptr->Qg<=ACptr->VCont)) ){          flag=TRUE; Nvolt--;          strcpy(ACptr->cont,"Q");          ACptr->Qg=ACptr->VCont;          ACptr->Cont=ACptr;          if (flagH) x0[ACptr->Gen->Nvar+1]=ACptr->Gen->Eq;          fCustomPrint(stderr,"***Warning: Generator %d %s has recovered\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            Q control as Eq is again within limits.\n");        }        else if (strpbrk(ACptr->cont,"V") &&                 ((Ilim && ACptr->Gen->Ia>=ACptr->Gen->IaMax) ||                  (Elim &&(ACptr->Gen->Eq>=ACptr->Gen->EqMax || ACptr->Gen->Eq<=ACptr->Gen->EqMin)))) {          fCustomPrint(stderr,"***Error: Generator %d %s it's already at a V limit.\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"          Try changing Ia and/or Eq limits.\n");          WriteSolution(0,TrueParamStr(2),"Ia/Eq Limit Problems:");          stopExecute(1);        }        else if (strpbrk(ACptr->cont,"I") &&                 ((Vlim && (ACptr->V>=ACptr->Vmax || ACptr->V<=ACptr->Vmin)) ||                  (Elim && (ACptr->Gen->Eq>=ACptr->Gen->EqMax || ACptr->Gen->Eq<=ACptr->Gen->EqMin)))) {          fCustomPrint(stderr,"***Error: Generator %d %s it's already at an Ia limit.\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"          Try changing V and/or Eq limits.\n");          WriteSolution(0,TrueParamStr(2),"V/Eq Limit Problems:");          stopExecute(1);        }        else if (strpbrk(ACptr->cont,"E") &&                 ((Ilim && ACptr->Gen->Ia>=ACptr->Gen->IaMax) ||                  (Vlim && (ACptr->V>=ACptr->Vmax || ACptr->V<=ACptr->Vmin)))) {          fCustomPrint(stderr,"***Error: Generator %d %s it's already at an Eq limit.\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"          Try changing V and/or Ia limits.\n");          WriteSolution(0,TrueParamStr(2),"V/Ia Limit Problems:");          stopExecute(1);        }      }    }    else if (strpbrk(ACptr->Type,"X")) {      if (Xlim && strpbrk(ACptr->cont,"X") && ACptr->V<=ACptr->Vmin) {        flag=TRUE;        if (ACptr->Cont->Bx[0]>0) {          ACptr->Cont->step++;          i=ACptr->Cont->step;          if (i<=ACptr->Cont->steps) {            ACptr->Cont->B=ACptr->Cont->B+ACptr->Cont->Bx[i];            fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s requires a %d st/nd/rd/th\n",ACptr->Num,ACptr->Name,i);            fCustomPrint(stderr,"            increment of %4.0lf MVar due to V_min problems.\n",Sn*ACptr->Cont->Bx[i]);          }        } else {          i=ACptr->Cont->step;          if (i>=1) {            ACptr->Cont->B=ACptr->Cont->B-ACptr->Cont->Bx[i];            fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s requires a %d st/nd/rd/th\n",ACptr->Num,ACptr->Name,i);            fCustomPrint(stderr,"            reduction of %4.0lf MVar due to V_min problems.\n",-Sn*ACptr->Cont->Bx[i]);            ACptr->Cont->step--;          }        }        if (ACptr->Cont->step>ACptr->Cont->steps || ACptr->Cont->step<1) {          NXvolt--;          strcpy(ACptr->cont,"m");          fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s has run out of \n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            reactance support due to V_min problems.\n");        }      }      else if (Xlim && strpbrk(ACptr->cont,"X") && ACptr->V>=ACptr->Vmax) {        flag=TRUE;        if (ACptr->Cont->Bx[0]>0) {          i=ACptr->Cont->step;          if (i>=1) {            ACptr->Cont->B=ACptr->Cont->B-ACptr->Cont->Bx[i];            fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s requires a %d st/nd/rd/th\n",ACptr->Num,ACptr->Name,i);            fCustomPrint(stderr,"            reduction of %4.0lf MVar due to V_max problems.\n",Sn*ACptr->Cont->Bx[i]);            ACptr->Cont->step--;          }        } else {          ACptr->Cont->step++;          i=ACptr->Cont->step;          if (i<=ACptr->Cont->steps) {            ACptr->Cont->B=ACptr->Cont->B+ACptr->Cont->Bx[i];            fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s requires a %d st/nd/rd/th\n",ACptr->Num,ACptr->Name,i);            fCustomPrint(stderr,"            increment of %4.0lf MVar due to V_max problems.\n",-Sn*ACptr->Cont->Bx[i]);          }        }        if (ACptr->Cont->step>ACptr->Cont->steps || ACptr->Cont->step<1) {          NXvolt--;          strcpy(ACptr->cont,"M");          fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s has run out of \n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            reactance support due to V_max problems.\n");        }      }      else if (Xlim && Recover && strpbrk(ACptr->cont,"M") && ACptr->V<=ACptr->Vmax) {        flag=TRUE; NXvolt++;        strcpy(ACptr->cont,"X");        fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s has recovered \n",ACptr->Num,ACptr->Name);        fCustomPrint(stderr,"            reactance support as V < V_max.\n");      }      else if (Xlim && Recover && strpbrk(ACptr->cont,"m") && ACptr->V>=ACptr->Vmin) {        flag=TRUE; NXvolt++;        strcpy(ACptr->cont,"X");        fCustomPrint(stderr,"***Warning: Reactance-controlled bus %d %s has recovered \n",ACptr->Num,ACptr->Name);        fCustomPrint(stderr,"            reactance support as V > V_min.\n");      }    }  }  return(flag);}/* -------------------- CheckQlimits ----------------------- */#ifdef ANSIPROTOBOOLEAN CheckQlimits(void)#elseBOOLEAN CheckQlimits()#endif{  ACbusData *ACptr;  char str[5],Qmax[5],Qmin[5];  BOOLEAN flag=FALSE,Recover=TRUE,RemoteVlost=FALSE;  if(ExistParameter('G')) Recover=FALSE;  if (Qlim || Elim || Ilim || Zlim) for(ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) {    if (ACptr->flagPgMax==1) {      fCustomPrint(stderr,"***Warning: Generating bus %d %s has reached the maximum P/S limit;\n",ACptr->Num,ACptr->Name);      fCustomPrint(stderr,"            hence, Pg will be fixed at its max. MW limit -> %lf.\n",ACptr->Pmax*Sn);      ACptr->flagPgMax++;    }    if (ACptr->Qmax==ACptr->Max) strcpy(Qmax,"Qmax");    else                         strcpy(Qmax,"Smax");    if (ACptr->Qmin==ACptr->Min) strcpy(Qmin,"Qmin");    else                         strcpy(Qmin,"Smin");    if (QRcont && strpbrk(ACptr->Type,"G")) {      if (Qlim && strpbrk(ACptr->cont,"V") && (ACptr->Qg>=ACptr->Max||ACptr->Qg<=ACptr->Min)) {        flag=TRUE; Nvolt--;        if(ACptr->Qg>=ACptr->Max) {ACptr->Qg=ACptr->Max; strcpy(str,Qmax);}        else                      {ACptr->Qg=ACptr->Min; strcpy(str,Qmin);}        strcpy(ACptr->cont,"Q");        fCustomPrint(stderr,"***Warning: Generator %d %s has lost remote voltage control\n",ACptr->Num,ACptr->Name);        fCustomPrint(stderr,"            due to %4s problems.\n",str);        ACptr->Cont->Kbg--;        if (ACptr->Cont->Kbg<1) {          RemoteVlost=TRUE;          ACptr->Cont->Kbg=-1;          ACptr->Cont->Cont=ACptr->Cont;          ACptr->Cont->VCont=ACptr->Cont->V;          ACptr->Cont->Qr=ACptr->Qg/ACptr->Kbg;          if (flagH) x0[ACvar[ACptr->Cont->N]+1]=ACptr->Cont->V;          fCustomPrint(stderr,"***Warning: Remote voltage controlled bus %d %s\n",ACptr->Cont->Num,ACptr->Cont->Name);          fCustomPrint(stderr,"            has lost all generator support.\n");        }      }      else if (Qlim && Recover && strpbrk(ACptr->cont,"Q") &&  ACptr->Cont->Kbg==0 &&               ((ACptr->Qg>=ACptr->Max && ACptr->Cont->V>=ACptr->Cont->VCont)||                (ACptr->Qg<=ACptr->Min && ACptr->Cont->V<=ACptr->Cont->VCont)) ) {        flag=TRUE; Nvolt++;        strcpy(ACptr->cont,"V");        ACptr->Cont->Kbg++;        fCustomPrint(stderr,"***Warning: Generator %d %s has recovered\n",ACptr->Num,ACptr->Name);        fCustomPrint(stderr,"            remote voltage control as Qg/Sg is again within limits.\n");        if (ACptr->Cont->Kbg==1) {          ACptr->Cont->Cont=NULL;          ACptr->Cont->V=ACptr->Cont->VCont;          ACptr->Cont->Qr=ACptr->Qg/ACptr->Kbg;          if (flagH) x0[ACvar[ACptr->Cont->N]+1]=ACptr->Cont->Qr;          fCustomPrint(stderr,"***Warning: Remote voltage controlled bus %d %s\n",ACptr->Cont->Num,ACptr->Cont->Name);          fCustomPrint(stderr,"            has recovered generator support.\n");        }      }      else if (ACptr->Gen!=NULL) {        if (Ilim && strpbrk(ACptr->cont,"V") && ACptr->Gen->Ia>=ACptr->Gen->IaMax) {          flag=TRUE; Nvolt--;          ACptr->Gen->Ia=ACptr->Gen->IaMax;          strcpy(ACptr->cont,"I");          if (flagH) x0[ACptr->Gen->Nvar+11]=ACptr->Qg;          fCustomPrint(stderr,"***Warning: Generator %d %s has lost remote\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            V control due to Ia_max limit problems.\n");          ACptr->Cont->Kbg--;          if (ACptr->Cont->Kbg<1) {            ACptr->Cont->Cont=ACptr->Cont;            ACptr->Cont->VCont=ACptr->Cont->V;            if (flagH) x0[ACvar[ACptr->Cont->N]+1]=ACptr->Cont->V;            fCustomPrint(stderr,"***Warning: Remote voltage controlled bus %d %s\n",ACptr->Cont->Num,ACptr->Cont->Name);            fCustomPrint(stderr,"            has lost all generator support.\n");          }        }        else if (Ilim && Recover && strpbrk(ACptr->cont,"I") &&   ACptr->Cont->Kbg<1 &&                 ACptr->Gen->Ia==ACptr->Gen->IaMax && ACptr->Cont->V>=ACptr->Cont->VCont) {          flag=TRUE;  Nvolt++;          strcpy(ACptr->cont,"V");          if (flagH) x0[ACptr->Gen->Nvar+11]=ACptr->Gen->Ia;          fCustomPrint(stderr,"***Warning: Generator %d %s has recovered\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            remote V control as Ia is again within limits.\n");          ACptr->Cont->Kbg++;          if (ACptr->Cont->Kbg==1) {            ACptr->Cont->Cont=NULL;            ACptr->Cont->V=ACptr->Cont->VCont;            if (flagH) x0[ACvar[ACptr->Cont->N]+1]=ACptr->Qg/ACptr->Kbg;            fCustomPrint(stderr,"***Warning: Remote voltage controlled bus %d %s\n",ACptr->Cont->Num,ACptr->Cont->Name);            fCustomPrint(stderr,"            has recovered generator support.\n");          }        }        else if (Elim && strpbrk(ACptr->cont,"V") &&                 (ACptr->Gen->Eq>=ACptr->Gen->EqMax || ACptr->Gen->Eq<=ACptr->Gen->EqMin)) {          flag=TRUE;  Nvolt--;          if (ACptr->Gen->Eq>=ACptr->Gen->EqMax) {            ACptr->Gen->Eq=ACptr->Gen->EqMax;            strcpy(str,"max");          } else {            ACptr->Gen->Eq=ACptr->Gen->EqMin;            strcpy(str,"min");          }          strcpy(ACptr->cont,"E");          if (flagH) x0[ACptr->Gen->Nvar+1]=ACptr->Qg;          fCustomPrint(stderr,"***Warning: Generator %d %s has lost\n",ACptr->Num,ACptr->Name);          fCustomPrint(stderr,"            remote V control due to Eq_%3s limit problems.\n",str);          ACptr->Cont->Kbg--;          if (ACptr->Cont->Kbg<1) {            ACptr->Cont->Cont=ACptr->Cont;            ACptr->Cont->VCont=ACptr->Cont->V;            if (flagH) x0[ACvar[ACptr->Cont->N]+1]=ACptr->Cont->V;            fCustomPrint(stderr,"***Warning: Remote voltage controlled bus %d %s\n",ACptr->Cont->Num,ACptr->Cont->Name);            fCustomPrint(stderr,"            has lost all generator support.\n");          }        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -