文章目录

  • 前言
  • 一、理论部分
  • 二、编写C程序
  • 三、验证

前言

在数字控制系统中使用PI控制器,需要对模拟PI控制器离散化,得到数字PI控制器。
本文用MATLAB s函数构建了增量式PI控制器,并在Simulink搭建Boost电压单闭环电路,通过与模拟PI控制器对比,验证增量式PI控制器。


一、理论部分

采样频率Tsam相当于DSP的主频。当采样时间Tsam足够小,即采样频率足够高时(后文将验证不同采样频率下,数字pi控制器逼近模拟pi控制器的程度)

二、编写C程序

这里对用c语言编写增量式PI控制器s-function的关键部分进行介绍。
2.1、定义变量
这里定义了一个名为PI的结构体。

struct P
{float kp; float ki;float PrU;//pi控制器上一次输出值float PrE;//pi控制器上一次误差float Tsam;//pi控制器采样时间float U;//pi控制器输出值(占空比)float E;//pi控制器输入值(误差)float IntVar;//中间变量(用于暂时存储输出值)
}PI;

2.2、初始化
mdlInitializeConditions是初始化程序,对PI控制器参数进行初始化赋值。

 static void mdlInitializeConditions(SimStruct *S){PI.kp=0.00002;PI.ki=3;PI.Tsam=6.25e-6;//采样时间PI.PrE=0;PI.PrU=0;}

2.3、关键程序

static void mdlOutputs(SimStruct *S, int_T tid)
{const real_T *u = (const real_T*) ssGetInputPortSignal(S,0);real_T       *y = ssGetOutputPortSignal(S,0);PI.E=u[0];//接收输入数据PI.IntVar=PI.PrU+PI.kp*(PI.E-PI.PrE)+PI.ki*PI.Tsam*PI.E;//增量式PI控制器算法y[0]=PI.IntVar;//将计算结果传递给输出y[0]PI.PrU=PI.IntVar;//将本次输出结果赋值给上一次输出PI.PrE=PI.E;//将本次误差赋值给上一次误差
}

三、验证

验证思路:在MATLAB Simulink搭建Boost电路,然后用模拟PI控制器和增量式PI控制器分别对相同的Boost电路进行电压单闭环控制,对比控制器输出占空比波形是否吻合。
3.1、电路模型

3.2、控制器占空比输出波形

增量式PI控制器与模拟PI控制器非常逼近。
当采样频率越高,曲线拟合程度越高。本例,将采样频率提高100倍,波形如下

boost电路输出电压波形

后续还会更新相关文章,如果这篇文章对你有帮助,点个小小关注~

如需下载仿真模型和C代码,请点击下方链接
Boost电压单闭环仿真模型
MATLAB增量式PI控制器s函数(C代码)

小提示:MATLAB执行C程序需要编译器,若没有,需要在MATLAB安装附加功能那里安装插件(MATLAB Support for MinGW-w64 C/C++ Compiler)。

MATLABs函数构建增量式PI控制器(文末有仿真模型及C代码)相关推荐

  1. 位置式与增量式PID控制器的说明

    理想状态下的PID控制器表达式为: 对上式左右进行拉普拉斯变换,可以得到: 为了在控制器或者计算机系统中实现PID计算,必须将上式的连续系统表达式离散化为离散系统.一般进行连续系统离散化,常用的有后向 ...

  2. 一些疫情数据分析的思路,文末提供最新数据与代码

    点击上方『早起python』关注早起 和我一起,成为更好的自己 前言 最近有一些读者后台咨询如何针对疫情数据做一些分析,甚至还有做毕业论文的关于如何获得最新的疫情数据,在之前的文章已经详细介绍了5种方 ...

  3. 【python】构建停用词表(文末附链接)

    构建停用词表 构建停用词表是数据预处理的必要步骤,可以减小不必要的开销. 哈工大.百度.川大等停用词表见GitHub链接:https://github.com/goto456/stopwords 经实 ...

  4. RM: 基于页面结构化数据生成报表,一键导出图片,生成定制图表 文末有效果图 , 开放部分代码

    背景 开发这个工具是因为一句抱怨 故事是这样的,我们公司是一个非常重视员工健康的公司,一年前老董说让HR(后面改为ZT)督促员工多多运动,可持续地位公司创造价值.并拿出了一部预算来奖励那些积极运动的人 ...

  5. 用Arduino实现霍尔编码减速电机PI调速(增量式)

    这个调速算法是用在搬运机器人上的,一方面之前没有用过PID算法,另一方面在Arduino上实现的资料也比较少,所以我想把自己的尝试过程记录下来,如果能帮到别人再好不过了. 1.硬件线路连接 这里我使用 ...

  6. 增量式pid分析 及 参数整定

    /************************************************************************** 函数功能:增量PI控制器 1.入口参数:编码器测 ...

  7. Arduino 让小车走直线的秘密 增量式PID 直流减速编码电机

    直流减速电机增量式PID 通俗易懂版 对于我一个双非学校没上过自控的电子专业本科生而言,这个东西真的是太难了,之前研究了一个A4950驱动,价格便宜,驱动能力高,安全性高,便捷性高,一句话就是比L29 ...

  8. 增量式pid+位置式PID(电机位置闭环控制)

    ps:2022更新 pid详细解释 一般很少用增量式,都是用位置式,下文增量式可以不看 本文分为几个部分: 1.编码器 2.定时器输入捕获(把定时器初始化为编码器模式) 3.pid闭环控速度 编码器配 ...

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

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

  10. c语言设计数字增量pi控制器,数字PI控制器的设计与仿真.pdf

    自动化技术与应用>2008年第27卷第10期 工 业 控制 与应 用 ndust~ ControlandApplications 数字PI控制器的设计与仿真 荣晓飞 .温莹莹 (1.临沂师范学院 ...

最新文章

  1. 为什么建议使用你 LocalDateTime ,而不是 Date?
  2. 如何制作linux文件系统,linux文件系统制作(一)
  3. 在arm linux mini2440上移植ntp服务,RTEMS 4.9.5 在 QEMU MINI2440 上的移植发布啦……
  4. 单链表之头插法的理解!
  5. 星星评价控件android开发_android自定义星级评分控件,可实现只显示实心星星
  6. 【教程】Edraw Max使用教程:如何打印大流程图?
  7. SQL Server CLR 集成简介
  8. 利用BBRSACryptor实现iOS端的RSA加解密
  9. 会议通知|2019暑期全国高校Python数据分析与实训课程高级研修班
  10. 图像处理总结:Canny边缘检测(二)
  11. python方法_详细解读Python中的__init__()方法
  12. flAbsPath on /var/lib/dpkg/status failed 解决 Cydia 红字
  13. application.properties和bootstrap.yml到底先读哪个文件
  14. excel嵌入动态二维码 含中文
  15. xp计算机护眼模式,xp系统桌面上老是显示护眼模式!(图)
  16. java图书商城项目_JavaWeb之网上图书商城-框架搭建
  17. 物联网中使用了哪些技术?
  18. 2021爱分析・数据智能平台实践报告—重构数据智能时代的数据基础设施
  19. 【OBS-STUDIO】OBSApp: OBS入口类
  20. 时间抖动(jitter)--学习笔记

热门文章

  1. “小马激活”病毒新变种分析报告
  2. 通达OA任意文件删除/未授权访问+任意文件上传漏洞复现
  3. 自动化测试框架cucumber_10分钟学会 Cucumber+Watir 自动化测试框架
  4. 初中计算机flash基本知识,初中信息技术flash课件
  5. 个人身份信息(PII)是什么?会被恶意使用吗?如何保护它?
  6. ISO/IEC 27701:2019(隐私信息安全管理扩展要求和指南)解读(一)
  7. gitlab增加p3c-hook强制代码规范
  8. 【学习与理解】:CTPN算法
  9. Visio 2019连接MySQL数据库反向工程作数据库模型图
  10. adobe mac怎么卸载 ?彻底卸载Adobe Mac软件的正确做法