红眼病图片

首页 » 常识 » 常识 » 三菱FXPLC学习之高速计数器指令下
TUhjnbcbe - 2024/12/31 20:21:00
白癜风能吃什么药 https://m.39.net/pf/a_4780765.html

上篇文章分享的是高速计数器,我们从中知道了高速计数器的真面目,所以这次接着分享学习如何掌控它们,以高速计数器指令的形式。

高速计数器指令(HS或DHS)有3个,以HS开头,分别为比较置位指令(HSCS)、比较复位指令(HSCR)和区间比较指令(HSZ)。上篇文章中提到,高速计数器是32位软元件,所以,其相关指令显然也是32位的。即以上3个指令在应用时应该用DHSCS、DHSCR、DHSZ。

以上,废话不多说,我们开始3个指令的学习吧!

1、比较置位指令HSCS

比较置位指令的编程手册截图如下图17-1所示,从截图可以看到,HSCS指令不适用于16位,仅用于32位,且只有连续执行型。

图17-1

DHSCS指令有3个孩子,啊呸,有3个操作数,即源址S1、S2和终址D,它们的适用软元件如截图所示,其中S2为高速计数器编号,终址D可以为高速计数器中断指针I~I。显然,高速计数器是一种中断源,可以用于中断服务。

这在我之前分享的有关中断服务的文章中也简单提到过,大家可以回顾一下。

图17-2

DHSCS的梯形图形式如图17-2所示,S1为设置值或设定值的存储地址,用于与高速计数器的计数值进行比较,S2为对应高速计数器编号,D为被置位的位元件地址或高速计数器中断指针编号。

当驱动条件成立时,将高速计数器的当前值与设定值进行比较,若计数器当前值等于设定值,立即以中断处理方式将D置为ON或立即转移到指定的中断服务子程序执行中断服务。

这里就顺便再说一下高速计数器中断吧,正如图17-2所示,当高速计数器的当前值等于K时,执行中断指针I10所指的中断服务程序。

显然,高速计数器中断必须与DHSCS指令一起使用,且指针号不可重复。另外,正如我在中断服务文章中所言,不同指针都有对应禁止中断继电器,高速计数器中断指针I~I的禁止中断继电器为M,所以若M=ON,计数器中断将全部被禁止。

上篇文章提及,高速计数器的计数与扫描周期无关,相应的,其3个指令(DHS)的执行方式亦为中断处理方式。为了便于理解,我们以之与内部计数器相比较,如图17-3所示的两段程序为例,它们的执行功能都是将Y0输出ON。

图17-3

于内部计数器C0而言,其计数值为X10的通断次数,且每通断1次就要历经1个程序扫描周期,当C0计数值达到设定值且其程序扫描一次结束后,Y0才输出ON。

高速计数器C所计数的是输入端口X0处的脉冲信号数,而不是X10的通断次数,所以,它的计数与扫描时间无关,一旦C的计数值等于设定值,程序扫描中断,立即将Y0输出ON,不受扫描时间影响。

另外,若X0没有脉冲输入或高速计数器未被启动,即使用DMOV指令等改变高速计数器的当前值,显然DHSCS指令也不会执行。

2、比较复位指令HSCR

比较复位指令的编程手册截图如下图17-4所示,从截图可以看到,HSCS指令也是仅用于32位,且只有连续执行型。

图17-4

其梯形图形式与DHSCS指令类似,S1为设置值或设定值的存储地址,用于与高速计数器的计数值进行比较,S2为对应高速计数器编号,D为被复位的位元件地址或与S2一样的高速计数器编号。当驱动条件成立时,将高速计数器的当前值与设定值进行比较,若计数器当前值等于设定值,立即以中断处理方式将D复位。

上文提及,高速计数器指令都是中断处理形式,毫无疑问,DHSCR也是如此,不再赘述。DHSCR有一个特点就是它可以对高速计数器自身复位,而编程手册中也是相关示例,其截图如下图17-5所示。

图17-5

当高速计数器C当前值为K时,其常开触点闭合并保持接通状态,当C当前值为K时,DHSCR指令执行,将高速计数器C自身复位,其相应触点也复位。

同一程序中,高速计数器指令DHS可以多次使用,但其数量是有限制的,在FX2N中,最多只能用6个。在使用多个高速计数器指令时,终址为输出Y时要注意其编号,因为编号对其驱动方式有很大影响。

如图17-6所示,例如使用2个DHSCR指令,当所驱动的输出继电器Y为同一组的Y0、Y1(Y0~Y7、Y10~Y17等)时,Y0、Y1均按中断处理方式立即复位,若Y为不同组的Y10、Y20,此时Y10以中断处理方式复位,而Y20则在程序扫描结束后才被复位。

图17-6

另外,上文提到,若没有脉冲信号输入,即使用DMOV指令等改变高速计数器当前值,高速计数器指令也不会执行。

但有一种特殊的情况,如下图17-7的梯形图所示,在特殊继电器M为ON的状态下,若外部复位端子X1有信号,C复位,当前值清零,此时即使没有脉冲信号输入,DHSCS、DHSCR指令也会执行,Y0=ON,Y1=OFF。

图17-7

3、区间比较指令HSZ

说到这个区间比较指令,不知各位是否还记得大明湖畔的夏雨荷……咳咳,是否还记得当年我所分享的ZCP指令?

类似ZCP指令,高速计数器区间比较指令DHSZ就是将计数器当前值与两个数进行比较,其编程手册截图如图17-8所示。

其操作数有4个,S1、S2分别为设定值的下限值和上限值或其数据存储地址,(S1)≤(S2);S为对应高速计数器编号;D为驱动位元件首址,占3个点D、D+1、D+2。

图17-8

当驱动条件成立时,将S的当前值与S1和S2进行比较,根据比较结果所属区间,驱动D、D+1、D+2中的某一个为ON。

如图17-9所示,当高速计数器C的当前值小于S1,D=ON;当高速计数器C的当前值大于S1且小于S2,D+1=ON;当高速计数器C的当前值大于S2,D+2=ON。

图17-9

可以发现,DHSZ指令和ZCP指令很相似,但其实两者有很大的区别,DHSZ指令是以中断处理方式执行的,而ZCP指令是以扫描方式执行的,而且若高速计数器对应输入端口没有脉冲信号输入,即使用DMOV指令给高速计数器赋值,DHSZ指令也不会执行。

如下图17-10所示,为用ZCP指令初始驱动的DHSZ指令应用程序段,目的是Y0可以动作初始化,即高速计数器当前值为0,Y0也能有输出(Y0=ON)。

图17-10

若没有DZCPP指令,在触点X10接通时,若X0没有脉冲输入,即使此时C当前值为0,DHSZ指令也不会不执行,Y0=OFF。

加上DZCPP指令后,在X10接通的上升沿,DZCPP指令执行,即使当前X0没有脉冲输入,C没有开始计数,但因为C当前值为0,小于K,Y0=ON。直到X0有脉冲信号输入,C开始计数,DHSZ指令开始执行区间比较功能。

其动作波形图如下图17-11所示。

图17-11

根据波形图17-11,X10接通,DZCPP指令执行,C当前值为0,小于K,Y0=ON,直到X0有脉冲信号输入,C开始计数,DHSZ指令执行,Y0保持接通;

当C的当前值为K时,Y1接通,此时Y0=OFF;当C的当前值为K时,Y2接通,此时Y0、Y1均为OFF。

除此之外,高速计数器的区间比较指令DHSZ还有表格高速比较模式和频率控制模式,在此就不再展开讲解,大家感兴趣的,可以自行查阅资料或观看相关视频。

那么,这次的学习分享就到这里吧,这次的文章,写得我太难受了╥﹏╥,需要大家的点赞才能好的那种。

注:本文章内容都是基于三菱FXPLC2N所写选自《三菱FX系列PLC功能指令详解》第八章第79~83课时(技成培训原创,作者:杨思慧,未经授权不得转载,违者必究!)

1
查看完整版本: 三菱FXPLC学习之高速计数器指令下