Esempio n. 1
0
int B9Terminal::getEstNextCycleTime(int iCur, int iTgt){
    int iDelta = abs(iTgt - iCur);
    int iRaiseSpd,iLowerSpd,iOpnSpd,iClsSpd,iGap,iBreathe,iSettle;
    double cutOffPU = pSettings->m_dBTClearInMM*100000.0/(double)pPrinterComm->getPU();
    if((double)iTgt<cutOffPU){
        iRaiseSpd = pSettings->m_iRSpd1;
        iLowerSpd = pSettings->m_iLSpd1;
        iOpnSpd = pSettings->m_iOpenSpd1;
        iClsSpd = pSettings->m_iCloseSpd1;
        iGap = (int)(pSettings->m_dOverLift1*100000.0/(double)pPrinterComm->getPU());
        iBreathe = pSettings->m_dBreatheClosed1*1000.0;
        iSettle = pSettings->m_dSettleOpen1*1000.0;
    }
    else{
        iRaiseSpd = pSettings->m_iRSpd2;
        iLowerSpd = pSettings->m_iLSpd2;
        iOpnSpd = pSettings->m_iOpenSpd2;
        iClsSpd = pSettings->m_iCloseSpd2;
        iGap = (int)(pSettings->m_dOverLift2*100000.0/(double)pPrinterComm->getPU());
        iBreathe = pSettings->m_dBreatheClosed2*1000.0;
        iSettle = pSettings->m_dSettleOpen2*1000.0;
    }
    // Time to move +iDelta + iGap, up and down
    int iTimeReq = getZMoveTime(iDelta+iGap, iRaiseSpd);
    iTimeReq += getZMoveTime(iDelta+iGap, iLowerSpd);
    // Plus time to close + open the vat
    iTimeReq += getVatMoveTime(iClsSpd)+getVatMoveTime(iOpnSpd);
    // Plus breathe & settle time;
    iTimeReq += iBreathe + iSettle;
    return iTimeReq;
}
Esempio n. 2
0
int B9Terminal::getEstNextCycleTime(int iCur, int iTgt){
    int iDelta = abs(iTgt - iCur);
    int iRaiseSpd,iLowerSpd,iOpnSpd,iClsSpd,iGap,iBreathe,iSettle;
    double cutOffPU = pSettings->m_dBTClearInMM*100000.0/(double)pPrinterComm->getPU();
    if((double)iTgt<cutOffPU){
        iRaiseSpd = pSettings->m_iRSpd1;
        iLowerSpd = pSettings->m_iLSpd1;
        iOpnSpd = pSettings->m_iOpenSpd1;
        iClsSpd = pSettings->m_iCloseSpd1;
        iGap = (int)(pSettings->m_dOverLift1*100000.0/(double)pPrinterComm->getPU());
        iBreathe = pSettings->m_dBreatheClosed1*1000.0;
        iSettle = pSettings->m_dSettleOpen1*1000.0;
    }
    else{
        iRaiseSpd = pSettings->m_iRSpd2;
        iLowerSpd = pSettings->m_iLSpd2;
        iOpnSpd = pSettings->m_iOpenSpd2;
        iClsSpd = pSettings->m_iCloseSpd2;
        iGap = (int)(pSettings->m_dOverLift2*100000.0/(double)pPrinterComm->getPU());
        iBreathe = pSettings->m_dBreatheClosed2*1000.0;
        iSettle = pSettings->m_dSettleOpen2*1000.0;
    }
    //移动+ iDelta和+ IGAP的时间,向上或向下
    int iTimeReq = getZMoveTime(iDelta+iGap, iRaiseSpd);
    iTimeReq += getZMoveTime(iDelta+iGap, iLowerSpd);
    // 增加关闭及打开vat的时间
    iTimeReq += getVatMoveTime(iClsSpd)+getVatMoveTime(iOpnSpd);
    // 增加评估和结算时间;
    iTimeReq += iBreathe + iSettle;
    return iTimeReq;
}
Esempio n. 3
0
int B9Terminal::getEstCompleteTimeMS(int iCurLayer, int iTotLayers, double dLayerThicknessMM, int iExposeMS)
{
    //return estimated completion time
    int iTransitionPointLayer = (int)(pSettings->m_dBTClearInMM/dLayerThicknessMM);

    int iLowerCount = (int)(pSettings->m_dBTClearInMM/dLayerThicknessMM);
    int iUpperCount = iTotLayers - iLowerCount;

    if(iLowerCount>iTotLayers)iLowerCount=iTotLayers;
    if(iUpperCount<0)iUpperCount=0;

    if(iCurLayer<iTransitionPointLayer)iLowerCount = iLowerCount-iCurLayer; else iLowerCount = 0;
    if(iCurLayer>=iTransitionPointLayer) iUpperCount = iTotLayers - iCurLayer;

    int iTotalTimeMS = iExposeMS*iLowerCount + iExposeMS*iUpperCount;

    iTotalTimeMS = getLampAdjustedExposureTime(iTotalTimeMS);

    // Add Breathe and Settle
    iTotalTimeMS += iLowerCount*(pSettings->m_dBreatheClosed1 + pSettings->m_dSettleOpen1)*1000;
    iTotalTimeMS += iUpperCount*(pSettings->m_dBreatheClosed2 + pSettings->m_dSettleOpen2)*1000;

    // Z Travel Time
    int iGap1 = iLowerCount*(int)(pSettings->m_dOverLift1*100000.0/(double)pPrinterComm->getPU());
    int iGap2 = iUpperCount*(int)(pSettings->m_dOverLift2*100000.0/(double)pPrinterComm->getPU());

    int iZRaiseDistance1 = iGap1 + iLowerCount*(int)(dLayerThicknessMM*100000.0/(double)pPrinterComm->getPU());
    int iZLowerDistance1 = iGap1;

    int iZRaiseDistance2 = iGap2 + iUpperCount*(int)(dLayerThicknessMM*100000.0/(double)pPrinterComm->getPU());
    int iZLowerDistance2 = iGap2;

    iTotalTimeMS += getZMoveTime(iZRaiseDistance1,pSettings->m_iRSpd1);
    iTotalTimeMS += getZMoveTime(iZRaiseDistance2,pSettings->m_iRSpd2);
    iTotalTimeMS += getZMoveTime(iZLowerDistance1,pSettings->m_iLSpd1);
    iTotalTimeMS += getZMoveTime(iZLowerDistance2,pSettings->m_iLSpd2);

    // Vat movement Time
    iTotalTimeMS += iLowerCount*getVatMoveTime(pSettings->m_iOpenSpd1) + iLowerCount*getVatMoveTime(pSettings->m_iCloseSpd1);
    iTotalTimeMS += iUpperCount*getVatMoveTime(pSettings->m_iOpenSpd2) + iUpperCount*getVatMoveTime(pSettings->m_iCloseSpd2);
    return iTotalTimeMS;
}
Esempio n. 4
0
int B9Terminal::getEstFinalCycleTime(int iCur, int iTgt){
    int iDelta = abs(iTgt - iCur);
    int iRaiseSpd,iClsSpd;
    double cutOffPU = pSettings->m_dBTClearInMM*100000.0/(double)pPrinterComm->getPU();
    if((double)iTgt<cutOffPU){
        iRaiseSpd = pSettings->m_iRSpd1;
        iClsSpd = pSettings->m_iCloseSpd1;
    }
    else{
        iRaiseSpd = pSettings->m_iRSpd2;
        iClsSpd = pSettings->m_iCloseSpd2;
    }
    // Time to move +iDelta up
    int iTimeReq = getZMoveTime(iDelta, iRaiseSpd);
    // time to close the vat
    iTimeReq += getVatMoveTime(iClsSpd);
    return iTimeReq;
}
Esempio n. 5
0
int B9Terminal::getEstBaseCycleTime(int iCur, int iTgt){
    int iDelta = abs(iTgt - iCur);
    int iLowerSpd,iOpnSpd,iSettle;
    double cutOffPU = pSettings->m_dBTClearInMM*100000.0/(double)pPrinterComm->getPU();
    if((double)iTgt<cutOffPU){
        iLowerSpd = pSettings->m_iLSpd1;
        iOpnSpd = pSettings->m_iOpenSpd1;
        iSettle = pSettings->m_dSettleOpen1*1000.0;
    }
    else{
        iLowerSpd = pSettings->m_iLSpd2;
        iOpnSpd = pSettings->m_iOpenSpd2;
        iSettle = pSettings->m_dSettleOpen2*1000.0;
    }
    // Time to move iDelta
    int iTimeReq = getZMoveTime(iDelta, iLowerSpd);
    // Plus time to open vat
    iTimeReq += getVatMoveTime(iOpnSpd);
    // Plus settle time;
    iTimeReq += iSettle;
    return iTimeReq;
}