yidong.fan 3 сар өмнө
parent
commit
86c5ca054d

+ 35 - 47
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/EEPROM.c

@@ -319,6 +319,18 @@ void Read_Sys_EE_03(void){
         EE_StrRead(0x454, (unsigned char*) &TempChn[5].HOTtemp, 4);
         EE_StrRead(0x458, (unsigned char*) &TempChn[5].CODEtemp,4);
 
+
+        for(i=0;i<6;i++){   
+			 EE_StrRead(0x460+i*24, (unsigned char*) &TempPara[i].iKp[0],4);
+			 EE_StrRead(0x464+i*24, (unsigned char*) &TempPara[i].iKi[0],4);
+			 EE_StrRead(0x468+i*24, (unsigned char*) &TempPara[i].iKd[0],4);
+			 EE_StrRead(0x46c+i*24, (unsigned char*) &TempPara[i].iKp[1],4);
+			 EE_StrRead(0x470+i*24, (unsigned char*) &TempPara[i].iKi[1],4);
+			 EE_StrRead(0x474+i*24, (unsigned char*) &TempPara[i].iKd[1],4);
+			 EE_StrRead(0x6A0+i*8, (unsigned char*) &TempChn[i].OverTempthreshold,4);
+			 EE_StrRead(0x6A4+i*8, (unsigned char*) &TempChn[i].OverTempCoolthreshold,4);
+        }     
+
         for (i = 0; i < 6; i++) {
             EE_StrRead(0x498 + 4 * i, (unsigned char*) &TempPara[i].fPowerCoef, 4);  
             EE_StrRead(0x4C8 + 4 * i, (unsigned char*) &TempPara[i].fPowerCoefdown, 4); 
@@ -378,55 +390,31 @@ void Read_Sys_EE_05(void){
         
         CAPTarget_temp[0] = g_tEE.CAPTarget_temp[0];
         CAPTarget_temp[1] = g_tEE.CAPTarget_temp[1]; 
-        
-        
-//        EE_StrRead(0x58E, (unsigned char*) &g_tEE.P0, 2);          //
-//        EE_StrRead(0x590, (unsigned char*) &g_tEE.I0, 2);          //      
-//        EE_StrRead(0x592, (unsigned char*) &g_tEE.D0, 2);          //
-//        EE_StrRead(0x594, (unsigned char*) &g_tEE.P1, 2);          //
-//        EE_StrRead(0x596, (unsigned char*) &g_tEE.I1, 2);          //      
-//        EE_StrRead(0x598, (unsigned char*) &g_tEE.D1, 2);          //
-//        EE_StrRead(0x59A, (unsigned char*) &g_tEE.P2, 2);          //
-//        EE_StrRead(0x59C, (unsigned char*) &g_tEE.I2, 2);          //      
-//        EE_StrRead(0x59E, (unsigned char*) &g_tEE.D2, 2);          //
-//        
-//        EE_StrRead(0x5A0, (unsigned char*) &g_tEE.WK1, 4);         //
-//        EE_StrRead(0x5A4, (unsigned char*) &g_tEE.WK2, 4);         //      
-//        EE_StrRead(0x5A8, (unsigned char*) &g_tEE.WB, 4);          //
-//        
-//        EE_StrRead(0x5B4, (unsigned char*) &g_tEE.WK11, 4);         //
-//        EE_StrRead(0x5B8, (unsigned char*) &g_tEE.WK22, 4);         //      
-//        EE_StrRead(0x5BC, (unsigned char*) &g_tEE.WB1, 4);          //        
+   
+
+//        for(i=0;i<6;i++){         
+//            TempPara[i].iKp[0]=5000;
+//            TempPara[i].iKp[1]=5000;
+//            TempPara[i].iKp[2]=5000;
+//
+//            TempPara[i].iKi[0]=20;
+//            TempPara[i].iKi[1]=20;
+//            TempPara[i].iKi[2]=20;
 //
-//        EE_StrRead(0x5AC, (unsigned char*) &g_tEE.UP, 4);         //      
-//        EE_StrRead(0x5B0, (unsigned char*) &g_tEE.DOWN, 4);       //       
+//            TempPara[i].iKd[0]=8000;
+//            TempPara[i].iKd[1]=8000;
+//            TempPara[i].iKd[2]=8000;
+//
+//            TempPara[i].HoldPWMa = 0.9197;               
+//            TempPara[i].HoldPWMb = 60.465;             
+//            TempPara[i].HoldPWMc = -1572.1;                
+//            
+//            TempPara[i].HoldPWMa1 = 0.9197;               
+//            TempPara[i].HoldPWMb1 = 60.465;              
+//            TempPara[i].HoldPWMc1 = -1572.1;                      
+//        }        
+//        
 //        
-//        EE_StrRead(0x5C0, (unsigned char*) &delays, 2);          //  
-//         EE_StrRead(0x5C2, (unsigned char*) &delays, 2);          //  
-
-        for(i=0;i<6;i++){         
-            TempPara[i].iKp[0]=5000;
-            TempPara[i].iKp[1]=5000;
-            TempPara[i].iKp[2]=5000;
-
-            TempPara[i].iKi[0]=20;
-            TempPara[i].iKi[1]=20;
-            TempPara[i].iKi[2]=20;
-
-            TempPara[i].iKd[0]=8000;
-            TempPara[i].iKd[1]=8000;
-            TempPara[i].iKd[2]=8000;
-
-            TempPara[i].HoldPWMa = 0.9197;               
-            TempPara[i].HoldPWMb = 60.465;             
-            TempPara[i].HoldPWMc = -1572.1;                
-            
-            TempPara[i].HoldPWMa1 = 0.9197;               
-            TempPara[i].HoldPWMb1 = 60.465;              
-            TempPara[i].HoldPWMc1 = -1572.1;                      
-        }        
-        
-        
         
     }  
 }

+ 82 - 160
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.c

@@ -1,8 +1,8 @@
 #define  __TEMPCTRL_DEF
 #include "ABIS_User.h"
-//float  PWMKB[6]={1.47797,-8.96345,533.7256};
-//float  PWMKB[6]={1.029277,63.010346,-1594.777178};
-//float  PWMKB[3]={1.47797,-8.96345,1533.7256};
+
+#define  TEMP_HOLD_TIME 30
+
 unsigned char FallingTempCter;
 unsigned TubeBlockMode;
 void InitPWM(void)
@@ -197,167 +197,81 @@ void PeltierCtrler(void)
             SetPWM (i,0);            
             continue;
         }   
-        if(TempChn[i].cOverTempCnter){//
-            TempPara[i].fErr=TempChn[i].fTubeTargetTemp - TempChn[i].fCurrentTemperature;  
-            TempChn[i].fHoldPWM = TempPara[i].HoldPWMa * TempChn[i].fTubeTargetTemp * TempChn[i].fTubeTargetTemp + TempPara[i].HoldPWMb * TempChn[i].fTubeTargetTemp + TempPara[i].HoldPWMc;
-        }
-        else{// block mode
-            TempPara[i].fErr = TempChn[i].fBlockTargetTemp - TempChn[i].fCurrentTemperature;
-            TempChn[i].fHoldPWM = TempPara[i].HoldPWMa * TempChn[i].fBlockTargetTemp * TempChn[i].fBlockTargetTemp + TempPara[i].HoldPWMb * TempChn[i].fBlockTargetTemp + TempPara[i].HoldPWMc;
-        }
-        if((TempChn[i].cCtrlMode !=1)&&(TempChn[i].cCtrlMode !=3)){
-            if (fabs(TempPara[i].fErr) < 0.05) {
-//                TempChn[i].cBlockTempAriv = 1;
-                TempChn[i].FallingTempCter = 0;               
-                TempPara[i].fVlOutP = TempPara[i].iKp[2] * TempPara[i].fErr;
-                TempPara[i].fSum += TempPara[i].fErr; 
-                TempPara[i].fVlSum = TempPara[i].iKi[2] * TempPara[i].fSum; 
-                TempPara[i].fVlOut = TempPara[i].iKd[2]*(TempPara[i].fErr - TempPara[i].fErrLast);           
-                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
-            } else if (fabs(TempPara[i].fErr) < 0.1) {
-//                TempChn[i].cBlockTempAriv = 1;
-                TempChn[i].FallingTempCter = 0;             
-                TempPara[i].fVlOutP = TempPara[i].iKp[2] * TempPara[i].fErr;
-                TempPara[i].fSum += TempPara[i].fErr; 
-                TempPara[i].fVlSum = TempPara[i].iKi[2] * TempPara[i].fSum; 
-                TempPara[i].fVlOut = TempPara[i].iKd[2]*(TempPara[i].fErr - TempPara[i].fErrLast);          
-                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
-            } else if (fabs(TempPara[i].fErr) < 0.5) {
-//                TempChn[i].cBlockTempAriv = 1;
-                TempChn[i].FallingTempCter = 0;             
-                TempPara[i].fVlOutP = TempPara[i].iKp[2] * TempPara[i].fErr;
+		switch(TempChn[i].pidst){
+			case PID_OVERHEAT:{
+				/*采用第一路PID配置*/
+			    TempPara[i].fErrLast = TempPara[i].fErr;
+				TempPara[i].fErr=TempChn[i].fTubeTargetTemp - TempChn[i].fCurrentTemperature;              
+                TempPara[i].fVlOutP = TempPara[i].iKp[1] * TempPara[i].fErr;
                 TempPara[i].fSum += TempPara[i].fErr; 
-                TempPara[i].fVlSum = TempPara[i].iKi[2] * TempPara[i].fSum; 
-                TempPara[i].fVlOut = TempPara[i].iKd[2]*(TempPara[i].fErr - TempPara[i].fErrLast);          
+                TempPara[i].fVlSum = TempPara[i].iKi[1] * TempPara[i].fSum; 
+                TempPara[i].fVlOut = TempPara[i].iKd[1]*(TempPara[i].fErr - TempPara[i].fErrLast);           
                 TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
-            } else if (fabs(TempPara[i].fErr) < 1) {
-//                TempChn[i].cBlockTempAriv = 1;
-                TempChn[i].FallingTempCter = 0;             
+				if(TempChn[i].cHeatOrRefrig == 1){
+					if(TempChn[i].fCurrentTemperature >(TempChn[i].fTubeTargetTemp + TempChn[i].OverTempthreshold)){					
+						TempChn[i].pidst= PID_OVERHEATLAST;
+						TempChn[i].pidRumtime = 0;
+        				TempChn[i].cHeatOrRefrig = 2;								
+					Van_Device_Printf(2," ch%d go to st:%d  cur:%f,at:%f + :%f\n\r",i,TempChn[i].pidst,TempChn[i].fCurrentTemperature,
+						TempChn[i].fTubeTargetTemp,TempChn[i].OverTempthreshold);
+					}
+				}else if(TempChn[i].cHeatOrRefrig == 0){
+					if(TempChn[i].fCurrentTemperature <(TempChn[i].fTubeTargetTemp + TempChn[i].OverTempCoolthreshold)){					
+						TempChn[i].pidst= PID_OVERHEATLAST;
+						TempChn[i].pidRumtime = 0;
+        				TempChn[i].cHeatOrRefrig = 2;	
+					Van_Device_Printf(2," ch%d go to st:%d cur:%f,at:%f + :%f \n\r",i,TempChn[i].pidst,TempChn[i].fCurrentTemperature,
+							TempChn[i].fTubeTargetTemp,TempChn[i].OverTempCoolthreshold);
+					}
+				}
+			}break;
+			case PID_OVERHEATLAST:{
+				/*过充维持阶段,加热功率不变*/
+				TempChn[i].pidRumtime++;
+				if(TempChn[i].pidRumtime>= TempChn[i].timer0){
+					TempChn[i].pidst= PID_NORMAL;
+					/*维持功率不变,*/
+					TempPara[i].fSum += (TempChn[i].fCurrentTemperature - TempChn[i].fBlockTargetTemp)*TempPara[i].iKp[1]/TempPara[i].iKi[1];	
+					Van_Device_Printf(2," ch%d go to st:%d  cur:%f,time:%d  \n\r",i,TempChn[i].pidst,TempChn[i].fCurrentTemperature,TempChn[i].pidRumtime);
+					TempChn[i].pidRumtime = 0;
+					TempChn[i].fistAriv = 0;
+				}
+			}break;
+			case PID_NORMAL:{
+				/*采用第一路PID配置*/
+			    TempPara[i].fErrLast = TempPara[i].fErr;
+				TempPara[i].fErr=TempChn[i].fBlockTargetTemp - TempChn[i].fCurrentTemperature;              
                 TempPara[i].fVlOutP = TempPara[i].iKp[1] * TempPara[i].fErr;
-                TempPara[i].fSum += TempPara[i].fErr;
-                TempPara[i].fVlSum = TempPara[i].iKi[1] * TempPara[i].fSum;
-                TempPara[i].fVlOut = TempPara[i].iKd[1]*(TempPara[i].fErr - TempPara[i].fErrLast);
-                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
-            } else if (fabs(TempPara[i].fErr) <= MODEMRANGE) {
-//                TempChn[i].cBlockTempAriv = 1;
-                TempChn[i].FallingTempCter = 0;           
-                TempPara[i].fVlOutP = TempPara[i].iKp[0] * TempPara[i].fErr;
                 TempPara[i].fSum += TempPara[i].fErr; 
-                TempPara[i].fVlSum = TempPara[i].iKi[0] * TempPara[i].fSum;                      
-                TempPara[i].fVlOut = TempPara[i].iKd[0]*(TempPara[i].fErr - TempPara[i].fErrLast); 
-                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum; 
-            }
-            else {
-                TempPara[i].fSum = 0;
-                if ((TempPara[i].fErr > MODEMRANGE)){
-                    TempPara[i].fVlOutP = 100000;
-                }
-                else if ((TempPara[i].fErr < -MODEMRANGE)){
-                    TempPara[i].fVlOutP = -100000;
-                }
-            }          
-            TempPara[i].fDerr=TempPara[i].fErr - TempPara[i].fErrLast;
-
-//            TempChn[i].fHoldPWM = 0;
-//            TempPara[i].fVlOutP += TempChn[i].fHoldPWM;
-//            TempPara[i].fErrLast = TempPara[i].fErr;  
-//
-//            if(TempPara[i].fVlOutP > TempChn[i].MAXPWM){
-//                TempPara[i].fVlOutP = TempChn[i].MAXPWM;
-//            }
-//            else if(TempPara[i].fVlOutP < -TempChn[i].MAXPWM){
-//                TempPara[i].fVlOutP = -TempChn[i].MAXPWM;
-//            }
- 
-            if((TempChn[i].cOverTempCnter == 0)&&(TempChn[i].cHeatOrRefrig == 0)&&(g_uiOverTempCnter[i] <= g_tEE.uiOverTempCnter)){
-                TempPara[i].fVlOutP = TempChn[i].fHoldPWM;    
-                TempPara[i].fErrLast = TempPara[i].fErr;
-                g_uiOverTempCnter[i]++;
-            }else{
-                TempPara[i].fVlOutP += TempChn[i].fHoldPWM;    
-                TempPara[i].fErrLast = TempPara[i].fErr;   
-            }    
-            
-            if(TempChn[i].cHeatOrRefrig == 1){
-                if(TempChn[i].fBlockTargetTemp < TempChn[i].fCurrentTemperature){
-                   TempChn[i].cBlockTempAriv = 1;  
-                }  
-            }else if(TempChn[i].cHeatOrRefrig == 0){
-                if(TempChn[i].fBlockTargetTemp > TempChn[i].fCurrentTemperature){
-                   TempChn[i].cBlockTempAriv = 1;  
-                }                
-            }else if(TempChn[i].cHeatOrRefrig == 2){
-                   TempChn[i].cBlockTempAriv = 1;
-            }else{   
-            }
-            
-            if(TempPara[i].fVlOutP > TempChn[i].MAXPWM){
+                TempPara[i].fVlSum = TempPara[i].iKi[1] * TempPara[i].fSum; 
+                TempPara[i].fVlOut = TempPara[i].iKd[1]*(TempPara[i].fErr - TempPara[i].fErrLast);           
+                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
+				if(((TempChn[i].fBlockTargetTemp - 0.5)<TempChn[i].fCurrentTemperature)&&((TempChn[i].fBlockTargetTemp + 0.5)>TempChn[i].fCurrentTemperature)){
+					TempChn[i].pidRumtime++;
+				}else{
+					TempChn[i].pidRumtime = 0;
+				}
+				if(TempChn[i].pidRumtime > TEMP_HOLD_TIME){
+					TempChn[i].cTubeTempAriv = 1;	
+					if(TempChn[i].fistAriv == 0){
+						Van_Device_Printf(2," ch%d go to st:%d cur:%f,time:%d\n\r",i,TempChn[i].pidst,TempChn[i].fCurrentTemperature,TempChn[i].pidRumtime);
+						TempChn[i].fistAriv = 1;
+					}
+				}
+			}break;
+				default:
+					TempChn[i].pidst = PID_IDL;
+					TempPara[i].fVlOutP = 0;
+					break;
+		}    
+		 if(TempPara[i].fVlOutP > TempChn[i].MAXPWM){
                 TempPara[i].fVlOutP = TempChn[i].MAXPWM;
             }
             else if(TempPara[i].fVlOutP < -TempChn[i].MAXPWM){
                 TempPara[i].fVlOutP = -TempChn[i].MAXPWM;
             }
-
-            if(TempPara[i].fVlOutP >=TempChn[i].MAXPWM){
-                TempPara[i].fVlOutR +=4000;
-            }
-            else if(TempPara[i].fVlOutP <= -TempChn[i].MAXPWM){
-                TempPara[i].fVlOutR -=4000;
-            }
-            if((TempPara[i].fVlOutR < 0)&&(TempPara[i].fVlOutP > 0)){  
-                TempPara[i].fVlOutR =0;
-            }
-            else {
-                TempPara[i].fVlOutR =TempPara[i].fVlOutP;
-            }
-            if(TempPara[i].fVlOutR > TempChn[i].MAXPWM){ 
-                TempPara[i].fVlOutR = TempChn[i].MAXPWM;
-            }
-            else if(TempPara[i].fVlOutR < -TempChn[i].MAXPWM){ 
-                TempPara[i].fVlOutR = -TempChn[i].MAXPWM;
-            }
-   
-            SetPWM (i,TempPara[i].fVlOutR);
-            if(TempPara[i].fVlOutR > 0){
-               g_uiGetPWM[i] = (unsigned int)TempPara[i].fVlOutR; 
-            }else{
-               g_uiGetPWM[i] = 0;
-            }          
-        }
-        else if(TempChn[i].cCtrlMode ==1){
-        }
-        else if(TempChn[i].cCtrlMode ==3){
-        }
-
-        if(TempChn[i].fCurrentTemperature > 120.0) {
-            TempChn[i].PeltierOvertempCnter++;
-            if(TempChn[i].PeltierOvertempCnter >= 10){
-                SetPWM (i,0);
-            }
-        }
-        else if(TempChn[i].fCurrentTemperature < -1){
-            TempChn[i].PeltierOvertempCnter++;
-            if(TempChn[i].PeltierOvertempCnter >= 10){
-                SetPWM (i,0);
-            }
-        }
-        else{
-            TempChn[i].PeltierOvertempCnter=0;
-        }
-
-        TempChn[i].TimerForPeltier++;
-        if(TempChn[i].TimerForPeltier >= TempChn[i].timer0 ){
-            TempChn[i].TimerForPeltier = 0;
-            if(FallingTempCter!=0) FallingTempCter--;
-            if((TempChn[i].cPeltierRun != 0)&&(TempChn[i].cCtrlMode !=1)){
-                if(TempChn[i].cBlockTempAriv && TempChn[i].cOverTempCnter){
-                    TempChn[i].cOverTempCnter--;
-                }
-                if(!TempChn[i].cOverTempCnter && !TempChn[i].cTubeTempAriv){
-                    TempChn[i].cTubeTempAriv = 1;
-                }
-            }
-        }          
+		  SetPWM (i,TempPara[i].fVlOutP);
+		  Van_Device_Printf(2,"ch%d: %3f %3f\n\r",i,TempChn[i].fCurrentTemperature,TempPara[i].fVlOutP);
     }
 }
 
@@ -390,19 +304,25 @@ unsigned char ScheduleOperate(unsigned char chn)
     {
         TempChn[chn].cHeatOrRefrig = 1;
         TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp + TempChn[chn].HOTtemp;
+		TempChn[chn].pidst = PID_OVERHEAT;
+		Van_Device_Printf(2,"\n\rch%d go to st:%d H T:%f O:%f A%f C:%d\n\r",chn,TempChn[chn].pidst,
+			TempChn[chn].fBlockTargetTemp,TempChn[chn].fTubeTargetTemp,TempChn[chn].HOTtemp,TempChn[chn].cOverTempCnter);
     }
 
-    else if(TempChn[chn].fBlockTargetTemp < TempChn[chn].fCurrentTemperature - TempChn[chn].CODEtemp)
+    else if(TempChn[chn].fBlockTargetTemp < TempChn[chn].fCurrentTemperature + TempChn[chn].CODEtemp)
     {
         TempChn[chn].cHeatOrRefrig = 0;
-        TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp - TempChn[chn].CODEtemp;
+        TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp + TempChn[chn].CODEtemp;
+		TempChn[chn].pidst = PID_OVERHEAT;
+		Van_Device_Printf(2,"go to st:%d  H T:%f O:%f A%f C:%d\n\r",TempChn[chn].pidst,
+			TempChn[chn].fBlockTargetTemp,TempChn[chn].fTubeTargetTemp,TempChn[chn].CODEtemp,TempChn[chn].cOverTempCnter);
     }
     else
     {
-        TempChn[chn].cHeatOrRefrig = 2;
-//        TempChn[chn].cBlockTempAriv = 1;       
-//                    Run.TubeAriv = 1;
+        TempChn[chn].cHeatOrRefrig = 2;		
+		Van_Device_Printf(2,"heat ch%d with over:goal:%f\n\r",chn,TempChn[chn].fBlockTargetTemp);
         TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp;
+		TempChn[chn].pidst = PID_NORMAL;
 
         if(fabs(TempChn[chn].fBlockTargetTemp - TempChn[chn].fCurrentTemperature) < 2) 
             TempChn[chn].cOverTempCnter = 1;//5
@@ -423,6 +343,8 @@ unsigned char ScheduleOperate(unsigned char chn)
                 TempChn[chn].cHeatOrRefrig = 0;
             }
         }
+		
+		Van_Device_Printf(2,"heat with over:goal:%f overtime:%d\n\r",TempChn[chn].fBlockTargetTemp,TempChn[chn].cOverTempCnter);
     }
     return 0;
 }

+ 32 - 3
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.h

@@ -27,11 +27,37 @@ TEMPCTRLEXTERN unsigned int DA_FAM,DA_VIC,DA_ROX,DA_CY5;
 TEMPCTRLEXTERN unsigned int g_uiOverTempCnter[6];
 TEMPCTRLEXTERN unsigned int mn;
 
+
+typedef enum
+{
+	PID_COM_INC		= 0, /*调速*/
+	PID_COM_HEAT		= 1, /*加热*/
+	PID_COM_COOL		= 2, /*制冷*/
+	PID_COM_TEMPDRV8870 = 3, /*加热制冷*/
+	PID_COM_THIRDPART_MOTOR ,/*第三方模块*/
+	PID_COM_TEMPDRV8873 , /*加热制冷*/
+	PID_PROPORTIONALVALVE , /*真空比例阀*/
+	PIDTYPENUMBER		
+} enPidTypeDefine;
+
+typedef enum
+{
+
+	PID_IDL,	 /*空闲*/
+	PID_OVERHEAT,	 /*快速拉升*/
+	PID_OVERHEATLAST,	 /*过充维持*/
+	PID_NORMAL, /*PID调节*/
+	PID_ERR,	 /*传感器故障ERROR*/
+} enPIDStatsDef;
+
+
 typedef struct _TEMPCHN_{
     double fTargetTemperature;
     double fCurrentTemperature;
     double fBlockTargetTemp;
     double fTubeTargetTemp;
+    double OverTempthreshold;
+    double OverTempCoolthreshold;
     float fTargetSpeed;
     float fCurrentSpeed;
     long fHoldPWM;
@@ -46,11 +72,14 @@ typedef struct _TEMPCHN_{
     unsigned char PeltierOvertempCnter,TimerForPeltier,cRefrigTimer;
     unsigned char cRefrigMode;
     unsigned char cTubeTempAriv;//
+    unsigned char fistAriv;//
     unsigned char cOverTempCnter;//
     unsigned char FallingTempCter;
     unsigned char cTubeMode;//0: block; 1:tube ;   default->tube
     
     unsigned char cPeltierRun;
+	enPIDStatsDef pidst;
+    unsigned int pidRumtime;
 }TEMPCHN;
  TEMPCTRLEXTERN TEMPCHN TempChn[6];
 
@@ -72,9 +101,9 @@ typedef struct __TEMPPARA{
     float fVlOutP;
     float fVlOut;
     float fVlOutR;
-    short iKp[3];
-    short iKi[3];
-    short iKd[3];
+    float iKp[3];
+    float iKi[3];
+    float iKd[3];
     float fPowerCoef;
     float fPowerCoefdown;
     float HoldPWMa;

+ 11 - 5
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c

@@ -136,15 +136,21 @@ int main(void) {
 		
         if(printtempFlag == 1){  
             printtempFlag = 0;   
+			 if(!TempChn[0].cPeltierRun){
+	             Van_Device_Printf(2,"temp %f, %f, %f, %f, %f, %f\n\r",
+				TempChn[0].fCurrentTemperature,TempChn[1].fCurrentTemperature,
+				TempChn[2].fCurrentTemperature,TempChn[3].fCurrentTemperature,
+				TempChn[4].fCurrentTemperature,TempChn[5].fCurrentTemperature);
+        	}   
 //			 Van_Device_Printf_uart1(2,"temp %f, %f, %f, %f, %f, %f\n\r",
 //			TempChn[0].fCurrentTemperature,TempChn[1].fCurrentTemperature,
 //			TempChn[2].fCurrentTemperature,TempChn[3].fCurrentTemperature,
 //			TempChn[4].fCurrentTemperature,TempChn[5].fCurrentTemperature);
-			 Van_Device_Printf(2,"temp %f, %f, %f, %f, %f, %f, %f\n\r",
-			TempChn[0].fCurrentTemperature,TempChn[1].fCurrentTemperature,
-			TempChn[2].fCurrentTemperature,TempChn[3].fCurrentTemperature,
-			TempChn[4].fCurrentTemperature,TempChn[5].fCurrentTemperature,
-			TempChn[6].fCurrentTemperature);
+//			 Van_Device_Printf(2,"st:%d,temp %f, E:%f, LE:%f, S:%f, %d, AR:%d\n\r",
+//			TempChn[1].pidst,TempChn[1].fCurrentTemperature,
+//			TempPara[1].fErr,TempPara[1].fErrLast,
+//			TempPara[1].fSum,TempChn[1].pidRumtime,
+//			TempChn[1].cTubeTempAriv);
         }
 		
     }  

+ 2 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/private.xml

@@ -4,7 +4,9 @@
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
         <group>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.c</file>
             <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.c</file>
         </group>
     </open-files>
 </project-private>