普通计数器的计数速度与PLC的扫描周期有关,扫描周期越长,计数速度越慢,即计数频率越低,一般仅为几十赫兹,因而普通计数器适用于计数速度要求不高的场合。
为了满足高速计数要求,S7-200 SMART PLC专门设计了高速计数器,其计数速度很快,C型CPU(CR40、CR60)的计数频率最高为100kHz,S型CPU(SR20、ST20……SR60、ST60)最高计数频率达200kHz,均不受PLC扫描周期的影响。
S7-200 SMART PLC支持HSC0~HSC3四个高速计数器,高速计数器有0、1、3、4、6、7、9、10共八种计数模式,HSC0 和 HSC2 支持八种计数模式(模式 0、1、3、4、6、7、9和10),HSC1 和 HSC3 只支持一种计数模式(模式 0)。
一、高速计数器指令说明
高速计数器指令包括高速计数器定义指令(HDEF)和高速计数器指令(HSC)。
高速计数器指令说明如表6-61所示。
表6-61 高速计数器指令说明
二、高速计数器的计数模式
S7-200 SMART PLC高速计数器有八种计数模式:模式0和1(内部控制方向的单相加/减计数),模式1具有外部复位功能;模式3和4(外部控制方向的单相加/减计数),模式4具有外部复位功能;模式6和7(双相脉冲输入的加/减计数),模式7具有外部复位功能;模式9和10(双相脉冲输入的正交加/减计数),模式10具有外部复位功能。
1.模式0和1(内部控制方向的单相加/减计数)在模式0和1时,只有一路脉冲输入,计数器的计数方向(即加计数或减计数)由PLC特定SM存储器某位值来决定,该位值为1时为加计数,该位值为0时为减计数。模式0和1说明如图6-47所示,以高速计数器HSC0为例,它采用I0.0端子为计数脉冲输入端,SM37.3的位值决定计数方向,SMD42用于写入计数预设值。当高速计数器的计数值达到预设值时会产生中断请求,触发中断程序的执行。
模式0和1的区别在于模式1具有外部复位功能,可以通过PLC特定的输入端子输入复位信号将计数器复位,模式0无此功能。模式0和1最大允许输入脉冲频率为200kHz(S 型CPU)和100kHz(C型CPU)。
图6-47 模式0和1(内部控制方向的单相加/减计数)说明
2.模式3和4(外部控制方向的单相加/减计数)
在模式3和4时,只有一路脉冲输入,计数器的计数方向由PLC特定输入端子的输入值来决定,该输入值为1时为加计数,该输入值为0时为减计数。模式3和4说明如图6-48所示,以高速计数器HSC4为例,它采用I0.3端子作为计数脉冲输入端,I0.4端子输入值决定计数方向,SMD152用于写入计数预设值。
模式3和4的区别在于模式4具有外部复位功能,可以通过PLC特定的输入端子输入复位信号将计数器复位,模式3无此功能。模式3和4最大允许输入脉冲频率为200kHz(S 型CPU)和100kHz(C 型CPU)。
图6-48 模式3和4(外部控制方向的单相加/减计数)说明
3.模式6和7(双相脉冲输入的加/减计数)
在模式6和7时,有两路脉冲输入端,一路为加计数输入端,另一路为减计数输入端。模式6和7说明如图6-49所示,以高速计数器HSC0为例,当其工作模式为6时,它采用I0.0端子作为加计数脉冲输入端,I0.1为减计数脉冲输入端,SMD42用于写入计数预设值。
图6-49 模式6和7(双相脉冲输入的加/减计数)说明
模式6和7的区别在于模式7具有外部复位功能,可以通过PLC特定的输入端子输入复位信号将计数器复位,模式6无此功能。模式6和7最大允许输入脉冲频率为100 kHz(S 型CPU)和50 kHz(C 型CPU)。
4.模式9和10(双相脉冲输入的正交加/减计数)
在模式9和10时,有两路脉冲输入端,一路为A脉冲输入端,另一路为B脉冲输入端,A、B脉冲相位相差90°(即正交,A、B两脉冲相差1/4周期)。若A脉冲超前B脉冲90°,则为加计数;若A脉冲滞后B脉冲90°,则为减计数。在这种计数模式下,可选择1×方式或4×方式,1×模式又称单倍频方式,当输入一个脉冲时计数器值增1或减1;4×模式又称四倍频方式,当输入一个脉冲时计数器值增4或减4。模式9和10的1×方式和4×方式说明如图6-50所示。
模式9和10的区别在于模式10具有外部复位功能,可以通过PLC特定的输入端子输入复位信号将计数器复位,模式9无此功能。在模式9和10时, S型 CPU的最大允许输入脉冲频率为100kHz(1×方式时)和400kHz(4×方式时),C型 CPU的最大允许输入脉冲频率为50kHz(1×方式时)和400kHz(4×方式时)。
图6-50 模式9和10(双相脉冲输入的正交加/减计数)说明
三、高速计数器分配的输入端子及在各工作模式下的功能
高速计数器工作时需要使用一些输入端子,HSC0~HSC3高速计数器分配的输入端子及在不同工作模式下端子的功能见表6-62。同一个输入端子不能用于两种不同的功能,但是任何一个没有被高速计数器当前模式使用的输入端子,均可以用作其他用途。例如,HSC0计数器工作在模式1时,会分配占用I0.0端子用于脉冲输入,I0.4端子用于复位信号输入,I0.1端子在模式1时未使用,可以用作HSC1计数器工作在模式0时的脉冲输入端子。
表6-62 HSC0~HSC3高速计数器分配的输入端子及在不同工作模式下端子的功能
四、高速计数器输入端子滤波时间的设置
由于PLC使用时大多数情况下输入信号频率较低,为了抑制高频信号的干扰,输入端子的默认滤波时间为6.4ms,该滤波时间较长,最高只允许78Hz信号输入。如果要将某些端子用于高速计数器输入,需要将这些端子的滤波时间设短。表6-63列出了PLC输入端子滤波时间与对应的最大检测频率。
表6-63 PLC输入端子滤波时间与对应的最大检测频率
注:1.S型号CPU包括SR20、ST20、SR30、ST30、SR40、ST40、SR60、ST60。
2.C型号CPU包括CR40、CR60。
在STEP 7-Micro/WIN SMART软件中可以设置(组态)PLC输入端子的滤波时间,设置操作如图6-51所示。在项目指令树区域双击“系统块”,弹出“系统块”对话框;在对话框上方选中CPU模块,在左边选择数字量输入项内的I0.0~I0.7,然后在右边对高速计数器使用的端子进行滤波时间设置;先勾选端子旁“脉冲捕捉”选项,再根据计数可能的最大频率来选择合适的滤波时间,不用作高速计数器的输入端子滤波时间保持默认值;单击“确定”按钮关闭“系统块”对话框,将系统块下载到CPU模块即可使滤波时间设置生效。
图6-51 在编程软件的系统块内设置输入端子的滤波时间
五、高速计数器的控制字节
高速计数器定义HDEF指令只能让某编号的高速计数器工作在某种模式,无法设置计数器的方向、复位等内容。为此,每个高速计数器都配备了一个专用的控制字节来对计数器进行各种控制设置。
1.控制字节功能说明
高速计数器HSC0~HSC3的控制字节各位功能说明见表6-64。例如,高速计数器HSC0的控制字节为SMB37,其中SM37.0位用来设置复位有效电平,当该位为0时高电平复位有效,该位为1时低电平复位有效。
表6-64 高速计数器HSC0~HSC3的控制字节各位功能说明
2.控制字节设置举例
用控制字节设置高速计数器如图6-52所示。PLC第一次扫描时SM0.1触点接通一个扫描周期,首先MOV_B指令执行,将十六进制数F8(即11111000)送入SMB37单元,则SM37.7~SM37.0为11111000,这样就将高速计数器HSC0的复位设为高电平,正交计数设为4×模式;然后HDEF指令执行,将HSC0工作模式设为模式10。
图6-52 用控制字节设置高速计数器
六、高速计数器计数值的读取与设置
1.计数值的读取
高速计数器的当前计数值保存在HC存储单元中,高速计数器HSC0~HSC3的当前值分别保存在HC0~HC3单元中,这些单元中的数据为只读类型,即不能向这些单元写入数据。
图6-53 高速计数器计数值的读取
高速计数器计数值的读取如图6-53所示。当I0.0触点由断开转为闭合时,上升沿P触点接通一个扫描周期,MOV_DW指令执行,将高速计数器HSC0的当前计数值(保存在HC0单元)读入并保存在VD200单元。
2.计数值的设置
每个高速计数器都用两个专用存储单元分别存放当前计数值(CV)和预设计数值(PV),这两个值都是32位(双字)。在高速计数器工作时,当CV=PV时会触发HSC中断。当前计数值可从HC单元中读取,预设值则无法直接读取。要将新的CV值或PV值载入高速计数器,必须先设置相应的控制字节和专用双字存储单元,再执行HSC指令以将新值传送到高速计数器。
HSC0~HSC3高速计数器存放CV值和PV值的专用存储单元见表6-65。例如,高速计数器HSC0采用SMD38双字单元存放新CV值,采用SMD42双字单元存放新PV值。
表6-65 HSC0~HSC3高速计数器存放CV值和PV值的专用存储单元
高速计数器计数值的设置如图6-54所示。当I0.2触点由断开转为闭合时,上升沿P触点接通一个扫描周期,首先第1个MOV_DW指令执行,将新CV值(当前计数值)“100”送入SMD38单元;然后第2个MOV_DW指令执行,将新PV值(预设计数值)“200”送入SMD42单元;接着高速计数器HSC0的控制字节中的SM37.5、SM37.6两位均得电为1,允许HSC0更新CV值和PV值;最后HSC指令执行,将新CV值和PV值载入高速计数器HSC0。
图6-54 高速计数器计数值的设置
在执行HSC指令前,设置控制字节和修改SMD单元中的新CV值、PV值不会影响高速计数器的运行;只有执行HSC指令后,高速计数器才按新设置值开始工作。
七、高速计数器的状态字节
每个高速计数器都有一个控制字节和一个状态字节,控制字节用来设置控制计数器的工作,状态字节则用来反映计数器的一些工作状态。HSC0~HSC3高速计数器的状态字节见表6-66,其中每个状态字字节的0~4位不用。监视高速计数器状态字节的状态位值,除了可以了解计数器当前的工作状态外,还可以用状态位值来触发其他操作。例如,当SM36.6=1时,表示HSC0的当前计数值正好等于预设值,可以用SM36.6=1触发执行一段程序。
表6-66 HSC0~HSC3高速计数器的状态字节
八、高速计数器的编程步骤与举例
1.高速计数器的编程步骤
高速计数器的编程较为复杂,一般步骤如下。根据计数要求设置高速计数器的控制字节。例如,让HSC1的控制字节SMB47=16#F8,则将HSC1设为允许计数、允许写入计数初始值、允许写入计数预设值、更新计数方向为加计数、正交计数为4×模式、高电平复位。执行HDEF指令,将某编号的高速计数器设为某种工作模式。将计数初始值写入当前值存储器。当前值存储器是指SMD38、SMD48、SMD58和SMD138。将计数预设值写入预设值存储器。预设值存储器是指SMD42、SMD52、SMD62和SMD142。如果往预设值存储器写入16#00,则高速计数器不工作。为了捕捉当前值(CV)等于预设值(PV),可用中断连接ATCH指令将条件CV=PV中断事件(HSC0的CV=PV对应中断事件12)与某中断程序连接起来。为了捕捉计数方向改变,可用中断连接ATCH指令将方向改变中断事件(HSC0的方向改变对应中断事件27)与某中断程序连接起来。为了捕捉计数器外部复位,可用中断连接ATCH指令将外部复位中断事件(HSC0的外部复位对应中断事件28)与某中断程序连接起来。执行中断允许ENI指令,允许系统接受高速计数器(HSC)产生的中断请求。执行HSC指令,启动某高速计数器按前面的设置工作。编写相关的中断程序。
2.高速计数器的编程举例
高速计数器的编程举例见表6-67,整个程序由MAIN(主程序)、SBR_0(子程序0)和INT_0(中断程序0)组成。
PLC进入RUN模式第一次扫描时,主程序中的SM0.1触点接通一个扫描周期,执行调用子程序SBR_0指令,程序转入执行SBR_0子程序。在子程序SBR_0中,对高速计数器HSC0进行初始化设置,设置内容有:用MOV_B指令设置HSC0的控制字节SMB37;用HDEF指令让HSC0工作在模式10;用MOV_DW指令将HSC0当前值(CV)存储器SMD38清0;用MOV_DW指令往HSC0的计数预设值(PV)存储器SMD42中写入PV值;用ATCH指令将中断事件12(HSC0的CV=PV时触发的事件)与中断程序INT_0关联起来;用ENI指令打开所有的中断;用HSC指令使设置生效并启动HSC0工作。
表6-67 高速计数器的编程举例
高速计数器HSC0启动后开始计数,当HSC0的当前计数值(CV)等于计数预设值(PV)时,触发中断事件12,由于已将中断事件12与中断程序INT_0关联起来,故马上执行中断程序INT_0。在INT_0程序中,先用MOV_DW指令将HSC0当前值(CV)存储器SMD38清0,再用MOV_B指令重新设置HSC0的控制字节SMB37,然后用HSC指令使新设置生效并启动HSC0重新工作。
高速计数器HSC0每计数到CV=PV时都会产生中断,执行一次中断程序INT_0;执行中断程序后,HSC0又按新的设置重新开始计数,以后不断重复这个过程。
审核编辑:汤梓红
-
plc
+关注
关注
5010文章
13277浏览量
463117 -
SMART
+关注
关注
3文章
224浏览量
44681 -
指令
+关注
关注
1文章
607浏览量
35696 -
计数器
+关注
关注
32文章
2256浏览量
94485 -
S7-200
+关注
关注
13文章
408浏览量
50387
原文标题:一篇文章搞懂:S7-200 SMART PLC高速计数器指令!
文章出处:【微信号:中泰PLC自动化教学,微信公众号:中泰PLC自动化教学】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论