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

📄 turncontrol.c

📁 一个流量控制仪器的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	
	//负流量报警清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 + -