工具:笔者使用的工具为matlab2022a
首先我们在matlab里面打开simulink,然后进行pid模型的搭建,笔者在这里搭建的是双环pid模型
搭建好的模型如图所示(不用Sine Wave是因为该函数存在部分问题,故使用阶跃step函数),其中传递函数已经计算完成。
然后我们进行模型开环情况下实际数据的数据集收集(笔者此次为使用excel随机函数生成的),真实数据可以通过使用串口助手或者进行ozone调试器来进行获得数据
然后将该xlsx文件放入matlab左侧中
然后将数据集放入然后打开可以选择导入数据,然后将数据集转化为double类型,创建input数据集(按照阶跃信号创建的
打开系统辨识工具包
在系统辨识工具包里面选择时域分析
然后弹出这个,在input里面输入刚刚的输入变量也就是input,ouput里面同理
然后开始时间(start time)设为0
取样时间(sample time )设为你的取样频率(可以理解为can通信的返还频率,或者freertos的task任务执行频率,我个人趋向于是task的执行频率)然后import(可能会卡一会
然后工具包发生变化,点击mydata然后选择传递函数模型
然后会出来这个界面,通常的物理模型下,这个界面不需要额外修改,“1个零点2个极点”然后estimate
然后工具包出现了tf2(tf1是在选择传递函数模型时产生的)点开这个tf2
就可以知道我们这个模型的传递函数
将传递函数写入simulink的传递函数中
然后确认
因为我们搭建的双环pid模型,所以先确定内环参数
点击调节(图为已经调节好后的结果
然后移动上方两个调节,选择理想的收敛速度与超调幅度
确定好内环后外环同理处理。