📄 turncontrol.c
字号:
//负流量报警清0 CL(ALARM5)=0
ucSystemAlarm = fnBitClr( ucSystemAlarm , 4 );
//RG(PAUSE3)=0 清0 是否再由负流量引起暂停
ucSystemRG1 = fnBitClr( ucSystemRG1 , 3 );
//正负流量计归0 CR(FLOW)=0 CR(COUNTFLOW)=0
//!!流量计复位!!
fnReset_FluxPulseCounter(1);
//还原的个数加1 CR(NUM)= CR(NUM)+1
ucSystemReturnN++;
//从[01]时间段开始的还原总时间(秒 小于1小时 3600秒)清零
uiSystem01C_Time = 0;
}
/*******************************************************************
时段01执行函数
函数原型: void fnRun_Turn01()
功能: 时段01执行函数
涉及变量:
********************************************************************/
void fnRun_Turn01()
{
//开始
//判断是否允许PASS? RG(PASS)
//判断键盘输入 KEY_PASS 手动键2 结束当前时间段01 21
if(ucKeyInput == KEY_PASS)
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//切换时间段至下一个时间段 02 22
if( ucSystemTurnNum == Turn_01 )
{
//进入[02]时间段
fnEnterTurn(Turn_02,0);
//立即退出本函数
return;
}
else
if( ucSystemTurnNum == Turn_21 )
{
//进入[22]时间段
fnEnterTurn(Turn_22,0);
//立即退出本函数
return;
}
}
//统计目前还原总时间(秒数<3600时)
//目前还原总时间是否大于BSET( PP3-7)
if( uiSystem01C_Time < 3600 )
{
//统计目前还原总时间(秒数<3600时)
if(fnBitTest( ucTurnSecT , 0))
{
uiSystem01C_Time++;
ucTurnSecT = fnBitClr( ucTurnSecT , 0 );
}
if( uiSystem01C_Time > (uint)ucBuf_AdvanceSet[PPAD_PP3_7] * 60 )
{
//外部开关T2检测 T2反馈开关
if (fnCheck_SystemInputFlag(2) == 1 )
{
//T2断开 且 有效
//进入[50]时间段
fnEnterTurn(Turn_50,0);
//立即退出本函数
return;
}
}
}
//外部开关T3检测 T3盐液开关
//判断 PP3-5 盐液开关种类1 0低位,1高位
if( ucBuf_AdvanceSet[PPAD_PP3_5] == 0 )
{
//盐液开关种类1 0低位
//检测T3开关 RG(PAUSE1)的值
if( ( fnCheck_SystemInputFlag(3) == 0 ) & (fnBitTest( ucSystemRG1 , 1) == 0) )
{
//T3开关 水不满 RG(PAUSE1)=0
//BSET( P6-3) [T3]盐量报警
if( ucBuf_NormSet[PAD_P6_3] )
{
ucSystemAlarm = fnBitSet( ucSystemAlarm , 2 ); //CL(ALARM3)=1 盐液开关T3引发报警布尔变量
}
//BSET( P6-7) 是否由盐量引起暂停[73]
if( ( ucBuf_NormSet[PAD_P6_7] == 1 ) | ( ucBuf_NormSet[PAD_P6_7] == 2 ) )
{
ucSystemPause = fnBitSet( ucSystemPause , 0 ); //CL(PAUSE1) =1 盐量引发暂停布尔变量
//暂停切换时间段[73]
fnEnterTurn(Turn_73,1);
//立即退出本函数
return;
}
}
}
else
if( ucBuf_AdvanceSet[PPAD_PP3_5] == 1 )
{
//盐液开关种类1 1高位
//BSET( P6-5) 是否由盐量终止再生某一步骤
if( ucBuf_NormSet[PAD_P6_5] )
{
//本流程是否等于BSET( P6-6) 或其加20
//!!取决于时段地址的设置!!!Turn_01 != 01
if( ( ucSystemTurnNum == ucBuf_NormSet[PAD_P6_6]+1 ) |
( ucSystemTurnNum == ucBuf_NormSet[PAD_P6_6]+20 ) )
{
//检测T3是否水满
if( fnCheck_SystemInputFlag(3) )
{
//T3开关 水满
//切换时间段至下一个时间段 02 22
if( ucSystemTurnNum == Turn_01 )
{
//进入[02]时间段
fnEnterTurn(Turn_02,0);
//立即退出本函数
return;
}
else
if( ucSystemTurnNum == Turn_21 )
{
//进入[22]时间段
fnEnterTurn(Turn_22,0);
//立即退出本函数
return;
}
}
}
}
}
//时间是否到达设定?
if(fnIfEnd_TurnTime())
{
//切换时间段至下一个时间段 02 22
if( ucSystemTurnNum == Turn_01 )
{
//进入[02]时间段
fnEnterTurn(Turn_02,0);
//立即退出本函数
return;
}
else
if( ucSystemTurnNum == Turn_21 )
{
//进入[22]时间段
fnEnterTurn(Turn_22,0);
//立即退出本函数
return;
}
}
//BSET( P6-16) 还原时是否可以暂停[77]
if( ucBuf_NormSet[PAD_P6_16] )
{
//检测面板按键是否收到PAUSE?
//判断键盘输入 KEY_PAUSE 暂停键 暂停当前时间段01 21,进入时间段77
if(ucKeyInput == KEY_PAUSE)
{
ucSystemPause = fnBitSet( ucSystemPause , 4 ); //CL(PAUSE5) =1 还原时手动引发暂停布尔变量
//清空键盘处理
ucKeyInput = KEY_NOKey;
//暂停切换时间段[77]
fnEnterTurn(Turn_77,1);
//立即退出本函数
return;
}
}
}
/*******************************************************************
时段01收尾函数
函数原型: void fnEnd_Turn01()
功能: 时段01收尾函数
涉及变量:
********************************************************************/
void fnEnd_Turn01()
{
;
}
/*******************************************************************
时段02初始化函数
函数原型: void fnInit_Turn02()
功能: 时段02初始化函数
涉及变量:
********************************************************************/
void fnInit_Turn02()
{
//将[73]时间段时间回0
uc4_System73Time[0] = 0;
uc4_System73Time[1] = 0;
uc4_System73Time[2] = 0;
uc4_System73Time[3] = 0;
}
/*******************************************************************
时段02执行函数调用部分-正常时段切换
函数原型: void fnRun_Turn02_OVER()
功能: 时段02执行函数-正常时段切换
正常切换时间段至下一个时间段 03..19 23..39 50
涉及变量:
注意事项:调用后,需要立即执行 附加的 return; 退出时段RUN函数。
********************************************************************/
void fnRun_Turn02_OVER()
{
//正常切换时间段至下一个时间段 03..19 23..39 50
if( ( ucSystemTurnNum != Turn_19 ) & (ucSystemTurnNum != Turn_39 ) )
{
//进入 [03..19] [23..39] 时间段
fnEnterTurn( ucSystemTurnNum+1 ,0);
//立即退出本函数
return;
}
else
if( ( ucSystemTurnNum == Turn_19 ) | (ucSystemTurnNum == Turn_39 ) )
{
//进入[50]时间段
fnEnterTurn( Turn_50 ,0);
//立即退出本函数
return;
}
}
/*******************************************************************
时段02执行函数
函数原型: void fnRun_Turn02()
功能: 时段02执行函数
涉及变量:
********************************************************************/
void fnRun_Turn02()
{
//开始
//判断是否允许PASS? RG(PASS)
//判断键盘输入 KEY_PASS 手动键2 结束当前时间段
if(ucKeyInput == KEY_PASS)
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//调用时段02执行函数调用部分
//正常时段切换03..19 23..39 50
fnRun_Turn02_OVER();
//附加的 return; 退出时段RUN函数。
return;
}
//统计目前还原总时间(秒数<3600时)
//目前还原总时间是否大于BSET( PP3-7)
if( uiSystem01C_Time < 3600 )
{
//统计目前还原总时间(秒数<3600时)
if(fnBitTest( ucTurnSecT , 0))
{
uiSystem01C_Time++;
ucTurnSecT = fnBitClr( ucTurnSecT , 0 );
}
if( uiSystem01C_Time > (uint)ucBuf_AdvanceSet[PPAD_PP3_7] * 60 )
{
//外部开关T2检测 T2反馈开关
if (fnCheck_SystemInputFlag(2) == 1 )
{
//T2断开 且 有效
//进入[50]时间段
fnEnterTurn(Turn_50,0);
//立即退出本函数
return;
}
}
}
//外部开关T3检测 T3盐液开关
//判断 PP3-5 盐液开关种类1 0低位,1高位
if( ucBuf_AdvanceSet[PPAD_PP3_5] == 1 )
{
//盐液开关种类1 1高位
//BSET( P6-5) 是否由盐量终止再生某一步骤
if( ucBuf_NormSet[PAD_P6_5] )
{
//本流程是否等于BSET( P6-6) 或其加20
//!!取决于时段地址的设置!!!Turn_01 != 01
if( ( ucSystemTurnNum == ucBuf_NormSet[PAD_P6_6]+1 ) |
( ucSystemTurnNum == ucBuf_NormSet[PAD_P6_6]+20 ) )
{
//检测T3是否水满
if( fnCheck_SystemInputFlag(3) )
{
//T3开关 水满
//调用时段02执行函数调用部分
//正常时段切换03..19 23..39 50
fnRun_Turn02_OVER();
//附加的 return; 退出时段RUN函数。
return;
}
}
}
}
//外部开关T4检测 T4压力开关
//检测T4开关 RG(PAUSE2)的值
if( ( fnCheck_SystemInputFlag(4) == 0 ) & (fnBitTest( ucSystemRG1 , 2) == 0) )
{
//T4开关 0-闭合,低压 RG(PAUSE2)=0
//BSET( P6-4) [T4]外部压力开关的报警
if( ucBuf_NormSet[PAD_P6_4] )
{
ucSystemAlarm = fnBitSet( ucSystemAlarm , 3 ); //CL(ALARM4)=1 压力开关T4引发报警布尔变量
}
//BSET( P6-9) 是否由压力引起暂停过程[74]
if( ( ucBuf_NormSet[PAD_P6_9] == 1 ) | ( ucBuf_NormSet[PAD_P6_9] == 2 ) )
{
ucSystemPause = fnBitSet( ucSystemPause , 1 ); //CL(PAUSE2) =1 压力引发暂停布尔变量
//暂停切换时间段[74]
fnEnterTurn(Turn_74,1);
//立即退出本函数
return;
}
}
//时间是否到达设定?
if(fnIfEnd_TurnTime())
{
//调用时段02执行函数调用部分
//正常时段切换03..19 23..39 50
fnRun_Turn02_OVER();
//附加的 return; 退出时段RUN函数。
return;
}
//BSET( P6-16) 还原时是否可以暂停[77]
if( ucBuf_NormSet[PAD_P6_16] )
{
//检测面板按键是否收到PAUSE?
//判断键盘输入 KEY_PAUSE 暂停键 暂停当前时间段,进入时间段77
if(ucKeyInput == KEY_PAUSE)
{
ucSystemPause = fnBitSet( ucSystemPause , 4 ); //CL(PAUSE5) =1 还原时手动引发暂停布尔变量
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -