diff --git a/EMBOS/Users/App/user/optical/optical.c b/EMBOS/Users/App/user/optical/optical.c index 351cac4..53d7ac2 100644 --- a/EMBOS/Users/App/user/optical/optical.c +++ b/EMBOS/Users/App/user/optical/optical.c @@ -5892,8 +5892,8 @@ int OpticalRefreshDat(u32 para1, u32 para2) diry += g_optWorkCtrl.yCompenAfterTurn; g_optWorkCtrl.compenFlag1 = 0; -// g_optWorkCtrl.oldXCompenAfterTurn = g_optWorkCtrl.xCompenAfterTurn; -// g_optWorkCtrl.oldYCompenAfterTurn = g_optWorkCtrl.yCompenAfterTurn; + g_optWorkCtrl.oldXCompenAfterTurn = g_optWorkCtrl.xCompenAfterTurn; + g_optWorkCtrl.oldYCompenAfterTurn = g_optWorkCtrl.yCompenAfterTurn; } // printf("rPos = %d, xPos = %d, yPos = %d,\r\n",g_motosPara.motosPos[MTR1_IDX],g_motosPara.motosPos[MTX_IDX],g_motosPara.motosPos[MTY_IDX]); @@ -5990,7 +5990,6 @@ int OpticalRefreshDat(u32 para1, u32 para2) } else if(pFlCtrl->dtype == DATA_OPTI) // 吐丝数据 { - // //速度匹配 // if(IsOptStoringHigh2() == SENSOR_ON ) // { @@ -6228,12 +6227,8 @@ int OpticalRefreshDat(u32 para1, u32 para2) } #if(AFTERTURN_COMPEN == 1) - void XYCompenCalcuAfterTurning(DataItem datItem) { - s32 turnr; - s32 abposr; - DataItem tempDat; if(((datItem.dx != 0) || (datItem.dy != 0)) && (datItem.attr != DATA_PRESSURE)) { if((datItem.dr == 0) && (g_optWorkCtrl.runSteps1 == 0))//先直线 @@ -6242,139 +6237,15 @@ void XYCompenCalcuAfterTurning(DataItem datItem) } else if((datItem.dr != 0) && (g_optWorkCtrl.runSteps1 == 10))//后拐弯 { - ReadAndFreshMotosPos(); - // 转化为 -180--180度之间的数 - - abposr = g_motosPara.motosPos[MTR1_IDX]; - ChangeRotToNP180(&abposr); - if(abposr < 0) - { - abposr += 10000; - } - - g_optWorkCtrl.begainXBeforeWiring = g_workCtrl.workPos[MTX_IDX]; - g_optWorkCtrl.begainYBeforeWiring = g_workCtrl.workPos[MTY_IDX]; - g_optWorkCtrl.begainRBeforeWiring = abposr; + g_optWorkCtrl.begainRBeforeWiring = g_workCtrl.workPos[MTR1_IDX];//用来计算补偿 g_optWorkCtrl.runSteps1 = 20; - printf("begin %d\r\n",g_optWorkCtrl.begainRBeforeWiring); } else if((datItem.dr == 0) && (g_optWorkCtrl.runSteps1 == 20))//拐弯之后 { - for(int i = 1; i < 6; i++) - { - if(GetADataItem(0, (GetDatIndex() + i), &tempDat) == 0) - { - if(tempDat.dr != 0) - { - return; - } - } - else - { - return; - } - } - ReadAndFreshMotosPos(); - // 转化为 -180--180度之间的数 - - abposr = g_motosPara.motosPos[MTR1_IDX]; - ChangeRotToNP180(&abposr); - - if(abposr <= 0) - { - abposr += 10000; - } - - turnr = abposr - g_optWorkCtrl.begainRBeforeWiring; - printf("turn %d, begin %d,end %d\r\n",turnr,g_optWorkCtrl.begainRBeforeWiring,abposr); - - if(g_optWorkCtrl.begainRBeforeWiring > 4900 && //角度是180,做80的区间近似值 - g_optWorkCtrl.begainRBeforeWiring < 5100 && - 1) - { - if(((turnr > -2600) && (turnr < -2400)) || - ((turnr > 2400) && (turnr < 2600)) ) //直角转弯,X做补偿 - { - g_optWorkCtrl.xCompenAfterTurn = g_pOpticalMcPara->xGapCorrect; - g_optWorkCtrl.yCompenAfterTurn = 0; - g_optWorkCtrl.compenFlag1 = 1; - printf("xCompen\r\n"); - } - else if(turnr >= 100 && turnr<= 2400) - { - g_optWorkCtrl.xCompenAfterTurn = 0; - g_optWorkCtrl.yCompenAfterTurn = g_pOpticalMcPara->yGapCorrect; - g_optWorkCtrl.compenFlag1 = 1; - printf("yCompen\r\n"); - } - else - { - g_optWorkCtrl.xCompenAfterTurn = 0; - g_optWorkCtrl.yCompenAfterTurn = 0; - g_optWorkCtrl.compenFlag1 = 0; - } - - } - else if(g_optWorkCtrl.begainRBeforeWiring > 7400 && //角度是270,做100的区间近似值 - g_optWorkCtrl.begainRBeforeWiring < 7600 && - 1) - { - if(((turnr > -2600) && (turnr < -2400)) || - ((turnr > 2400) && (turnr < 2600)) ) //直角转弯,Y做补偿 - { - g_optWorkCtrl.xCompenAfterTurn = 0; - g_optWorkCtrl.yCompenAfterTurn = g_pOpticalMcPara->yGapCorrect; - g_optWorkCtrl.compenFlag1 = 1; - printf("yCompen\r\n"); - - } - else if(turnr >= -2400 && turnr <= -100) //还是原方向,反向x补偿 - { - g_optWorkCtrl.xCompenAfterTurn = g_pOpticalMcPara->xGapCorrect; - g_optWorkCtrl.yCompenAfterTurn = 0; - g_optWorkCtrl.compenFlag1 = 1; - printf("xCompen\r\n"); - } - else - { - g_optWorkCtrl.xCompenAfterTurn = 0; - g_optWorkCtrl.yCompenAfterTurn = 0; - g_optWorkCtrl.compenFlag1 = 0; - } - - } - else if(g_optWorkCtrl.begainRBeforeWiring > 2400 && //角度是90,做100的区间近似值 - g_optWorkCtrl.begainRBeforeWiring < 2600 ) - { - if(turnr >= 30 && turnr<= 2400) //还是原方向,反向x补偿 - { - g_optWorkCtrl.xCompenAfterTurn = g_pOpticalMcPara->xGapCorrect; - g_optWorkCtrl.yCompenAfterTurn = 0; - g_optWorkCtrl.compenFlag1 = 1; - printf("xCompen\r\n"); - } - } - else if((g_optWorkCtrl.begainRBeforeWiring > (-100) && g_optWorkCtrl.begainRBeforeWiring < 100) || - (g_optWorkCtrl.begainRBeforeWiring > 9900 && g_optWorkCtrl.begainRBeforeWiring < 10100)) - { - if(turnr >= -2400 && turnr <= -30) //还是原方向,反向y补偿 - { - g_optWorkCtrl.xCompenAfterTurn = 0; - g_optWorkCtrl.yCompenAfterTurn = g_pOpticalMcPara->yGapCorrect; - g_optWorkCtrl.compenFlag1 = 1; - printf("yCompen\r\n"); - } - } - -// if((abs(g_workCtrl.workPos[MTR1_IDX] - g_optWorkCtrl.begainRBeforeWiring) < 2000) && -// (g_optWorkCtrl.compenFlag1 == 0) ) -// { -// g_optWorkCtrl.runSteps1 = 20; -// } -// else -// { + g_optWorkCtrl.xCompenAfterTurn = g_pOpticalMcPara->rkMatThickness/100*cos(g_optWorkCtrl.begainRBeforeWiring/10000) - g_optWorkCtrl.oldXCompenAfterTurn; + g_optWorkCtrl.yCompenAfterTurn = g_pOpticalMcPara->rkMatThickness/100*sin(g_optWorkCtrl.begainRBeforeWiring/10000) - g_optWorkCtrl.oldYCompenAfterTurn; + g_optWorkCtrl.compenFlag1 = 1; g_optWorkCtrl.runSteps1 = 0; -// } } } } @@ -6531,16 +6402,20 @@ int OpticalWork(int mode) err = MoveU1ToPos(g_pOpticalMcPara->rkHighPos, NULL);//抬起机头 ReadMotosPos(); - if(g_workCtrl.workPos[MTX_IDX] <= (g_motosPara.motosPos[MTX_IDX] + 200)) + if(g_workCtrl.workPos[MTX_IDX] <= g_motosPara.motosPos[MTX_IDX]) { g_workCtrl.workPos[MTX_IDX] -= g_pOpticalMcPara->startPosoffx; g_optWorkCtrl.usecomx = 1; } - if(g_workCtrl.workPos[MTY_IDX] <= (g_motosPara.motosPos[MTY_IDX] + 200)) + if(g_workCtrl.workPos[MTY_IDX] <= g_motosPara.motosPos[MTY_IDX]) { g_workCtrl.workPos[MTY_IDX] -= g_pOpticalMcPara->startPosoffy; g_optWorkCtrl.usecomy = 1; } +/* if (err == ERR_NONE) + { + err = MoveXYToPos(-1100, -6000, NULL); + }*/ if (err == ERR_NONE) { err = MoveXYRS1P1ToWorkPos(&curDat, NULL, 1, 0); @@ -6809,7 +6684,6 @@ int OpticalWork(int mode) // 吐丝数据动作处理 if (curDat.ctrl == DATA_OPTI) { -// g_optWorkCtrl.runSteps1 = 0; g_optWorkCtrl.motoRunFlag = 1; err = MoveR1ToPos(2500, NULL);//旋转到吐丝位置:90° @@ -6880,8 +6754,8 @@ int OpticalWork(int mode) { g_optWorkCtrl.IsNoMaterialScanLen = g_pOpticalMcPara->materialFreeScanNum; -// g_optWorkCtrl.oldXCompenAfterTurn = 0; -// g_optWorkCtrl.oldYCompenAfterTurn = 0; + g_optWorkCtrl.oldXCompenAfterTurn = 0; + g_optWorkCtrl.oldYCompenAfterTurn = 0; if(err == ERR_NONE) { @@ -7154,7 +7028,7 @@ int OpticalWork(int mode) //布线结束后偏移到吐丝位置(判定:偏移数据前是布线数据,后是吐丝数据) if((oldDataForOffset == DATA_DRAWING || oldDataForOffset == DATA_PRESSURE) && tmpDat.ctrl == DATA_OPTI) { -/* if(g_optWorkCtrl.useGapCorx == 1) + if(g_optWorkCtrl.useGapCorx == 1) { g_workCtrl.workPos[MTX_IDX] -= g_pOpticalMcPara->xGapCorrect; g_optWorkCtrl.useGapCorx = 0; @@ -7163,7 +7037,7 @@ int OpticalWork(int mode) { g_workCtrl.workPos[MTY_IDX] -= g_pOpticalMcPara->yGapCorrect; g_optWorkCtrl.useGapCory = 0; - }*/ + } spinLenForOffset = GetSyntheticLength(datx2 - datx1,daty2 - daty1); g_optWorkCtrl.isEndOfSpinFlag = 1; g_optWorkCtrl.cutingFlag = 1; @@ -7287,14 +7161,26 @@ int OpticalWork(int mode) //前一根布线结束移到下一根布线起始(判定:偏移数据前是吐丝数据,后是吐丝数据) else if(oldDataForOffset == DATA_OPTI && tmpDat.ctrl == DATA_OPTI) { + +// MoveXYToPos(-1100, -6000, NULL); + +/* if(g_workCtrl.workPos[MTX_IDX] > 65000 || + g_workCtrl.workPos[MTY_IDX] > 44000) + { + MoveXYToPos(70700, 64000, NULL); + } + else + { + MoveXYToPos(-1100, -6000, NULL); + }*/ err = MoveU1ToPos(g_pOpticalMcPara->rkHighPos, NULL);//抬起机头 ReadMotosPos(); - if(g_workCtrl.workPos[MTX_IDX] <= (g_motosPara.motosPos[MTX_IDX] + 200)) + if(g_workCtrl.workPos[MTX_IDX] <= g_motosPara.motosPos[MTX_IDX]) { g_workCtrl.workPos[MTX_IDX] -= g_pOpticalMcPara->startPosoffx; g_optWorkCtrl.usecomx = 1; } - if(g_workCtrl.workPos[MTY_IDX] <= (g_motosPara.motosPos[MTY_IDX] + 200)) + if(g_workCtrl.workPos[MTY_IDX] <= g_motosPara.motosPos[MTY_IDX]) { g_workCtrl.workPos[MTY_IDX] -= g_pOpticalMcPara->startPosoffy; g_optWorkCtrl.usecomy = 1; @@ -7335,7 +7221,7 @@ int OpticalWork(int mode) { FixMatCylinderOn();//顶料顶料 DelayRef(200); -/* ReadMotosPos(); //起始点到偏移的位置和移动到起始点反向增加间隙补偿 + ReadMotosPos(); //起始点到偏移的位置和移动到起始点反向增加间隙补偿 if(g_workCtrl.workPos[MTX_IDX] < g_motosPara.motosPos[MTX_IDX]) { @@ -7346,7 +7232,7 @@ int OpticalWork(int mode) { g_workCtrl.workPos[MTY_IDX] += g_pOpticalMcPara->yGapCorrect; g_optWorkCtrl.useGapCory = 1; - }*/ + } err = MoveR1ToPos(PitkToRpp(g_workCtrl.workPos[MTR1_IDX]),NULL); if (err == ERR_NONE) @@ -7556,7 +7442,6 @@ int OpticalWork(int mode) { OpticalCloseAll(); SetDatIdxToStart(); - Fan1MotoOff(); err = OpticalGotoFinishPos(); } @@ -7677,7 +7562,6 @@ void AllToReset(void) g_optWorkCtrl.motopreFlag = 0; // 已经压料标志 // g_optWorkCtrl.lowingFlag = 1; // 需要下降机头标志 - Fan1MotoOff(); err = MoveU1ToPos(g_pOpticalMcPara->rkHighPos, NULL);//抬起机头 if (err == ERR_NONE) diff --git a/EMBOS/Users/App/user/optical/optical.h b/EMBOS/Users/App/user/optical/optical.h index cae6ce3..2dbe95c 100644 --- a/EMBOS/Users/App/user/optical/optical.h +++ b/EMBOS/Users/App/user/optical/optical.h @@ -45,14 +45,11 @@ typedef struct //补偿 u8 runSteps1; // - u8 drZeroNum; //直线段数 s16 oldXCompenAfterTurn; // oldX拐弯之后的补偿 s16 oldYCompenAfterTurn; // oldY拐弯之后的补偿 s16 xCompenAfterTurn; // x拐弯之后的补偿 s16 yCompenAfterTurn; // y拐弯之后的补偿 s32 begainRBeforeWiring; // 布线起始角度 - s32 begainXBeforeWiring; // 布线起始位置X - s32 begainYBeforeWiring; // 布线起始位置Y u8 compenFlag1; // 可以补偿标志 //----------------------- @@ -76,8 +73,8 @@ typedef struct u8 usecomx; // 使用反向运行补偿 u8 usecomy; // 使用反向运行补偿 -// u8 useGapCorx; // 使用反向对接间隙补偿 -// u8 useGapCory; // 使用反向对接间隙补偿 + u8 useGapCorx; // 使用反向对接间隙补偿 + u8 useGapCory; // 使用反向对接间隙补偿 int spinLenOffset; // 偏移长度 }OptWorkCtrl; @@ -107,7 +104,7 @@ OptBorder g_optBorder; #define MATERIAL_SCAN 1 // 无料检测(断线检测) -#define AFTERTURN_COMPEN 1 // 拐角补偿 +#define AFTERTURN_COMPEN 0 // 拐角补偿 #define XY_GAP_CONVERT 0 // 间隙补偿