利用串口示波器调试PID参数

PID调试最麻烦的是参数调整,需要花费大量时间,如果每调整一次都要修改代码重新编译烧录,效率很低,推荐串口示波器与rt-thead finsh进行调试
利用串口示波器调试PID参数_第1张图片
推荐使用FireWater数据引擎
利用串口示波器调试PID参数_第2张图片
定时上报数据,rt_kprintf不支持浮点数据打印,fractional_to_int是一个将浮点数小数放大100倍后取整函数,实现2位小数精度的数据打印

static void pcr_refresh_timeout(void *parameter)
{
    rt_kprintf("temp:%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,\
        %d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d.%02d,%d\n",\
        (int)temp_tec_get()->fTemp[0],fractional_to_int(temp_tec_get()->fTemp[0]),\
        (int)temp_tec_get()->fTemp[1],fractional_to_int(temp_tec_get()->fTemp[1]),\
        (int)temp_tec_get()->fTemp[2],fractional_to_int(temp_tec_get()->fTemp[2]),\
        (int)temp_tec_get()->fTemp[3],fractional_to_int(temp_tec_get()->fTemp[3]),\
        (int)temp_tec_get()->fTemp[4],fractional_to_int(temp_tec_get()->fTemp[4]),\
        (int)temp_tec_get()->fTemp[5],fractional_to_int(temp_tec_get()->fTemp[5]),\
        (int)temp_tec_get()->fTemp[6],fractional_to_int(temp_tec_get()->fTemp[6]),\
        (int)temp_tec_get()->fTemp[7],fractional_to_int(temp_tec_get()->fTemp[7]),\
        (int)temp_hot_get()->fTemp[0],fractional_to_int(temp_hot_get()->fTemp[0]),\
        (int)temp_hot_get()->fTemp[1],fractional_to_int(temp_hot_get()->fTemp[1]),\
        (int)temp_hot_get()->fTemp[2],fractional_to_int(temp_hot_get()->fTemp[2]),\
        (int)temp_hot_get()->fTemp[3],fractional_to_int(temp_hot_get()->fTemp[3]),\
        (int)temp_hot_get()->fTemp[4],fractional_to_int(temp_hot_get()->fTemp[4]),\
        (int)temp_hot_get()->fTemp[5],fractional_to_int(temp_hot_get()->fTemp[5]),\
        (int)temp_hot_get()->fTemp[6],fractional_to_int(temp_hot_get()->fTemp[6]),\
        tec_driver_get_ptr(1)->u8Duty);
}

波形图控件拖动到页面,上传后数据显示的数据的波形图方便观察数据变化
利用串口示波器调试PID参数_第3张图片
参数调整下发,数据上报与参数下发都是使用finsh 命令行串口,在rt-thread下设定一些参数修改的调试命令

temp_pid_debug list cnt[0-100]
temp_pid_debug hot chn[0-6] temp[23-120] speed[0-3]
temp_pid_debug tec chn[0-6] temp[0-120] speed[0-4]
temp_pid_debug enable [tec|hot] chn[0-6] en[0-1]
temp_pid_debug pid hot p [k]
temp_pid_debug pid hot i [k]
temp_pid_debug pid hot d [k]
temp_pid_debug pid warm p [k]
temp_pid_debug pid warm i [k]
temp_pid_debug pid coola p [k]
temp_pid_debug pid coola i [k]
temp_pid_debug pid coolb p [k]
temp_pid_debug pid coolb i [k]

配置串口示波器命令
利用串口示波器调试PID参数_第4张图片
拖一个参数设置控件到页面并绑定命令
利用串口示波器调试PID参数_第5张图片
使用这个软件设置PID参数与查询升降温曲线波形图示例

升降温曲线实现

你可能感兴趣的:(物联网,rt-thread,STM32,pid,rt-thread,串口示波器,温度)