|
分享一种带死区和定时器保护的步进式(步进积分)调节算法的ST程序。我通过读取电机实际转速来实时调节控制电机的电压,实现电机的转速调节。实际效果在±30转附近震荡吧。细致调的话还能提高精度,与传统PID相比就是图的一个简单。 变量表定义截图: ST程序代码: TONR(IN := Adjusting,PT := K10000,R := ,Q => M101,ET =>);// 定时器循环运行,10秒定时// 计算实际死区(目标转速的1%)IF Speed_SP > 0 THEN DeadBandVal := REAL_TO_INT((INT_TO_REAL(Speed_SP) * DeadBand));ELSE DeadBandVal := 5; // 当目标转速为0时,取固定小死区END_IF// 若无调整等待且偏差超出死区,则执行一步调整IF (NOT Adjusting) THEN P_Error := Speed_PV - Speed_SP; IF ABS(P_Error) > DeadBandVal THEN IF P_Error < 0 THEN // 转速偏低,增加控制电压值 Cmd := Cmd + 0.05; IF Cmd > 3.5 THEN Cmd := 3.5; END_IF //限制输出电压 ELSE // 转速偏高,减小控制电压值 Cmd := Cmd - 0.05; IF Cmd < 0.0 THEN Cmd := 0.0; END_IF //限制输出电压 END_IF Adjusting := TRUE; END_IFEND_IFIF M101 THEN Adjusting := FALSE;END_IF 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |