如何在高速计数器断电或停机后实现数据保持?
1.在S7-1200项目中,建立一个DB块,后面保持性打勾
2.建立一个“循环中断”,在程序中将高速计数器的值送到DB中保存。
http://m.gkong.com/bbs/400944.ashx (循环中断的建立)
3.创建启动块OB,将保存的数据传送到NEW_CV,同时置位CV,这样在CPU启动时,保存的值被设置成当前值。
http://m.gkong.com/bbs/401491.ashx (启动OB的建立)
4. 在 OB1 中编程 CTRL_HSC ,再将保存的值设为当前值后,复位 CV 位。
常见问题:
1.高速计数器的计数范围是什么?
答:高速计数器的计数范围是 -2^31—— 2^31。 当向上计数到最大值时,会跳回到最小值 ;当向下计数到最小值时,会跳回最大值 。
2.断电停机或复位后,高速计数器的值会复位到什么值?
答: CPU 断电或重启后,高速计数器的值会复位到初始 值;如果执行了外部复位, 高速计数器的值会复位为0。
3.不编写 CTRL_HSC , 高速计数器是否可以计数?
答: 只要在硬件配置里使能并组态了高速计数器,不编写 CTRL_HSC , 高速计数器就可以正常计数。CTRL_HSC 只是完成参数写入的功能。
4. 为什么高速计数器的数值不增加,总是停在一个固定的值?
答: 如果编程了 CTRL_HSC ,当置位 CV 将 NEW_CV 写入当前值后, CV位不会自动复位为0,这时程序会一直将 NEW_CV写入当前值,导致高速计数器不继续计数而保持在固定的 NEW_CV 值。因此必须编程复位 CV,才能避免该错误的发生。