📄 usrinit.cpp
字号:
/*
* 上海市科学技术委员会科研计划项目
* 课题名称:面向重矿行业设备的嵌入式控制器
* 课题编号: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 + -