西门子S7-1200 PLC读取旋转编码器数据并计算电机转速实验
西门子S7-1200 PLC读取旋转编码器数据并计算电机转速实验
可编程逻辑控制器(PLC)是工业自动化领域的重要设备,广泛应用于各种工业控制场景。旋转编码器是一种将机械位移转换为电信号的传感器,常用于测量电机转速和位置。本文将介绍如何使用西门子S7-1200 PLC读取旋转编码器数据并计算电机转速,包括硬件接线、软件编程和实验结果展示。
实验环境准备
本实验需要使用西门子S7-1200 PLC和增量式旋转编码器。实验所用的博途软件需要V14版本,因为只有该版本支持PTO(脉冲串输出)功能块。如果尚未安装该版本软件,可以从西门子官方网站下载。
硬件接线
旋转编码器的接线相对简单,只需要将A相和B相信号分别连接到PLC的I0.0和I0.1端口即可。硬件接线图如下:
软件编程
主程序块
在设备组态中启用高速计数器,并将硬件输入设置为I0.0和I0.1。为了提高信号质量,可以将输入滤波器的时间设置为0.8ms。
在主程序中添加4个程序段,这些程序段基于PTO控制步进电机的基础实验。在变量表中,将HSC_1的地址(ID1000)移动到MD1000中。编码器的A相连接到I0.0,B相连接到I0.1。
使用“控制高速计数器”指令(CTRL_HSC)对高速计数器进行参数设置。需要注意的是,对于指定的高速计数器,程序中不能同时执行多个“控制高速计数器”指令。
中断程序块
创建一个周期为200ms的中断OB,并在其中调用一个FB(功能块),用于计算电机的实际转速。
转速计算功能块(FB_Counter_to_Speed)
该功能块用于根据编码器脉冲计算电机转速。其变量设置包括输入、输出和全局变量。转速计算公式如下:
Current_Counter - Recoder_Counter = Delta_Counter
Delta_Counter / (Cycle_Time * 1000) = ratio_result
其中,1000代表编码器的线数,CALCULATE
用于将时间单位从ms转换为s,最终得到的转速单位为转/秒。计算完成后,需要更新Recoder_Counter
的值。
中断组织块
在200ms周期的中断组织块中直接调用FB_Counter_to_Speed
功能块。
实验结果
通过CTRL_HSC
指令可以为编码器初值添加偏置。在主程序中,MD1000显示了编码器的脉冲数。在FB_Counter_to_Speed
功能块中可以显示步进电机的转速,且该转速与200ms中断组织块中显示的转速相同,验证了计算的准确性。