《电工技术》2008年第4期摘录:_曩田电力自动化行通讯,通讯网
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
_曩田电力自动化行通讯,通讯网络的设计采用主从式,上位机作为主机,微机保护装置作为从机与上位机进行通讯。上位机软件的设计主要使用多线程的方式,用主线程设计界面,进行基本的操作,如显示系统接线图、实时监测开关量、模拟量、整定定值、进行开出传动试验、出厂设置、图形分析、保护目E置等,用辅助线程实时查询报告并保存,在查询报告的过程中,根据报告相应的标志位确定是否产生故障数据,如果有故障数据即刻请求故障数据,并保存在上位机中,以防故障数据被再次产生的故障数据覆盖。为了保障通讯的同步,避免丢包现象的产生,应该在软件调试过程中确定保护配置的改变是否会响应微机保护装置的通讯速率,例如保护品种增加,则用于保护计算的时间增加,相应的通汛时间将会减少,如果上位机查询等待时间不变,将有可能导致在规定的时间内不能完成所有数据的接收,发生接收数据错误,因此应该调整上位机的通讯查询等待时间,可以考虑加入适当的延时。CANM络通讯初始化程序:voidcaninit0{UINTiBaudRate;UINTm—AcpCode-0;U1NTm—AcpMask=0xff;UINTITI—IntMask=0;U[NTmOutCtrlCode=0;UINTPort-1;UINTmDeviceNum=0;UINTm—BTR0=0x00;//设置通讯速率为500kbpsUINTm—BTRl=0xlc:UlNTiHosttD;if(CANPortOpen(m—DeviceNum,(WORD‘)Port,WORD’)&iHostlD,0NORD’)&iBaudRate)!=SUCCESS)//打开CAN适配卡端口return;CANHwReset(Port)://CAN适配卡端口硬复位CANReset(Porb;//CAN适配卡端口通讯复位CANSetAcp(Port,m_AcpCode,m_AcpMask);//设置CAN适配卡端【_==1接收屏蔽码CANSetOutCtrl(Port,mOutCtrICode);//设置CAN适配卡端几输出控制码CANSetBaud(Port,m—BTR0,mBTRl);//设置CAN适配卡端口通讯速率CANlnit(Port,mBTR0,m—BTRl,(UCHAR)m—Int—Mask);//初始化CAN适配卡CANSetNormal(Port);//设置CAN适配卡正常工作模式)发送程序:BOOLdatasend(intid,unsignedchardata[】,intk)//da一4wwwchinaetnet电I:技术ta为要发送的数据,k为数据长度charcTxBuf[10];intdiv,rood;div=k/8:mod=k%8;HCAN总线发送最大数据包长度为8个字节for(intm=O:m<div;m++1cTxBuf【0】=(UCHAR)(0d&0xfff8]>>3);cTxBuf[1】=(UCHAR)((id&0×07)<<5)【0×08:for(intn=0;n<8;n++)cTxBuf[n+2]=data[8‘m+n】;if(cANSendMsg(Port,~CHAR’)cTxBuf,FALSE)!-SUCCESSy/发送returnFALSE;)if(!mod)(cTxBuf[0]-(UCHAR)((id&0xfff8)>>3);cTxBuf[1]=fUCHAR)((id&0x07)<<5)1fmod&0x00;for(intm=O:m<mod;m+十】cTxBuf[m+2]=data[div{8+m】;if(cANSendMsg(Port,(【JCHAR’)cTxBuf,FALSE)!=SUCCESS)returnFALSE;)returnTRUE;)接收程序:voiddatarece()IintI;longcount=0;//接收计数inthlong=0;UCHARstatus;BOOLbReady=FALSE;UCHARcReBuf[30];UCHARbuffer[255];while(1){CANinpb(app一>Port,2,&status);//接收缓冲区是否有数据if(status&11{CANOue~Msg(app一>Port,(int’)&bRead~(UCHAR’)cReBu0;//读出数据if(bReady)//是否正确读出数据{
阅读此文(图):
点击此处在线翻阅