基于单神经元 PID 的伺服电机自适应调速控制系统
项目介绍
本项目设计并实现了一个针对直流伺服电机的自适应调速控制系统。系统的核心算法采用单神经元 PID 控制器,通过模拟生物神经元的自学习和自适应特征,实现在线参数调整。相比于传统固定参数的 PID 控制,该系统能够针对直流电机的非线性特性及运行过程中的外部负载扰动,动态优化控制器权值,从而保证系统在复杂工况下的稳态精度和动态响应性能。
功能特性
- 自适应权值调整:控制器能够根据实时误差反馈,利用改进的 Hebb 学习规则在线修正比例、积分、微分环节的加权系数。
- 鲁棒性验证:系统设计了针对突发负载扰动的仿真环节,能够自动补偿因负载变化引起的转速波动。
- 数学模型仿真:包含了从连续时间传递函数到离散化差分方程的完整数学建模过程,支持高频采样仿真。
- 归一化控制策略:通过对神经元权值进行归一化处理,确保了控制输出在参数大幅波动时的数学稳定性。
使用方法
- 在环境满足要求的前提下,打开仿真分析脚本。
- 配置或保留脚本开始部分的电机物理参数(如电阻、电感、惯量等)。
- 直接运行仿真脚本,系统将自动执行包含参数初始化、离散化处理、闭环循环以及动态扰动模拟在内的全过程。
- 观察仿真输出的实际转速反馈曲线、转速误差曲线以及神经元权值的演变轨迹。
系统要求
- MATLAB R2016b 或更高版本。
- 安装有 Control System Toolbox(用于传递函数处理及离散化变换)。
核心实现逻辑与逻辑流程
本项目通过 MATLAB 脚本实现了完整的闭环控制逻辑,具体步骤如下:
- 物理模型建模:基于电枢回路方程和力矩平衡方程,定义直流伺服电机的电枢电阻、电感、转子转动惯量、摩擦系数、转矩常数以及反电动势常数。将这些参数转化为连续系统的传递函数 $G(s)$。
- 离散化处理:设置 1ms 的采样周期,采用零阶保持器(ZOH)方法将连续电机模型转换为离散传递函数,并进一步提取差分方程所需的分子分母系数。
- 控制器初始化:设定单神经元的学习率(涉及比例、积分、微分三个独立的维度)和神经元输出比例增益。初始化权值向量,并准备用于存储转速、电压、误差和权值历史的数组。
- 仿真闭环循环:
*
对象仿真:利用差分方程计算当前时刻电机的实际转速。
*
扰动注入:在仿真运行到 2.5 秒时,人为引入 8.0 单位的转速降幅,模拟外部负载力矩的突变。
*
特征提取:构造神经元的输入向量,分别为误差的一次变化量(对应比例)、当前误差值(对应积分)以及误差的二阶变化量(对应微分)。
*
权值在线更新:根据改进的 Hebb 学习规则,结合当前误差、上一步的控制输出以及对应的输入特征,实时修正三个权值。
*
归一化与输出计算:对更新后的权值进行绝对值求和并归一化处理,最终将归一化的权值与输入特征进行加权求和,乘以比例增益后得到下一时刻的控制电压。
- 状态更新:循环末尾更新延时变量(如前一时刻的转速、控制量和误差),为下一采样周期做准备。
关键函数与算法细节
- 传递函数处理:通过
tf 函数建立模型,c2d 函数实现连续到离散的转换,这是保证仿真精度的基础。 - 差分方程实现:代码直接操作
tfdata 提取出的系数,手动实现差分驱动逻辑,而非使用内置黑盒函数,这更符合底层嵌入式控制的实现逻辑。 - 输入特征定义:
* $x_1$: $err(k) - err(k-1)$,侧重于捕捉误差的变化趋势。
* $x_2$: $err(k)$,反映当前的绝对偏差。
* $x_3$: $err(k) - 2 cdot err(k-1) + err(k-2)$,反映误差变化的加速度。
- 改进 Hebb 学习规则:权值的修正量正比于学习率、当前误差、历史控制量以及对应特征的乘积。这种规则允许神经元结构通过不断试错和调整,找到使得误差最小化的最优权值组合。
- 权值归一化:通过
sum(abs(w)) 计算权值总和并进行归一化,有效地防止了由于学习率设置不当导致的神经元输出过饱和或发散问题。