?? pzf.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 + -