Changeset 14033 for trunk


Ignore:
Timestamp:
06/02/12 12:50:34 (12 years ago)
Author:
tbretz
Message:
Updated the algorithm to faster set the correct voltage in case of current control.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/feedback.cc

    r14021 r14033  
    118118        fTempOffset = (avgt-25)*4./70; // [V]
    119119
     120        fCursorTemp++;
     121
    120122        return HandleCurrentControl();
    121123    }
     
    127129        if (GetCurrentState()==Feedback::State::kCalibrating && fBiasOffset>dUt-1.2)
    128130        {
     131            fCursorTemp = 0;
     132
    129133            ostringstream msg;
    130134            msg << " (applied calibration offset " << fBiasOffset << "V exceeds temperature correction " << fTempOffset << "V - 1.2V.";
     
    262266        fDimDeviation.Update(vec);
    263267
    264         if (!fOutputEnabled || fDimBias.state()!=BIAS::State::kVoltageOn)
     268        if (!fOutputEnabled) || fDimBias.state()!=BIAS::State::kVoltageOn)
    265269            return GetCurrentState();
    266270
    267271        // Trigger calibration
    268         if (GetCurrentState()==Feedback::State::kCalibrating && fCursorTemp==1)
     272        if (GetCurrentState()==Feedback::State::kCalibrating && fCursorTemp==2)
    269273        {
    270274            DimClient::sendCommandNB("BIAS_CONTROL/REQUEST_STATUS", NULL, 0);
     
    297301        DimClient::sendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_OFFSET",
    298302                                 vec.data()+BIAS::kNumChannels, BIAS::kNumChannels*sizeof(float));
    299 
    300         fCursorTemp++;
    301303
    302304        return GetCurrentState();
     
    719721            AverageCurrents(evt);
    720722
    721         if (curr==&fBiasA && fControlType==kCurrents && fTempOffset>-2)
     723        if (curr==&fBiasA && fControlType==kCurrents &&
     724            fCursorTemp>0 && fCursorCur>0)
    722725        {
    723726            // fCursorTemp: 1 2 3 4 5 6 7 8
    724727            // fCursor%x:   1 1 1 2 2 2 3 3    // 9 steps in ~15s
    725             if (fCursorTemp<9 && fCursorCur%((fCursorTemp+2)/3)==0)
     728            if (fCursorTemp<3 && fCursorCur%(fCursorTemp/3+1)==0)
    726729                HandleCurrentControl();
    727730        }
     
    850853
    851854        fOutputEnabled = evt.GetBool();
     855
     856        if (fControlType==kCurrents)
     857            if (fCursorTemp>1)
     858                fCursorTemp = 1;
    852859
    853860        return GetCurrentState();
Note: See TracChangeset for help on using the changeset viewer.