c语言增量pi调节程序,增量式PI控制函数源代码(C语言)
增量式PI控制函数源代码(C语言
增量式PI控制函数源代码(C语言)
最近在做一个项目时,把一直用的PI控制的汇编算法解译成了C语言代码,发到这里,与大家共享。这个代码是在XC164CS和XC167CI上测试的。
1、PI控制器C语言程序实现:
void PI_Controller(TPI * PI, int NewInput, int * Result)
{
NewError = PI->SetValue - NewInput; //当前误差
PI->Integral = ( PI->A0 ) * NewError + ( PI->A1 ) * (PI->Error); //控制量增量
PI->Error = NewError; // Error数据更新,给下一次PI运算使用
if ( PI->Integral > PI->Limit )
{
PI->Integral = PI->Limit;
}
else if ( PI->Integral < -( PI->Limit ) )
{
PI->Integral = -( PI->Limit );
}
* Result = (PI->Integral);
}
算法的导出可以追溯到增量式PID控制的离散计算公式。
2、初始化程序
void InitPIController(TPI * Data, int Kp, int Ki, int Limit)
{
Data->SetValue = 0;
Data->A0 = Kp+Ki;
Data->A1 = -Kp;
Data->Limit = Limit;
Data->Error = 0;
}
其中,Kp是比例系数,Ki = Kp * T/Ti 是积分系数
Kp越大,比例环节的作用越明显;Ki越大,积分环节的作用越明显。
原因是:积分环节的原始模型是 1 / ( Ti * s)
从式中看出,积分作用与Ti成反比,Ti越大,积分作用越小。
但是,Ki 又和Ti成反比,所以,Ki越大,积分作用越大。
3、其中结构体类型定义
typedef struct
{
int SetValue;
int A0; /* gain proportionnal /
int A1; /*
gain integral /
int Limit; /* limit of the output -> saturation */
long int Integral;
int Error;
} TPI;
c语言增量pi调节程序,增量式PI控制函数源代码(C语言)相关推荐
- 永磁同步电机pmsm 双闭环foc控制系统 双pi调节 一共三个pi模块调参方式为ti的方法
永磁同步电机pmsm 双闭环foc控制系统 双pi调节 一共三个pi模块调参方式为ti的方法 采用函数编写简单易懂 其中svpwm模块也是函数方便理解 建议买模型对着书 一天即可理解 本仿真与其他仿真 ...
- bmp灰度图像的c语言读,256级灰度BMP文件读写的源代码+c语言图像处理.doc
256级灰度BMP文件读写的源代码c语言图像处理 恬鸥津酶澡硷颈晌堕耀贱剃记揉老硝喂及谨总卧真宁谎桐危擦抽电狰侯亚智搏椅捣尾捐包嚎穿湛嚏焉队柏拽砾桃潍詹矢钟候拙伪蜜邪有说栖站掠恒吻蔽矾亏玲坎谬溜巷疵悍 ...
- c语言设计体育打分程序,校运会成绩录入系统部分C语言源代码设计
部分代码实例 界面 图4-1 分数统计系统程序主界面4.2模块(或子程序)1(标识符)源码 正文宋体小四号,正文段落和标题都是1.5倍行距,正文段落首行缩进2字符 这段程序的作用是检验输入的信息是否满 ...
- c语言的串口ymodem程序,ymodem源码(基于C语言实现)
基于类串口通信的文件传输协议,ymodem应用非常广泛,比如在MCU IAP中,常用的就是这种协议.ymodem是xmodem的改进版协议,具有传输快速稳定的优点.它可以一次传输1024字节的信息 ...
- 用c语言 编写桌面应用程序,谁能帮我用C语言编写“动态桌面啊”!!!急呀!!!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这周程序设计啊,我这有个例子,哪位大哥给改改也行啊 #include #include #include #include #include #inclu ...
- c语言ifft,用于ARM上的FFT与IFFT源代码-C语言
/******************************************************************************* ** 程序名称:快速傅里叶变换(FFT ...
- c语言程序字体放大,C语言写的俄罗斯方块程序减小字体 增大字体 作者.docx
C语言写的俄罗斯方块程序减小字体 增大字体 作者 C语言写的俄罗斯方块程序减小字体增大字体作者:佚名来源:不详发布时间:2009-9-21 1:11:22收藏到网摘:合作洽谈大概在最近两天之内编码完成 ...
- 数字PI调节器_位置式/增量式_区别原理
PI调节器是电力拖动自动控制系统中最常用的一种控制器 数字控制器需要对模拟控制器进行离散化 位置式PI 时域表达式转差分方程后的表达式: u(k)第K次的输出:e(k)第k次的误差:Tsam采样周期: ...
- pi双闭环调节c语言程序,数字PI调节双闭环PWM调速系统设计.doc
数字PI调节双闭环PWM调速系统设计 运动控制系统期中试题08级 数 字 PI 调 节 双 闭 环 PWM 调 速 系 统 设 计 自动化 数字PID调节双闭环PWM调速系统设计 摘要:以双极式可逆P ...
- c语言程序位置式pid算法,位置式PID算法的C语言代码
描述 位置式PID的C语言写法详解 PID调节口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积 ...
最新文章
- ET框架笔记 (笑览世界写)(转)
- windows环境安装haproxy及初步配置负载均衡使用示例
- 问题 F: 小鱼的格子裁剪(dfs)
- 我从#100DaysOfCode中学到的东西
- 为什么我做数据库类的程序要用代码生成器,而且是前前后后,反反复复 [转]...
- 谷歌终于拒绝 AI 武器化了!
- Java读取URL到字符串
- 学习Spring必学的Java基础知识(2)----动态代理
- 向上造型和向下造型_动漫美少年漫画造型-仰视、俯视、情感表现
- java两个数组中不同的数字_【Java】 剑指offer(56-1) 数组中只出现一次的两个数字...
- android 平板怎么截图,平板电脑怎样截图
- Ubuntu LTS 18.04 双硬盘双系统安装以个人优化
- 凯撒密码C语言用ASCII码,凯撒密码帮助ASCII循环
- 转-Linux下装飞秋
- 《乔布斯传》圈点(2)
- 法兰克FANUC自动分中,自动分中仪
- 利用Python 代码实现人体肤色检测
- 数据分析项目---利用mysql+tableau进行客户流失分析(完结)
- ssh互信 ssh私钥免密登录
- 第三节-函数 (上)