当前位置: 刻度器 >> 刻度器前景 >> 西门子PLC的计数器指令,高速计数器的用
计数器
可使用计数器指令对内部程序事件和外部过程事件进行计数。
●输入参数CU的值从0变为1时,“加计数”计数器(CTU)就会加1。
●输入参数CD的值从0变为1时,“减计数”计数器(CTD)就会减1。
●“加计数和减计数”计数器(CTUD)在加计数(CU)或减计数(CD)输入从0转换为1时加1或减1。
要注意的是每个计数器都使用数据块中存储的结构来保存计数器数据。对于SCL,必须首先为各个计数器指令创建DB方可引用相应指令。对于LAD和FBD,STEP7会在插入指令时自动创建DB。
用户程序中可以使用的计数器数仅受CPU存储器容量限制。各个计数器使用3个字节(表示SInt或USInt)、6个字节(表示Int或UInt)或12个字节(表示DInt或UDInt)。
如上时序图显示了具有无符号整数计数值的CTU计数器的运行(其中PV=3)。
●如果参数CV(当前计数值)的值大于或等于参数PV(预设计数值)的值,则计数器输出参数Q=1。
●如果复位参数R的值从0变为1,则CV复位为0。
如上时序图显示了具有无符号整数计数值的CTD计数器的运行(其中PV=3)。
●如果参数CV(当前计数值)的值等于或小于0,则计数器输出参数Q=1。
●如果参数LOAD的值从0变为1,参数PV(预设值)的值将作为新的CV装载到计
数器。
如上时序图显示了具有无符号整数计数值的CTUD计数器的运行(其中PV=4)。
●如果参数CV(当前计数值)的值等于或大于参数PV(预设值)的值,则计数器输出参数QU=1。
●如果参数CV的值小于或等于零,则计数器输出参数QD=1。
●如果参数LOAD的值从0变为1,则参数PV的值将作为新的CV装载到计数器。
●如果复位参数R的值从0变为1,则CV复位为0。
脉冲宽度调制(PWM)
CTRL_PWM指令可提供占空比可变的固定循环时间输出。PWM输出以指定频率(循环时间)启动之后将连续运行。脉冲宽度会根据需要进行变化以影响所需的控制。
CTRL_PWM指令将参数信息存储在DB中。数据块的参数由CTRL_PWM指令控制。
CPU第一次进入RUN模式时,脉冲宽度将设置为在设备配置中组态的初始值。根据需要将值写入设备配置中指定的字长度输出(Q)地址(“输出地址”/“起始地址”)以更改脉冲宽度。使用指令(例如,Move、Convert、数学运算或PID)将指定的脉冲宽度写入相应的字长度输出(Q)。必须使用输出值的有效范围(百分数、千分数、万分数或S7模拟格式)。
占空比可表示为循环时间的百分数或相对量(例如,0到,或者0到0)。脉冲宽度可从0(无脉冲,始终关闭)到满刻度(无脉冲,始终打开)变化。
PWM输出可在0到满量程之间变化,因此可提供在许多方面都与模拟量输出相同的数字量输出。例如,PWM输出可用于控制电机的速度,速度范围可以是从停止到全速;也可用于控制阀的位置,位置范围可以是从闭合到完全打开。
高速计数器(HSC)
使用高速计数器(HSC,High-SpeedCounter)对发生速率快于OB执行速率的事件进行计数。利用CTRL_HSC指令控制HSC的运行。
在CPU的设备配置中对每个HSC的参数进行组态:计数模式、I/O连接、中断分配以及是作为高速计数器还设备来测量脉冲频率。
CTRL_HSC指令通常放置在触发计数器硬件中断事件时执行的硬件中断OB中。例如,如果CV=RV事件触发计数器中断,则硬件中断OB代码块执行CTRL_HSC指令,并且可通过装载NEW_RV值更改参考值。
在CTRL_HSC参数中没有提供当前计数值。在高速计数器硬件的组态期间分配存储当前计数值的过程映像地址。可以使用程序逻辑直接读取计数值。返回程序的值将是读取计数器瞬间的正确计数。计数器仍将继续对高速事件计数。因此,程序使用旧的计数值完成处理前,实际计数值可能会更改。
可以通过用户程序来修改某些HSC参数,从而对计数过程提供程序控制:
●将计数方向设置为NEW_DIR值
●将当前计数值设置为NEW_CV值
●将参考值设置为NEW_RV值
●将周期值(限频率测量模式)设置为NEW_PERIOD值
如果执行CTRL_HSC指令后以下布尔标记值被设置为1,则相应的NEW_xxx值将装载到计数器。执行一次CTRL_HSC指令可处理多个请求(同时设置多个标记)。
●设置DIR=1会装载NEW_DIR值。
●设置CV=1会装载NEW_CV值。
●设置RV=1会装载NEW_RV值。
●设置PERIOD=1会装载NEW_PERIOD值。
HSC的运行
高速计数器(HSC)对发生速率快于OB执行速率的事件进行计数。如果待计数事件的发生速率处于OB执行速率范围内,可使用CTU、CTD或CTUD计数器指令。如果事件的发生速率快于OB的执行速率,则应使用HSC。CTRL_HSC指令允许用户程序通过程序更改一些HSC参数。
例如:可以将HSC用做增量轴编码器的输入。该轴编码器每转提供指定数量的计数值以及一个复位脉冲。来自轴编码器的时钟和复位脉冲将输入到HSC中。
用户程序将若干预设值中的第一个值装载到HSC上,并且在当前计数值小于当前预设值的时段内计数器输出一直由用户程序保持激活。当计数器值等于参考值(或CV=RV)、发生复位及发生方向变化时,用户程序会对HSC进行组态,以提供中断功能。
每个CV=RV中断事件发生时,用户程序都会装载新的参考值,并设置CV=RV中断OB内的下一输出状态。发生复位中断事件时,用户程序会装载第一个参考值,并设置复位中断OB中的第一个输出状态,然后重复该循环。
由于中断发生的频率远低于HSC的计数速率,因此能够在对CPU扫描周期影响相对较小的情况下实现对高速操作的精确控制。通过提供中断,可以在独立的中断例程中执行每次的新预设值装载操作以实现简单的状态控制。(或者,也可在单个中断例程中处理所有中断事件。)
选择HSC的功能
所有HSC在同一计数器运行模式下的工作方式都相同。HSC共有四种基本类型:
●具有内部方向控制的单相计数器
●具有外部方向控制的单相计数器
●具有2个时钟输入的双向计数器
●A/B相正交计数器
用户可选择是否激活复位输入来使用各种HSC类型。如果激活复位输入(存在一些限制,请参见下表),则它会清除当前值并在您禁用复位输入之前保持清除状态。
●频率功能:有些HSC模式允许HSC被组态(计数类型)为报告频率而非当前脉冲
计数值。有三种可用的频率测量周期:0.01、0.1或1.0秒。频率测量周期决定HSC计算并报告新频率值的频率。报告频率是通过上一测量周期内总计数值求出的平均值。如果该频率在快速变化,则报告值将是介于测量周期内出现的最高频率和最低频率之间的一个中间值。无论频率测量周期的设置是什么,总是会以赫兹为单位来报告频率(每秒脉冲个数)。
●计数器模式和输入:下表列出了用于与HSC相关的时钟、方向控制和复位功能的输入。同一输入不可用于两个不同的功能,但任何未被其HSC的当前模式使用的输入均可用于其它用途。例如,如果HSC1处于使用内置输入但未使用外部复位(I0.3)的模式下,则I0.3可以用于沿中断或HSC2。
说明
在设备配置期间分配高速计数器设备使用的数字量I/O点。将数字量I/O点的地址分配给这些设备之后,无法通过监视表格中的强制功能修改所分配的I/O点的地址值。组态CPU时,可以选择启用和组态每个HSC。CPU会根据其组态自动为每个HSC分配输入地址。(某些HSC允许选择是使用CPU的板载输入还是使用SB的输入。)
注意
如下表所示,不同HSC的可选信号的默认分配互相重叠。例如,HSC1的可选外部复位使用的输入与HSC2的其中一个输入相同。
要始终确保组态HSC时任何一个输入都不会被两个HSC使用。
例如,下表显示了CPUC的板载I/O和SB两者的HSC输入分配。(如果SB只有2个输入,则仅输入4.0和4.1可用。)
●对于单相:C为时钟输入,[d]为可选方向输入,[R]为可选外部复位输入。(复位仅适用于“计数”模式。)
●对于双相:CU为加时钟输入,CD为减时钟输入,[R]为可选外部复位输入。(复位仅适用于“计数”模式。)
●对于AB相正交:A为时钟A输入,B为时钟B输入,[R]为可选外部复位输入。(复位仅适用于“计数”模式。)
HSC1和HSC2可组态为使用板载输入或SB输入。HSC5和HSC6只能使用SB输入。HSC6只能使用4输入SB。具有2个数字量输入的SB只能提供输入4.0和4.1。访问HSC的当前值启用脉冲发生器作为PTO时,会向该PTO分配一个对应的HSC。HSC1分配给PTO1,HSC2分配给PTO2。分配的HSC完全属于PTO通道,并且禁用HSC的正常输出。HSC值仅用于内部功能。生成脉冲时,不能监视当前值(例如,在ID中)。CPU允许用户组态最多6个高速计数器。用户可编辑CPU的“属性”(Properties)来组态各个HSC的参数。在用户程序中使用CTRL_HSC指令控制HSC的运行。通过选择该HSC的“启用”(Enable)选项启用特定的HSC。
启用HSC之后组态其它参数,例如计数器功能、初始值、复位选项和中断事件。
那么在什么情况下使用CTU、CTD或CTUD计数器指令,又在什么情况下使用HSC指令呢?
CU、CD和CTUD指令使用软件计数器,软件计数器的最大计数速率会受到其所在OB的执行速率的限制。如果待计数事件的发生速率处于OB执行速率范围内,使用CTU、CTD或CTUD计数器指令。如果事件的发生速率快于OB的执行速率,则应使用HSC。
我们了解了高速计数器指令那实际编程又是什么样子的呢?我们通过下面的实例看一下吧。
1.计数器类型分为三种:Axisofmotion(运动轴),Frequency(频率测量),Counting(计数)。
2.计数器模式分为4种:Singlephase(单相),Twophase(双相),ABQuadrature1X(A/B相正交四倍数)。
3.输入源
4.技术方向选择,Userprogram(internaldirectioncontrol)(内部方向控制)
5.初始计数方向。
1.是系统指定的高速计数器硬件识别号,这里填写1.
2.“1”为使能更新初值。
3.“0”新初始值为0。
将此程序下载到CPU以后即可执行。当前值可以在ID中读出。高速计数器的指令块,若不需要修改硬件组态中的参数,可不需要调用,系统仍然可以计数。
如果感觉文章还不错欢迎点赞
转载请注明:http://www.aideyishus.com/lkcf/1586.html