PID调节基础程序模版

Code:
  1. #include<string.h>
  2. #include<stdio.h>
  3. typedefstructPID{
  4. doubleSetPoint;//设定目标DesiredValue
  5. doubleProportion;//比例常数ProportionalConst
  6. doubleIntegral;//积分常数IntegralConst
  7. doubleDerivative;//微分常数DerivativeConst
  8. doubleLastError;//Error[-1]
  9. doublePrevError;//Error[-2]
  10. doubleSumError;//SumsofErrors
  11. }PID;
  12. doublePIDCalc(PID*pp,doubleNextPoint)
  13. {
  14. doubledError,
  15. Error;
  16. Error=pp->SetPoint-NextPoint;//偏差
  17. pp->SumError+=Error;//积分
  18. dError=pp->LastError-pp->PrevError;//当前微分
  19. pp->PrevError=pp->LastError;
  20. pp->LastError=Error;
  21. return(pp->Proportion*Error//比例项
  22. +pp->Integral*pp->SumError//积分项
  23. +pp->Derivative*dError//微分项
  24. );
  25. }
  26. /*====================================================================================================
  27. PID初始化
  28. =====================================================================================================*/
  29. voidPIDInit(PID*pp)
  30. {
  31. memset(pp,0,sizeof(PID));
  32. }
  33. /*====================================================================================================
  34. 主函数
  35. =====================================================================================================*/
  36. doublesensor(void)//DummySensorFunction
  37. {
  38. return100.0;
  39. }
  40. voidactuator(doublerDelta)//DummyActuatorFunction
  41. {}
  42. voidmain(void)
  43. {
  44. PIDsPID;//PIDControlStructure
  45. doublerOut;//PIDResponse(Output)
  46. doublerIn;//PIDFeedback(Input)
  47. PIDInit(&sPID);//InitializeStructure
  48. sPID.Proportion=0.5;//SetPIDCoefficients
  49. sPID.Integral=0.5;
  50. sPID.Derivative=0.0;
  51. sPID.SetPoint=100.0;//SetPIDSetpoint
  52. for(;;){//MockUpofPIDProcessing
  53. rIn=sensor();//ReadInput
  54. rOut=PIDCalc(&sPID,rIn);//PerformPIDInteration
  55. actuator(rOut);//EffectNeededChanges
  56. }
  57. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值