Ignore:
Timestamp:
04/12/02 16:59:23 (23 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy/main
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/main/MCosy.cc

    r1111 r1275  
    187187    //
    188188    if (HasError())
    189         lout << "Error #6004 (requesting re pos from Macs) happened." << endl;
     189        lout << "Error while requesting re pos from Macs (SDO #6004)" << endl;
    190190
    191191    return kFALSE;
     
    400400        if (!cdzd && !cdaz)
    401401        {
    402             lout << "Positioning done with " << i << "manuvers." << endl;
     402            lout << "Positioning done in " << i << (i==1?" step.":" steps.") << endl;
     403            SetStatus(MCosy::kStopped);
    403404            return TRUE;
    404405        }
     
    468469    //
    469470    if (HasError())
    470         lout << "Error #3006 (setting velocity of Macs) happened." << endl;
     471        lout << "Error while setting velocity (SDO #3006)" << endl;
    471472
    472473    return kFALSE;
     
    520521
    521522    const Float_t limit = 0.25;
    522 
    523     if (sgn(vt->Az()) != sgn(vcalc.Az()) &&
    524         fabs(vt->Az()) < limit*fabs(vcalc.Az()))
     523/*
     524    if (sgn(vt->Az()) != sgn(vcalc.Az()))
     525        vt->Az(0);
     526//    else
     527    {
     528        if (fabs(vt->Az()) < fabs(vcalc.Az()) *0.5)
     529            vt->Az(0.5*vcalc.Az());
     530
     531        if (fabs(vt->Az()) > fabs(vcalc.Az()) *1.5)
     532            vt->Az(1.5*vcalc.Az());
     533    }
     534
     535    if (sgn(vt->Zd()) != sgn(vcalc.Zd()))
     536        vt->Zd(0);
     537//    else
     538    {
     539        if (fabs(vt->Zd()) > fabs(vcalc.Az()) *1.5)
     540            vt->Zd(1.5*vcalc.Zd());
     541
     542        if (fabs(vt->Zd()) < fabs(vcalc.Az()) *0.5)
     543            vt->Zd(0.5*vcalc.Zd());
     544    }
     545    */
     546
     547    if (sgn(vt->Az()) != sgn(vcalc.Az())
     548        && fabs(vt->Az()) < limit*fabs(vcalc.Az())
     549       )
    525550        vt->Az(0);
    526551    else
     
    531556        }
    532557
    533     if (sgn(vt->Zd()) != sgn(vcalc.Zd()) &&
    534         fabs(vt->Zd()) < limit*fabs(vcalc.Zd()))
     558    if (sgn(vt->Zd()) != sgn(vcalc.Zd())
     559        && fabs(vt->Zd()) < limit*fabs(vcalc.Zd())
     560       )
    535561        vt->Zd(0);
    536562    else
     
    605631    {
    606632        //
     633        // The loop should not be executed faster than the ramp of
     634        // a change in the velocity can be followed.
     635        // (This is important on fast machines >500MHz)
     636        //
     637        //usleep(100000000);
     638
     639        //
    607640        // Request Target position for this moment
    608641        //
     
    715748    // Stop revolution mode (movement)
    716749    //
    717     cout << "Stoping possibleRPM mode..." << endl;
     750    cout << "Stopping possibleRPM mode..." << endl;
    718751    fMac1->SetRpmMode(FALSE);
    719752    fMac2->SetRpmMode(FALSE);
     
    734767void *MCosy::Proc(int msg, void *mp)
    735768{
     769    cout << "MCosy::Proc: 0x" << msg << endl;
    736770    switch (msg)
    737771    {
     
    846880     << Deg2ZdRE(env.GetValue("MaxZd[Deg]", +1.0)) << "RE" << endl;
    847881     */
     882
    848883
    849884    cout << "Setting up software endswitch..." << flush;
     
    890925        // wait until a tracking session is started
    891926        //
    892         while (!fTracking && !fTTalk->HasStopFlag())
     927        while (!fTracking)
    893928            usleep(1);
    894 
    895         if (fTTalk->HasStopFlag())
    896             break;
    897929
    898930        ofstream fout("log/cosy.err");
     
    915947        // only update fTrackingError while tracking
    916948        //
    917         while (fTracking && !fTTalk->HasStopFlag())
     949        bool phca1=false;
     950        bool phca2=false;
     951        bool phcaz=false;
     952
     953        while (fTracking)
    918954        {
    919955            //
     
    922958            const float weight = 1.; //0.3;
    923959
    924             ZdAz offset(fOffset.Zd()*(1.-weight)+(ist.Zd()*kGearRatio.X()-istre.Zd())*weight,
    925                         fOffset.Az()*(1.-weight)+(ist.Az()*kGearRatio.Y()-istre.Az())*weight);
    926 
    927             fOffset = offset;
    928 
    929960            //
    930961            // This is the time constant which defines how fast
    931962            // you correct for external influences (like wind)
    932963            //
    933             bool phca1;
    934             bool phca2;
    935             bool phcaz;
    936 
     964            fZd1->ResetPosHasChanged();
     965            fZd2->ResetPosHasChanged();
     966            fAz->ResetPosHasChanged();
    937967            do
    938968            {
     
    941971                phcaz = fAz->PosHasChanged();
    942972                usleep(1);
    943             } while (!phca1 && !phca2 && !phcaz);
     973            } while (!phca1 && !phca2 && !phcaz && fTracking);
     974
    944975            //---usleep(100000); // 0.1s
    945976
     
    9751006                sla.SetMjd(time.Zd());
    9761007                sollzd = CorrectTarget(ist, sla.CalcZdAz(fRaDec)); // [se]
     1008
     1009                fOffset.Zd(fOffset.Zd()*(1.-weight)+(ist.Zd()*kGearRatio.X()-istre.Zd())*weight);
    9771010            }
    9781011
     
    9811014                sla.SetMjd(time.Az());
    9821015                sollaz = CorrectTarget(ist, sla.CalcZdAz(fRaDec)); // [se]
     1016
     1017                fOffset.Az(fOffset.Az()*(1.-weight)+(ist.Az()*kGearRatio.Y()-istre.Az())*weight);
    9831018            }
    9841019
     
    10631098    // Create Nodes
    10641099    //
     1100    lout << "- Setting up network." << endl;
     1101
    10651102    fMac1=new Macs(1, "Mac.1/Az",      lout);
    10661103    fMac2=new Macs(2, "Mac.2/Zd",      lout);
     
    10841121    // Create Gui Event timer and Gui
    10851122    //
     1123    lout << "- Initializing GUI Timer." << endl;
    10861124    fUpdateGui = new TTimer(this, 100); // 100ms
    10871125
     1126    lout << "- Starting GUI." << endl;
    10881127    fWin=new MGCosy(this, gClient->GetRoot(), 1, 1);
    10891128
     
    11081147*/
    11091148
     1149    lout.DisableOutputDevice(MLog::eGui);
     1150    lout.SetOutputGui(NULL, kFALSE);
     1151
    11101152    gApplication->Terminate(0);
    11111153}
  • trunk/MagicSoft/Cosy/main/MCosy.h

    r1111 r1275  
    1515#define WM_STOP      0x1003
    1616#define WM_POLARIS   0x1004
    17 #define WM_QUIT      0x1005
    1817
    1918class ShaftEncoder;
     
    3332    {
    3433        SetPriority(10);
     34        Detach();
    3535        Start();
    3636    }
     37    ~MTTalk() { cout << "~MTTalk::MTTalk" << endl; }
    3738};
    3839
     
    4142class MCosy : public Network, public MsgQueue, public TObject
    4243{
    43     friend class MTGui;
    4444    friend class MTTalk;
    4545
     
    9494
    9595    void TalkThread();
    96     void GuiThread(MTGui *t);
    9796
    9897    int  SetPosition(const ZdAz &dst);
Note: See TracChangeset for help on using the changeset viewer.