📄 turncontrol.c
字号:
//立即退出本函数
return;
}
//检测面板按键是否收到 PASS?
//检测面板手动信号 KEY_PASS 进入[01]时间段
if(ucKeyInput == KEY_PASS)
{
ucSystemCouse = fnBitSet( ucSystemCouse , 2 ); //CL(COUSE3) =1 手动引发的布尔变量
//清空键盘处理
ucKeyInput = KEY_NOKey;
//切换时间段[01]
fnEnterTurn(Turn_01,0);
//立即退出本函数
return;
}
//外部开关T1检测 T1远程启动开关
if (fnCheck_SystemInputFlag(1) == 0 )
{
//T1闭合 且 有效
//BSET( P6-1) [T1]外置开关的报警
if( ucBuf_NormSet[PAD_P6_1] == 0)
{
ucSystemCouse = fnBitSet( ucSystemCouse , 3 ); //CL(COUSE4) =1 外部引发的布尔变量
//进入[60]时间段
fnEnterTurn(Turn_60,0);
//立即退出本函数
return;
}
else
//判断CL(ALARM1)的值
if( fnBitTest( ucSystemAlarm , 0) == 0) //CL(ALARM1) 外部开关T1引发报警布尔变量
{
//如果还没有报警
//判断是否满足报警条件
//?直接报警!
ucSystemAlarm = fnBitSet( ucSystemAlarm , 0); //CL(ALARM1)=1 外部开关T1引发报警布尔变量
ucSystemCouse = fnBitSet( ucSystemCouse , 3 ); //CL(COUSE4)=1 外部引发的布尔变量
//进入[60]时间段
fnEnterTurn(Turn_60,0);
//立即退出本函数
return;
}
}
//外部开关T2检测 T2反馈开关
if (fnCheck_SystemInputFlag(2) == 0 )
{
//T2闭合 且 有效
//BSET( P6-2) [T2]反馈开关的报警
if( ucBuf_NormSet[PAD_P6_2] )
{
ucSystemAlarm = fnBitSet( ucSystemAlarm , 1 ); //CL(ALARM2)=1 反馈开关T2引发报警布尔变量
}
//进入[70]时间段
fnEnterTurn(Turn_70,0);
//立即退出本函数
return;
}
}
/*******************************************************************
时段00收尾函数
函数原型: void fnEnd_Turn00()
功能: 时段00收尾函数
涉及变量:
********************************************************************/
void fnEnd_Turn00()
{
//流量计暂停
FluxPulseCounterDisable;
}
/*******************************************************************
时段60初始化函数
函数原型: void fnInit_Turn60()
功能: 时段60初始化函数
涉及变量:
********************************************************************/
void fnInit_Turn60()
{
//复位流量计,并且开启 --负流量
fnReset_FluxPulseCounter(0);
FluxPulseCounterEnable;
//测试!
//ucTurnAllow01 = 0;
//CAN_SendToSlave_Allow01(0xFF);
//CAN_Master_ListTest(127,ucTurnAllow01,ucTurnAllow95,0xFF);
}
/*******************************************************************
时段60执行函数的调用部分BJ3
函数原型: void fnRun_Turn60_BJ3()
功能: 时段60执行函数的调用部分BJ3
涉及变量:
注意事项:调用后,需要立即执行 附加的 return; 退出时段RUN函数。
********************************************************************/
void fnRun_Turn60_BJ3()
{
//BSET( PP1-8) 是否开启多次还原后增强
if( ucBuf_AdvanceSet[PPAD_PP1_8] )
{
//总还原次数CL(GEN0) 除以BSET( PP1-9)余数为整数吗?
if( ( uiSystemGen0 % ucBuf_AdvanceSet[PPAD_PP1_9] == 0) & ( uiSystemGen0!=0 ))
{
//进入[21]时间段
fnEnterTurn(Turn_21,0);
//立即退出本函数
return;
//注意!!需要在调用函数里添加一个退出!!
//return;
//!!直到退出相关的RUN函数!!
}
else
{
//进入[01]时间段
fnEnterTurn(Turn_01,0);
//立即退出本函数
return;
//注意!!需要在调用函数里添加一个退出!!
//return;
//!!直到退出相关的RUN函数!!
}
}
else
{
//进入[01]时间段
fnEnterTurn(Turn_01,0);
//立即退出本函数
return;
//注意!!需要在调用函数里添加一个退出!!
//return;
//!!直到退出相关的RUN函数!!
}
}
/*******************************************************************
时段60执行函数
函数原型: void fnRun_Turn60()
功能: 时段60执行函数
涉及变量:
********************************************************************/
void fnRun_Turn60()
{
//流量计运行
fnRun_Flux();
//开始
//BSET( PP1-6) 系统工作情况
if( ucBuf_AdvanceSet[PPAD_PP1_6] == 1)
{
//调用时段60执行函数的调用部分BJ3
fnRun_Turn60_BJ3();
//附加的 return; 退出时段RUN函数。
return;
}
else
if( ucBuf_AdvanceSet[PPAD_PP1_6] == 2)
{
//判断现在系统时钟时间
//是否等于 BSET(P3)或在其之后的5分钟内
if(0)
{
//调用时段60执行函数的调用部分BJ3
fnRun_Turn60_BJ3();
//附加的 return; 退出时段RUN函数。
return;
}
}
else
if(( ucBuf_AdvanceSet[PPAD_PP1_6] == 3) | (ucBuf_AdvanceSet[PPAD_PP1_6] == 4))
{
//判断当前还原的个数CR(NUM)
//与BSET( PP1-7)相比
//if( ucSystemReturnN < ucBuf_AdvanceSet[PPAD_PP1_7])
//网络部分!!
//判断接收信号 还原许可
//测试!
//CAN_Master_ListTest(127,ucTurnAllow01,ucTurnAllow95,0xFF);
if(ucTurnAllow01 == 1)
//if(ucTurnAllow01)
{
//马上清空许可!!
ucTurnAllow01 = 0;
//测试!
//while(CAN_SendToSlave_Allow01(0xFF)!=0);
//调用时段60执行函数的调用部分BJ3
fnRun_Turn60_BJ3();
//测试!
//CAN_Master_ListTest(127,ucTurnAllow01,ucTurnAllow95,0xFF);
//附加的 return; 退出时段RUN函数。
return;
}
}
//BSET( PP1-3) 流量是否引发再生
if( ucBuf_AdvanceSet[PPAD_PP1_3])
{
//统计当前流量,计为负流量
//BSET( PP2-4) 是否显示流速
}
//BSET( P6-15) 工作时是否可以暂停[76]
if( ucBuf_NormSet[PAD_P6_15] )
{
//检测面板按键是否收到PAUSE?
//判断键盘输入 KEY_PAUSE 暂停键 暂停当前时间段60,进入时间段76
if(ucKeyInput == KEY_PAUSE)
{
ucSystemPause = fnBitSet( ucSystemPause , 3 ); //CL(PAUSE4) =1 工作时手动引发暂停布尔变量
//清空键盘处理
ucKeyInput = KEY_NOKey;
//暂停切换时间段[76]
fnEnterTurn(Turn_76,1);
//立即退出本函数
return;
}
}
//检测面板按键是否收到 PASS?
//检测面板手动信号 KEY_PASS 进入[01]时间段
if(ucKeyInput == KEY_PASS)
{
//清空键盘处理
ucKeyInput = KEY_NOKey;
//调用时段60执行函数的调用部分BJ3
fnRun_Turn60_BJ3();
//附加的 return; 退出时段RUN函数。
return;
}
//外部开关T2检测 T2反馈开关
if (fnCheck_SystemInputFlag(2) == 0 )
{
//T2闭合 且 有效
//BSET( P6-2) [T2]反馈开关的报警
if( ucBuf_NormSet[PAD_P6_2] )
{
ucSystemAlarm = fnBitSet( ucSystemAlarm , 1 ); //CL(ALARM2)=1 反馈开关T2引发报警布尔变量
}
//进入[70]时间段
fnEnterTurn(Turn_70,0);
//立即退出本函数
return;
}
//判断当前负流量值与设量比例乘以设定流量比值
//即BSET( PP2-3)ΧBSET(P4)
//负累积流量达到设定?
if(bFluxLimitOver)
{
//BSET( P6-11) 负流量到达设定后是否报警
if( ucBuf_NormSet[PAD_P6_11] )
{
//CL(ALARM5)=1 负流量引发报警布尔变量
ucSystemAlarm = fnBitSet( ucSystemAlarm , 4);
}
//BSET( P6-12) 负流量到达设定后是否转入强制再生
if( ucBuf_NormSet[PAD_P6_12] )
{
//调用时段60执行函数的调用部分BJ3
fnRun_Turn60_BJ3();
//附加的 return; 退出时段RUN函数。
return;
}
//BSET( P6-13) 是否由负流量引起暂停[75]
if(( ucBuf_NormSet[PAD_P6_13] >=1 ) & ( ucBuf_NormSet[PAD_P6_13] <=3 ))
{
//RG(PAUSE3)是否再由负流量引起暂停
if( fnBitTest( ucSystemRG1 , 3) == 0)
{
ucSystemPause = fnBitSet( ucSystemPause , 2 ); //CL(PAUSE3) =1 负流量引发暂停布尔变量
//暂停切换时间段[75]
fnEnterTurn(Turn_75,1);
//立即退出本函数
return;
}
}
}
}
/*******************************************************************
时段60收尾函数
函数原型: void fnEnd_Turn60()
功能: 时段60收尾函数
涉及变量:
********************************************************************/
void fnEnd_Turn60()
{
//流量计暂停
FluxPulseCounterDisable;
}
/*******************************************************************
时段01初始化函数
函数原型: void fnInit_Turn01()
功能: 时段01初始化函数
涉及变量:
********************************************************************/
void fnInit_Turn01()
{
//进入还原前的操作
//判断是否在掉电复位阶段!
if(ucSystemPowerOff == 0)
{
//正常阶段!
//记录还原发生时间!!!
fnWrite_SystemRecord2();
//还原次数加1 CL(GEN0)= CL(GEN0)+1
uiSystemGen0++;
//CL(COUSE1) =1的话, 则CL(GEN1)= CL(GEN1)+1 CL(DISCOUSE1)=1
if( fnBitTest( ucSystemCouse , 0) )
{
uiSystemGen1++;
ucSystemCouse = fnBitSet( ucSystemCouse , 4);
}
//CL(COUSE2) =1的话, 则CL(GEN2)= CL(GEN2)+1 CL(DISCOUSE2)=1
if( fnBitTest( ucSystemCouse , 1) )
{
uiSystemGen2++;
ucSystemCouse = fnBitSet( ucSystemCouse , 5);
}
//CL(COUSE3) =1的话, 则CL(GEN3)= CL(GEN3)+1 CL(DISCOUSE3)=1
if( fnBitTest( ucSystemCouse , 2) )
{
uiSystemGen3++;
ucSystemCouse = fnBitSet( ucSystemCouse , 6);
}
//CL(COUSE4) =1的话, 则CL(GEN4)= CL(GEN4)+1 CL(DISCOUSE4)=1
if( fnBitTest( ucSystemCouse , 3) )
{
uiSystemGen4++;
ucSystemCouse = fnBitSet( ucSystemCouse , 7);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -