全国服务热线 15221406036

襄阳西门子S7-300代理商

发布:2023-09-27 17:08,更新:2024-05-08 07:10

襄阳西门子S7-300代理商

PLC高速计数功能的应用
  
   有朋友关心使用PLC进行高速数据采集(如采集旋转编码器的脉冲信号)的方法,以下以FX系列PLC进行说明。欢迎大家进行更深入地探讨,请介绍您的应用经验。
  1、功能
   FX系列PLC提供了高速脉冲计数功能,通过这一功能可以连接编码器以测量位置,或积算仪表以计算累积量数值。与高速计数功能有关的I/O和软元件有以下:
   1)输入点6点:X0-X5,当该点输入控制高速计数器时,自动响应高速计数处理。此外,X6和X7也是高速输入,但只能用于启动信号而不能用于高速计数。
   2)计数器21点:C235-C255,用于高速输入信号的计数,用法见下文。
   3)辅助继电器21点:M8235-M8255,与21个计数器对应,用于标识该计数器输入信号是增计数还是减计数(见下文)。
  2、计数器的类型
   1)1相无启动/复位端子:C235-C240。
   2)1相有启动/复位端子:C241-C245。
   3)2相双向 :C246-C250。
   4)2相A-B相:C251-C255。
  3、用法
   1)21个高速计数器共享一个PLC上的6个高速计数输入端。如果输入被某计数器占用,它就不能用于其它计数器或其它用途,因此,多可同时使用21个高速计数器中的6个。
   2)高速计算器的选择并非任意,它取决于输入信号的类型和计数器的类型。信号的类型必须与计数器的类型(见上文第2点)相匹配。
   3)各输入点有多个高速计数器可选择,但不能同时用于多个计数器,即使用了一个计数器后,与该点对应的其它计数器就不可用了。
   4)当M8~~~(M8235-8245)为ON时单相高速计数器C~~~为减计数方式;OFF时为加计数方式;当M8~~~(M846-8255)为ON时单相双输入高速计数器或双相计数器C~~~为减计数方式;OFF时为加计数方式;
  4、高速计数器与输入端的对应关系(见附图)
  


   注:U-增计数输入;D-减计数输入;A-A相输入;B-B相输入;R-复位输入;S-启动输入。
  5、程序例子(二相双向计数器)
   LD X10
   RST C246
   LD X11
   OUT C24
   功能:
   1)X0作为C246的增计数端,X1作为C246的减计数端。即当X0"OFF->ON",C246增一,当X1"OFF->ON",C246减一;
   2)当X11接能时,选通C246,使X0,X1的输入有效。
   3)当X10接通时输入时,C246复位。
  6、计数频率的限制
   1)各输入端的响应速度:X0、X2、X3:10KHZ;X1、X3、X5:7KHZ。
   2)全部高速计数器处理时间:计数器采用中断方式,因此,使用越少,可计数频率越高。若一些计数器用较低的频率,另一些则可用较高频率。使用的全部计数器的频率总和应低于20KHZ。
   3)对2相型计数器:若特定的时刻只使用1相信号,可按1相计算频率总和;若增减计数同时到达计数器,则按2相计算。
   4)对A-B相型计数器:在使用1个或2个这种计数器后,建议不要高于2KHZ频率,计算频率总和时,A-B相型信号的频率应乘以4。例如:C237单相3K+C246双向7K+C255AB相2K,则总和为3+7+2*4=18KHZ。
   5)可计算得:当只使用1个计数器时,频率极限为:1相型-10K;双向型-7K;A-B相型-2K。

可编程控制器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的方法。

联系方式

  • 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 邮编:201600
  • 联系电话:未提供
  • 经理:聂航
  • 手机:15221406036
  • 微信:15221406036
  • QQ:3064686604
  • Email:3064686604@qq.com