如何复位高速计数器

复位高速计数器有以下两种方式:

外部复位需要有带外部复位模式的高速计数器 通过I点实现 暂不做解释 下面介绍内部复位功能

组态一个高速计数器 例中用HSC0 模式0

1.首先在子程序 HSC_INIT 里编写高速计数器初始化程序

a. 因在子程序内 用SM0.0调用。保证调用该子程序时,该网络有效

b. SMB37 定义控制字节

例中SM37=16#F8=2#11111000 即允许更新当前值,预设值以及计数方向 ,这样 SMD38/42的设置才会有效

c. 装载当前值即初始值

d. 装载预设值

e. 高速计数器号

f. 高速计数器模式

g. 关联中断 如果高速计数器不需要中断 ATCH与ENI 可以省去

h. 中断事件号 HC0输入方向改变

i. 允许中断

j. 启用高速计数器 HSC0

 

2.其次在主程序用SM0.1或者一条边沿触发指令调用一次此子程序

3.编写复位子程序 RESET_HSC

4.用边沿触发指令调用 RESET_HSC

至此 只要M0.0上升沿触发 HSC0的当前计数值会复位为SMD38的数值 即HC0=SMD38=0 ;如果想要更改当前值为其他数值 同样程序 修改SMD38即可

 

怎样使用高速计数器中断

S7-200的高速计数器中断每个计数器共三种:

当然 输入方向改变与外部复位中断需要与实际的计数器模式有关 例如 模式0 仅仅是脉冲计数 不能有后两种中断

上例中使用的的CV=PV中断 ,当中断事件到以后会去执行g.关联的INT1 实际上例能实现计数值从0~100然后变为50~200又变为0~100依次循环模式 具体可以参考下面的例子程序

高速计数器例程

为了更好地理解 高速计数器的编程,可参考下面的例程

HSC0 MODE0

注意:此指令程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为 此联系西门子技术支持与服务部门