在设计出pi调节器后,需要对其离散化,之后存在浮点数,对于整形处理的cpu(如stm32f103)计算压力相当大,本文通过实例讲解,定标处理浮点运算,提高运算的速度。

1.问题的起因

电源开发时,一般会在一个开关周期内采样一次,闭环计算一次。

在一次开发中,选择开关频率是100k,中断时间是10us。那么所有的闭环计算需要在10us中计算完成,否则会引起中断竞争,导致cpu一直在执行中断,无法执行其他的程序,

而设计出闭环调节器后,调节器中难免会出现浮点计算,而对于目前像stm32f103来说,浮点计算压力相当大,实际测试中,也发现要闭环计算PI调节器,花费时间较长,不能在10us内计算完成。

后采用定标后,依旧超过10us,所以只能改成50khz,一个周期是20us,实际测试电压外环和电流内环总共耗时13us左右。

2.离散化

通过matlab计算出电压环的pi参数如下。

选定采样频率,采用maple使用双线性方式离散化后,如下图

T是采样频率,与开关频率一致,如果使用stm32 使用中央对齐模式,在计数器的峰值采样,可近似得到电流的平均值,本文中是锯齿波,在三角载波的顶点采样,在实际中是电流的谷点。

可得

分子上的小数需要保留一定的位数,才能保证离散化后和连续的相近性,在实际中我们尽可能保留多的小数点。

对其进行Q20定标,也就是浮点数乘以2^20.可得蓝色公式的第三行。

3.程序实例

编写离散化后的PI如下:

    uv_k=(Vref-ADC_Value[1] );    //adc 是12位, uv_k = (uv_k<<20)/113;//0.8427429893*z-0.8240194818//定标Q20Yv_k = 883680*uv_k-864047*uv_k_1+Yv_k_1; //Y_k_1,有点积分的意思。//14.72 usuv_k_1=uv_k; //当前输入赋值给前一拍,下一拍计算使用if(Yv_k>3738339534438400) //6A 数字量是 (1700*2)的Q40定标 最大电流限制在6A中。Yv_k= 3738339534438400;if(Yv_k<0)Yv_k= 0;Yv_k_1=Yv_k;//当前输出赋值给前一拍,下一拍计算使用ui_k=((Yv_k_1>>20)-ADC_Value[2]<<20 ); //3.78usui_k = (ui_k)/633; //633换算成1AYi_k = 28113550*ui_k-27267416*ui_k_1+Yi_k_1; //Y_k_1,有点积分的意思。//14.72 usui_k_1=ui_k; if(Yi_k>985162418500000)  //  500 然后Q40定标Yi_k= 985162418500000;if(Yi_k<10)Yi_k= 10;Yi_k_1=Yi_k;tempa = Yi_k>>40;  if(tempa>896)  //峰值的百分数限幅    tempa= 896;if(tempa<10)tempa= 10;TIM1->CCR2 = tempa;

程序中,Vref是电压给定,ADC_Value[1]是输出电压的采样值,uv_k是当前的输入量。uv_k_1是前一排的输入量。Yv_k是当前的输出量,Yv_k_1是前一拍的输出量。

uv_k = (uv_k<<20)/113;此处是对电压的采样值进行了Q20的定标,而/133是将电压装换为真实的电压值,数字量133是电压1V,因为建模的时候,反馈是按照单位反馈。

此处uv_k的定标是为了保留电压的小数点,防止丢失电压的精度。

Yv_k = 883680*uv_k-864047*uv_k_1+Yv_k_1;此处就是递推公式的实现,离散pi的写法。

公式是,

按照这样来说,离散化后的数学公式是

而实际程序中,我们为了书写方便, Yv_k=,Yv_k_1=

这样就得到了程序写法:Yv_k = 883680*uv_k-864047*uv_k_1+Yv_k_1;此处的Yv_k_1类似积分的作用,如误差一直存在,则Yv_k_1一直朝着一个方向跑。

uv_k_1=uv_k; 是当前的输入送给前一拍,下一次计算使用。

if(Yv_k>6597069766656) //6A的Q40定标 最大电流限制在6A中。Yv_k= 6597069766656;

此处是对电压环的输出限幅,防止积分过饱和。

此处变为Q40,是因为adc采集的量,和pi的定标都是Q20 二者相加是Q40。

ui_k=((Yv_k_1>>20)-ADC_Value[2]<<20 ); //3.78us  此处是电压环的输出,经过退标后,还原为Q20,和电流环的反馈做差,送入电流环。

定标,PI调节器的程序实现相关推荐

  1. PI调节器的算法优化

    正常PI调节器的控制算法是这样秀的: u(t)=kp[et+1Ti0te(t)dt] 这个大家应该轻车熟路,一个比例一个积分,在C中要把这玩意离散化,离散化方程如下: uKT=KPeKT+Kpij=0 ...

  2. 2021-02-27 永磁同步电机 自抗扰控制 PI调节器 矢量控制 SVPWM

    永磁同步电机 自抗扰控制 PI调节器 矢量控制 SVPWM 算法介绍 算法架构如下所示,其中采用SVPWM矢量控制,id=0.主要包括三个部分:转速环PI调节器,电流环PI调节器,SVPWM算法等. ...

  3. 三相永磁同步电机PMSM仿真 simulink仿真 永磁同步电机仿真,PI调节器

    三相永磁同步电机PMSM仿真 simulink仿真 永磁同步电机仿真,PI调节器 基于滑模速度控制器的PMSM矢量控制系统matlab仿真模型,适用于改进滑模控制器等仿真作为参考 不 有说明文档 ID ...

  4. 将双零点双极点调节器简化为普通的PI调节器

    PI控制器采用双零点双极点的方式可以表示为: G c ( s ) = K p + K i s + K d s 1 + α T d s G_{c}(s)=K_{p}+\frac{K_{i}}{s}+\f ...

  5. 永磁同步电机PMSM直接转矩滞环控制 采用三闭环控制:转速外环采用PI调节器,转矩环和磁链环经过滞环后得到PWM脉冲

    永磁同步电机PMSM直接转矩滞环控制 Matlab/Simulink仿真模型(成品) 1.采用三闭环控制:转速外环采用PI调节器,转矩环和磁链环经过滞环后得到PWM脉冲 2.采用DTC直接转矩控制 3 ...

  6. 永磁同步电机(PMSM)磁场定向控制(FOC)电流环PI调节器参数整定

    文章目录 前言 一.调节器的工程设计方法 二.电流环PI调节器的参数整定 2.1.电流环的结构框图 2.2.典型I型系统 2.3.电流环PI参数整定计算公式 三.电流环PI调节器设计实例 3.1.永磁 ...

  7. 双馈风力发电机DFIG滑模控制SMC MATLAB/Simulink仿真模型 采用PI调节器为外环滑模控制器SMC作为内环控制,跟传统的双PI环相比,功率的很随性更好

    双馈风力发电机DFIG滑模控制SMC MATLAB/Simulink仿真模型(成品) 1.采用非线性控制滑模控制策略 2.采用PI调节器为外环滑模控制器SMC作为内环控制,跟传统的双PI环相比,功率的 ...

  8. 浅谈模糊PI调节器的优缺点

    1 模糊控制理论 智能控制包括BP神经网络.机器学习.最优控制等方法,其中模糊控制理论属于智能控制的一个重要分支,是现代控制理论中基于模糊集合论以及模糊推理而衍生的控制方法.最早的"模糊&q ...

  9. 数字PI调节器_位置式/增量式_区别原理

    PI调节器是电力拖动自动控制系统中最常用的一种控制器 数字控制器需要对模拟控制器进行离散化 位置式PI 时域表达式转差分方程后的表达式: u(k)第K次的输出:e(k)第k次的误差:Tsam采样周期: ...

最新文章

  1. P4178 Tree (点分治)
  2. RMAN快速入门指南
  3. 超神线段树 山海经
  4. 第五课 formal method 的课件和翻译,原来老师用latex打印的,pdf转成markdown,之后翻译的
  5. html 树形结构_HTML学习之语义化标签
  6. [蓝桥杯2016决赛]反幻方-next_permutation枚举
  7. Dubbo:RPC原理
  8. 腾讯阿里都在用!机器学习最热研究方向入门,附学习路线图
  9. 坐标轨迹计算_工业机器人工具坐标系和用户坐标系的区别与联系
  10. windows curl ssl版本编译
  11. SuperMap地图系列:坐标系的那些事
  12. QQ空间说说自动删除代码-真的自动
  13. kubernetes高可用集群web页面部署
  14. 华硕笔记本电脑开机进入bios
  15. 图片报道:2008年12月4日夜,暴风雪突袭烟台(下)
  16. Fastadmin隐藏后台登录入口地址?
  17. 你是真的“C”——详解函数递归+求解青蛙跳台阶问题
  18. 博士毕业年龄如何计算机,紧缺专业博士因年龄问题,毕业等于失业(转载)
  19. Serv-U安装方法
  20. 分类器模型评价指标之ROC曲线

热门文章

  1. 基于STM32设计的老人防摔倒报警设备(OneNet)
  2. 新媒体运营必备的10款工具
  3. go语言基础-函数应用
  4. android os 小米系统,小米全新 OS 自研底层,要挑战最强的 iOS 系统
  5. 天天用 Spring ,Bean 懒加载原理你还不懂吗?
  6. openfiler搭建
  7. SRM 676 div1 hard
  8. Python学习之类和对象
  9. 【自动化】初见 - 最强浏览器插件 《油猴Tampermonkey》 开发和发布
  10. vue项目中使用jsplumb遇到的问题