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

📄 usrinit.cpp

📁 Vxworks 下重矿设备应用开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*
 * 上海市科学技术委员会科研计划项目
 * 课题名称:面向重矿行业设备的嵌入式控制器
 * 课题编号:04dz15010
 * 
 * 同济大学CIMS中心重矿行业嵌入式控制器研发小组
 * 李辉,石磊,黄迪,邹志强
 * 
 * usrInit.cpp
 * 主程序
 * 
 */
 
 
#include <ucore/i386.h>
#define  CONFIGURE_INIT
#include <taskLib.h>
#include <stdlib.h>
#include <stdio.h>
#include <reworks/ratemon.h >
#include <reworks/clock.h>
#include "vxworks.h"
#include "taskLib.h"
#include "system.h"
#include "ad.h"
#include "graph.h"
#include "nettask.h"
#include "ioLib.h"
#include "logLib.h"
#include "string.h"
#include "netinet\\tcp.h"
#include "semLib.h"
#include "board.h"
#include "read_il.h"


void slowdatacollect(unsigned int i ,float slowdatabuf[]); 
void fastdatacollect(unsigned int i ,int AcquireTimes,float fastdatabuf[]) ;

extern void PreDiagData(void *p);
extern void Panel_Control(void *p);
extern  "C" void netTask(void* p);
extern void netchecklink(void* p);
extern void netCltCloseAll();
extern void PreRun(void);
extern "C" void cltnet(void* p);
extern "C" int usrTffsConfig(int,int,char*);

extern char *DeleteLeftSpace(char *);
extern char *DeleteRightSpace(char *);
extern void Para_Display(void);

volatile SNetErr errcount;           //net error record
int netclose_id;
int netchecklink_id;
unsigned32 semNetLink;
extern float current;

//char Segment[1024*4];		// SoftPLC IL

extern int CPI[8];

//此处定义上下限变量的定义
//监测变量
float  DC_MotorCur_MIN;    		//单锤破电机电流,最小值
float  DC_MotorCur_MAX;    		//单锤破电机电流,最大值
float  DC_Axle1DevX_MIN;		//单锤破轴承一X方向振动幅值,最小值
float  DC_Axle1DevX_MAX;		//单锤破轴承一X方向振动幅值,最大值
float  DC_Axle1DevY_MIN;		//单锤破轴承一Y方向振动幅值,最小值
float  DC_Axle1DevY_MAX;		//单锤破轴承一Y方向振动幅值,最小值
float  DC_Axle2DevX_MIN;		//单锤破轴承二X方向振动幅值,最小值
float  DC_Axle2DevX_MAX;		//单锤破轴承二X方向振动幅值,最大值
float  DC_Axle2DevY_MIN;		//单锤破轴承二Y方向振动幅值,最小值
float  DC_Axle2DevY_MAX;		//单锤破轴承二Y方向振动幅值,最小值
float  DC_Axle1Temp_MIN;   		//单锤破轴承一温度,最小值
float  DC_Axle1Temp_MAX;   		//单锤破轴承一温度,最大值
float  DC_Axle2Temp_MIN;   		//单锤破轴承二温度,最小值
float  DC_Axle2Temp_MAX;   		//单锤破轴承二温度,最大值
float  BW_MotorCur_MIN;    		//板喂机电机电流,最小值
float  BW_MotorCur_MAX;    		//板喂机电机电流,最大值


/*
 #define slowgateL  1
 #define slowgateH  4
 此处定义是用于数据采集卡的对低速信号的通道范围设置,主要包括
 1通道  output1       单锤破电机电流(A)	
 2通道  output2       轴承一x方向振动(mm)
 3通道  output3       轴承一y方向振动(mm)
 4通道  output4       轴承二x方向振动(mm)
 5通道  output5       轴承二y方向振动(mm)
 6通道  output6       轴承一温度(^c)
 7通道  output7       轴承二温度(^c)
 8通道  output8       电机电流(A)
*/
float databuf[5]={0.0, 0.0, 0.0};    	//按照上面的顺序存放各个状态量
float x1buf[1024]; 						//存放振动加速度值
float x2buf[1024];
float y1buf[1024];
float y2buf[1024];

float voltref[46]={
1.386623165,
1.425217975,
1.466022766,
1.509232955,
1.555067691,
1.603773585,
1.644333819,
1.686998862,
1.731936917,
1.768230106,
1.829399527,
1.871642054,
1.915881531,
1.962262989,
2.010945854,
2.062105774,
2.104759232,
2.149214483,
2.195588159,
2.244007181,
2.294609916,
2.337219534,
2.381441566,
2.427369303,
2.475103372,
2.524752475,
2.566476781,
2.60960334,
2.654204051,
2.700355812,
2.748140963,
2.78846995,
2.830000222,
2.872786265,
2.91688591,
2.962360595,
3.000423589,
3.039477448,
3.079561374,
3.120716663,
3.162986852,
3.198855939,
3.235547886,
3.273091339,
3.311516285,
3.350854139
};


OS_STATUS sc;
	//创建消息队列,用于panel.c中按钮消息的传递
	unsigned32 t_id1,t_id2,t_id;
	unsigned32 net_id, softplc_id,net_client_id;

unsigned32 gui_id, slowdata_id, fastdata_id,prediag_id;		// 四个任务的id


/*********************************************/
/*                Code Start                 */
/*********************************************/ 


/*
 * 运行图形界面
 */
void gui_main(void * p)
{
	Fl_Window* w=make_window();
  	w->show();
  	Fl::run();
  	OSTaskDelay(300);
}


/*
 * 参数读取
 */

void Read_Para(void)
{
	FILE * fp;
	char *status;
	char buffer[80];
	char *ParaName;
	char *ParaValue;
	float fTemp;
	int iTemp;
//	char filecontent[1024*4];  
	
	fp = fopen("/tffs0/ParaSet.ini","rb+");  
	
	if(fp != NULL)
		printf("file open success !\n"); 
	else 
	{
		printf("file open failed !\n");
		return;
	}

//	memset(filecontent,0,sizeof(filecontent));

//	fread(Segment,1,4096,fp);

	status = fgets(buffer,sizeof(buffer),fp);
	
	while(status != NULL) 
	{
		ParaName = strtok(buffer, "=");
		ParaValue = strtok(NULL, "\n");
		if (ParaName != NULL)
		{
			ParaName = DeleteLeftSpace(ParaName);
			ParaName = DeleteRightSpace(ParaName);
			ParaValue = DeleteLeftSpace(ParaValue);
			ParaValue = DeleteRightSpace(ParaValue);
			
			if (!strcmp(ParaName,"DC_MotorCur_MIN"))  {
				iTemp = atoi(ParaValue);
				DC_MotorCur_MIN = iTemp;
			}
			else if (!strcmp(ParaName,"DC_MotorCur_MAX"))  {
					iTemp = atoi(ParaValue);
					DC_MotorCur_MAX = iTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle1DevX_MIN"))  {
					fTemp = atof(ParaValue);
					DC_Axle1DevX_MIN = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle1DevX_MAX"))  {
					fTemp = atof(ParaValue);
					DC_Axle1DevX_MAX = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle1DevY_MIN"))  {
					fTemp = atof(ParaValue);
					DC_Axle1DevY_MIN = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle1DevY_MAX"))  {
					fTemp = atof(ParaValue);
					DC_Axle1DevY_MAX = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle2DevX_MIN"))  {
					fTemp = atof(ParaValue);
					DC_Axle2DevX_MIN = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle2DevX_MAX"))  {
					fTemp = atof(ParaValue);
					DC_Axle2DevX_MAX = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle2DevY_MIN"))  {
					fTemp = atof(ParaValue);
					DC_Axle2DevY_MIN = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle2DevY_MAX"))  {
					fTemp = atof(ParaValue);
					DC_Axle2DevY_MAX = fTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle1Temp_MIN"))  {
					iTemp = atoi(ParaValue);
					DC_Axle1Temp_MIN = iTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle1Temp_MAX"))  {
					iTemp = atoi(ParaValue);
					DC_Axle1Temp_MAX = iTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle2Temp_MIN"))  {
					iTemp = atoi(ParaValue);
					DC_Axle2Temp_MIN = iTemp;
			}
			else if (!strcmp(ParaName,"DC_Axle2Temp_MAX"))  {
					iTemp = atoi(ParaValue);
					DC_Axle2Temp_MAX= iTemp;
			}
			else if (!strcmp(ParaName,"BW_MotorCur_MIN"))  {
					iTemp = atoi(ParaValue);
					BW_MotorCur_MIN = iTemp;
			}
			else if (!strcmp(ParaName,"BW_MotorCur_MAX"))  {
					iTemp = atoi(ParaValue);
					BW_MotorCur_MAX = iTemp;
			}
		}

		status = fgets(buffer,sizeof(buffer),fp);
	}

	fclose(fp); 	
	
	Para_Display();
	
	return;	
}


/*
 * AD初始化
 */
void ADCInit(void)     	
{	
	//AD初始化
	InitializeBoardSettings(768, 10.0, UNIPOLAR);
	ResetBoard();
	
	//数字量输出配置
	ConfigureIOPorts(OUTPUT, OUTPUT, INPUT);	//配置port0,1输出,port2输入
}


/*
 * 慢速数据采集
 */
void adtest1()
{
    char s[10];

    while(1) {
		slowdatacollect(5,databuf);	
		
		
		
	   	sprintf(s,"%.4f", databuf[0]);		//单锤破电机电流
	   	if (databuf[0]<DC_MotorCur_MIN or databuf[0]>DC_MotorCur_MAX)
			output1->textcolor(1);		//超标数据以红色显示
		else

⌨️ 快捷键说明

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