⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pzf.c

📁 一个很好的完整的空调控制器程序
💻 C
字号:
/**************** (c) 2005   佛山菱电 *****************************************
PROJECT  : AUX VRV 柜机/挂机
COMPILER : AVR GCC/ICC
MODULE   : pzf.c
VERSION  : 1.0.0
DATE     : 2005/12/30
AUTHOR   : 朱坤
DESCRIPTION :  膨胀阀处理

MODIFICATIONS :
******************************************************************************/
#include "pzf.h"
#include "main.h"
#include "timer.h"
#include "ports.h"

#ifdef EnPZF

TwoBytes CurVal;   /* 膨胀阀当前开度 */
TwoBytes SetupVal; /* 膨胀阀设定开度 */

u8 Sysflag3;
#define fResetValve  4
#define fErrRstValve 5
#define fStepMore    6   /* 1: 关阀时,多关标志 */
#define fValveEqual  7

u8 ValvePhase;
u8 ValveStCnt;     /* 膨胀阀处理延时 */

/* v 三花开阀方向/华鹭关阀方向 */
#if (NJTYPE == 0)||(NJTYPE == 1)||(NJTYPE == 2)||(NJTYPE == 3)||(NJTYPE == 4)
const u8 ValvePhase_Tab[] = {0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
#else
const u8 ValvePhase_Tab[] = {0x10,0x30,0x20,0x60,0x40,0x0C0,0x80,0x90};
#endif

void ValveCont_Sub(void)
{
   if (!ValBit(Sysflag3,fResetValve)  /* 1:复位标志*/
       || (CurValve == 0)) {          /* 执行上电复位膨胀阀(关阀)*/
     ClrBit(Sysflag3,fResetValve);
     if (ValBit(OutDevStu[0],fOutSideRxOk)){ /* 1: 外机通信故障标志 */
       ClrBit(Sysflag3,fStepMore);           /* 1: 关阀时,多关标志 */
       SetupValve = 0;
       if ((CurValve == 0) && (!ValBit(Sysflag3,fErrRstValve))){
         SetBit(Sysflag3,fErrRstValve);
         CurValve = 0x20;
       }
     } else if (!ValBit(Sysflag3,fErrRstValve)  /* 从错误复位中恢复 */
              || (SetupValve == CurValve)){
       ClrBit(Sysflag3,fErrRstValve);
       if (ValBit(Sysflag3,fStepMore)){  /* 1: 关阀时,多关标志 */
         if ((SetupValve == CurValve)    /* 需求开度 = 当前开度 */
              && ((SetupValve = OutSideValve) != 0)){
           ClrBit(Sysflag3,fStepMore);   /*  1: 关阀时,多关标志 */
         }
       } else if (((SetupValve = OutSideValve) == 0)
               && (CurValve == 0)){
         SetBit(Sysflag3,fStepMore);   /* ; 1: 关阀时,多关标志 */
         CurValve = 0x20;
       }
     }
   }
}

/* 膨胀阀输出,每20mS 调用一次 */
void Valve_Output(void)
{
  if (ValveStCnt != 0){
    ValveStCnt--;         /* On 20mS */
    V_Output();
  } else if (ValBit(Sysflag3,fValveEqual)){
    if (SetupValve == CurValve) {
      pPZFMotor &= pPZFMASK;
    } else {
      ValveStCnt = 0x32;  /* 1000mS */
      ClrBit(Sysflag3,fValveEqual);
      V_Output();
    }
  } else {
    if (SetupValve == CurValve) {
      ValveStCnt = 0x32;  /* 1000mS */
      SetBit(Sysflag3,fValveEqual);
    } else if (SetupValve > CurValve){
      ValvePhase--;
      CurValve++;
    } else {
      ValvePhase++;
      CurValve--;
    }
    V_Output();
  }
}

void V_Output(void)
{
  pPZFMotor = (u8)((pPZFMotor & pPZFMASK)|   /* fPZFClockWise 1: 开阀顺时针,0:开阀逆时针*/
    ValvePhase_Tab[ValBit(SysConfig,fPZFClockWise)? (0x07-(ValvePhase & 0x07)) : (ValvePhase & 0x07)]);
}

void V_Init(void)
{
  Sysflag3 = (1<<fResetValve)|(1<<fValveEqual);
  CurValve  = PZFMAX;
  //SetupValve = 0;              /* 初始化膨胀阀系统,关到位 */
  //ValveStCnt = 0;
  //pPZFMotor = (u8)(pPZFMotor & pPZFMASK);
}

#endif

/*** (c) 2005  佛山菱电 **************************** END OF FILE *************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -