谁有用C语言写的模糊PID程序输入单片机中

谁有用C语言写的模糊PID程序输入单片机中,第1张

1、把C语言编译为编程器支持的语言格式,比如常用的bin,或hex等格式。 2、如果是可在线编程的,可以用团手ISP直接进行烧录携或余。 3、如果不是可在线编程的,将单片机芯片,放入编程器,然后辩滚烧录。 注意:编译和烧录时,都要选择和单片机芯片一致的型号

PLC内部编程不直接支持PID这种复杂指令,当然也有内置的标准PID算法,不过还是推荐自己编写,一般PLC内部都有浮点数运算功能,所以只的算法逻辑能用公式写出来的就肯定可以编程。当然可能要用到指针运算等需要点编程技巧的东西,所以一定要看指令,梯形图编复杂逻辑的话真的很累的。

PLC编程

随着微处理器、计算机和数字通信技术的飞速发展,计算机搜简控制已扩展到了几乎所有的工业领域。现代社会要求制造业对市场需求作出迅速的反应,生产出小批量、多品种、多规世并裤格、低成本和高质量的产品,为了满足这一要求,生产设备和自动生产线的控制系统必须具有极高的可靠性和灵活性,PLC编程正是顺应这一要求蔽纳出现的,它是以微处理器为基础的通用工业控制装置。

基本流程

积分环节:主要是用来消除 静差 (系统稳定后输出值和设定值之间的差值,积分环节实际袜腊唯上就是偏差累积的过程,把累积的误差加到原来系统上以抵消系统造成的静差)

微分环节:反映了偏差信号的变化规律,根据偏差信号的变化规律来进行超前调节,从而增加系统的快速性

对上述公式进行离散化(采样):两个公式

增量型PID:

通过告培增量型PID公式可以看出,最终表达结果和最近三次的偏差有关,最终输出结果应该为:

首先定义结构变量体:

然后初始化变量

最后编写控制算法

基本算法,没有考虑死区问题,没有设定上下限

在启动、结束或大幅度增减设定时,短时间内系统输出有很大的偏差,会造成局纳PID运算的积分积累,导致控制量超过执行机构可能允许的最大动作范围对应的极限控制量,从而引起较大的超调,甚至是振荡。

为了克服这个问题,引入积分分离的概念,即当被控量和设定值偏差较大时,取消积分作用;当被控量接近设定值时,引入积分控制,以消除静差,提高精度。

abs :绝对值

令index=0使积分环节失效

积分饱和现象:如果系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构达到极限位置。此时计算器输出量超出正常运行范围而进入饱和区,一旦系统出现反向偏差,输出量将逐渐从饱和区退出,进入饱和区越深则退出饱和区时间越长,在这段时间里,执行机构仍然停留在极限位置而不随偏差反向而立即做出相应改变,造成性能恶化。

采用梯形积分能够减小余差,提高精度

改变积分系数,若偏差大,积分作用减弱,系数减小;若偏差小,积分作用增强,系数增大。

变积分PID的基本思想是设法改变积分项的累加速度,使其与偏差大小对应。

使整个系统的稳定速度非常快

比例系数Kp的作用是加快系统的响应速度提高系统的调节精度

积分系数Ki的作用是消除系统的稳态误差

微分系数Kd的作用是改善系统的动态特性

反应系统性能的两个参数是系统误差和误差变化律


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12296912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存