[西门子] 西门子 200smart高速计数器运用

[复制链接]
查看271 | 回复0 | 2024-7-9 07:13:50 | 显示全部楼层 |阅读模式
>
01
什么是高速计数器PLC中普通计数器的最短计数周期为程序的扫描周期,随着程序量的增加,计数周期也将随之增加,这样PLC就无法检测到比程序扫描周期更短的脉冲信号,造成计数露检,运算出错。因此,PLC增加了处理高速脉冲的功能,即高速计数器功能。高速计数器能扫描比普通频率更快的脉冲信号,它的工作原理与普通计数器类似,只是计数的响应时间更短。


高速计数器与普通计数器最大的区别在于计数频率高,普通计数器是通过扫描计数输入条件是否发生变化来进行计数,其计数频率受扫描周期的影响,所以频率不会太高。而高速计数器则是通过外部高速输入I点直接采集外部高速事件到CPU中来实现计数(高速计数器采用中断方式进行计数),其计数频率不再受扫描周期限制,所以计数频率可以高达200KHZ。高速计数主要应用于计数频率较高的场合,常与编码器配合使用, 用于速度检测或位置检测。

02
高速计数器的种类和特点200smart系列PLC高速计数器最多有6个,编号从HSC0~HSC5,其中“HSC”是高速计数器的标识符。


紧凑型型号支持4个高速计数器(HSC0、HSC1、HSC2、HSC3)。
SR和ST型号支持6个高速计数器(HSC0到HSC5)。

200smart高速计数器有四种基本类型:1、带有内部方向控制的单相计数器,2、带有外部方向控制的单相计数器,3、带有两个时钟输入的双相计数器,4、A/B相正交计数器。

带内部方向控制的单向计数器
这种计数器只有一个计数输入端,其控制计数方向由内部继电器控制,工作模式为模式0、1、2。
带外部方向控制的单相计数器

这种计数器也只有一个计数输入端,由外部输入控制其计数方向的,工作模式为模式3、4、5。


两个时钟输入的双向计数器

这种计数器有两个计数输入端,一个增计数输入端,一个减计数输入端,工作模式为模式6、7、8。


A/B相正交计数器

这种计数器有两个时钟脉冲输入端,一个输入端叫A相,一个输入端叫B相。当A相时钟脉冲超前B相时钟脉冲时,计数器进行增计数。当A相时钟脉冲滞后B相时钟脉冲时,计数器进行减计数。这种计数器的工作模式为模式9、10。


高速计数器模式及对应输入点

​HSC模式6和7
​例如高速计数器HSC0,选择模式10时,A相脉冲输入端是I0.0,B相脉冲输入端是I0.1,复位是I0.4。

同一个输入不能用于不同的功能,比如I0.0,它可以是普通输入、中断输入,也可以是高速输入,这三个功能只能使用其中一个,也就是说I0.0作了高速输入用,就不能作为普通输入或中断输入用。选用某个高速计数器在某种模式下工作后,高速计数器所使用的输入不是任意选择的,必须按系统指定的输入点输入信号,不使用高速计数器时,输入信号可以作为其它功能用途,各高速计数器的输入频率必须小于某一确定值。
03
高速计数器的控制字节每一个高速计数器都有一个控制字节,这个字节的每一位反映了这个计数器的工作状态,HSC0、HSC2、HSC4和HSC5计数器有两个控制位,用于组态复位的激活和选择一倍或四倍计数模式(仅限于AB相正交计数器),这些控制位位于各自计数器的HSC控制字节内,仅当执行HDEF指令时使用这些控制位。

​默认:复位输入为高电平有效,AB相脉冲计数速率为4倍计数速率。有复位输入时,会清除当前值,直到复位信号解除前,一直保持清除状态。





一般SM37.3和SM37.6可以为1也可以为0,其他位一般默认为1,SMB这8个位有四种组合:11111000,11110000,10111000,10110000,把二进制数转换成16进制数为16#F8、16#F0、16#B8、16#B0,16#F8为更新当前值加计数,16#F0为更新当前值减计数,16#B8为不更新当前值加计数,16#B0为不更新当前值减计数。


使用程序读取高速计数器的当前值​


​高速计数器数据类型为只读双字,不可以使用高速计数器数据类型将新的当前值写入高速计数器。读取HSC0的当前计数值时要用HC0进行读取,写入操作只能用HSC指令。
​使用程序设置当前值和设定值​每个高速计数器内部保存着一个32位的当前值CV和一个32位的设定值PV。设定值是用于当前值达到设定值时用来触发中断的比较值。不可以直接读取设定值。要将新的当前值或者设定值写入高速计数器,需要对控制字节和特殊存储器双字进行设置。
​比如使用的高速计数器是HSC0,那么当前值的存储器是SMD38,设定值的存储器是SMD42。

在执行高速计数器指令之前,更改新当前值和新设定值的控制字节不会影响高速计数器。
读取高速计数器的当前状态

04
高速计数器输入降噪在200 smart CPU中,所有高速计数器默认输入滤波时间为6.4ms,最大计数频率为78赫兹,如果需要更高的技术频率,需要更改滤波器时间设置。







用于高速计数器输入信号I0.0、I0.1、I0.2、I0.3、I0.6、I0.7、I1.0和I1.1时,所使用的屏蔽电缆长度不可以超过50米。


接下拉电阻主要是为了防止脉冲丢失,如果没有脉冲丢失也可以不接。加入下拉电阻是为了使输入输出信号达到其逻辑电平有效范围。



​如果上级设备的输出是晶体管集电极开路输出(关于什么是集电极开路输出可以参考开路集电极输出、差动输出、推挽输出),晶体管关闭时,没有任何因素将信号驱动为低电平状态。 信号将转换为低电平状态,但所需时间将取决于电路的输入电阻和电容。 这种情况可能导致脉冲丢失。 可通过将下拉电阻接到输入信号的方法避免这种情况。05
高速计数器指令及编程说明​200 SMART高速计数器编程有两种方法实现:HSC指令和高速计数器向导,使用HSC指令编程时,需要知道HSC指令和高速计数器相关的系统存储器。


高速计数器在使用时,首先要对高速计数器进行初始化,在程序编写时,需要指明以下基本任务:



1、定义高速计数器和模式,对每个高速计数器执行一次HDEF指令。

2、在SM储存器中设置控制字节

3、在SM储存器中设置当前值(起始值)

4、在SM储存器中设置预设值(目标值)

5、分配启用相对应的中断程序

6、通过HSC指令激活高速计数器。


​HDEF:定义高速计数器,定义高速计数器的编号,以及这个高速计数器所使用的模式;



HSC:高速计数器指令,启动高速计数器。


通过向导编程
(1)在 Micro/WIN SMART编程软件中选择 “工具—向导—高速计数器向导” ,也可以在项目树中选择“向导”文件夹中的“高速计数器向导”按钮。



(2)选择要使用的HSC编号,这里选择HSC0。


(3)为高速计数器命名。



(4)选择高速计数器模式。

(5)配置初始化信息。
​1. 为初始化子程序命名,也可以使用默认的名称。



2.设置计数器预置值:可以为整数、双字地址或符号名:如 5000、VD200、HC0_PV。地址必须为双字地址。



3、​设置计数器初始值:可以为整数、双字地址或符号名:5000、VD200、HC0_CV。


4、设置初始化计数方向:增,减。


5、带外部复位的高速计数器,设定复位信号为高电平有效或者低电平有效。


6、使用A/B相正交计数器时,可以将计数频率设为1倍速或4倍速。使用非A/B相正交计数器时,此项为灰色。


(6)设置中断事件。


一个高速计数器最多可以有 3 个中断事件,在白色方框中填写中断服务程序名称或者使用默认名称。配置中断事件并非必须需要,根据不同的控制工艺要求选用。


方向控制输入状态改变时的中断,有以下 3 种情况会产生该中断:1、单项计数器的内部或外部方向控制位改变瞬间。2、双相计数器增、减时钟交替的瞬间。3、A/B相脉冲相对相位,超前或滞后改变时瞬间。


当前值等于预置值时产生的中断,通过向导,可以在该中断的服务程序中重新设置高速计数器的参数,如预置值、当前值。


(7)、配置 HSC 步数,最多可设置 10 步。



(8)、定义高速计数器每一步的操作参数。





9、完成向导设置。
​10、点击向导对话框左侧目录树中的选项“组件”可以查看此向导生成的子程序和中断程序名称及描述,点击“生成”按钮,完成向导。在完成指令向导后也可以根据实际需求进行修改。


11、调用子程序。

​需要在主程序块中使用 SM0.1 或边沿触发指令调用一次高速计数器初始化设定子程序。 向导生成的中断服务程序及子程序都未上锁,可以根据控制需要进行修改。
06
高速计数器的运用实例

1、高速计数器的计数值大于设定值时输出M0.0



主程序:


​子程序:
​​当接通I2.0时初始化高速计数器,HSC0和模式0对应的脉冲输入端口是I0.0,当I0.0有信号时就进行高速脉冲计数,当计数值大于等于设定值VD300时,M0.0接通。
2、用中断编程来实现电机高速脉冲计数正反转
按下启动按钮I1.3,Q1.0输出,电机正转,高速计数器计到100个脉冲后电机停止,过3秒后Q1.1输出,电机反转,计数器计到100个脉冲后电机停止,过3s后又开始电机的正转,如此循环。

主程序:

​​


高速计数器初始化子程序:



中断子程序(当前值等于预设值时中断):


在高速计数器初始化子程序中定义控制字节,将16#F8(1111 1000)传送到SMB37,定义为加计数并更新当前值,写入初始值0到HSC0的SMD38和预设值100到SMD42,通过HDEF指令定义HSC0模式为0,然后通过HSC指令激活高速计数器HSC0,建立中断程序0和中断事件12的中断连接,全局允许中断。

07
高速计数器断电保持200 SMART断电数据保持中不支持高速计数器的范围数据设置,因此高速计数器的当前值在CPU每次断电后都会复位为0。要使高速计数器的当前值在CPU断电重启后依然保持当前值,可通过编程方法来实现对当前值的读取,在断电后再上电时来读取实时当前值。操作步骤如下:


1、在系统块断电数据保持,设置VD200为断电保持区域(200 SMART V数据存储区设置为保持后为永久性保持,不需要额外增加电池来实现数据的永久保持)。


2、将组态的高速计数器编号的当前值除了在第一个扫描周期外的其它任何时间,将当前值传送保存在一个V数据存储区中(因为高速计数器本身不能断电保持,第一个扫描周期直接读取会导致保存的数据为零)。




仅在第一个扫描周期接通该子程序扫描运行一次。


3、在上电的第一个周期将寄存器VD200存储的数值传送到高速计数器的当前值SMD38(使用高速计数编号不同,当前值SMD的存储区编号也不同)。保证高速计数器以VD200为初始值开始计数,并初始化高速计数器0。



并在向导中更改当前值为双字地址VD200








免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则