登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:S7-1200学习之路——高速计数器

点击:27560 回复:20

1.S7-1200 V4.0 CPU 提供了最多 6 个高速计数器,其独立于 CPU 的扫描周期进行计数。1217C 可测量的脉冲频率最高为 1 MHz。
附件 1.jpg
2.S7-1200 V4.0 CPU 与早期版本的 S7-1200 高速计数器比较
附件 2.jpg
3. S7-1200 在高速计数器中提供了中断功能,用以处理某些特定条件下触发的程序
共有 3 种中断事件:
1).当前值等于预置值
2).使用外部信号复位
3).带有外部方向控制时,计数方向发生改变
4. 高速计数器指令块,需要使用指定背景数据块用于存储参数。
附件 3.jpg
附件 4.jpg
附件 5.jpg
15-03-18 11:32
应用实例:
假设在旋转机械上有单相增量编码器作为反馈,接入到S7-1200 CPU,要求在计数25个脉冲时,计数器复位,置位 M10.5,并设定新预置值为50个脉冲,当计满50个脉冲后复位M10.5,并将预置值再设为25,周而复始执行此功能。
针对此应用,选择CPU 1214C,高速计数器为:HSC1。模式为:单相计数,内部方向控制,无外部复位。据此,脉冲输入应接入I0.0,使用HSC1的预置值中断(CV=RV)功能实现此应用。
先在设备与组态中,选择CPU,单击属性,激活高速计数器,并设置相关参数。此步骤必须事先执行,1200的高速计数器功能必须要先在硬件组态中激活,才能进行下面的步骤。添加硬件中断块,关联相对应的高速计数器所产生的预置值中断,在中断块中添加高速计数器指令块,编写修改预置值程序,设置复位计数器等参数。将程序下载,执行功能。
1.添加硬件中断
附件 1.jpg
2.组态
附件 2.jpg
选中CPU,可右键打开属性,也可以在“编辑”中选择属性打开。
启用高速计数器HSC1
附件 3.jpg
功能设置
附件 4.jpg
预置值与复位
附件 5.jpg
事件组态
附件 6.jpg
硬件输入与地址
附件 7.jpg
附件 8.jpg
3.编程
打开硬件中断
附件 9.jpg
附件 10.jpg
HSC是高速计数器硬件识别号,这里填1
CV为使能更新初值
RV为使能更新预置值
NEW_CV新的初始值
NEW_RV 新的预置值
将完成的组态与程序下载到CPU后即可执行,当前的计数值可在ID1000中读出 ,关于高速计数器指令块,若不需要修改硬件组态中的参数,可不需要调用,系统仍然可以计数。
最后修改:2015/3/18 11:39:24
15-03-18 11:33
附件 1.jpg
附件 2.jpg
附件:
[本地下载]
附件:
[本地下载]
附件:
[本地下载]
本分卷由2345好压(Haozip)生成,请使用2345好压来解压。
2345好压下载地址:http://haozip.2345.com/
分卷文件共有以下3个:
高速计数器1.haozip01.zip
高速计数器1.haozip02.zip
高速计数器1.haozip03.zip
15-03-18 11:44
如何在高速计数器断电或停机后实现数据保持?
1.在S7-1200项目中,建立一个DB块,后面保持性打勾
附件 1.jpg
2.建立一个“循环中断”,在程序中将高速计数器的值送到DB中保存。
附件 2.jpg
http://m.gkong.com/bbs/400944.ashx (循环中断的建立)
3.创建启动块OB,将保存的数据传送到NEW_CV,同时置位CV,这样在CPU启动时,保存的值被设置成当前值。
http://m.gkong.com/bbs/401491.ashx  (启动OB的建立)
附件 3.jpg
4. 在 OB1 中编程 CTRL_HSC ,再将保存的值设为当前值后,复位 CV 位。
附件 4.jpg
常见问题:
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,才能避免该错误的发生。
15-03-18 16:42
另外在高速计数中,还有我们经常用到的另一个功能:就是高频测速
用过1200的都知道在激活 HSC的选择中  除了计数  还有:频率
附件 1.jpg
下面选择测量周期
附件 2.jpg
这个可以选择1s 0.1s 0.01s
但是最后地址得到的数据都是“每秒的脉冲数”
附件 3.jpg
然后我建立个DB块,建立用到的数据。
ID1000是地址,其中的数据就是“每秒的脉冲数”, 我们用这个数据除以传感器的“每圈检测脉冲数”,得到“每秒的运行圈数”,测量1圈周长,就是“每圈的运行距离”;
“每秒的运行圈数”*“每圈的运行距离”=每秒的运行距离=速度
15-03-18 16:49
但是上面这种方法,适用于高频,如果是低频的话,数据就会不准确。
要下班了,明天再说。
15-03-18 16:52
高频用高速计数来做,低频怎样来做呢。
我做过1个流量的检测,输出方式是5-15HZ。
1.建立了两个硬件中OB40和OB41。 还有1个模拟量标定和标准化模块。
附件 1.jpg
2.采用时间差计算,先将通道0,也就是i0.0,选择启动上升沿和下降沿检测,分别触发两个硬件中断。
附件 2.jpg
3.建立DB存储块,用来保存读取的系统时间。
附件 3.jpg
4.在硬件中断1中(触发上升沿时)读取系统时间。
附件 4.jpg
5.在硬件中断2中(触发下降沿时)读取系统时间。
附件 5.jpg
6.将两次时间相减,转化和成实数。
附件 6.jpg
时间差除以,半个周期,单位为NS,换算为S。用1除以周期时间即为频率.
附件 7.jpg
7.这是做的标定和标准化块,也就是我们平时读取模拟量用的块。
附件 8.jpg
8在OB1中调用。输入量程,上下限,最后得到所需要的工程量值。
附件 9.jpg
15-03-19 09:03
很牛~!
15-03-19 13:34
表情
17-04-25 09:03
学习下,讲的很详细
17-04-25 09:54

上一页下一页

工控新闻

更多新闻资讯