熟女是什么意思| 被弹颏是什么意思| 梦见下大雨是什么意思| 三七粉有什么功效| 过敏性紫癜吃什么药| 什么病会引起牙疼| 癣是什么| 智能眼镜有什么功能| 不什么不什么的四字词语| 多吃蒜有什么好处和坏处| 月经期间吃什么水果好| 山东登州府现在叫什么| 汪字五行属什么| 七月初七是什么节日| 猪咳嗽用什么药好得快| 吃什么血脂降的最快| 下面流出发黄的液体是什么原因| 牙疼用什么药| 电器火灾用什么灭火器| 频繁做噩梦是什么原因| 痛风挂号什么科| 濑粉是什么| 什么是佝偻病有什么症状| paris什么牌子| 家财万贯是什么生肖| 早搏应该吃什么药| 8月份是什么星座| 格局小是什么意思| dfs是什么| 慢性萎缩性胃炎c2是什么意思| 舒服的意思是什么| 8.5是什么星座| 什么叫流产| 发低烧吃什么药| 嗓子发苦是什么原因| 中午12点半是什么时辰| 玉米淀粉能做什么美食| 4月29号是什么星座| 1月29号什么星座| 进是什么结构| renewal什么意思| 红斑狼疮吃什么药| 社保缴费基数什么意思| 发烧呕吐是什么原因| 手指头红是什么原因| 脚趾麻是什么原因| 为什么小腹隐隐作痛| 黎明破晓是什么意思| 农历五月二十四是什么星座| 膀胱过度活动症是什么原因引起的| 人体最长的骨头是什么| 儿童风热感冒吃什么药| 女人梦见棺材代表什么| 便血是什么样的| 口干是什么病| 嘌呤是什么| 舌头疼痛吃什么药| 霉菌性炎症用什么药效果最好| 小儿鼻炎用什么药好| 四点水的字与什么有关| 鲔鱼是什么鱼| 公安厅长是什么级别| 成都有什么特色美食| 玄武岩属于什么岩石| 16588a是什么尺码女装| 咳嗽吃什么药| 黑蛇是什么蛇| 吃醪糟有什么好处| 氨气对人体有什么危害| 血糖高什么不能吃| 朱元璋是什么生肖| 哔哩哔哩是什么| 重阳节吃什么| 瑞舒伐他汀什么时候吃最好| 1997年7月1日属什么生肖| 膀胱壁增厚毛糙是什么意思| 人间尤物什么意思| 甲亢在中医里叫什么病| 蚊子害怕什么| 什么两难| 什么时候普及高中义务教育| 震颤是什么病| 为什么一直不怀孕是什么原因| dmc是什么意思| 夏天适合养什么花| 天蝎座有什么特点| 辰时是什么时候| 什么是临床医学| 什么什么大叫| 1940年出生属什么生肖| 淘宝什么时候有活动| 为什么有| 什么样的高山| 哥斯拉是什么| 女性肾虚是什么原因导致的| 存是什么生肖| 甲硝唑吃多了有什么危害| 误人子弟什么意思| 内招是什么意思| 梦见李子是什么意思| 什么是骨癌| 531是什么意思| 姐姐的孩子叫我什么| 请问支气管炎吃什么药最有效| 喝山楂泡水有什么功效| 前列腺增生吃什么食物好| 母亲节送婆婆什么礼物| 水煎是什么意思| 闲是什么生肖| 大肠杆菌感染吃什么药| 面瘫是什么原因引起的| 马牛羊鸡犬豕中的豕指的是什么| 狐臭是什么原因| 袋鼠喜欢吃什么食物| 11月10号是什么星座| 辟谷有什么好处| 血脂高看什么指标| 三黄鸡是什么鸡| 孩子咬指甲什么原因| 什么水果含铁量最高| 牛郎织女是什么意思| 能屈能伸是什么生肖| 十岁小孩尿床是什么原因| 肉苁蓉有什么功效| 顺产和剖腹产有什么区别| 脑子瓦特了什么意思| hpv是检查什么的| 风热感冒吃什么药好| 梦见大水是什么预兆| 蓝风铃香水什么味道| 唏嘘不已的意思是什么| 肌肉痉挛用什么药能治好| 脑鸣吃什么药最有效| 广西北海有什么好玩的地方| 开除是什么意思| 英纳格手表什么档次| 肋间神经痛吃什么药| 头部神经痛吃什么药好| 夏天怕热冬天怕冷是什么体质| 10月3号是什么星座| 失眠缺什么维生素| 卵巢囊肿是什么| 疟疾病是什么病| 188是什么意思| 肝郁症是什么病| 什么的眉头| nuxe是什么牌子| 柠檬酸是什么| 颜值爆表是什么意思| 倒数第二颗牙齿叫什么| 吃枸杞有什么功效| 医学hr是什么意思| 神经损伤吃什么药最好| 诞生是什么意思| 嘴臭是什么原因引起的| 什么水果含糖量高| 包皮炎吃什么药| 荼蘼是什么意思| 两个夫一个车是什么字| 浅尝辄止什么意思| 血分析能查出什么| 港澳通行证办理需要什么材料| 什么水果寒凉性| 拔牙挂什么科室| 家慈是对什么人的称呼| 四大才子是什么生肖| 吉吉念什么| 孕妇脚抽筋是什么原因| 七月七是什么节| 部分导联st段改变是什么意思| 孩子上吐下泻吃什么药| 柠檬泡水有什么好处| 拉绿色的屎是什么原因| 减肥吃什么菜最好| 洛阳有什么山| 什么减肥最快不反弹| 今天属什么生肖老黄历| 莲蓬什么时候成熟| 脚水肿是什么原因引起的| 关节外科主要看什么| 6月16日是什么星座| 亦或是什么意思| 天葵是什么| 甘油三酯高吃什么能降下来| 稀奶油是什么奶油| 一什么石头| 右胸是什么器官| 鸡蛋和面粉可以做什么好吃的| 巴扎黑是什么意思| 核糖体由什么组成| 肠胃性感冒吃什么药| 严重脱发是什么病先兆| 木姜子是什么东西| 排骨炖什么菜好吃| 8.26是什么星座| 上升水瓶座为什么可怕| 左肺下叶钙化灶是什么意思| 果肉属于什么组织| 24D是什么激素| 为什么高血压| 老佛爷是什么牌子| 兔子可以吃什么| 无机盐包括什么| 福州五行属什么| 水逆退散是什么意思| 海扶治疗是什么| 8月23是什么星座| 排毒吃什么最好能排脸上毒| 39岁属什么| 周易是什么| gi什么意思| 胃食管反流咳嗽吃什么药| 1月27号是什么星座| 关羽字什么| 什么药可以延长射精| 牙龈萎缩用什么牙膏好| 腰肌劳损贴什么膏药| 保护眼睛用什么眼药水| nt是什么币| 酸菜鱼用什么鱼做好吃| 乳头瘤病毒是什么病| 扩容是什么意思| 巧克力有什么功效与作用| 为什么会得中耳炎| 停电了打什么电话| 屁眼疼痛什么原因| 黄芪什么人不能吃| 肝火吃什么药| 什么洗面奶最好用| 细水长流是什么生肖| eb病毒阳性是什么意思| 井木犴是什么动物| 参芪颗粒适合什么人吃| 奥硝唑和甲硝唑有什么区别| 杜牧字什么号什么| 日本的国宝是什么| 为什么要做羊水穿刺检查| 国企是什么意思| 尿急尿痛吃什么药| 诸葛亮是一个什么样的人| 新生儿为什么会有黄疸| 何去何从是什么意思| 儿童掉头发什么原因| 85属什么生肖| 伏天从什么时候开始| vocabulary是什么意思| 毋庸置疑什么意思| 百忙之中什么意思| 肚子胀痛吃什么药| 90年属什么| 梦见杀人是什么意思| 语什么心什么| 川崎病是什么症状| 龙眼树上的臭虫叫什么| 夏天什么时候最热| 蕾丝边是指什么意思| 神机妙算是什么意思| 酸菜鱼用什么鱼做好吃| 什么不生四字成语| 疽是什么意思| 肝郁吃什么中成药| 拿的起放的下是什么意思| 炙什么意思| 阿尔马尔是什么药| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 综合技术 ? 电源与模拟 ? msp430单片机中增量式pid算法的C实现方法

共4条 1/1 1 跳转至

msp430单片机中增量式pid算法的C实现方法

工程师
2025-08-04 18:46:56     打赏
百度 此外,首批33条自动驾驶测试道路划定完毕并向社会公布。

#include 
  #include

  struct _pid {
   int pv; /*integer that contains the process value*/
   int sp; /*integer that contains the set point*/
   float integral;
   float pgain;
   float igain;
   float dgain;
   int deadband;
   int last_error;
  };

  struct _pid warm,*pid;
  int process_point, set_point,dead_band; 
  float p_gain, i_gain, d_gain, integral_val,new_integ;; 



  /*------------------------------------------------------------------------ 
  pid_init 

  DESCRIPTION This function initializes the pointers in the _pid structure 
  to the process variable and the setpoint. *pv and *sp are 
  integer pointers. 
  ------------------------------------------------------------------------*/ 
  void pid_init(struct _pid *warm, int process_point, int set_point)
  { 
   struct _pid *pid; 

   pid = warm; 
   pid->pv = process_point; 
   pid->sp = set_point; 
  } 


  /*------------------------------------------------------------------------ 
  pid_tune 

  DESCRIPTION Sets the proportional gain (p_gain), integral gain (i_gain), 
  derivitive gain (d_gain), and the dead band (dead_band) of 
  a pid control structure _pid. 
  ------------------------------------------------------------------------*/ 

  void pid_tune(struct _pid *pid, float p_gain, float i_gain, float d_gain, int dead_band) 
  { 
   pid->pgain = p_gain; 
   pid->igain = i_gain; 
   pid->dgain = d_gain; 
   pid->deadband = dead_band; 
   pid->integral= integral_val; 
   pid->last_error=0; 
  } 

  /*------------------------------------------------------------------------ 
  pid_setinteg 

  DESCRIPTION Set a new value for the integral term of the pid equation. 
  This is useful for setting the initial output of the 
  pid controller at start up. 
  ------------------------------------------------------------------------*/ 
  void pid_setinteg(struct _pid *pid,float new_integ)
  { 
   pid->integral = new_integ; 
   pid->last_error = 0; 
  } 

  /*------------------------------------------------------------------------ 
  pid_bumpless 

  DESCRIPTION Bumpless transfer algorithim. When suddenly changing 
  setpoints, or when restarting the PID equation after an 
  extended pause, the derivative of the equation can cause 
  a bump in the controller output. This function will help 
  smooth out that bump. The process value in *pv should 
  be the updated just before this function is used. 
  ------------------------------------------------------------------------*/ 
  void pid_bumpless(struct _pid *pid) 
  { 

   pid->last_error = (pid->sp)-(pid->pv); 

  } 

  /*------------------------------------------------------------------------ 
  pid_calc 

  DESCRIPTION Performs PID calculations for the _pid structure *a. This function uses the positional form of the pid equation, and incorporates an integral windup prevention algorithim. Rectangular integration is used, so this function must be repeated on a consistent time basis for accurate control. 

  RETURN VALUE The new output value for the pid loop. 

  USAGE #include "control.h"*/ 


  float pid_calc(struct _pid *pid)
  { 
   int err;
   float pterm, dterm, result, ferror; 

   err = (pid->sp) - (pid->pv); 
   if (abs(err) > pid->deadband) 
   { 
   ferror = (float) err; /*do integer to float conversion only once*/ 
   pterm = pid->pgain * ferror; 
   if (pterm > 100 || pterm < -100)
   {
   pid->integral = 0.0; 
   }
   else 
   { 
   pid->integral += pid->igain * ferror; 
   if (pid->integral > 100.0) 
   {
   pid->integral = 100.0; 
   }
   else if (pid->integral < 0.0) pid->integral = 0.0; 
   } 
   dterm = ((float)(err - pid->last_error)) * pid->dgain; 
   result = pterm + pid->integral + dterm; 
   } 
   else result = pid->integral; 
   pid->last_error = err; 
   return (result); 
  }


  void main(void)
  {
   float display_value;
   int count=0;

   pid = &warm;

  // printf("Enter the values of Process point, Set point, P gain, I gain, D gain \n");
  // scanf("%d%d%f%f%f", &process_point, &set_point, &p_gain, &i_gain, &d_gain);



   process_point = 30;
   set_point = 40;
   p_gain = (float)(5.2);
   i_gain = (float)(0.77);
   d_gain = (float)(0.18);



   dead_band = 2;
   integral_val =(float)(0.01);


   printf("The values of Process point, Set point, P gain, I gain, D gain \n");
   printf(" %6d %6d %4f %4f %4f\n", process_point, set_point, p_gain, i_gain, d_gain);

   printf("Enter the values of Process point\n");

   while(count<=20)
   {



   scanf("%d",&process_point);

   pid_init(&warm, process_point, set_point);
   pid_tune(&warm, p_gain,i_gain,d_gain,dead_band);
   pid_setinteg(&warm,0.0); //pid_setinteg(&warm,30.0);

   //Get input value for process point
   pid_bumpless(&warm);

   // how to display output
   display_value = pid_calc(&warm); 
   printf("%f\n", display_value); 
   //printf("\n%f%f%f%f",warm.pv,warm.sp,warm.igain,warm.dgain); 
   count++; 

   } 

  }

 msp430单片机中增量式pid算法的C实现方法.rar (1.64 KB, 下载次数: 0) 




关键词: msp430     单片     机中     增量     算法     实现     方法    

工程师
2025-08-04 22:29:31     打赏
2楼

学到了


工程师
2025-08-04 22:49:32     打赏
3楼

感谢分享


工程师
2025-08-04 17:24:42     打赏
4楼

感谢楼主分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
男性尿分叉是什么原因 脐橙什么意思 www是什么网 中午吃什么菜 人外是什么意思
mar是什么意思 起眼屎是什么原因 犯罪是什么意思 真情流露是什么意思 喉咙发炎咳嗽吃什么药好得快
股骨长是什么意思 1.1是什么星座 耐力板是什么材质 麻油是什么油 罗汉果泡水喝有什么作用
佟丽娅是什么民族 三七花泡水喝有什么功效和作用 ac是什么基团 鳞状上皮炎症反应性改变是什么意思 脑梗吃什么鱼最好
东边日出西边雨是什么生肖hcv8jop1ns4r.cn 界限性脑电图是什么意思hcv8jop9ns2r.cn 雄激素是什么意思hanqikai.com 排骨炒什么配菜好吃hcv7jop6ns1r.cn 肺气虚吃什么食物hcv9jop4ns3r.cn
煤气是什么味道hcv7jop9ns1r.cn 尿糖是什么意思96micro.com 睡觉磨牙齿是什么原因hcv8jop1ns5r.cn 甲胎蛋白是什么指标hcv8jop3ns3r.cn 拉屎是绿色的是什么原因hcv9jop0ns0r.cn
月经有点黑是什么原因hcv7jop5ns5r.cn 肚子不舒服挂什么科hcv8jop6ns2r.cn 怀孕查甲功是什么意思hcv9jop6ns6r.cn 多走路有什么好处gysmod.com 当医生要什么学历xianpinbao.com
眼睛红肿是什么原因引起的hcv9jop2ns3r.cn 为什么男怕招风耳hcv8jop6ns6r.cn 尿素测定是查什么hcv8jop5ns0r.cn ab型血可以输什么血hcv9jop4ns1r.cn 月经来了有血块是什么原因hcv7jop5ns5r.cn
百度