在工业应用中,电动机的调速、测速及定位是常见的控制方式。为实现电动机的精确控制,经常使用编码器将电动机的转速转换为高频脉冲信号,反馈至PLC,通过PLC对高频脉冲的计数和相关编程,实现对电动机的各种控制。PLC中普通计数器受到扫描周期的影响,对高速脉冲的计数可能会出现脉冲丢失现象,导致计数不准确,也就不能实现精确控制。
PLC提供的高速计数器独立于扫描周期之外,可以对脉宽小于扫描周期的高速脉冲准确计数,高速脉冲频率最高可达30kHz。
1.高速计数器占用输入端子
CPU 224有6个高速计数器,其占用的输入端子见表5-6。
表5-6 高速计数器占用的输入端子
各高速计数器不同的输入端有专用的功能,如:时钟脉冲端、方向控制端、复位端、启动端。
同一个输入端不能用于两种不同的功能。但是高速计数器当前模式未使用的输入端均可用于其他用途,如作为中断输入端或作为数字量输入端。例如,如果在模式2中使用高速计数器HSC0,模式2使用I0.0和I0.2,则I0.1可用于边缘中断或用于HSC3。
2.高速计数器指令
高速计数器指令有两条:高速计数器定义指令HDEF、高速计数器指令HSC。指令格式见表5-7。
表5-7 高速计数器指令格式
①高速计数器定义指令HDEF。指令指定高速计数器(HSCx)的工作模式。工作模式的选择即选择了高速计数器的输入脉冲、计数方向、复位和起动功能。每个高速计数器只能用一条“高速计数器定义”指令。
②高速计数器指令HSC。根据高速计数器控制位的状态和按照HDEF指令指定的工作模式,控制高速计数器。参数N指定高速计数器的号码。
S7-200系列PLC中规定了6个高速计数器编号,在程序中使用时用HCn来表示(在非程序中一般用HSCn)高速计数器的地址,n的取值范围为0~5。HCn还表示高速计数器的当前值,该当前值是一个只读的32位双字,可使用数据传送指令随时读出计数当前值。不同的CPU模块中,可使用的高速计数器是不同的,CPU 221、CPU 222可以使用HC0、HC3、HC4和HC5;CPU 224、CPU 226可以使用HC0~HC5。
HDEF定义高速计数器指令,“HSC”端口指定高速计数器编号,“MODE”端口指定具体的运行模式(各高速计数器最多有12种工作模式)。EN端口执行条件存在时,HDEF指令可指定具体的高速计数器编号,并将其与某一工作模式联系起来。在一个程序中,每一个高速计数器只能且必须使用一次HDEF指令。
HSC高速计数器指令,根据高速计数器特殊存储器位的设置,按照HDEF指令指定的工作模式,控制高速计数器的工作。
3.高速计数器的工作模式
高速计数器有12种工作模式,模式0~2采用单路脉冲输入的内部方向控制加/减计数;模式3~5采用单路脉冲输入的外部方向控制加/减计数;模式6~8采用两路脉冲输入的加/减计数;模式9~11采用两路脉冲输入的双相正交计数。
S7-200 CPU 224有HSC0~HSC5六个高速计数器,每个高速计数器有多种不同的工作模式。HSC0和HSC4有模式0、1、3、4、6、7、8、9、10;HSC1和HSC2有模式0~11;HSC3和HSC5只有模式0。每种高速计数器所拥有的工作模式和其占有的输入端子的数目有关。如表5-8所示。
表5-8 高速计数器的工作模式和输入端子的关系及说明
说明:表中“×”表示没有。
选用某个高速计数器在某种工作方式下工作后,高速计数器所使用的输入不是任意选择的,必须按系统指定的输入点输入信号。如HSC1在模式11下工作,就必须用I0.6为A相脉冲输入端,I0.7为B相脉冲输入端,I1.0为复位端,I1.1为启动端。
4.高速计数器的控制字和状态字
(1)控制字节
定义了计数器和工作模式之后,还要设置高速计数器的有关控制字节。每个高速计数器均有一个控制字节,它决定了计数器的计数允许或禁用,方向控制(仅限模式0、1和2)或对所有其他模式的初始化计数方向,装入当前值和预置值。控制字节每个控制位的说明见表5-9。
表5-9 HSC的控制字节
(2)状态字节
每个高速计数器都有一个状态字节,状态位表示当前计数方向以及当前值是否大于或等于预置值。每个高速计数器状态字节的状态位见表5-10。状态字节的0~4位不用。监控高速计数器状态的目的是使外部事件产生中断,以完成重要的操作。
表5-10 高速计数器状态字节的状态位
5.高速计数器指令的使用(www.xing528.com)
1)每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。要设置高速计数器的新当前值和新预置值,必须设置控制字节,令其第5位和第6位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。当前值和预置值占用的特殊内部标志位存储区见表5-11。
表5-11 HSC0-HSC5当前值和预置值占用的特殊内部标志位存储区
除控制字节以及新预设值和当前值保持字节外,还可以使用数据类型HC(高速计数器当前值)加计数器号码(0、1、2、3、4或5)读取每台高速计数器的当前值。因此,读取操作可直接读取当前值,但只有用上述HSC指令才能执行写入操作。
2)执行HDEF指令之前,必须将高速计数器控制字节的位设置成需要的状态,否则将采用默认设置。默认设置为:复位和启动输入高电平有效,正交计数速率选择4×模式。执行HDEF指令后,不能再改变计数器的设置,除非CPU进入停止模式。
3)执行HSC指令时,CPU检查控制字节和有关的当前值和预置值。
6.高速计数器设置过程
为更好地理解和使用高速计数器,下面给出高速计数器的一般设置过程:
1)使用初始化脉冲触点SM0.1调用高速计数器初始化操作子程序。这个结构可以使系统在后续的扫描过程中不再调用这个子程序,从而减少了扫描时间,且程序更加结构化。
2)在初始化子程序中,对相应高速计数器的控制字节写入希望的控制字(SMB37、SMB47、SMB137、SMB147、SMB157)。如要使用HSC1,则对SMB47写入16#F8(2#11111000),表示允许高速计数器运行,允许写入新的当前值,允许写入新的预置值,可以改变计数器方向,置计数器的计数方向为增,置启动和复位输入为高电平有效。
3)执行HDEF指令,设置HSC的编号(0~5),设置工作模式(0~11)。如HSC的编号设置为1,工作模式输入设置为11,则为既有复位又有启动的正交计数工作模式。
4)用新的当前值写入32位当前值寄存器(SMD38,SMD48,SMD58,SMD138,SMD148,SMD158)。如写入0,则清除当前值,用指令MOVD 0,SMD48实现。
5)用新的预置值写入32位预置值寄存器(SMD42,SMD52,SMD62,SMD142,SMD152,SMD162)。如执行指令MOVD 1000,SMD52,则设置预置值为1000。若写入预置值为16#00,则高速计数器处于不工作状态。
6)为了捕捉当前值等于预置值的事件,将条件CV=PV中断事件(事件13)与一个中断程序相联系。
7)为了捕捉计数方向的改变,将方向改变的中断事件(事件14)与一个中断程序相联系。
8)为了捕捉外部复位,将外部复位中断事件(事件15)与一个中断程序相联系。
9)执行全局中断允许指令(ENI)允许HSC中断。
10)执行HSC指令使S7-200对高速计数器进行编程。
7.高速计数器应用举例
图5-3中为使用高速计数器指令、变频器及光电码盘实现三相异步电动机的启动及二级减速自动定位控制系统。由于高速运行的交流电动机转动惯量较大,所以在高速下定位精度很低,必须采用减速的方式减小转动惯量,最后在低速运行时实现准确定位。在本例的控制中,电动机每次启动后运行距离均相等,所以使用光电码盘反馈方式进行二级减速及定位控制。控制梯形图如图5-4所示。I/O分配见表5-12。
表5-12 三相异步电动机定位控制系统I/O分配表
图5-3 三相异步电动机定位控制系统接线图
编写梯形图的基本过程:
1)使用SM0.1调用了一个初始化子程序INIT,在该子程序中,定义了高速计数器HSC0的模式为0,并且装入了预置值52000,启动了HSC0当前值等于预置值中断EQUAL1。
2)启动电动机时,直接使其进入高速运行状态,同时启动高速计数。
3)在中断程序EQUAL1中,使电动机运行在中速状态(Q1.3复位,Q1.4置位),并修改预置值为62000,同时使HSC0当前值等于预置值中断指向中断程序EQUAL2。读者可根据EQUAL1写出中断程序EQUAL2和EQUAL3。
4)在中断程序EQUAL2中,使电动机运行在低速状态(Q1.4复位,Q1.5置位),并修改预置值为70000,同时使HSC0当前值等于预置值,中断指向中断程序EQUAL3。
5)在中断程序EQUAL3中,停止电动机,并使低速运行控制位Q1.5复位。
图5-4 梯形图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。