S7-1200PLC 通过高速计数器测量AB相编码器转速

蓝咒 提交于 2020-03-01 22:45:54

AB相编码器转速的测量

硬件:编码器Omron E6B2-CWZ5B 500脉冲/圈
在这里插入图片描述
测量编码器转速的两种方式:
方法一:在博图软件高速计数器的组态中,已经提供了捕捉编码器频率的组态选项。
频率的单位为:脉冲/秒,而我们现在使用的编码器为 500脉冲/转
所以进过简单的换算,将高速计数器采集到的频率 /500,即可得到我们所需要的转速:转/秒
在这里插入图片描述
方法二:利用循环中断,在固定的时间间隔内捕捉高速计数器所采集到的的脉冲个数,将数据进行转换得到我们所需要的转速。实际上在方法一中,高速计数器在采集频率数据的时候PLC系统内部也是根据这个逻辑来计算的。
下面我们对方法二进行一个简单的演示。

1.硬件接线
将编码器的A相接入I0.3,B相接入I0.4,Z相接入I0.5
在这里插入图片描述
2. 添加cpu 1214C,调整输入滤波时间
在PLC的 “属性”>“常规”>“DI14/DQ10”>“数字量输入”页面, 调整I0.3和I0.4的滤波时间
滤波时间的调整需要根据实际测量时的转速范围进行匹配,如果滤波时间设置的太长,在转速很快的情况下,就会出现丢失脉冲的情况。
默认滤波时间为6.4millisec,我们将其调整为3.2microsec。
在这里插入图片描述
3. 组态高速计数器HSC1
HSC1的计数类型选择“计数”,工作模式选择“A/B计数器”,初始计数方向选择“加计数”。
在这里插入图片描述
时钟发生器A的输入选择“I0.3”
时钟发生器B的输入选择“I0.4”

启用同步输入功能
同步输入选择 “I0.2”
在这里插入图片描述

记录下HSC1的硬件标识符
在这里插入图片描述

5.创建变量
新建DB块,在DB块内创建HSC_Count型变量,系统会自动识别变量类型。
展开count变量列表可以看到包含很多变量,我们需要用到CurrentCount,EnHSC,以及EnSync

CurrentCount:高速计数器的当前值
EnHSC:启用高速计数器,为1时开始启用,为0时停止启用。(调用CTRL_HSC_EXT指令,且在硬件门未组态的情况下)
EnSync:同步输入,把count.NewStartValue的值赋值给高速计数器,本程序中NewStartValue保持默认值为0,相当于复位功能(需要在组态中启用同步输入功能,即I0.2与EnSync同时为1,同步输入才生效)

在这里插入图片描述
6.编写程序
在OB1中调用CTRL_HSC_EXT指令,HSC内填入HSC1的硬件标识符,CTRL内填入上面新建的变量

*MD200为循环中断读取到的高速计数器数值,下面会做介绍。
MD200 / 循环间隔 0.2s ,得到MD204 频率(脉冲/秒)
MD204 / 500脉冲 , 得到MD208 转速(转/秒)
MD208 乘以 60 , 得到MD212 转速(转/分钟)
在这里插入图片描述

创建循环中断,循环时间设置为200ms
在这里插入图片描述
循环中断内的程序如下:
循环中断将每隔200ms执行一次,相当于每隔200ms读取一次HSC1的计数值,将其赋值给MD200,然后将高速计数器清零,再开始新的200ms循环。

在这里插入图片描述
7.进入监控界面
将I0.2置位(必须置位后count.EnSync才发挥作用)
将count.EnHSC置位
转动编码器,采集到的转速经过计算在界面中实时显示
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!