📄 swing.c
字号:
/**************** (c) 2005 佛山菱电 *****************************************
PROJECT : AUX VRV
COMPILER : AVR GCC/ICC
MODULE : swing.c
VERSION : 1.0.0
DATE : 2005/12/31
AUTHOR : 朱坤
DESCRIPTION : 扫风控制
MODIFICATIONS :
******************************************************************************/
#include "swing.h"
#include "ports.h"
#include "main.h"
#include "timer.h"
#include "fan.h"
#ifdef EnSWING
u8 FDoorUnit; /* 扫风模式 */
u8 StepSpeed; /* 扫风速度 */
u8 StepSpeedSet;
#if ((NJTYPE == 0)||(NJTYPE == 1)||(NJTYPE == 2)||(NJTYPE == 3)||(NJTYPE == 4))
/* AUX30/70吸顶 / 挂机 */
u8 MotorCnt; /* 风门电机步计数 */
TwoBytes BjSave; /* 风门电机位置记忆 */
TwoBytes BjStep; /* 风门电机位置 */
TwoBytes BjSetup; /* 风门电机设定位置 */
const u8 SwingPhase_Tab[] = {0x10,0x30,0x20,0x60,0x40,0x0C0,0x80,0x90};
#endif
void Swing_Sub(void)
{
#if (NJTYPE == 0)||(NJTYPE == 5) /* 30吸顶/柜机 */
//if (!ValBit(Sysflag1,fStepMotor)){ /* 1: 步进电机驱动风门 */
if ((ValBit(RunMode,fSysOn)|| /* 系统开机,风门开 */
(ClrHotCnt != 0)) && /* 吹余热计时(2分钟) */
(!ValBit(OutDevStu[0],fOutDeforst)) && /* 化霜时,风门停止 */
ValBit(FanStatus,fFanCtrlBit) && /* 1:内风机运行标志 */
//((!ValBit(Sysflag2,fMAuto))||
// (AutoCnt == 0)) && /* 自动模式没有确定模式时,风门停止 */
((u8)(FDoorUnit & SWINGMASK) != SWINGFIXED)){
/* 风摆状态-00:自然风 */
/* 风摆状态-01:扫风 */
SetBit(pSwing,pbSwing);
} else {
/* 风摆状态-10:固定风 */
ClrBit(pSwing,pbSwing);
}
//}
#endif
//if (ValBit(Sysflag1,fStepMotor)){ /* 1: 步进电机驱动风门 */
#if (NJTYPE == 0)||(NJTYPE == 1)
if (!ValBit(Sysflag,fSetupBj)){ /* 上电或关机,风门往关的方向转 */
ClrBit(Sysflag,fResetBj);
SetBit(Sysflag,fSetupBj);
StepSpeedSet = 1;
BjStep.w_form = 0;
BjSetup.w_form = cFDCloseMaxNum;
} else if (ValBit(RunMode,fSysOn)|| /* 系统开机 */
(ClrHotCnt != 0)){ /* 吹余热计时(2分钟) */
if (!ValBit(Sysflag,fResetBj)){ /* 1:已完成开机动作 */
ClrBJ();
if (BjStep.w_form == BjSetup.w_form){
SetBit(Sysflag,fResetBj); /* 开机时,风门往开的方向 */
ClrBit(Sysflag2,fPosition);
BjSetup.w_form = 0;
BjStep.w_form = cFDOpenMaxNum;
}
} else if (StepSpeedSet == 4){
if (ValBit(OutDevStu[0],fOutDeforst) || /* 化霜时 */
((ValBit(Sysflag2,fMAuto) ||
((u8)(RunMode & MODEMASK) == MODEAUTO)) &&
(AutoCnt != 0))){ /* 自动模式没有确定模式时 */
BjSetup.w_form = cFDFixedNum; /* 风门停止在30度处 */
ClrBJ();
} else if (!ValBit(FanStatus,fFanCtrlBit)){ /* 1:内风机运行标志 */
BjSetup.w_form = BjStep.w_form; /* 内风机停,风门停在当前位置处 */
ClrBJ();
} else if ((u8)(FDoorUnit & SWINGMASK) == SWINGFIXED){ /* 风摆-10:固定风 */
if (BjSave.w_form > cFDFixedNum){
BjSave.w_form = cFDFixedNum;
} else if (BjSave.w_form == 0){
BjSave.w_form = cFDFixedNum;
}
BjSetup.w_form = BjSave.w_form;
ClrBJ();
} else if (BjSetup.w_form == BjStep.w_form){
if (((FDoorUnit & SWINGMASK) == SWINGAUTO) && /* 00:自然风 */
((FDoorUnit & SWINGMASK) == SWINGSWING)){ /* 01:扫风 */
ClrBJ();
if (ValBit(Sysflag2,fPosition)){
ClrBit(Sysflag2,fPosition);
BjSetup.w_form = cFDSwingHNum;
} else {
SetBit(Sysflag2,fPosition);
BjSetup.w_form = cFDSwingLNum;
}
}
}
} else if (BjStep.w_form == BjSetup.w_form){
StepSpeedSet = 4;
}
} else if (ValBit(Sysflag,fResetBj)){
ClrBit(Sysflag,fSetupBj);
}
#elif (NJTYPE == 2)||(NJTYPE == 3)||(NJTYPE == 4)
if (ValBit(RunMode,fSysOn)|| /* 系统开机 */
(ClrHotCnt != 0)){ /* 吹余热计时(2分钟) */
if (!ValBit(Sysflag,fResetBj)){ /* 1:已完成开机动作 */
ClrBit(Sysflag,fSetupBj);
SetBit(Sysflag,fResetBj); /* 开机时,风门往开的方向 */
ClrBit(Sysflag2,fPosition);
BjSetup.w_form = 0;
BjStep.w_form = cFDOpenMaxNum;
StepSpeedSet = 1;
} else if (StepSpeedSet == 4){
if (ValBit(OutDevStu[0],fOutDeforst) || /* 化霜时 */
((ValBit(Sysflag2,fMAuto) ||
((u8)(RunMode & MODEMASK) == MODEAUTO)) &&
(AutoCnt != 0))){ /* 自动模式没有确定模式时 */
BjSetup.w_form = cFDFixedNum; /* 风门停在固定位置 2 处 */
} else if ((u8)(FDoorUnit & SWINGMASK) == SWINGFIXED){ /* 风摆-10:固定风 */
if (BjSave.w_form == 0){
if ((u8)(RunMode & MODEMASK) == MODEHEAT){
BjSetup.w_form = hFDFixedNum;
} else {
BjSetup.w_form = cFDFixedNum;
}
} else {
BjSetup.w_form = BjSave.w_form;
}
} else if (BjSetup.w_form == BjStep.w_form){
if (((FDoorUnit & SWINGMASK) == SWINGAUTO) || /* 风摆-00:自然风 */
((FDoorUnit & SWINGMASK) == SWINGSWING)){ /* 风摆-01:扫风 */
if (ValBit(Sysflag2,fPosition)){
ClrBit(Sysflag2,fPosition);
if ((u8)(RunMode & MODEMASK) == MODEHEAT){
BjSetup.w_form = hFDSwingHNum;
} else {
BjSetup.w_form = cFDSwingHNum;
}
} else {
SetBit(Sysflag2,fPosition);
if ((u8)(RunMode & MODEMASK) == MODEHEAT){
BjSetup.w_form = hFDSwingLNum;
} else {
BjSetup.w_form = cFDSwingLNum;
}
}
}
}
} else if (BjStep.w_form == BjSetup.w_form){
StepSpeedSet = 4;
}
} else if (!ValBit(Sysflag,fSetupBj)){
StepSpeedSet = 1; /* 上电或关机,风门往关的方向转 */
if (ValBit(Sysflag,fResetBj)){
BjSetup.w_form = cFDCloseMaxNum; /* 关 */
ClrBit(Sysflag,fResetBj);
SetBit(Sysflag,fSetupBj);
} else {
//if (BjStep.w_form == 0){
// BjSetup.w_form = 0;
// BjStep.w_form = cFDCloseMaxNum; /* 开 */
//}
if (BjStep.w_form == BjSetup.w_form){
SetBit(Sysflag,fResetBj);
}
}
}
#endif
//}
}
#if ((NJTYPE == 0)||(NJTYPE == 1)||(NJTYPE == 2)||(NJTYPE == 3)||(NJTYPE == 4))
void Swing_Output(void)
{
//if (ValBit(Sysflag1,fStepMotor)){ /* 1: 步进电机驱动风门 */
if (BjStep.w_form == BjSetup.w_form){
pStepMotor &= (u8)pSWINGMASK; /* 不输出 */
MotorCnt |= 0x80; /* 输出状态 */
} else if (StepSpeed-- == 0){
StepSpeed = StepSpeedSet;
if (!ValBit(MotorCnt,7)){
if (BjStep.w_form > BjSetup.w_form){
BjStep.w_form--;
#ifdef CLOCKWISE
MotorCnt++;
#else
MotorCnt--;
#endif
} else {
BjStep.w_form++;
#ifdef CLOCKWISE
MotorCnt--;
#else
MotorCnt++;
#endif
}
}
pStepMotor = (u8)((pStepMotor & pSWINGMASK)
|SwingPhase_Tab[MotorCnt &= 0x07]);
}
//}
}
#endif
void Swing_Init(void)
{
#if ((NJTYPE == 0)||(NJTYPE == 1))
/* 吸顶 */
MotorCnt = 0x80;
//ClrBit(Sysflag,fResetBj);
//ClrBit(Sysflag,fSetupBj);
//pStepMotor &= (u8)pSWINGMASK; /* 不输出 */
#elif ((NJTYPE == 2)||(NJTYPE == 3)||(NJTYPE == 4))
/* 挂机 */
MotorCnt = 0x80;
BjStep.w_form = cFDCloseMaxNum; /* 开 */
//ClrBit(Sysflag,fResetBj);
//ClrBit(Sysflag,fSetupBj);
//pStepMotor &= (u8)pSWINGMASK; /* 不输出 */
#elif (NJTYPE == 5)
/* 柜机 */
//ClrBit(pSwing,pbSwing);
#endif
}
#endif
/*** (c) 2005 佛山菱电 **************************** END OF FILE *************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -