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

📄 usrinit.cpp

📁 Vxworks 下重矿设备应用开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			output1->textcolor(0);		//正常数据以黑色显示
	   	output1->value(s);	   	   	    		 
		
	   	sprintf(s,"%.4f", databuf[3]);		//单锤破轴承一温度
	   	if (databuf[1]>DC_Axle1Temp_MAX or databuf[1]<DC_Axle1Temp_MIN)
			output6->textcolor(1);		//超标数据以红色显示
		else
			output6->textcolor(0);		//正常数据以黑色显示
	   	output6->value(s);
		
	   	sprintf(s,"%.4f", databuf[4]);		//单锤破轴承二温度
	   	if (databuf[2]>DC_Axle2Temp_MAX or databuf[6]<DC_Axle2Temp_MIN)
			output7->textcolor(1);		//超标数据以红色显示
		else
			output7->textcolor(0);		//正常数据以黑色显示
	   	output7->value(s);
		
	   	sprintf(s,"%.4f", x1buf[100]);		//单锤破轴承一X方向振动
	   	if (x1buf[100]>DC_Axle1DevX_MAX or x1buf[100]<DC_Axle1DevX_MIN)
			output2->textcolor(1);		//超标数据以红色显示
		else
			output2->textcolor(0);		//正常数据以黑色显示
	   	output2->value(s);	   	   	    		 
		
	   	sprintf(s,"%.4f", y1buf[100]);		//单锤破轴承一Y方向振动
	   	
	   	if (y1buf[100]>DC_Axle1DevY_MAX or y1buf[100]<DC_Axle1DevY_MIN)
			output3->textcolor(1);		//超标数据以红色显示
		else
			output3->textcolor(0);		//正常数据以黑色显示
	   	output3->value(s);
		
	   	sprintf(s,"%.4f", x2buf[100]);		//单锤破轴承二X方向振动
	   	if (x2buf[100]>DC_Axle2DevX_MAX or x2buf[100]<DC_Axle2DevX_MIN)
			output4->textcolor(1);		//超标数据以红色显示
		else
			output4->textcolor(0);		//正常数据以黑色显示
	   	output4->value(s);      
		
	   	sprintf(s,"%.4f", y2buf[100]);		//单锤破轴承二Y方向振动
	   	if (y2buf[100]>DC_Axle2DevY_MAX or y2buf[100]<DC_Axle2DevY_MIN)
			output5->textcolor(1);		//超标数据以红色显示
		else
			output5->textcolor(0);		//正常数据以黑色显示
	   	output5->value(s);    
		
	   	sprintf(s,"%.4f", current);		//板喂机电机电流
	   	if (current<BW_MotorCur_MIN or current>BW_MotorCur_MAX)
			output8->textcolor(1);		//超标数据以红色显示
		else
			output8->textcolor(0);		//正常数据以黑色显示
	   	output8->value(s);
		
	   	OSTaskDelay(800);	
    }
}

/*
 * 快速数据采集
 */
void adtest2()
{
	while(1){      	
		fastdatacollect(0,1024,x1buf);		  
		OSTaskDelay(100);
		fastdatacollect(1,1024,y1buf);
		OSTaskDelay(100);
		fastdatacollect(2,1024,x2buf);
		OSTaskDelay(100);
	    fastdatacollect(3,1024,y2buf);		
     	OSTaskDelay(100);
	}	
}

/*
 * 慢速信号采集函数
 */
void slowdatacollect(unsigned int i ,float slowdatabuf[]) 
{ 
    unsigned int Index;       
    float volt; 
	for(Index=0; Index<=i; Index++)
	{
	    SetChannel(Index+4);
	    StartConversion();	    
       while(ConversionDone() == 0);
        volt=DigitalToSBS(ReadData()) ; 
       // volt=1.88;         
        //slowdatabuf[Index]=(volt*50-120);
        if (Index==0)
        {  float tmp=volt*35.4-100;
        	if(tmp<0){slowdatabuf[Index]=0;}
        	else {slowdatabuf[Index]=(volt*35.4-100);}
        }
        else if(Index!=1)
        {
        	if(volt<voltref[0]){slowdatabuf[Index]=0;}
        	else if(volt>voltref[45]){slowdatabuf[Index]=45;}
        	else
        	{
        		for(int i=0;i<=45;i++)
        		{
        		    if(volt<voltref[i]) {slowdatabuf[Index]=i;break;}
        		    
        		
        		}
              
        
        	}
        
        
        }
        
        
	}	
	
}

/**************************************************************************************
 * 振动信号采集函数
 * 输入: i			通道号
 * AcquireTimes     每个通道采集的次数
 * astdatabuf[]     采集量的存放数组
 **************************************************************************************/
void fastdatacollect(unsigned int i ,int AcquireTimes,float fastdatabuf[]) 
{ 
	int Index;       
	float volt; 
	for(Index=0; Index < AcquireTimes; Index++)
	{
	    SetChannel(i);	   
	    StartConversion();
        while(ConversionDone() == 0);       	  	    	   	                              
        volt=DigitalToSBS( ReadData()) ;          
       // volt=DigitalToSBS( ReadData()) ;          
        fastdatabuf[Index]=(volt*6.2-5.7)-1.2;
        //fastdatabuf[Index]=(volt*6.2-5.7);
	}	
}

/*
 * 主函数
 */
void UserInit(void)
{
	
	//AD卡初始化
	ADCInit();	
   	usrTffsConfig(0,0,"/tffs0");
   	
 /******************** 
   Get IL.TXT Data 
 *********************/
   	read_il();
	   
	/******************************
     * 建立并启动图形界面任务
     ******************************/
	sc = OSTaskCreate("Gui",
			105,  			//优先级,图形界面的优先级要设置的稍低一些
			16*1024,		//堆栈大小,估算值
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL,
			&gui_id);
			
	if (sc != OS_OK)	{
			printf("Can't create gui task \n");
			return;
		}
		
	sc = OSTaskStart(gui_id, gui_main, 0);
	
	if (sc != OS_OK)	{
			printf("Can't start gui task \n");
			return;
		}
	
	
	/******************************
	 * 建立并启动慢速数据采集任务
	 ******************************/

    sc = OSTaskCreate ( "PTASK1",
			100,
			16*1024,
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL, 
			&t_id1 );

  	if ( sc != OS_OK )
    	printf( "OSTaskCreate ERROR\n");
  	else
  		printf( "OSTaskCreate OK\n");

  	sc = OSTaskStart ( t_id1,(os_task_entry)adtest1,0);

  	if ( sc != OS_OK )
    	printf( "OSTaskStart ERROR\n");
			
	
	/******************************
	 * 建立并启动快速数据采集任务
	 ******************************/
	sc = OSTaskCreate ( "PTASK2",
			100,
			16*1024,
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL, 
			&t_id2 );

  	if ( sc != OS_OK )
    	printf( "OSTaskCreate ERROR\n");
  	else
  		printf( "OSTaskCreate OK\n");

  	sc = OSTaskStart ( t_id2,(os_task_entry)adtest2,0);

  	if ( sc != OS_OK )
    	printf( "OSTaskStart ERROR\n");
		

	/******************************************
	 * 建立并启动网络通讯任务,用于和上位机通讯
	 ******************************************/
	sc = OSTaskCreate("NetTask",
			90,  
			16*1024,
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL,
			&net_id);
			
	if (sc != OS_OK)	{
			printf("Can't create task \n");
			return;
		}
		
	sc = OSTaskStart(net_id, netTask, 0);
	
	if (sc != OS_OK)	{
			printf("Can't start gui task \n");
			return;
		}	
			
		
	/******************************************
	 * 建立并启动网络通讯任务,用于和板喂机通讯
	 ******************************************/
	 /* sc = OSTaskCreate(" net_client",
			90,  
			16*1024,
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL,
			& net_client_id);
			
	if (sc != OS_OK)	{
			printf("Can't create task \n");
			return;
		}*/
	
   /* sc = OSTaskCreate(" net_client",
			90,  
			16*1024,
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL,
			& net_client_id);
			
	if (sc != OS_OK)	{
			printf("Can't create task \n");
			return;
		}
		
	sc = OSTaskStart(net_client_id ,cltnet, 0);
	
	if (sc != OS_OK)	{
			printf("Can't start cltnet task \n");
			return;
		}	*/	


	/******************************
	 * 建立并启动软PLC任务
	 ******************************/
	sc = OSTaskCreate("SoftPLC",
			101,  
			16*1024,
		OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_FP|OS_LOCAL,
			&softplc_id);
			
	if (sc != OS_OK)	{
			printf("Can't create task \n");
			return;
		}
		
	sc = OSTaskStart(softplc_id, (os_task_entry)PreRun, 0);
	
	if (sc != OS_OK)	{
			printf("Can't start softplc task \n");
			return;
		}		


	//  spawn  prediag task                     
	/*sc = OSTaskCreate("prediag",
			115,  
			16*1024,
			OS_PREEMPT|OS_NO_TIMESLICE|OS_NO_ASR|OS_INTERRUPT_LEVEL(0),
			OS_NO_FP|OS_LOCAL,
			&prediag_id);
			
	if (sc != OS_OK)	{
			printf("Can't create prediag task \n");
			return;
		}
		
	sc = OSTaskStart(prediag_id, PreDiagData , 0);    //诊断任务
	
	if (sc != OS_OK)	{
			printf("Can't start prediag task \n");
			return;
		}	*/
		
	return;	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -