今天来探讨控制字节SMB37

200 Smart PLC 在应用高速计数器时,如果计数器是HSC0,首先是正确设置控制字节SMB37,计数器才能正确工作,因此在计数工作方式改变时,都要重新设置控制字节SMB37。

SMB37各位含义如下表:

高速计数器可以输出脉冲吗(高速计数器应用)(1)

对于工作模式0,内部方向控制是加计数或减计数是由SM37.3决定,SM37.3=1是加计数,SM37.3=0是减计数。

但我们在看高速计数案例程序时,有时设置SMB37=16#A0=2#1010 0000,它是SM37.3=0,但工作计数仍是以加计数工作。这是为什么?

实际是SMB37高4位,起主要作用,还要与SMB37初始设置有关系,如果初始设置是SM37.3=1是加计数,但再设置时SM37.4=0时,是不允许更新方向,这时即使SM37.3=0是减计数,但原方向不变,计数仍然是加计数。

下面以几种计数工作方式来探讨SMB37设置

假定高速计数器HSC0,工作模式是0,初始设置是,初始值是0,预设值是50,采用中断转换工作方式,当前值=预设值时,中断事件是12.

初始化程序如下。

高速计数器可以输出脉冲吗(高速计数器应用)(2)

工作方式一:当计数到预设值50时,中断执行以下程序,重新设置SMB37=16#80=2#1000 0000,则表示含义是:启用HSC0,当前值不更新,仍是50,预设值不更新,方向不更新,SM37.3=0也不起作用,因此计数器仍以加计数方式继续增加

高速计数器可以输出脉冲吗(高速计数器应用)(3)

工作方式二:当计数到预设值50时,重新从0开始,循环计数。中断程序如下

重新设置SMB37=16#C0=2#1100 0000,表示仅更新当前值,SMD38从50改为0,预设值不更新还是50,方向不更新还是加计数。

高速计数器可以输出脉冲吗(高速计数器应用)(4)

工作方式三:当计数到预设值50时,变成减计数到0,又重新从0到50,循环计数

重新设置SMB37=16#B0=2#1011 0000,则计数当前值不更新,还是50,更新预设值,新预设值为0,方向更新,0变为减计数,从50减到0

SMB37=16#B8=2#1011 1000,又从0增到50,方向又更新,8为加计数

50

高速计数器可以输出脉冲吗(高速计数器应用)(5)

高速计数器可以输出脉冲吗(高速计数器应用)(6)

工作方式四:当计数到预设值50时,继续加计数到70时,重新从0开始,0-50-70-0-50-70循环进行。

重新设置SMB37=16#A0=2#1010 0000,则计数当前值不更新,还是50,新预设值为70,方向不更新,从50加到70. 加计数A0也可写成A8

SMB37=16#E0=2#1110 0000,方向不变还是加计数,更新当前值,70改为0,更新目标到50,这一步,也可以重新调用初始化程序

高速计数器可以输出脉冲吗(高速计数器应用)(7)

高速计数器可以输出脉冲吗(高速计数器应用)(8)

工作方式五:当计数到预设值50时,重新从0开始,加计数到70时,再回到0,0-50-0-70-0-50-循环进行。

SMB37=16#E0=2#1110 0000,方向不变还是加计数,计数到预设值50时,更新当前值,50改为0,更新目标到70,到了70,又变0,目标又变50,第二中断,也可重新调用初始化程序。加计数E0也可写成E8

高速计数器可以输出脉冲吗(高速计数器应用)(9)

高速计数器可以输出脉冲吗(高速计数器应用)(10)

总结,计数工作方式不同时,随时设置SMB37是必须的,一定弄清需要更新或不更新,方向要搞清楚。

,