Simulink进行PID控制及调参:
- 建立系统动力学框图(把状态方程翻译出来),设置成subsystem
- 建立PID反馈回路。示波器叫scope,多变量输出用demux和mux。
- 可以用自动调参Tune模块,调整响应速度和稳定性,达到较优状态,更新参数并重新run
- 或者可以使用内置的状态空间法建立动力学模型:用状态方程模块State-Space,直接输入ABCD及初值矩阵即可
- 可以添加多个PID控制:PID是对y(t)的偏差值进行计算处理,得到u(t)的新数值。PID本身的阶跃响应曲线(响应速度、稳定性)一定程度上反应了实际系统的响应特征,因为冲激函数的卷积是阶跃函数。因此,多个PID控制的话需要先把各自PID的结果相加,然后再输入到系统状态方程里面(作为输入u)。
- 可以在3s加入一个转角的小扰动,用Step函数*2+作差处理,制造冲激信号。这样可以看到两个PID分别发挥作用。
- 想要导出数据重新作图,把mux的数据连线到out模块,运行,回到matlab里面看工作区,有out表格,tout是时间,yout是研究的变量,value里面有四列,位移,速度,角度,角加速度。
Simulink & UG联动仿真:
步骤总述:
- 在UG里面建立机械系统模型。
- 确定系统输入和输出,UG里面的输出是Simulink的输入,反之亦然,总之要建立UG和Simulink的闭合回路。注意:工厂输出是UG到Simulink,工厂输入是Simulink到UG,这两个概念都是在UG里面定义的,所以以UG为参考。
- 在Simulink建立控制系统框图,把动力学模块用UG模块替代;
- 进行联合仿真分析。
详细步骤:
- 在UG里面关联MATLAB。用户默认设置,仿真,运动,分析,右边选RecurDyn求解器,控制/动力学模块下,采样时间0.001,MATLAB可执行文件选择电脑中matlab的安装地址exe,Windows那行里面填好。
- UG里面导入模型,打开prt文件。(剩下的操作和之前类似,打开运动导航器,新建仿真……)
- 设置仿真环境,RecurDyn结算方案选“协同仿真”。注意,设置之前需要先右键左侧菜单的模型(step上面的一行),修改求解器为RecurDyn求解器。
- 跟之前一样,建立连杆和运动副。RecurDyn会自动给固定连杆建固定副的,不用自己设置。注意滑块滑动副可以把全局坐标系的坐标原点设置成原点。转动副可以重点观察一下方位,到底怎么转角度是正值(我觉得可能局部坐标系和全局重合比较方便看)
- 点击菜单(M),插入,工厂,工厂输入。在最上面一行的“加载“里面选择”矢量力“,全局坐标系正方向,指定原点先选择面上的点,确定面的x坐标,再选择”点对话框“,直接设置坐标y和z,放在中心。幅值选择函数,函数管理器,插入,”工厂输入“,Pin001,回去幅值那边把这个函数施加上去。(可以调整显示图例大小,这样才能看到力的箭头,参考之前的笔记)
- 建立传感器*4,测量对象选择滑块的位移(分量z,相对,选择滑块运动副)、速度(分量z,相对,选择滑块运动副)、摆杆运动副的角度(分量RZ,相对,选择旋转副)、角速度(分量RZ,相对,选择旋转副)。
- 插入工厂输出*4,分别将上面4个传感器都定义为工厂输出(每个传感器一个输出)。
- 添加解算方案,分析类型是控制/动力学,时间30s,步数1000步,重力对摆杆运动很重要所以要加上。保存。
- 对模型求解,协同仿真选Simulink。目前还没有结果。
- 回到文件夹下面,多出来两个m文件Plant和PlantIO。
- 打开Simulink,建立控制框图,和上次建的一样就好(用最简单的一环控制转角)。
- 后续思路是把状态空间模型块替换成UG的模块,输出分别用四个示波器显示就好,角度有一个初始值需要加进去(因为simulink定义的坐标系目标角度是0°,而UG模型本身有一个初始-5°的角度,所以UG模型的目标角度是5°。注意全部用弧度表示!!)。
- 把两个多的m文件在MATLAB打开,运行plant文件,出现了一个运动框图,可以复制粘贴进自己画的控制框图里。
- 绘制好框图后,稍微做一些调整。联动的时候容易出现崩溃的情况,因此插入一个延时函数transport delay,0.001s=1ms,放在PID和UG模块之间,经过延时再输入进来。
- 建立一个示波器,显示PID的结果,也就是驱动力。
- 再来看看PID模块。直接run一下试试(记得把simulink的stop time改成30s和UG一致,但是好像还是不够,还有什么地方也要调……),看结果发现位移是匀速运动(动态平衡),因为只做了一环控制。回到UG可以看动图,在初始的一瞬间就达到了平衡……好吧……
- 修改PID模块参数,可以看不同的效果。
- 双击NX的模块,可以看到我们设置的工厂输入和工厂输出。
- 可以加两环控制。还可以去UG里面直接看运动结果图,更清楚一些。