PLC实验—西门子S7 1200 PID控制步进电机转速

PLC实验—西门子S7 1200 PID控制步进电机转速

严格讲并不是PID控制,因为并不是并不研究这个方向,研二又比较忙,时间限制只加了比例系数

这里只是抛砖引玉,希望大家可以进一步完善补充

思路

大体思路如下,根据超声波传感器测量的距离值,换算成步进电机的期望速度

HSC采集步进电机的实际转速,计算期望转速与实际转速的转速差,作为PID调节器的输入

PID调节器计算出步进电机的脉冲增量,进行叠加,去控制步进电机运动

程序

建议先阅读上一篇博客,这是基于其实现的

PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速

主要的变化在main和Cyclic interrupt 200ms两个组织块中

main组织块

PLC实验—西门子S7 1200 PID控制步进电机转速_第1张图片

  • 不清楚PLC里面变量怎么初始化,所以用move实现,启动的同时进行PTO脉冲系数的初始化

PLC实验—西门子S7 1200 PID控制步进电机转速_第2张图片

  • 对距离值向上取整,乘0.08以换算成步进电机期望转速

PLC实验—西门子S7 1200 PID控制步进电机转速_第3张图片

  • delta_ctrl是PID调节器计算出的脉冲增量,进行累加
  • 取绝对值防止脉冲数出现负数
  • 同样对脉冲数进行向上取整
  • 注意设置脉冲数上限,这里要多次尝试,暂去100

PLC实验—西门子S7 1200 PID控制步进电机转速_第4张图片

  • 实际上所谓的自动调节,就是将上一个实验的加速减速按钮变成能够自动变化的
  • 这里要进行数据类型的转化,Real→Int
  • 这里加了个互斥锁,以使得急停按钮能够生效

PLC实验—西门子S7 1200 PID控制步进电机转速_第5张图片

  • 程序段6和7没有变化

Cyclic interrupt 200ms组织块

PLC实验—西门子S7 1200 PID控制步进电机转速_第6张图片

  • 添加了转速差的计算,10是比例系数

接线

较上一实验接线变化不大,接上传感器,去掉加减速按钮即可


实验结果

分为两组,第一组超声波传感器上方没有障碍物,第二组有障碍物

障碍物即将手掌置于超声波传感器上方

无障碍物

没有障碍物时超声波距离值3.8,换算为参考转速0.32

步进电机有个调节变化的过程,期间会有振动和噪声,说明运动并不平稳

稳定阶段PTO脉冲系数12,PTO frequency 600

PLC实验—西门子S7 1200 PID控制步进电机转速_第7张图片
PLC实验—西门子S7 1200 PID控制步进电机转速_第8张图片
PLC实验—西门子S7 1200 PID控制步进电机转速_第9张图片

此时实际转速稳定在0.375

PLC实验—西门子S7 1200 PID控制步进电机转速_第10张图片

有障碍物

有障碍物时超声波距离值1,换算为参考转速0.08

其实这里也可以向下取整,这样距离值有3/2/1/0四段,向上取整则是4/3/2/1四段

稳定阶段PTO脉冲系数1,PTO frequency 50

PLC实验—西门子S7 1200 PID控制步进电机转速_第11张图片
PLC实验—西门子S7 1200 PID控制步进电机转速_第12张图片
PLC实验—西门子S7 1200 PID控制步进电机转速_第13张图片

此时实际转速稳定在0.15

PLC实验—西门子S7 1200 PID控制步进电机转速_第14张图片

上述误差可能由于步进电机的步距角导致,可以先了解下步进电机及其控制

步进电机怎么控制速度?步进电机调速控制方法

步进电机控制方法,总算有人讲明白了!

如何控制步进电机?

后话

整个实验实际上还是很粗糙的,很多细节还有待推敲

PID调节器实际上可以用增量式PID实现,注意这是离散系统,实现仍然在中断组织块中

位置式PID与增量式PID

有空再搞吧,狗头保命

你可能感兴趣的:(开发,开发语言)