本帖最后由 gyp1 于 2018-6-11 17:26 编辑
任务三:监控任意数据变量,并且截图,自拟任务:PID整定与负载测试
本来自拟任务为加入电位器调速并截图,现改为PID重整定,然后做任务三,使用整定后的PID对电机进行调速,监控目标转速,实际转速、电流3个变量,并且截图,同时进行分析。
计划:首先将电流环(Id、Iq),速度环PID置零。然后先使用电流环调整电流PID,然后调整速度环PID。
思路:P即为比例,I为积分,首先在i为0的情况下,调整P,增大P使其可以达到目标,然后适当减小P再加入积分环节。如果要增大调节速度,同时按比例增加P和I即可。
实际操作过程:(开环启动部分的就不动了)设置电机工作在电流环模式下,Torqueref参考电流设置为2000。
1.将P调到4000时电机轻微抖动,但是转不动,接下来增加I
2.增大i到50时电机正常启动并进入闭环,但是观察Iq,出现的峰值偏大,故减小P。
3.目标参考为2000,实际观察中Iq波动较大,不稳定,故增大I。
4.经过调整后,参数如下,电流基本稳定。
5.调整速度环PID,增大P使速度基本可以跟随调节(软件界面调速)时的目标速度,实测大概P到1000的时候速度基本跟随。
6.这时增大I使系统稳定,同时快速的到达目标速度。实测I为200时基本稳定。
PID整定完成,自拟任务完成
任务三:
计划:启动电机,使用电位器调速,先调大速度,然后减速,接下来对电机加负载(实际上就是手轻捏着电机边缘,慎用、危险),然后关闭电机,使用STM Studio记录曲线包括目标转速,实际转速,输出力矩。
为了可以调速,加入电位器调节,可以将例程中的potentiometer.c文件加入至工程中,并做适当修改。为了加快调速的频率,可以将COUNT_MAX_SEC(调速计数延时)初始化设置为1,或者将延时函数完全去掉。
实际测试中,调速效率并没有达到我的预期,故将potentiometer.c中对电位器读取的adc操作函数移至mc_tasks.c中的TSK_MediumFrequencyTaskM1(void)函数内部,具体函数如下:
if(ADC_NUM==0)
{
MC_RequestRegularConv(ADC_CHANNEL_12,ADC_SAMPLETIME_601CYCLES_5);
ADC_NUM=1;
}
if((MC_RegularConvState()== UDRC_STATE_EOC)&&ADC_NUM==1)
{
potentiometer_value= MC_GetRegularConv();
ADC_NUM=0;
}
经实际测试,电位器读取在电机未运行时读取精确,但是当电机运行起来之后,干扰增大,故将读取时钟改为601.5,过滤噪声。
在调速过程中发现,当速度由较高速度下降为低速时,会经常发生过流错误,通过STMstudio软件分析电流曲线得知,电机在减速时,系统会对其减速刹车,我想把这个部分屏蔽,于是更改其内部算法,使hTorqueReference恒为正值。
在电流的PI计算控制
hTorqueReference =PI_Controller(pHandle->PISpeed, (int32_t)hError)
后加入加入以下判断:
if(hTorqueReference<0)hTorqueReference=0;
这样调速减速就不会刹车,而是靠惯性继续转动,通过阻力减速。
编译完成后即可烧录到板子上进行调试,可通过按键进行启停,电位器调速。下一步打开STMStudio软件,添加变量,并开始记录。
图中绿色曲线为hAvrMecSpeed01Hz(乘以6即为RPM)即为实际转速,紫色曲线为hFinalSpeed(乘以6即为RPM)即目标转速,粉色曲线为hTeref即为Iqdref,Iq电流,也可以理解为力矩。
过程如下:500时刻启动电机,电机进入开环启动模式,开环启动瞬间电流较大,约2000时刻进入闭环。4000时刻增大速度,可见实际转速基本与目标转速曲线贴合,同时电流变大。9000时刻达到最高速度18000RPM,10500时刻减速,电流减小,14500时刻对电机加负载,可见电流猛增,但是电机速度基本不变,说明此参数下电机负载能力良好。18000时刻停止电机,电流变0。
下图为对电机加负载时的局部曲线细节。可见16500时刻电机负载达到最大,稍有超载。
至此任务三完成。
任务三与自拟任务完成。
接下来进行任务一,二,与扩展任务。
此内容由EEWORLD论坛网友gyp1原创,如需转载或用于商业用途需征得作者同意并注明出处