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

📄 turncontrol.c

📁 一个流量控制仪器的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
        	//立即退出本函数
        	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 + -