自己整的PID程序(C51,增量式PID)

发布者:konglingdeyuan最新更新时间:2016-11-16 来源: eefocus关键字:PID程序  C51  增量式PID 手机看文章 扫描二维码
随时随地手机看文章

void PID(void)
{
   //调差量 VW88 , 电压反馈量VW50,pid运算反馈量:VW10,pid给定:VW700
 int VW700,VW50;  //0-32768~+32768
 int VW500,VW502,VW504,VW506;
 long VW530,VW538;
 int VW526,VW522,VW524;
   
 uchar   Kp=7;      //P  取值0-20  书:20  PLC试验得3\1\7
 uchar Ki=4;      //I  取值0-20  书:01
 uchar Kd=4 ;       //D  取值0-10 书:18


 VW700=GeiDin;      //给定                    最大1100
 VW50=ADs[0];      //反馈        最大1024
   
 VW500=(VW50-VW700)/2;    //算出:ek  ,缩小1倍  最大1024   
 VW506=VW504;         //==算出:ek_2 移位保存     最大1024
 VW504=VW502;    //算出:ek_1      最大1024
 VW502=VW500;   //ek过渡    K1     最大1024
 

 //算出KP
 VW522=Kp*(VW500-VW504);        // KP项=Kp*(ek-ek_1) <20*1024=20480<32768
 
 //算出Ki
 VW524=Ki*VW502;                // Ki项=Ki*ek <20*1024=20480<32768    
 //算出Kd
 VW526=Kd*(VW502-2*VW504+VW506);  // K项=Kd*(ek-2ek_1+ek_2) <10*2*1024=20480<32768  
 
 //限幅VW526
 if(VW526<(-100))      //限幅
 VW526=(-100);
 if(VW526>100)      //限幅
 VW526=100; //    
 //算出Kp+Ki+Kd
 VW530=VW522+VW524+VW526;  //KP+KI+KD  =K10
 //放大差值
    
 //累计误差
 VW538=VW538+VW530;    // 累计    =0+10=K10  2\=K20
 
 //限幅
  if(VW538>36850)    //7370=134 度
  VW538=36850;     //否则为限幅值输出
 if(VW538<50)     ////控制量输出为负数,则输出0
  VW538=50;
 //输出

 A_num1=(uint)(VW538/5);
 A=A_num1/55;
  
  }


关键字:PID程序  C51  增量式PID 引用地址:自己整的PID程序(C51,增量式PID)

上一篇:C51的指针,试验
下一篇:STC89C516RD头文件

推荐阅读最新更新时间:2024-03-16 15:20

C51自学笔记】概述与准备
使用atmel公司:AT89S52 使用烧录工具:progisp 使用编写工具:Keil uVision 使用开发板:天狼星TLX-1C开发板 后续出现的代码已打包:https://download.csdn.net/download/f_zmmfs/10560847(侵删) 结构: 内部集成8位CPU,4K字节的ROM,128字节RAM,4个8位并行I/O口,一个全双工串行口,2个16位定时器/计数器,5个中断源。 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器 RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;(非记忆性)
[单片机]
【<font color='red'>C51</font>自学笔记】概述与准备
lcd液晶12232F的串口C51程序(ST7920)
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! /******************************************************/ /* */ /* 12232F串口驱动程序C51,11.0592M晶振 */ /*使用这款LCD应该要注意的问题: */ /*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器, */ /*电位器的中间脚接VO,其它二脚接VDD和VSS。 */ /*然后调节电位器的大小,直到有显示为止。若是不接的话,
[单片机]
C51单片机设计模拟I2C总线驱动程序
/********************************** I2C总线驱动 ************************************* 模块名:I2C总线驱动    型号:I2C 功能描述: 此模块包括发送数据及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,能很 方便的与用户程序进行连接并扩展。     需要注意的是,函数是采用延时方法产生 SCL 脉冲,对高晶振频率要做一定的修改!!     在写E2PROM的时候一定要延时!!!     说明: 1us机器周期,晶振频率要小于12MHz 返回 1 则操作成功,返回 0 则操作失败。 sla 为器件从地址,suba 为器件子地址。 **
[单片机]
c51单片机中断函数
以串口中断为例: 如: void serial() interrupt 4 { } 和 void serial_uart() interrupt 4 { } 两个函数的功能都是定义串口中断函数。函数名字不一样不重要,重要的是函数名字后面的interrupt 4(中断向量表地址)要正确。
[单片机]
C51编程几个有用的模块-键盘扫描模块
键盘扫描模块有两种工作方式, 一种为自动的由时钟模块调用, 另一种是由程序员自行调用。 1) 由时钟模块自动调用的方式 将时钟模块实现文件(Timer.h)及键盘扫描模块的实现文件(KBScan。c)包含进工程, 在Config.h 文件中添加TIMER_KBSCANDELAY宏。 时钟模块自动对时钟中断进行计数, 当达到TIMER_KBSCANDELAY宏所定义的值后, 自动调用键盘扫描模块中的函数KBScanProcess()进行键盘扫描,也就是说,这个宏的值可以决定按键消抖动的时间。 用户应该提供两个回调函数OnKBScan()及onKeysPressed()。 在函数OnKBScan中进行键盘扫描, 并返回扫描
[单片机]
C51单片机延时时间的计算方法解析
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsignedchar类型具有比unsignedint更优化的代码,在使用时应该使用unsignedchar作为延时变量。以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。 一.500ms延时子程序 程序: voiddelay500ms(void) { unsignedchari,j,k; for(i=15;i》0;i--) for(j=202;j》0;j--) for(k=81;k》0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2=81*2=162usDJNZ2us 二层循环m:R6*(n+3)=202*165=333
[单片机]
C51的memset
刚才看51程序,发现了一个函数memset(),以前很少见到过,写在这里记下来。 这是F1帮助查到的memset的相关解释截图 这个函数是包含在 string.h 头文件里面的,功能就是将指定长度的一个字符复制到一个数组里面,返回的则是指向数组的指针。一般用来做某段内存的初始化工作。
[单片机]
<font color='red'>C51</font>的memset
C51固定ROM地址初始化数据方法
查了很多资料,要用KEIL C51在ROM(FLASH)中固定的位置写入一个初始化数据,网上有很多办法,感觉都不是很好,我最近因为要用,所以想了一个办法来实现,大家都知道在C51成立工程时都有一个扩展名为A51的源文件,这个文件其实就是程序的初始化文件,也就是在程序的开始对堆栈等东西做一个初始化;好了话不多说;下面介绍如何使用。 1、一般的工程可以不用此文件,把此文件删除就可以;但是我们要对ROM的固定地址填入数据,所以这个文件要加在工程内。 2、打开这个文件会有很长的篇幅,这些其实都是没有用的,删除就可以,只留下最后三行就可以,因为有这个文件后,编译器要知道如何转移到你的main()。看第5条。 3、在上面一个位置就可以写入如下
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved