浏览代码

优化与分风箱的适配逻辑

liuxiaodi 1 周之前
父节点
当前提交
341da1c037
共有 1 个文件被更改,包括 29 次插入17 次删除
  1. 29 17
      Core/Src/slave_485.c

+ 29 - 17
Core/Src/slave_485.c

@@ -31,7 +31,7 @@ static eMBErrorCode RegInputCB(UCHAR *pucRegBuffer, USHORT usAddress, USHORT usN
     return MB_ENOERR;
 }
 static eMBErrorCode RegHoldingCB(UCHAR *pucRegBuffer, USHORT usAddress,
-                          USHORT usNRegs, eMBRegisterMode eMode) {
+                                 USHORT usNRegs, eMBRegisterMode eMode) {
     eMBErrorCode eStatus = MB_ENOERR;
     USHORT iRegIndex;
     USHORT *pusRegHoldingBuf;
@@ -39,7 +39,7 @@ static eMBErrorCode RegHoldingCB(UCHAR *pucRegBuffer, USHORT usAddress,
     USHORT REG_HOLDING_NREGS;
     USHORT usRegHoldStart;
     pusRegHoldingBuf = usSRegHoldBuf;
-    REG_HOLDING_START = S_REG_HOLDING_START;
+    REG_HOLDING_START =S_REG_HOLDING_START;
     REG_HOLDING_NREGS = S_REG_HOLDING_NREGS;
     usRegHoldStart = usSRegHoldStart;
 
@@ -63,15 +63,15 @@ static eMBErrorCode RegHoldingCB(UCHAR *pucRegBuffer, USHORT usAddress,
                 /* write current register values with new values from the protocol stack. */
             case MB_REG_WRITE:
                 while (usNRegs > 0) {
-                    if(iRegIndex==0)
-                    {
-                        set_reg_value(FAN1_LEVEL_REG_ADDRESS,0);
-                        set_reg_value(FAN2_LEVEL_REG_ADDRESS,0);
-                        set_reg_value(FAN3_LEVEL_REG_ADDRESS,0);
-                        set_reg_value(FAN4_LEVEL_REG_ADDRESS,0);
-                        set_reg_value(FAN5_LEVEL_REG_ADDRESS,0);
-
-                    }
+//                    if(iRegIndex==0)
+//                    {
+//                        set_reg_value(FAN1_LEVEL_REG_ADDRESS,0);
+//                        set_reg_value(FAN2_LEVEL_REG_ADDRESS,0);
+//                        set_reg_value(FAN3_LEVEL_REG_ADDRESS,0);
+//                        set_reg_value(FAN4_LEVEL_REG_ADDRESS,0);
+//                        set_reg_value(FAN5_LEVEL_REG_ADDRESS,0);
+//
+//                    }
                     pusRegHoldingBuf[iRegIndex] = *pucRegBuffer++ << 8;
                     pusRegHoldingBuf[iRegIndex] |= *pucRegBuffer++;
                     iRegIndex++;
@@ -130,18 +130,30 @@ _Noreturn void reg_check_task(void *pv) {
     uint16_t power=0, fan_level=0,dipnum=0;
     for (;;) {
         dipnum=read_dip5();//0 1 2 ,
-        for(int i=0;i<dipnum;i++)
+        get_reg_value(POWER_REG_ADDRESS,&power);
+        if(power==0)
         {
-            HAL_TIM_PWM_Start(PWMComParam[i].htim, PWMComParam[i].timChannel);
-            get_reg_value(FAN1_LEVEL_REG_ADDRESS+dipBuf[i],&fan_level);
-            if(fan_level<=0)
+            for(int i=0;i<dipnum;i++)
             {
                 fan_control(PWMComParam[i],0);
-            }else{
-                fan_control(PWMComParam[i],40+(fan_level/9));
+                HAL_TIM_PWM_Stop(PWMComParam[i].htim, PWMComParam[i].timChannel);
             }
+        }else {
+            for(int i=0;i<dipnum;i++)
+            {
+                get_reg_value(FAN1_LEVEL_REG_ADDRESS+dipBuf[i],&fan_level);
+                if(fan_level<=0)
+                {
+                    fan_control(PWMComParam[i],0);
+                    HAL_TIM_PWM_Stop(PWMComParam[i].htim, PWMComParam[i].timChannel);
+                }else{
+                    HAL_TIM_PWM_Start(PWMComParam[i].htim, PWMComParam[i].timChannel);
+                    fan_control(PWMComParam[i],40+(fan_level/9));
+                }
 
+            }
         }
+
         HAL_IWDG_Refresh(&hiwdg);
         osDelay(500);
     }