西门子模块6ES7253-1AA22-0XA0技术数据
1 引言
可编程控制器PLC外部接线简单方便,它的控制主要是程序的设计,编制梯形图是常用的编程方式,使用中一般有经验设计法,逻辑设计法,继电器控制电路移植法和顺序控制设计法,其中顺序控制设计法也叫功能表图设计法,功能表图是一种用来描述控制系统的控制过程功能、特性的图形,它主要是由步、转换、转换条件、箭头线和动作组成。这是一种先进的设计方法,对于复杂系统,可以节约60%~90%的设计时间.我国1986年颁布了功能表图的国家标准(GB6988.6-86)。有了功能表图后,可以用四种方式编制梯形图,它们分别是:起保停编程方式、步进梯形指令编程方式、移位寄存器编程方式和置位复位编程方式。本文以三菱公司F1系列PLC为例,说明实现顺序控制的四种编程方式。
例如:某PLC控制的回转工作台控制钻孔的过程是:当回转工作台不转且钻头回转时,若传感器X400检测到工件到位,钻头向下工进Y430当钻到一定深度钻头套筒压到下接近开关X401时,计时器T450计时,4s后快退Y431到上接近开关X402,就回到了原位。功能表图见图1:
图1 功能表图
2 使用起保停电路的编程方式
起保停电路仅仅使用与触点和线圈有关的指令,无需编程元件做中间环节,各种型号PLC的指令系统都有相关指令,加上该电路利用自保持,从而具有记忆功能,且与传统继电器控制电路基本相类似,因此得到了广泛的应用。这种编程方法通用性强,编程容易掌握,一般在原继电器控制系统的PLC改造过程中应用较多。如图2为使用起保停电路编程方式编制的与图1顺序功能图所对应的梯形图,图2中只有常开触点、常闭触点及输出线圈组成。
图2 起保停电路实现顺序控制
3 使用步进梯形指令的编程方式
步进梯形指令是专门为顺序控制设计提供的指令,它的步只能用状态寄存器S来表示,状态寄存器有断电保持功能,在编制顺序控制程序时应与步进指令一起使用,而且状态寄存器必须用置位指令SET置位,这样才具有控制功能,状态寄存器S才能提供STL触点,否则状态寄存器S与一般的中间继电器M相同。在步进梯形图中不同的步进段允许有双重输出,即允许有重号的负载输出,在步进触点结束时要用RET指令使后面的程序返回原母线。把图1中的0-3用状态寄存器S600-S603代替,代替以后使用步进梯形指令编程,对应的梯形图如图3所示。这种编程方法很容易被初学者接受和掌握,对于有经验的工程师,也会提高设计效率,程序的调试、修改和阅读也很容易,使用方便,程序也较短,在顺序控制设计中应优先考虑,该法在工业自动化控制中应用较多。
图3 步进指令实现顺序控制
4 使用移位寄存器的编程方式
从功能表图可以看出,在0-3各步中只有一个步在某时刻接通而其他步都在断开,把各步用中间继电器M200-M203代替,就很容易用移位寄存器实现控制。图4为用移位寄存器编程时的梯形图,采用移位寄存器M200-M217的前四位M200-M203代表4个步,组成1个环形移位寄存器。用移位寄存器主要是对数据、移位、复位3个输入信号的处理。该方法设计的梯形图看起来简洁,所用指令也较少,但对较复杂控制系统设计就不方便,使用过程中在线修改能力差,在工业控制中使用较少,大多数应用在彩灯顺序控制电路中。
图4 移位寄存器实现顺序控制
:
5 使用置位复位指令的编程方式
如图5为使用置位复位编程方式编制的与图1顺序功能图所对应的梯形图。在以置位复位指令的编程方式中,用某一转换所有前级步对应的辅助继电器的常开触点与转换对应的触点或电路串联,作为使所有后续步对应的辅助继电器置位和使所有前级步对应的辅助继电器复位的条件。对简单顺序控制系统也可直接对输出继电器置位或复位。该方法顺序转换关系明确,编程易理解,一般多用于自动控制系统中手动控制程序的编程。
图5 置位复位指令实现顺序控制
以上四种顺序控制编程方式各有特点,可以根据实际情况选择一种来编制梯形图,它们的一般比较见附表。教学实践表明这些编程方式很容易被初学者接受和掌握,用它们可以得心应手地设计出任意复杂的顺序控制程序。
可编程控制器PLC的应用绝大部分都是通过编写梯形图的方式实现程序控制的,但对于智能低压开关系统来讲,其分、断的控制往往要求由主控操作室远程控制来完成。按传统的方法,主控室要对某一个开关柜进行操作,须先发一个控制命令,PLC接收到该控制命令后,再由PLC程序执行该命令,该段程序必须用梯形图或逻辑指令编程,当开关柜数目巨大或要求多路设备同时控制时,PLC的程序编写就比较复杂,尤其是采用脉冲型输出控制而不是用电平保持型控制时更是如此。因为开关柜的分、合控制须两路继电器输出分别控制“分闸”和“合闸”,而不是由单路继电器保持输出控制,使继电器输出与开关柜分合一致。考虑这些因素,本文采用串行通讯实现PLC的控制,PLC本机无须任何梯形图或逻辑指令,这样不仅实现简单而且方便可靠。
一、低压监控系统设计
(一)系统设计要求
依据用户的实际要求,智能低压开关柜不仅能在当地手动进行分、合,而且具有系统零位、时控和远方控制的功能,其控制回路的电气控制图如图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()/*串口1每收到一个字节中 断一次的中断处理程序*/
{ cntreach[1]++; /*每接收一个字节,中断 接收计数器加1*/
stat=sio_read(p[1],data,1);/*从串口1缓冲区读入一 个字节数据放到data[0]中*/
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#WCCY000000030000000000000000**/xod”,该报文实现了以字方式置01号PLC中的输出点从0000到0003数据,控制数据内容为16个字节,每个字符可表示4位输出点的状态,共64路输出数据。因为每个低压开关柜需要“开”、“断”2 路输出控制,实际此命令只可控制32路开关。为了系统可靠,低压开关设计为脉冲控制型,为此必须用通信命令来实现PLC输出触点的同时输出,延时一段后再对PLC进行求反输出控制。设计Write_fp1_output()函数实现了具体报文转换成输出数据下发给PLC的方法。