PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速
注意PTO控制步进电机实验博途软件需要V14版本,不然没有PTO功能块
软件的下载请点击下方百度网盘的链接
链接:https://pan.baidu.com/s/11mQFVnaQxrUy4W9nGIk8Jw
提取码:6lva
详细的操作指导视频已经放到了B站上
Simens S7-1200读取增量式编码器数据
Simens S7-1200根据编码器数据计算电机转速
主块
首先要在设备组态
启用高速计数器
硬件输入
为I0.0和I0.1
这里将输入滤波器的时间改为0.8ms
先看变量表
main中添加了4个程序段,这是基于PTO控制步进电机基础上实现的,可以先看前面的博客
PLC编程与实践——基础实验
ID1000是HSC_1的地址,将其move到MD1000中
从上面可以看出编码器A相接I0.0,B相接I0.1,接两根信号线即可
CTRL_HSC: 控制高速计数器
使用“控制高速计数器”指令,可以对参数进行设置并通过将新值加载到计数器来控制 CPU 支持的高速计数器。指令的执行需要启用待控制的高速计数器。对于指定的高速计数器,无法在程序中同时执行多个“控制高速计数器”指令
可以在帮助中查看信息
辅助块
新建一个中断OB,周期为200ms
新建一个FB,用于计算电机的实际转速,在中断OB中调用该FB
FB_Counter_to_Speed
先看变量,注意输入/输出/全局变量的设置
用下面的公式计算电机实际转速
功能块实现
Current_Counter - Recoder_Counter = Delta_Counter
Delta_Counter / (Cycle_Time * 1000) = ratio_result
DIV
中的1000是编码器的线数,CALCULATE
是ms到s的换算,这里的单位是转/秒
注意用move去更新
Recoder_Counter
Cyclic interrupt 200ms
在组织块中直接调用函数块即可
实际接线
接线其实很简单
实验结果
通过CTRL_HSC可以给编码器初值添加一个偏置
在main中MD1000显示了编码器的脉冲数
FB_Counter_to_Speed函数块中可以显示步进电机的转速
Cyclic interrupt 200ms组织块中显示的步进电机转速与FB_Counter_to_Speed中相同