西门子模块6ES7214-1BD23-0XB8正规授权可靠。一、低压监控系统设计(一)系统设计要求依据用户的实际要求,智能低压开关柜不仅能在当地手动进行分、合,而且具有系统零位、时控和远方控制的功能,其控制回路的电气控制图如图1所示。图1中SV 为转换开关,当1、2通时,为当地时控方式;9、10通时为手动方式;5、6通时为远程控制。当开关柜工作在远方控制方式时,当PLC输出触点#107- #113闭合时,KM线圈加载得电,KM常开触点闭合,并形成回路使KM线圈始终得电,此时PLC输出触点#107-#113释放,当PLC输出触点 #105-115吸合时,KA线圈得电,KA常闭继电路断开,使KM线圈回路失电,KM常开触点断开,当KM线圈常开触点断开后,PLC#1052115 输出触点释放,开关维持断开状态。图中#901-#903作为PLC的输入触点。(二)设计方案简述本系统针对低压系统的实际要求设计,实现开关柜的远程控制。主站通过电力专用modem与远方子站RTU进行双向通讯,主站发出控制命令,子站接收主站控制命令并转发到PLC,并将PLC的执行结果及时反馈给主站,控制时间在1~2s完成。监控系统分为三级:主站、变电站当地子站、PLC和仪表设备。主站借助GPS时钟jingque定时,操作员可将任何时候的停电和启动设置进主站,由主站自动发出控制命令,该监控系统极适合路灯及景观灯的控制。图1 控制回路的电气控制原理图二、通讯协议及处理方法(一)主站与子站的通讯协议主站采用电力系统远动循环规约与子站进行通信,但远动循环规约中仅有主站对子站的单点遥控命令,为此主站端必须对CDT规约进行扩展,我们借用遥信报文的格式,将主站端需要控制的低压开关状态,用遥信报文下发到子站,为此仅需将下发的遥信报文中的开关状态内容分析出来,分别放置在yk_road[0]、 yk_road[1]、yk_road[2]、yk_road[3]四个字节中,支持对32路低压断路器的控制。报文由同步字、控制字和信息字三部分组成,其格式如下:同步字为6个字节:0dbh,09h,0dbh,09h,0dbh,09h;控制字为6个字节:控制字节、帧类别、帧长度、源站址、目的站址、CRC校验;信息字为帧长度×6个字节,本文因为控制点数在32个以内,所以信息字仅为6个字节:功能码、1到8组开关柜控制状态、9到16组开关柜控制状态、17到24组开关柜控制状态、备用开关柜控制状态、CRC校验。整个控制报文18个字节,这样既符合CDT规约的通信格式,又不增加RTU的通信报文分析负担。在该规约处理中,关键为实时判断出同步字头,然后根据帧类别区别遥控选择命令、遥控执行命令、遥控辙消命令、系统对时和成组开关控制命令,分析出遥控数据存放在yk_road[0]~yk_road[3]中,并置相应标志,再由远动测量装置将命令进行分析转换发给PLC。实现该规约的分析方法voidinterruptCntReach1()函数如下:voidinterruptCntReach1(){ cntreach[1]++; stat=sio_read(p[1],data,1);if(ok[1]==0){switch(tp[1]){case0:if(data[0]==0xd7)tp[1]++; break;case1:if(data[0]==0x09)tp[1]++;else tp[1]=0; break;case2:if(data[0]==0xd7)tp[1]++;else tp[1]=0; break;case3:if(data[0]==0x09)tp[1]++;else tp[1]=0; break;case4:if(data[0]==0xd7)tp[1]++;else tp[1]=0; break;case5:if(data[0]==0x09){ ok[1]=1;cntreach[1]=0; }else tp[1]=0; break;default:break; } }if((ok[1]==1)&&(cntreach[1]、=0)){Rx_buf[1][cntreach[1]-1]=data[0];if(cntreach[1]==3)LGn[1]=Rx_buf[1][2];if(cntreach[1]>=(LGn[1]*6+6)){step_flag[1]=1;CODE[1]=Rx_buf[1][1]; switch(CODE[1]){case0x61:…case0xc2:…case0xb3:…case0x7a:…case0xf4:if(Rx_buf[1][6]==0xf0)if(Rx_buf[1][2]==1){yk_road[0]=Rx_buf[1][7];yk_road[1]=Rx_buf[1][8];yk_road[2]=Rx_buf[1][9];yk_road[3]=Rx_buf[1][10];yk.road=1;yx1_state[0]=1;} break;default:break;}reset_point(1);} }sio_flush(p[1],0); }(二)子站与松下PLC的通信协议松下PLC通信协议MEWTOCOL2COM为厂家专门设计的协议,采用ASCII码的方式传送,用应答方式实现PC机与松下Fp1PLC之间的通信。由子站端RTU发出/命令信息0,FP1PLC响应,其基本格式如图2。其命令代码Commandcode由2~3个ASCII字符组成,共26种,主要有:RCS为读一个触点数据;WCS为写一个触点数据;RCP为读多个触点数据;WCP为写多个触点数据;RS为读定时器和计数器的设定值;WS为写定时器和计数器的设定值;RCC为将多个触点数据以字方式读入;WCC为将多个触点数据以字方式写入;因此,通过对这26种命令组合分析,可以完全构成由远程对PLC进行控制,而PLC本身无需编写任何梯形图。通过分析测试,例如对 PLC下发ASCII数据串“%01#RCCX00000001**\xod”,共19个字节,其中X是输入数据类型,Y是输出数据类型,数据串末尾是回车符,必须用\xod代替,其中报文可以不计算BCH校验码,用**代替,该报文实现了以字方式读01号PLC中的输入从0000到0001数据,共32 路输入数据。PLC收到该报文后,立即回17个字节的数据串,前6个数据为/%01#RC0,后8个数据为2个字的输入点数据,每个字数据用4个字节,每个字符可表示4位输入点的状态,设计了Read_fp1_bbbbb()函数实现报文分析转换方法。对PLC的输出控制用WCC命令实现,其基本数据串格式为“%01#WCCY**/xod”,该报文实现了以字方式置01号PLC中的输出点从0000到0003数据,控制数据内容为16个字节,每个字符可表示4位输出点的状态,共64路输出数据。因为每个低压开关柜需要“开”、“断”2 路输出控制,实际此命令只可控制32路开关。为了系统可靠,低压开关设计为脉冲控制型,为此必须用通信命令来实现PLC输出触点的同时输出,延时一段后再对PLC进行求反输出控制。设计Write_fp1_output()函数实现了具体报文转换成输出数据下发给PLC的方法。Read_fp1_bbbbb() {unsignedcharfp1_read[19]=/%01#RCCX00000001* *\x0d0;intn;memcpy(SendBuffer,fp1_read,19);receive_ok=0; termintrr=0;count=0;sio_putb(p[6],SendBuffer,19);while(count4)&0x0f; else x&0x0f;if(x>9)x=x+-A。-10; elsex=x+0x30;return(x);}Write_fp1_output(){unsignedcharfp1_write[35]=/%01#WCCY0000 000**\x0d0;intn;memcpy(SendBuffer,fp1_write,35);receive_ok=0; termintrr=0; count=0;SendBuffer[16]=Hex_to_Asc(~yk_road[0],1);SendBuffer[17]=Hex_to_Asc(~yk_road[0],0);SendBuffer[18]=Hex_to_Asc(~yk_road[1],1);SendBuffer[19]=Hex_to_Asc(~yk_road[1],0);SendBuffer[20]=Hex_to_Asc(yk_road[2],0);SendBuffer[21]=Hex_to_Asc(~yk_road[2],0);SendBuffer[28]=Hex_to_Asc(yk_road[0],1);SendBuffer[29]=Hex_to_Asc(yk_road[0],0);SendBuffer[30]=Hex_to_Asc(yk_road[1],1);SendBuffer[31]=Hex_to_Asc(yk_road[1],0);sio_putb(p[6],SendBuffer,35);while(count