1.指令格式及功能
高速计数器指令包括定义高速计数器指令和高速计数器指令,其指令格式及功能如表7-6所示。
表7-6 高速计数器指令格式及功能
2.指令说明
1)高速计数器定义指令HDEF。指令指定高速计数器(HSCx)的工作模式。工作模式的选择即选择了高速计数器的输入脉冲、计数方向、复位和启动功能。每个高速计数器只能用一条“高速计数器定义”指令。
2)高速计数器指令HSC。根据高速计数器控制位的状态和按照HDEF指令指定的工作模式,控制高速计数器。参数N指定高速计数器的号码。
3.高速计数器指令的使用
1)选择高速计数器及工作模式。
选择高速计数器及工作模式包括两方面工作:根据使用的主机型号和控制要求,一是选择高速计数器,二是选择该高速计数器的工作模式。
2)设置控制字节。
高速计数器工作模式选择好后,设置其对应的控制字节。即必须将高速计数器控制字节的位设置成程序需要的状态,否则将采取默认设置。默认设置为:复位和启动输入高电平有效,正交计数速率选择4×模式。执行HDEF指令后,就不能再改变计数器的设置,除非CPU进入停止模式。
3)设定当前值和预置值。
每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。当前值和预置值占用的特殊内部标志位存储区如表7-7所示。
表7-7 当前值和预置值占用的特殊标志位存储区
要设置高速计数器的当前值和预置值,必须设置控制字节,允许更新当前值和预置值写入特殊内部标志位存储区。然后执行HSC指令,将新数值传输到高速计数器。
4)执行HDEF指令时,CPU检查控制字节和有关的当前值和预置值。
5)设置中断事件并全局开中断。高速计数器指令利用中断方式对高速事件进行精确控制。
6)执行HSC指令时S7-200 PLC对高速计数器进行编程。
以上即为高速计数器指令的初始化,该过程可以用主程序中的程序段来实现,也可用子程序来实现。高速计数器在投入运行之前,必须执行一次初始化程序段或初始化子程序。(www.daowen.com)
将上述高速计数器指令的初始化步骤简单概括如下:
1)用SM0.1去调用一个子程序,完成初始化操作。
2)在初始化子程序中根据需要设置控制字。
3)执行HDEF指令,设置HSC的编号(0~5),设置工作模式(0~11)。如HSC的编号设置为1,工作模式输入设置为11,则为既有复位又有启动的正交计数工作模式。
4)用新的当前值写入32位当前值寄存器(SMD38,SMD48,SMD58,SMD138,SMD148,SMD158)。如写入0,则清除当前值,用指令MOVD 0,SMD48实现。
用新的预置值写入32位预置值寄存器(SMD42,SMD52,SMD62,SMD142,SMD152,SMD162)。如执行指令MOVD 1000,SMD52,则设置预置值为1000。若写入预置值为16#00,则高速计数器处于不工作状态。
5)为了捕捉当前值等于预置值的事件,将条件CV=PV中断事件与一个中断程序相联系。
6)为了捕捉计数方向改变的事件,将方向改变的中断事件与一个中断程序相联系。
7)为了捕捉外部复位的事件,将外部复位中断事件与一个中断程序相联系。
8)执行全局中断允许指令允许HSC中断。
9)执行HSC指令时S7-200 PLC对高速计数器进行编程。
10)结束子程序。
4.应用示例
【例7-3】某设备采用位置编码器作为检测元件,需要高速计数器进行位置值的计数,其要求如下:计数信号为A、B两相相位差90°的脉冲输入;使用外部计数器复位与启动信号,高电平有效;编码器每转的脉冲数为2500,在PLC内部进行4倍频,计数开始值为“0”,每转动1转后,需要清除计数值进行重新计数。
采用位置编码器作为检测元件,高速计数器进行位置值的计数过程参考程序如下。
1)主程序。如图7-3所示,用首次扫描接通一个扫描周期的特殊内部存储器SM0.1去调用一个子程序,完成初始化操作。
2)初始化的子程序。如图7-4所示,定义HSC1的工作模式为模式11(两路脉冲输入的双相正交计数,具有复位和启动输入功能),设置SMB47=16#F8(允许计数,更新当前值,更新预置值,更新计数方向为加计数,若为正交计数设为4×,复位和启动设置为高电平有效)。HSC1的当前值SMD48清零,预置SMD52,当前值=预置值,产生中断(中断事件13),中断事件13连接中断程序INT-0。中断程序如图7-5所示。
图7-3 调用一个子程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。