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中相同