PWM.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #ifndef PWM_H
  2. #define PWM_H
  3. #ifdef __TEMPCTRL_DEF
  4. #define TEMPCTRLEXTERN
  5. #else
  6. #define TEMPCTRLEXTERN extern
  7. #endif
  8. #include <stdio.h>
  9. #include <ctype.h>
  10. #include <stdlib.h>
  11. #include <math.h>
  12. #include <stdarg.h>
  13. #include <string.h>
  14. #define RadiatorTemp 400
  15. #define LoopChannel 6
  16. TEMPCTRLEXTERN double dTemperature[16];
  17. TEMPCTRLEXTERN unsigned int dTemperatureAD[16];
  18. TEMPCTRLEXTERN unsigned int g_uiGetPWM[6];
  19. TEMPCTRLEXTERN unsigned int PumpLPwm;
  20. TEMPCTRLEXTERN unsigned int g_usTlimit;
  21. TEMPCTRLEXTERN unsigned int DA_FAM,DA_VIC,DA_ROX,DA_CY5;
  22. //TEMPCTRLEXTERN unsigned int g_uiOverTempCnter,g_uiOverTempCnter1,g_uiOverTempCnter2;
  23. TEMPCTRLEXTERN unsigned int g_uiOverTempCnter[6];
  24. TEMPCTRLEXTERN unsigned int mn;
  25. typedef enum
  26. {
  27. PID_COM_INC = 0, /*调速*/
  28. PID_COM_HEAT = 1, /*加热*/
  29. PID_COM_COOL = 2, /*制冷*/
  30. PID_COM_TEMPDRV8870 = 3, /*加热制冷*/
  31. PID_COM_THIRDPART_MOTOR ,/*第三方模块*/
  32. PID_COM_TEMPDRV8873 , /*加热制冷*/
  33. PID_PROPORTIONALVALVE , /*真空比例阀*/
  34. PIDTYPENUMBER
  35. } enPidTypeDefine;
  36. typedef enum
  37. {
  38. PID_IDL, /*空闲*/
  39. PID_OVERHEAT, /*快速拉升*/
  40. PID_OVERHEATLAST, /*过充维持*/
  41. PID_NORMAL, /*PID调节*/
  42. PID_ERR, /*传感器故障ERROR*/
  43. } enPIDStatsDef;
  44. typedef struct _TEMPCHN_{
  45. double fTargetTemperature;
  46. double fCurrentTemperature;
  47. double fBlockTargetTemp;
  48. double fTubeTargetTemp;
  49. double OverTempthreshold;
  50. double OverTempCoolthreshold;
  51. float fTargetSpeed;
  52. float fCurrentSpeed;
  53. long fHoldPWM;
  54. long MAXPWM;
  55. long lSetPWM;
  56. unsigned int timer0;
  57. float HOTtemp;
  58. float CODEtemp;
  59. unsigned char cCtrlMode;
  60. unsigned char cHeatOrRefrig;
  61. unsigned char cBlockTempAriv,cBlockFirstAriv;//
  62. unsigned char PeltierOvertempCnter,TimerForPeltier,cRefrigTimer;
  63. unsigned char cRefrigMode;
  64. unsigned char cTubeTempAriv;//
  65. unsigned char fistAriv;//
  66. unsigned char cOverTempCnter;//
  67. unsigned char FallingTempCter;
  68. unsigned char cTubeMode;//0: block; 1:tube ; default->tube
  69. unsigned char cPeltierRun;
  70. enPIDStatsDef pidst;
  71. unsigned int pidRumtime;
  72. }TEMPCHN;
  73. TEMPCTRLEXTERN TEMPCHN TempChn[6];
  74. typedef struct __TEMPPARA{
  75. double fHwK1;
  76. double fHwK2;
  77. double fHwB;
  78. float fK1;
  79. float fK2;
  80. float fB;
  81. float TTk1;
  82. float TTk2;
  83. float TTb;
  84. double fSum;
  85. double fErr;
  86. double fErrLast;
  87. double fDerr;
  88. double fVlSum;
  89. float fVlOutP;
  90. float fVlOut;
  91. float fVlOutR;
  92. float realVlOutR;
  93. short iKp[3];
  94. short iKi[3];
  95. short iKd[3];
  96. float fPowerCoef;
  97. float fPowerCoefdown;
  98. float HoldPWMa;
  99. float HoldPWMb;
  100. float HoldPWMc;
  101. float HoldPWMa1;
  102. float HoldPWMb1;
  103. float HoldPWMc1;
  104. }TEMPPARA;
  105. TEMPCTRLEXTERN TEMPPARA TempPara[7];
  106. #define MODEMRANGE 3
  107. #define TUBERANGE 3
  108. #define TUBEADD 2
  109. #define TUBESUB 2
  110. TEMPCTRLEXTERN unsigned int MCUAdcBuff[9][25],Bubble_MCUAdcBuff[15][25];
  111. TEMPCTRLEXTERN unsigned int Target_temp,Target_temp1,Target_temp2;
  112. TEMPCTRLEXTERN unsigned int Real_temp[8];
  113. TEMPCTRLEXTERN unsigned char Temp_count;
  114. TEMPCTRLEXTERN unsigned char Temp_count1;
  115. TEMPCTRLEXTERN double g_dTarget_temp;
  116. TEMPCTRLEXTERN unsigned int CAPTarget_temp[2];
  117. TEMPCTRLEXTERN unsigned int CAPTarget_temp1[2];
  118. TEMPCTRLEXTERN double CAPReal_temp[2];
  119. TEMPCTRLEXTERN float CAPTk[2],CAPTTk[2];
  120. TEMPCTRLEXTERN float CAPTb[2],CAPTTb[2];
  121. TEMPCTRLEXTERN float g_fFINReal_Temp;
  122. TEMPCTRLEXTERN unsigned int set_Target_temp;
  123. TEMPCTRLEXTERN void PeltierCtrler(void);
  124. TEMPCTRLEXTERN void CAPPeltierCtrler(void);
  125. TEMPCTRLEXTERN void SetPWM(unsigned char ucChannel ,long uiDuty);
  126. TEMPCTRLEXTERN void InitPWM(void);
  127. TEMPCTRLEXTERN void InitTempCtlr(void);
  128. TEMPCTRLEXTERN unsigned char ScheduleOperate(unsigned char chn);
  129. TEMPCTRLEXTERN char fBlockbuffer;
  130. TEMPCTRLEXTERN short delays;
  131. #endif