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

📄 isamas.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -