求教!28335实现电机PID控制
本人最近在TMS320F28335上实现BLDC的位置环PID控制,现在是在TI官网上用了他的PID代码,但是这个参数很多,而且网上对这个代码没有解释,而且PID调参又该怎么做呢,需要做系统辨识来仿真吗?求教!void pidcontrol(int position_expected, int position_actual) //## 写成位置环,10kHz
{
// #include "pid_grando.h" // PID头文件
// SP_normal=0.1;//先按照之前使电机旋转的值给pwm赋值
float output = 0;
///*## 应该要采用增量式PID。这个代码看结构图应该是属于增量式PID。这个属于串级PID。
pid.param.Kp = 0.5;
pid.param.Ki = 0.005;
pid.param.Kd = 0;
pid.param.Kr = 1.0;
pid.param.Km = 1.0;
pid.param.Umax = 1.0;
pid.param.Umin = -1.0;
pid.term.Ref = position_expected;
pid.term.Fbk = position_actual;
PID_MACRO(pid);
output = pid.term.Out; //## PID的输出改变占空比
SP_normal += output; //## -=还是+=?
//##限定最大最小占空比,现在是随便定的阈值,需要修改
SP_normal = (SP_normal > 0.7) ? 0.7 : SP_normal;
SP_normal = (SP_normal < 0.01) ? 0.01 : SP_normal;
//##*/
} 看不懂的小白路过,学习一些。 知道各种PID的使用和调试。
但不懂"DSP"。
有现象和结果可以参与讨论。 本帖最后由 ColeYao 于 2023-5-10 13:46 编辑
如图,灰色2为目标新位置(手动推杆),紫色3为电机实时位置,使用PID方式控制步进电机运行到新位置。红色和绿色为速度曲线,黄色为加速度曲线。从图中可以看出在光标处的设定位置为261120,电机的实际位置为261120,无运行偏差,并且位置曲线无震荡,速度曲线近似梯形。
感觉,大公司的运动控制器都用ADI的DSP呢
页:
[1]