一级倒立摆系统双闭环PID控制仿真项目说明
项目介绍
本项目通过MATLAB仿真平台实现了一级倒立摆系统的稳定控制。倒立摆系统是一个典型的高阶、非线性、强耦合及自然不稳定系统。为了使摆杆在垂直位置保持平衡并让小车精准移动至目标位置,本项目设计并实现了经典的核心算法——双闭环PID控制系统。内环负责控制摆杆角度,确保其快速回归垂直状态;外环负责控制小车位移,通过调节目标角度引导小车到达指定参考点。
功能特性
- 非线性动力学建模:系统基于牛顿-欧拉方程建立了包含小车质量、摆杆质量、转动惯量及摩擦系数的精确动力学模型,而非仅限于线性化模型。
- 双闭环PID控制策略:采用串级控制架构,实现了位置控制与角度调节的解耦处理。
- 鲁棒性测试:代码模拟了摆杆在初始存在0.15弧度(约8.6度)倾角的情况下的动态恢复过程。
- 实时物理限制模拟:加入了25N的控制力限幅(执行器饱和),更真实地模拟了物理电机的输出极限。
- 多维度结果评估:自动计算并输出位移稳态误差、超调量、最大偏角及调节时间等关键性能指标。
- 可视化动态反馈:提供三段式时域响应曲线图以及直观的二维运动学动画演示。
实现逻辑与核心算法
- 初始化过程:
定义物理参数(M=1.0kg, m=0.1kg, L=0.5m等),设置采样步长为0.005秒,总时长10秒。初始时刻设定目标位移为1米,目标角度为0度。
- 双闭环控制器架构:
- 位置外环:计算当前位移与目标位移的偏差,通过PID调节器计算出一个“目标倾角”。当位移偏差较大时,外环会赋予内环一个倾斜角度指令,诱导小车向目标方向加速。
- 角度内环:将外环输出的目标倾角与实际倾角的偏差作为输入。该环具有更高的优先级和响应速度,通过PID调节输出最终的控制力F,确保摆杆始终跟随目标角并在过程中保持平衡。
- 数值积分与动力学求解:
在每个仿真循环中,利用非线性微分方程组计算系统的加速度。方程考虑了摆杆运动产生的向心力和重力矩。通过欧拉法(Euler Method)对加速度进行两次积分,逐帧更新小车的速度、位移以及摆杆的角速度和角度。
- 限幅与修正:
系统对控制力进行了硬限幅处理。内环计算过程中实时累积误差积分项,并使用前次误差计算微分项,反映了标准的PID离散化实现。
关键函数与计算细节
- 加速度计算公式:通过复杂的非线性代数表达式直接求解小车位移的二阶导数和摆杆角度的二阶导数,完整保留了系统的动力学特性。
- PID算子实现:采用增量式思维的离散PID实现,通过误差累加实现积分作用,通过误差差分实现微分作用。
- 性能评估逻辑:利用查找函数定位最后一次进入2%误差带的时间点,以此作为系统的调节时间判定标准。
使用方法- 确保安装了MATLAB R2016b或更高版本。
- 将代码保存为.m格式文件。
- 在MATLAB命令行窗口中直接运行该文件。
- 程序将依次弹出仿真分析文本、三行一列的响应曲线图(包含位移、角度、控制力)以及动态模拟动画窗口。
系统要求
- 运行环境:MATLAB (包含基础绘图库)。
- 硬件要求:普通PC即可流畅运行动画同步显示及物理计算。
- 知识储备:建议具备基本的自动控制理论(PID算法)和大学物理力学基础。