📄 isamas.cpp
字号:
return bRet;}void CISAMAS::ExpYCData(BYTE byAddr,BYTE* pbyData,BYTE bySize){ if (bySize/3 > 0) { BYTE byProtNo = pbyData[0]; WORD wDevNo = m_subdevmgr.GetDevNoFrmAddr(byAddr,byProtNo); YCData* pData = new YCData [bySize/3]; for (WORD b=0; b<bySize/3; b++) { short* pshOrigValue = (short *)(pbyData + 3*b + 2); pData[b].m_wDevNo = wDevNo; pData[b].m_wDevPtNo = b+1; pData[b].m_fValue = (float)(*pshOrigValue) / 100;// cout <<(WORD)byAddr <<" "<<(WORD)byProtNo <<endl;// cout << "PROTYC " << (WORD) wDevNo <<" "<<b+1<<" "<< pData[b].m_fValue <<endl; } m_pAllMgr->YC(pData,(WORD)bySize/3); delete pData; }}/*void CISAMAS::ExplainYCData(BYTE byAddr,BYTE* pbyData,BYTE bySize){ BYTE byProtNo = pbyData[0]; BYTE byNo = m_protmgr.GetNo(byAddr,byProtNo); WORD wSize = (bySize / 3) * (sizeof(float) + sizeof(WORD)); BYTE* pData = new BYTE[wSize]; WORD* pwYCNo =(WORD *)pData; short* pwOrigValue; float* pfValue; for (BYTE b=0; b<bySize/3; b++) { *pwYCNo=b; pwOrigValue = (short *)(pbyData + 3*b + 2); pfValue = (float *)(pwYCNo+1); *pfValue++ = float(*pwOrigValue) / 100; pwYCNo = (WORD *)pfValue; } MailYC(m_byChannel,pData, wSize); delete pData;}*/static const SProtEventType g_aDiagType[] = { {0,"EPROM故障"}, {1,"EEPROM故障"}, {2,"A/D故障"}, {3,"RAM故障"}, {4,"通讯故障"}, {5,"通讯恢复"}, {6,"保护正常退出运行"}, {7,"保护投入运行"}, {8,"启动继电器故障"}, {9,"运行方式开关设置错误"},};const char* CISAMAS::GetDiagType(BYTE byID){ const char* p = NULL; BYTE byNum = (BYTE)(sizeof(g_aDiagType)/sizeof(SProtEventType)); for (BYTE b=0;b<byNum;b++) { if (g_aDiagType[b].m_byCode == byID) { p = g_aDiagType[b].m_szContent; break; } } return p;}void CISAMAS::ExpDiagData(BYTE byAddr,BYTE* pbyData,BYTE bySize){ char szEvent[128]; BYTE byProtNo = pbyData[9]; BYTE byNo = m_subdevmgr.GetNoFrmAddr(byAddr,byProtNo);// string strDiagType; if (m_subdevmgr.IsOn(byNo)) { g_bPortWarning = TRUE; g_nPortWarningCount = 0; } const char* pszDiagType = GetDiagType(pbyData[10]); char* pszName = m_subdevmgr.GetNameFrmNo(byNo);// if (GetDiagType(pbyData[10],strDiagType)) if (pszDiagType && pszName) { sprintf(szEvent,"%04d/%02d/%02d %02d:%02d:%02d.%03d %s %s" ,BTI(*(WORD *)&pbyData[0]),BTI(pbyData[2]),BTI(pbyData[3]) ,BTI(pbyData[4]),BTI(pbyData[5]),BTI(pbyData[6]),BTI(*(WORD *)&pbyData[7]) //,LPCTSTR(m_strDevName) ,pszName// ,strDiagType.data()); ,pszDiagType); // BYTE byStationNo = byNo + m_byChannel;// string strEvent = szEvent; m_pAllMgr->Event(m_subdevmgr.GetDevNoFrmAddr(byAddr,byProtNo),szEvent); //BYTE *pInfo=new BYTE[bySize+4]; //memcpy(&pInfo[4],pbyData,bySize); //pInfo[1]=byAddr; //CWmDlg* pWmDlg = (CWmDlg* )AfxGetApp()->m_pMainWnd; //pWmDlg->m_devRTU.SendProtInfo((BYTE *)szEvent,strlen(szEvent)); //pWmDlg->m_devCDT.SendProtInfo((BYTE *)szEvent,strlen(szEvent)); //pWmDlg->m_devCDT.SendProtInfo(pInfo,bySize+4); //pWmDlg->m_devCDT1.SendProtInfo(pInfo,bySize); //pWmDlg->m_devCDT1.SendProtInfo((BYTE *)szEvent,strlen(szEvent)); //delete pInfo; }}static const SProtEventType g_aFaultType[] = { {0,""}, {1,"A相"}, {2,"B相"}, {3,"C相"}, {4,"AB相"}, {5,"BC相"}, {6,"CA相"}, {7,"AB相接地"}, {8,"BC相接地"}, {9,"CA相接地"}, {0xa,"ABC三相短路"}, {0xb,"Ⅰ段故障"},{0xc,"Ⅱ段故障"}, {0xd,"拒跳故障"}, {0xe,"拒合故障"}, {0xf,"高压侧故障"}, {0x10,"中压侧故障"}, {0x11,"内桥侧故障"}, {0x12,"低压侧故障"}, {0x13,"进线1故障"}, {0x13,"进线2故障"}};static const SProtEventType g_aProtEvent[] = { {0,"速断动作"}, {1,"电流限时速断动作"}, {2,"定时限过流动作"}, {3,"反时限过流动作"}, {4,"零序过流(Ⅰ段)动作"}, {5,"定时限低电压动作"}, {6,"复合电压闭锁过流(I段)动作"}, {7,"比率差动动作"}, {8,"重瓦斯动作"}, {9,"电动机工艺联锁动作"}, {10,"BZT自投成功"}, {11,"BZT自投失败"}, {12,"零序过流动作"}, {13,"重瓦斯动作"}, {14,"电动机工艺联锁动作"}, {15,"轻瓦斯动作"}, {16,"过负荷动作"}, {17,"(Ⅰ段)母线PT断线报警"}, {18,"(Ⅱ段)母线接地报警"}, {19,"高压侧CT断线报警"}, {20,"复合电压闭锁过流II段动作"}, {21,"负序过流动作"}, {22,"Ⅱ段母线接地报警"}, {23,"Ⅱ段母线PT断线报警"}, {24,"低压侧CT断线报警"}, {25,"过流Ⅰ段动作"}, {26,"过流Ⅱ段动作"}, {27,"另一台主变零序过流跳本变"}, {28,"有载瓦斯动作"}, {29,"有载瓦斯动作"}, {30,"另一台主变零序过流告警"}, {31,"压力释放阀动作"}, {32,"压力异常报警"}, {33,"合压力下降"}, {34,"跳压力下降"}, {35,"重合闸动作"}, {36,"限时速断后加速动作"}, {37,"过流后加速动作"}, {38,"零序过流(Ⅰ段)后加速动作"}, {39,"零序过压(Ⅰ段)保护动作"}, {40,"不平衡电流保护动作"}, {41,"过电压保护动作"}, {42,"过电压报警"}, {44,"低频减载动作"}, {45,"断路器拒动报警"}, {46,"母线无压"}, {47,"事故减载动作"}, {48,"进线1电流元件动作闭锁BZT"}, {49,"进线2电流元件闭锁BZT"},{50,"有载轻瓦斯动作"}, {51,"有载调压油位异常信号"},{52,"主变油位异常信号"}, {53,"过负荷启动风冷动作"}, {54,"过负荷闭锁有载调压动作"}, {55,"控制回路断线报警"}, {56,"零序过流Ⅱ段动作"}, {57,"零序过流Ⅱ段后加速动作"}, {58,"零序过流Ⅲ段动作"}, {59,"零序过流Ⅲ段后加速动作"}, {60,"冷控失电告警信号"}, {61,"冷控失电跳闸动作"}, {62,"Ⅰ段复合电压闭锁过流动作(跳分段开关2)"}, {63,"风扇起动"}, {64,"主变油温高信号"}, {65,"防爆压力高信号"}, {66,"差压保护动作"}, {67,"零序过压Ⅱ段动作"}, {68,"BZT联切负荷动作"}, {69,"复合电压闭锁方向过流(Ⅰ段)动作"}, {70,"复合电压闭锁方向过流Ⅱ动作"}, {71,"复合电压闭锁过流Ⅲ段动作"}, {72,"方向横差1动作跳断路器1"}, {73,"方向横差2动作跳断路器2"}, {74,"复合电压闭锁方向过流Ⅲ段动作"}, {75,"过负荷跳闸动作"}, {76,"中央信号装置动作"}, {77,"Ⅰ段零序过流Ⅱ段时限动作"}, {78,"Ⅱ段零序过流Ⅱ段时限动作"}, {79,"进线2重合闸动作"}, {80,"Ⅱ段低压动作"}, {86,"桥断路器侧CT断线报警"}};static const SProtEventType g_aTestName[] = { {1,"A相电流(Ia)"}, {2,"B相电流(Ib)"}, {3,"C相电流(Ic)"}, {4,"零序电流(3I0)"}, {5,"负序电流(I2)"}, {6,"A相电压(Ua)"}, {7,"B相电压(Ib)"}, {8,"C相电压(Ic)"}, {9,"零序电压(3U0)"}, {0xA,"负序电压(U2)"}, {0xB,"AB线电压(Uab)"}, {0xC,"BC线电压(Ubc)"}, {0xD,"CA线电压(Uca)"}, {0x11,"高压侧A相电流(Iah)"}, {0x12,"高压侧B相电流(Ibh)"}, {0x13,"高压侧C相电流(Ich)"}, {0x14,"高压侧零序电流(3I0h)"}, {0x15,"高压侧负序电流(I2h)"}, {0x16,"高压侧A相电压(Uah)"}, {0x17,"高压侧B相电压(Ibh)"}, {0x18,"高压侧C相电压(Uch)"}, {0x19,"高压侧零序电压(3U0h)"}, {0x81,"A相电流的相位(φIa)"}, {0x82,"相电流的相位(φIb)"}, {0x83,"C相电流的相位(φIc)"}, {0x84,"零序电流的相位(φ3I0)"}, {0x85,"负序电流的相位(φI2)"}, {0x86,"A相电压的相位(φUa)"}, {0x87,"B相电压的相位(φUb)"}, {0x88,"C相电压的相位(φUc)"}, {0x89,"零序电压的相位(φ3U0)"}, {0x8A,"负序电压的相位(φU2)"}, {0x8B,"AB线电压的相位(φUab)"}, {0x8C,"BC线电压的相位(φ8C)"}, {0x8D,"CA线电压的相位(φUca)"}, {0x91,"高压侧A相电流的相位(φIah)"}, {0x92,"高压侧B相电流的相位(φIbh)"}, {0x93,"高压侧C相电流的相位(φIch)"}, {0x94,"高压侧零序电流的相位(φ3I0h)"}, {0x95,"高压侧负序电流的相位(φI2h)"}, {0x96,"高压侧A相电压的相位(φUah)"}, {0x97,"高压侧B相电压的相位(φUbh)"}, {0x98,"高压侧C相电压的相位(φUch)"}, {0x99,"高压侧零序电压的相位(φ3U0h)"}, {0x1A,"高压侧负序电压(U2h)"}, {0x1B,"高压侧AB线电压(Uabh)"}, {0x1C,"高压侧BC线电压(Ubch)"}, {0x1D,"高压侧CA线电压(Ucah)"}, {0x21,"中压侧A相电流(Iam)"}, {0x22,"中压侧B相电流(Ibm)"}, {0x23,"中压侧C相电流(Icm)"}, {0x24,"中压侧零序电流(3I0m)"}, {0x25,"中压侧负序电流(I2m)"}, {0x26,"中压侧A相电压(Uam)"}, {0x27,"中压侧B相电压(Ubm)"}, {0x28,"中压侧C相电压(Ucm)"}, {0x29,"中压侧零序电压(3U0m)"}, {0x2A,"中压侧负序电压(U2m)"}, {0x2B,"中压侧AB线电压(Uabm)"}, {0x2C,"中压侧BC线电压(Ubcm)"}, {0x2D,"中压侧CA线电压(Ucam)"}, {0x31,"A相差流(Ida)"}, {0x32,"B相差电流(Idb)"}, {0x33,"C相差电流(Idc)"}, {0x0,"频率(f)"}, {0x34,"Ⅱ段母线A相电压(Ua2)"}, {0x35,"Ⅱ段母线B相电压(Ub2)"}, {0x36,"Ⅱ段母线C相电压(Uc2)"}, {0x9A,"高压侧负序电压的相位(φU2h)"}, {0x9B,"高压侧AB线电压的相位(φUabh)"}, {0x9C,"高压侧BC线电压的相位(φUbch)"}, {0x9D,"高压侧CA线电压的相位(φUcah)"}, {0xA1,"中压侧A相电流的相位(φIam)"}, {0xA2,"中压侧B相电流的相位(φIbm)"}, {0xA3,"中压侧C相电流的相位(φIcm)"}, {0xA4,"中压侧零序电流的相位(φ3I0m)"}, {0xA5,"中压侧负序电流的相位(φI2m)"}, {0xA6,"中压侧A相电压的相位(φUam)"}, {0xA7,"中压侧B相电压的相位(φUbm)"}, {0xA8,"中压侧C相电压的相位(φUcm)"}, {0xA9,"中压侧零序电压的相位(φ3U0m)"}, {0xAA,"中压侧负序电压的相位(φU2m)"}, {0xAB,"中压侧AB线电压的相位(φUabm)"}, {0xAC,"中压侧BC线电压的相位(φUbcm)"}, {0xAD,"中压侧CA线电压的相位(φUcam)"}, {0xB1,"A相差流的相位(φIda)"}, {0xB2,"B相差流的相位(φIdb)"}, {0xB3,"C相差流的相位(φIdc)"}, {0xB4,"Ⅱ段母线A相电压的相位(φUa2)"}, {0xB5,"Ⅱ段母线B相电压的相位(φUb2)"}, {0xB6,"Ⅱ段母线C相电压的相位(φUc2)"}, {0x37,"Ⅱ段母线零序电压(3U02)"}, {0x38,"Ⅱ段母线负序电压(U22)"}, {0x39,"Ⅱ段母线A相电流(Ia2)"}, {0x3A,"Ⅱ段母线B相电流(Ib2)"}, {0x3B,"Ⅱ段母线C相电流(Ic2)"}, {0x3C,"Ⅱ段母线零序电流(3I02)"}, {0x3D,"Ⅱ段母线零序电流(I22)"}, {0x3E,"低压进线侧A相电压(ULa)"}, {0x3F,"低压进线侧B相电压(ULb)"}, {0x40,"低压进线侧C相电压(ULc)"}, {0x41,"低压进线侧零序电压(3UL0)"}, {0x42,"低压进线侧负序电压(UL2)"}, {0x43,"Ⅱ段母线A相电压(UL2a)"}, {0x44,"Ⅱ段母线B相电压(UL2b)"}, {0x45,"Ⅱ段母线C相电压(UL2c)"}, {0x46,"Ⅱ段母线零序电压(3UL20)"}, {0x47,"Ⅱ段母线负序电压(UL22)"}, {0x48,"母线A相电流(ILa)"}, {0x49,"母线B相电流(ILb)"}, {0x4A,"母线C相电流(ILc)"}, {0x4B,"母线零序电流(3IL0)"}, {0x4C,"母线负序电流(IL2)"}, {0x4D,"Ⅱ段母线A相电流(IL2a)"}, {0x4E,"Ⅱ段母线B相电流(IL2b)"}, {0xB7,"Ⅱ段母线零序电压的相位(φ3U02)"}, {0xB8,"Ⅱ段母线负序电压的相位(φU22)"}, {0xB9,"Ⅱ段母线A相电流的相位(φIa2)"}, {0xBA,"Ⅱ段母线B相电流的相位(φIb2)"}, {0xBB,"Ⅱ段母线C相电流的相位(φIc2)"}, {0xBC,"Ⅱ段母线零序电流的相位(φI02)"}, {0xBD,"Ⅱ段母线负序电流的相位(φI22)"}, {0xBE,"低压进线侧A相电压的相位(φULa)"}, {0xBF,"低压进线侧B相电压的相位(φULb)"}, {0xC0,"低压进线侧C相电压的相位(φULc)"}, {0xC1,"低压进线侧零序电压的相位(φ3UL0)"}, {0xC2,"低压进线侧负序电压的相位(φUL2)"}, {0xC3,"Ⅱ段母线A相电压的相位(φUL2a)"}, {0xC4,"Ⅱ段母线B相电压的相位(φUL2b)"}, {0xC5,"Ⅱ段母线C相电压的相位(φUL2c)"}, {0xC6,"Ⅱ段母线零序电压的相位(φ3UL20)"}, {0xC7,"Ⅱ段母线负序电压的相位(φUL22)"}, {0xC8,"母线A相电流的相位(φILa)"}, {0xC9,"母线B相电流的相位(φILb)"}, {0xCA,"母线C相电流的相位(φILc)"}, {0xCB,"母线零序电流的相位(φ3IL0)"}, {0xCC,"母线负序电流的相位(φIL2)"}, {0xCD,"Ⅱ段母线A相电流的相位(φIL2a)"}, {0xCE,"Ⅱ段母线B相电流的相位(φIL2b)"}, {0x4F,"Ⅱ段母线C相电流(IL2c)"}, {0x50,"Ⅱ段母线零序电流(3IL20)"}, {0x51,"Ⅱ段母线负序电流(IL22)"}, {0x52,"Ⅱ段母线AC线电压(Uac2)"}, {0x53,"I段母线自产零序电压(Uabc1)"}, {0x54,"Ⅱ段母线自产零序电压(Uabc2)"}, {0xF1,"母差保护代号(S1)"}, {0xF2,"母差保护代号(S2)"}, {0xF3,"母差保护代号(U1a)"}, {0xF4,"母差保护代号(U2a)"}, {0xF5,"母差保护代号(U12)"}, {0xF6,"母差保护代号(U22)"}, {0xCF,"Ⅱ段母线C相电流的相位(φIL2c)"}, {0xD0,"Ⅱ段母线零序电流的相位(φ3IL20)"}, {0xD1,"Ⅱ段母线负序电流的相位(φIL22)"}, {0xD2,"Ⅱ段母线AC线电压的相位(φUac2)"}};//BOOL CISAMAS::GetFaultType(BYTE byID,string& strFaultType)const char* CISAMAS::GetFaultType(BYTE byID){ const char* p=NULL; BYTE byNum = (BYTE)(sizeof(g_aFaultType)/sizeof(SProtEventType)); for (BYTE b=0;b<byNum;b++) { if (g_aFaultType[b].m_byCode == byID) { p = g_aFaultType[b].m_szContent; break;//return TRUE; } } return p;//FALSE;}//BOOL CISAMAS::GetTestName(BYTE byID,string& strTestName)const char* CISAMAS::GetTestName(BYTE byID){ const char* pszTestName; BYTE byNum = (BYTE)(sizeof(g_aTestName)/sizeof(SProtEventType)); for (BYTE b=0;b<byNum;b++) { if (g_aTestName[b].m_byCode == byID) { pszTestName = g_aTestName[b].m_szContent; break;//return TRUE; } } return pszTestName;}const char* CISAMAS::GetEventPrompt(BYTE byEventID){ const char* p = NULL; BYTE byNum = (BYTE)(sizeof(g_aProtEvent)/sizeof(SProtEventType)); for (BYTE b=0;b<byNum;b++) { if (g_aProtEvent[b].m_byCode == byEventID) { p = g_aProtEvent[b].m_szContent; break; } } return p;}void CISAMAS::ExpEventData(BYTE byAddr,BYTE* pbyData,BYTE bySize){ if(bySize<=0||bySize>255) return; char szEvent[128]; BYTE byProtNo = pbyData[9]; BYTE byNo = m_subdevmgr.GetNoFrmAddr(byAddr,byProtNo); if (m_subdevmgr.IsOn(byNo)) { g_bPortWarning = TRUE; g_nPortWarningCount = 0; }// string strPrompt,strTestName,strFaultType; const char* pszFaultType,*pszPrompt,*pszTestName; pszFaultType = GetFaultType(pbyData[12]); pszPrompt = GetEventPrompt(pbyData[13]); pszTestName = GetTestName(pbyData[14]); char* pszName = m_subdevmgr.GetNameFrmNo(byNo); if (pszFaultType && pszPrompt && pszTestName && pszName)// if (GetFaultType(pbyData[12],strFaultType)// && GetEventPrompt(pbyData[13],strPrompt)// && GetTestName(pbyData[14],strTestName)) { sprintf(szEvent,"%04d/%02d/%02d %02d:%02d:%02d.%03d %s %s%s,%s=%.2f." ,BTI(*(WORD *)&pbyData[0]),BTI(pbyData[2]),BTI(pbyData[3]) ,BTI(pbyData[4]),BTI(pbyData[5]),BTI(pbyData[6]),BTI(*(WORD *)&pbyData[7]) ,pszName// ,strFaultType.data()// ,strPrompt.data()// ,strTestName.data(), ,pszFaultType ,pszPrompt ,pszTestName ,(float)(*(WORD *)&pbyData[15])/100);// string strEvent = szEvent; m_pAllMgr->Event(m_subdevmgr.GetDevNoFrmAddr(byAddr,byProtNo),szEvent); BYTE *pInfo=new BYTE[bySize+7]; memcpy(&pInfo[4],pbyData,bySize); pInfo[0]=0x02; pInfo[1]=byAddr; pInfo[2]=0x40; pInfo[3]=0x13; WORD wCHKSUM = 0x40 + bySize; for (BYTE w=0; w<bySize; w++) { wCHKSUM += pbyData[w]; } pInfo[bySize+4]=(BYTE)(wCHKSUM); pInfo[bySize+5]=(BYTE)((wCHKSUM&0xff00)>>8); pInfo[bySize+6]=0x03; m_pAllMgr->ProtInfo(pInfo,bySize+7); delete pInfo; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -