发明名称 一种磁悬浮飞轮转速控制方法
摘要 本发明涉及一种高精度磁悬浮飞轮转速控制方法。根据磁悬浮飞轮转速反馈值,对转速反馈值进行模糊自适应kalman滤波,由转速参考值与经滤波后的转速值进行磁悬浮飞轮转速环控制,转速环控制参数根据转速参考值与转速偏差进行自适应调节,转速环输出电流参考值;由电流参考值与电流反馈值进行电流环控制,最终通过调节电机绕组电流值实现磁悬浮飞轮全转速范围的转速高精度控制。本发明属于航天控制技术领域,也可用于其它直流无刷电机高精度控制的应用。
申请公布号 CN101800505A 申请公布日期 2010.08.11
申请号 CN201010123240.2 申请日期 2010.03.12
申请人 北京航空航天大学 发明人 房建成;周新秀;刘刚;张然;王志强;张聪
分类号 H02P6/06(2006.01)I;G05B13/02(2006.01)I;H02N15/00(2006.01)I 主分类号 H02P6/06(2006.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 成金玉
主权项 1.一种磁悬浮飞轮转速控制方法,其特征在于实现步骤如下:(1)检测飞轮转速值采用光电码盘利用M/T法进行测速,在测速程序中对光电码盘信号进行判断,当光电码盘的高电平与低电平保持一定时间后触发计数器进行计数,以减少高频干扰信号的影响,最后根据M/T法检测的光电码盘脉冲数与高频时钟数进行转换即得到当前时刻磁悬浮飞轮转速值n(k)=60f*m1/[P*(m2+m3)],其中,f是高频时钟脉冲的频率,P是码盘一周发出的脉冲数,在规定的时间Tc内,分别计取光电码盘的脉冲个数m1和高频时钟的脉冲个数m2,m3是Tc结束后到码盘下一个脉冲上升沿的时间间隔;(2)对所述当前时刻磁悬浮飞轮转速值进行模糊自适应kalman滤波首先根据磁悬浮飞轮电机模型,取状态向量x<sub>1</sub>(k)=n(k),x<sub>2</sub>(k)=x<sub>1</sub>(k+1)-Au(k),其中,x<sub>1</sub>(k),x<sub>2</sub>(k)为系统状态向量,n(k)为步骤(1)得到的当前时刻磁悬浮飞轮转速值,A为根据系统参数计算得到的控制系数,u(k)为系统输出控制量。则系统方程可写为如下的状态空间方程式:<maths num="0001"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>D</mi></mtd><mtd><mo>-</mo><mi>F</mi></mtd></mtr></mtable></mfenced><mo>*</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>A</mi></mtd></mtr><mtr><mtd><mi>B</mi><mo>-</mo><mi>A</mi><mo>*</mo><mi>F</mi></mtd></mtr></mtable></mfenced><mo>*</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>G</mi><mo>*</mo><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>+</mo><mi>H</mi><mo>*</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>n</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>*</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>x</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>=</mo><mi>C</mi><mo>*</mo><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>式中,D、F、A、B、G、H、C均为常数矩阵,D、F、A、B为将系统方程转换为状态方程后得到的控制系统参数的中间变量值,G为系统矩阵,H为输入矩阵,C为输出矩阵;<maths num="0002"><![CDATA[<math><mrow><mi>G</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mo>-</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup></mtd><mtd><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>+</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>)</mo></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mi>H</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mrow><mfrac><mrow><mn>30</mn><mo>*</mo><msub><mi>k</mi><mi>e</mi></msub></mrow><mrow><mi>J</mi><mo>*</mo><mi>L</mi><mo>*</mo><mi>&pi;</mi></mrow></mfrac><mrow><mo>(</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>-</mo><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>+</mo><msub><mi>d</mi><mn>1</mn></msub><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow><mrow><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><mrow><mo>(</mo><msub><mi>d</mi><mn>1</mn></msub><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><mfrac><mrow><mn>30</mn><mo>*</mo><msub><mi>k</mi><mi>e</mi></msub></mrow><mrow><mi>J</mi><mo>*</mo><mi>L</mi><mo>*</mo><mi>&pi;</mi></mrow></mfrac><mrow><mo>(</mo><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>+</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>-</mo><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>)</mo></mrow></mrow><mrow><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><mrow><mo>(</mo><msub><mi>d</mi><mn>1</mn></msub><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac><mo>-</mo><mfrac><mrow><mfrac><mrow><mn>30</mn><mo>*</mo><msub><mi>k</mi><mi>e</mi></msub></mrow><mrow><mi>J</mi><mo>*</mo><mi>L</mi><mo>*</mo><mi>&pi;</mi></mrow></mfrac><mrow><mo>(</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>-</mo><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>+</mo><msub><mi>d</mi><mn>1</mn></msub><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow><mrow><msub><mi>d</mi><mn>1</mn></msub><mo>*</mo><msub><mi>d</mi><mn>2</mn></msub><mo>*</mo><mrow><mo>(</mo><msub><mi>d</mi><mn>1</mn></msub><mo>-</mo><msub><mi>d</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mfrac><mo>*</mo><mrow><mo>(</mo><mo>-</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>1</mn></msub><mi>T</mi></mrow></msup><mo>-</mo><msup><mi>e</mi><mrow><msub><mi>d</mi><mn>2</mn></msub><mi>T</mi></mrow></msup><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>C=[10],其中,J为磁悬浮飞轮转动惯量,k<sub>e</sub>为反电动势系数,B为阻尼系数,u为电源输出电压,R为电机绕组电阻,L为电机绕组电感,d<sub>1</sub>,d<sub>2</sub>为系统特征方程两根;e为自然对数底数,T为采样时间;kalman滤波器的状态估计方程:<img file="FSA00000054075600021.GIF" wi="989" he="80" />式中,<img file="FSA00000054075600022.GIF" wi="85" he="77" />为状态估计值;<img file="FSA00000054075600023.GIF" wi="206" he="77" />为状态预报值;K(k)为滤波增益矩阵;kalman滤波的滤波增益矩阵K(k)可按下式计算:K(k)=δ(k)*P(k/k-1)*C<sup>T</sup>*(C*P(k/k-1)*C<sup>T</sup>+r(k))<sup>-1</sup>,P(k/k-1)=G*P(k-1)*G<sup>T</sup>+H*Q*H<sup>T</sup>,P(k)=(I-K(k)*C)*P(k/k-1)其中,<img file="FSA00000054075600024.GIF" wi="676" he="134" />c(k)=η(k)/τ(k),η(k)=E(k)-ε*r-C*G*C<sup>T</sup>,τ(k)=C*G*P(k)*G<sup>T</sup>*C<sup>T</sup>,<img file="FSA00000054075600025.GIF" wi="1054" he="233" /><img file="FSA00000054075600026.GIF" wi="496" he="79" />式中,δ(k)为衰退因子矩阵,P(k/k-1)为一步预测均方误差,C为输出矩阵,P(k)为估计均方误差,r(k)为量测噪声方差阵,G为系统矩阵,H为输入矩阵,Q为系统噪声方差阵,P(k)为估计均方误差,K(k)为滤波增益矩阵,衰退因子矩阵δ(k)由柔化因子ε和遗忘因子ρ确定,e(k)为实测转速与估计转速偏差,e<sub>0</sub>初始时刻转速偏差,ε通过模糊自适应调节确定,c(k)为衰退量,E(k)为误差矩阵,η(k)为当前时刻误差平方量、τ(k)为当前时刻估计偏差方差量;(3)根据滤波后的转速值进行转速控制磁悬浮飞轮电机控制系统的转速控制通过外环转速环,内环电流环的双环控制方法实现,转速环与电流环都采用变积分PID控制方法实现,其中转速环根据经滤波后的转速值与转速参考值进行转速环控制,转速环控制参数根据转速参考与转速偏差绝对值进行自适应调节,转速环控制输出电流参考值,用于磁悬浮飞轮电机绕组电流控制;电流环控制程序根据转速环输出的电流参考值与电流反馈值进行磁悬浮飞轮电机绕组电流控制,电流环控制参数要根据磁悬浮飞轮运行状态、参考转速值与电流偏差绝对值实时调节,电流环输出控制量直接用于驱动电机运行。
地址 100190 北京市海淀区学垸路37号