今天来探讨控制字节SMB37
200 Smart PLC 在应用高速计数器时,如果计数器是HSC0,首先是正确设置控制字节SMB37,计数器才能正确工作,因此在计数工作方式改变时,都要重新设置控制字节SMB37。
SMB37各位含义如下表:
对于工作模式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.
初始化程序如下。
工作方式一:当计数到预设值50时,中断执行以下程序,重新设置SMB37=16#80=2#1000 0000,则表示含义是:启用HSC0,当前值不更新,仍是50,预设值不更新,方向不更新,SM37.3=0也不起作用,因此计数器仍以加计数方式继续增加。
工作方式二:当计数到预设值50时,重新从0开始,循环计数。中断程序如下
重新设置SMB37=16#C0=2#1100 0000,表示仅更新当前值,SMD38从50改为0,预设值不更新还是50,方向不更新还是加计数。
工作方式三:当计数到预设值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
工作方式四:当计数到预设值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,这一步,也可以重新调用初始化程序。
工作方式五:当计数到预设值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
总结,计数工作方式不同时,随时设置SMB37是必须的,一定弄清需要更新或不更新,方向要搞清楚。
,