Changeset 1701 for trunk/MagicSoft/Cosy


Ignore:
Timestamp:
01/10/03 15:38:47 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy
Files:
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/Changelog

    r1700 r1701  
    2323     - implemented WM_HOME
    2424     - fixed workaround for the encoder resolutions of the MACS
     25
     26   * base/MGLIst.h
     27     - removed (use the one from Mars)
    2528
    2629
  • trunk/MagicSoft/Cosy/candrv/network.cc

    r1690 r1701  
    235235        if (fNodes[i])
    236236        {
    237             lout << "- Setting up Node #" << dec << i << endl;
     237            lout << "- Setting up Node #" << dec << i << " (";
     238            lout << fNodes[i]->GetNodeName() << ")" << endl;
    238239            fNodes[i]->InitDevice(this);
    239240            if (!fNodes[i]->IsZombieNode())
  • trunk/MagicSoft/Cosy/devdrv/macs.cc

    r1699 r1701  
    110110
    111111    case 0x6002:
    112         lout << "- Velocity resolution " << GetNodeName() << ": " << dec << val << " ticks/min" << endl;
     112        lout << "- " << GetNodeName() << ": Velocity resolution = " << dec << val << " ticks/min" << endl;
    113113        fVelRes = val;
    114114        return;
    115115
    116116    case 0x6501:
    117         lout << "- Encoder resolution " << GetNodeName() << ": " << dec << val << " ticks/min" << endl;
     117        lout << "- " << GetNodeName() << ": Encoder resolution = " << dec << val << " ticks/min" << endl;
    118118        fRes = val;
    119119        return;
     
    132132        case 0:
    133133            lout << ddev(MLog::eGui);
    134             lout << "- Velocity set (" << GetNodeName() << ")" << endl;
     134            lout << "- " << GetNodeName() << ": Velocity set." << endl;
    135135            lout << edev(MLog::eGui);
    136136            return;
     
    142142        case 0:
    143143            lout << ddev(MLog::eGui);
    144             lout << "- Acceleration set (" << GetNodeName() << ")" << endl;
     144            lout << "- " << GetNodeName() << ": Acceleration set." << endl;
    145145            lout << edev(MLog::eGui);
    146146            return;
    147147        case 1:
    148148            lout << ddev(MLog::eGui);
    149             lout << "- Deceleration set (" << GetNodeName() << ")" << endl;
     149            lout << "- " << GetNodeName() << ": Decceleration set." << endl;
    150150            lout << edev(MLog::eGui);
    151151            return;
     
    157157        case 0:
    158158            lout << ddev(MLog::eGui);
    159             lout << "- RPM mode switched (" << GetNodeName() << ")" << endl;
     159            lout << "- " << GetNodeName() << ": RPM mode switched." << endl;
    160160            lout << edev(MLog::eGui);
    161161            return;
     
    182182        case 0:
    183183            lout << ddev(MLog::eGui);
    184             lout << "- Absolute positioning started (" << GetNodeName() << ")" << endl;
     184            lout << "- " << GetNodeName() << ": Absolute positioning started." << endl;
    185185            lout << edev(MLog::eGui);
    186186            return;
     
    188188        case 1:
    189189            lout << ddev(MLog::eGui);
    190             lout << "- Relative positioning started (" << GetNodeName() << ")" << endl;
     190            lout << "- " << GetNodeName() << ": Relative positioning started." << endl;
    191191            lout << edev(MLog::eGui);
    192192            return;
     
    202202void Macs::ReqVelRes()
    203203{
    204     lout << "- Requesting velocity resolution (velres, 0x6002) of " << GetNodeName() << endl;
     204    lout << "- " << GetNodeName() << ": Requesting velocity resolution (velres, 0x6002)." << endl;
    205205    RequestSDO(0x6002);
    206206    WaitForSdo(0x6002);
    207207}
    208208
     209void Macs::ReqRes()
     210{
     211    lout << "- " << GetNodeName() << ": Requesting encoder resolution (res, 0x6501)." << endl;
     212    RequestSDO(0x6501);
     213    WaitForSdo(0x6501);
     214}
     215
    209216void Macs::SetPDO1On(BYTE_t flag)
    210217{
    211     lout << "- " << (flag?"Enable":"Disable") << " PDO1 of " << GetNodeName() << endl;
     218    lout << "- " << GetNodeName() << ": " << (flag?"Enable":"Disable") << " PDO1." << endl;
    212219    SendSDO(0x1800, 1, (LWORD_t)(flag?0:1)<<31);
    213220    WaitForSdo(0x1800, 1);           
     
    216223void Macs::InitDevice(Network *net)
    217224{
    218     lout << "- MAC Init device." << endl;
     225    lout << "- " << GetNodeName() << ": MAC Init device." << endl;
    219226    NodeDrv::InitDevice(net);
    220     lout << "- MAC Init device...done." << endl;
     227    lout << "- " << GetNodeName() << ": MAC Init device...done." << endl;
    221228
    222229//    SendSDO(0x4003, (LWORD_t)('E'<<24 | 'X'<<16 | 'I'<<8 'T'));
     
    238245    EnableTimeout(kFALSE);
    239246
    240     lout << "- Requesting Mac Software Version of " << GetNodeName() << endl;
     247    lout << "- " << GetNodeName() << ": Requesting Mac Software Version." << endl;
    241248    RequestSDO(0x100a);
    242249    WaitForSdo(0x100a);
     
    244251    SetRpmMode(FALSE);
    245252
     253    ReqRes();    // Init fRes
    246254    ReqVelRes(); // Init fVelRes
    247255
    248     lout << "- Motor on of " << GetNodeName() << endl;
     256    lout << "- " << GetNodeName() << ": Motor on." << endl;
    249257    SendSDO(0x3000, string('o', 'n'));
    250258    WaitForSdo(0x3000);
     
    286294    SetPDO1On(FALSE);
    287295
    288     lout << "- Motor off of " << GetNodeName() << endl;
     296    lout << "- " << GetNodeName() << ": Motor off." << endl;
    289297    SendSDO(0x3000, string('o', 'f', 'f'));
    290298    WaitForSdo(0x3000);
     
    299307void Macs::ReqPos()
    300308{
    301     lout << "- Requesting Position of " << GetNodeName() << endl;
     309    lout << "- " << GetNodeName() << ": Requesting Position." << endl;
    302310    RequestSDO(0x6004);
    303311    WaitForSdo(0x6004);
    304312}
    305313
    306 void Macs::ReqRes()
    307 {
    308     lout << "- Requesting Encoder Resolution of " << GetNodeName() << endl;
    309     RequestSDO(0x6501);
    310     WaitForSdo(0x6501);
    311 }
    312 
    313314void Macs::ReqVel()
    314315{
    315     lout << "- Requesting Velocity of " << GetNodeName() << endl;
     316    lout << "- " << GetNodeName() << ": Requesting Velocity." << endl;
    316317    RequestSDO(0x2002);
    317318    WaitForSdo(0x2002);
     
    320321void Macs::SetHome(LWORDS_t pos, WORD_t maxtime)
    321322{
    322     lout << "- Driving " << GetNodeName() << " to home position, Offset=" << dec << pos << endl;
     323    /*
     324    Bool_t to = fTimerOn;
     325
     326    if (to)
     327        EnableTimeout(kFALSE);
     328    */
     329    lout << "- " << GetNodeName() << ": Driving to home position, Offset=" << dec << pos << endl;
    323330    SendSDO(0x6003, 2, (LWORD_t)pos);       // home
    324331    WaitForSdo(0x6003, 2);
     
    328335    SendSDO(0x3001, string('h','o','m','e'));       // home
    329336    WaitForSdo(0x3001, 0, maxtime*1000);
    330     lout << "- Home position of " << GetNodeName() << " reached. " << endl;
     337    lout << "- " << GetNodeName() << ": Home position reached. " << endl;
    331338
    332339    SendSDO(0x6003, 0, string('s','e','t'));       // home
    333340    WaitForSdo(0x6003, 0);
     341
     342    //if (to)
     343    //    EnableTimeout(kTRUE);
    334344}
    335345
     
    379389void Macs::SetNoWait(BYTE_t flag)
    380390{
    381     lout << "- Setting NOWAIT " << (flag?"ON ":"OFF ") << GetNodeName() << endl;
     391    lout << "- " << GetNodeName() << ": Setting NOWAIT " << (flag?"ON":"OFF") << "." << endl;
    382392    SendSDO(0x3008, flag ? string('o', 'n') : string('o', 'f', 'f'));
    383393    WaitForSdo(0x3008);
     
    390400    // or by a positioning command (POSA, ...)
    391401    //
    392     lout << "- Setting Vel Sync Mode of " << GetNodeName() << endl;
     402    lout << "- " << GetNodeName() << ": Starting RPM Sync Mode." << endl;
    393403    SendSDO(0x3007, 0, string('s', 'y', 'n', 'c'));
    394404    WaitForSdo(0x3007, 0);
     
    401411    // or by a positioning command (POSA, ...)
    402412    //
    403     lout << "- Setting Pos Sync Mode of " << GetNodeName() << endl;
     413    lout << "- " << GetNodeName() << ": Starting Posistion Sync Mode." << endl;
    404414    SendSDO(0x3007, 1, string('s', 'y', 'n', 'c'));
    405415    WaitForSdo(0x3007, 1);
     
    446456    if (!errnum)
    447457    {
    448         lout << "Mac " << GetNodeName() << " reports Error occursion." << endl;
     458        lout << "- " << GetNodeName() << ": reports Error occursion." << endl;
    449459        SetError(-1);
    450460        return;
     
    456466    //
    457467    if (GetError()>0)
    458         lout << GetNodeName() << " WARNING! Error #" << GetError() << " unhandled by software." << endl;
     468    {
     469        lout << GetNodeName() << ": WARNING! Error #" << GetError() << " unhandled (not cleared) by software." << endl;
     470
     471        //
     472        // If the error is unhadled and/or not cleared, don't try it again.
     473        //
     474        if (GetError()==errnum)
     475            return;
     476    }
    459477
    460478    SetError(errnum);
     
    464482    {
    465483    case 6:
     484        //
     485        // Report the error to the user. All possible movements should have
     486        // been stopped anyhow. Now delete the error to prevent the system
     487        // from reporting this error a thousands of times.
     488        //
    466489        lout << "Home position not the first positioning command." << endl;
     490        SetError(0);
    467491        return;
    468492
     
    607631void Macs::EnableTimeout(bool enable, LWORDS_t ms)
    608632{
    609     lout << "- MAC " << (enable?"En":"Dis") << "able timeout, " << dec << ms << "ms." << endl;
     633    lout << "- " << GetNodeName() << ": " << (enable?"En":"Dis") << "able timeout, " << dec << ms << "ms." << endl;
    610634    if (!enable)
    611635    {
     
    613637        WaitForSdo(0x4000, 1);
    614638
    615         lout << "- Stopping handshake (PC)." << endl;
     639        lout << "- " << GetNodeName() << ": Stopping handshake (PC)." << endl;
    616640
    617641        fTimeout->Stop(); //kTRUE);
     
    634658        // any reason
    635659        //
    636         lout << "- MAC starting handshake." << endl;
     660        lout << "- " << GetNodeName() << ": starting handshake." << endl;
    637661        SendSDO(0x4000, 1, string('o', 'n'));
    638662        WaitForSdo(0x4000, 1);
    639663    }
    640     lout << "- Timeout timer of " << GetNodeName() << " turned "
     664    lout << "- " << GetNodeName() << ": Timeout timer turned "
    641665        << (enable?"on.":"off.") << endl;
    642666}
  • trunk/MagicSoft/Cosy/devdrv/macs.h

    r1690 r1701  
    3939    Bool_t HandleTimer(TTimer *t);
    4040
    41     void ReqRes();
    42 
    4341public:
    4442    Macs(const BYTE_t nodeid, const char *name=NULL, MLog &out=gLog);
     
    6563    //void ReqAxEnd();
    6664    void ReqVelRes();
     65    void ReqRes();
    6766    void SetHome(LWORDS_t pos=0, WORD_t maxtime=25);
    6867    void SetAcceleration(LWORD_t acc);
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc

    r1690 r1701  
    6060        lout << "Scaling: " <<  (val&4   ?"on":"off") << "  ";
    6161        lout << "Modulo: " <<   (val&4096?"on":"off") << endl;
     62        return;
    6263
    6364    case 0x6001:
     
    7879
    7980    case 0x6502:
     81        if (val==0)
     82            val = 1;  // Single Turn = Multiturn with one turn
    8083        lout << "- Possible Turns: " << dec << val << endl;
    81         fTurns = val ? val : 1; // Single Turn = Multiturn with one turn
     84        fTurns = val;
    8285        return;
    8386
     
    198201    // Requesting and checking (FIXME) type of encoder
    199202    //
    200     lout << "- Requesting Hardware Type (SDO 0x1000) of " << GetNodeName() << endl;
     203    lout << "- " << GetNodeName() << ": Requesting Hardware Type (0x1000)." << endl;
    201204    RequestSDO(0x1000);
    202205    if (!WaitForSdo(0x1000))
     
    210213    // Read physical ticks per revolution
    211214    //
    212     lout << "- Requesting physical ticks/revolution (SDO 0x6501) of " << GetNodeName() << endl;
     215    lout << "- " << GetNodeName() << ": Requesting physical ticks/revolution (SDO 0x6501)." << endl;
    213216    RequestSDO(0x6501);
    214217    WaitForSdo(0x6501);
     
    217220    // Read number of possible ticks per revolution
    218221    //
    219     lout << "- Requesting possible ticks/revolution (SDO 0x6502) of " << GetNodeName() << endl;
     222    lout << "- " << GetNodeName() << ": Requesting possible ticks/revolution (SDO 0x6502)." << endl;
    220223    RequestSDO(0x6502);
    221224    WaitForSdo(0x6502);
     
    224227    // Set logic ticks/revolution = physical ticks/revolution => scale factor = 1
    225228    //
    226     lout << "- Configuring SDO 0x6001 of " << GetNodeName() << endl;
     229    lout << "- " << GetNodeName() << ": Configuring log. tick/rev (0x6001)." << endl;
    227230    SendSDO(0x6001, fTicks);
    228231    WaitForSdo(0x6001);
     
    231234    // Set maximum number of ticks (ticks * turns)
    232235    //
    233     lout << "- Configuring SDO 0x6002 of " << GetNodeName() << endl;
     236    lout << "- " << GetNodeName() << ": Configuring max number of ticks (0x6002)." << endl;
    234237    SendSDO(0x6002, (LWORD_t)(fTicks*fTurns));
    235238    WaitForSdo(0x6002);
    236239
    237240    //
     241    // Delete preset Value
     242    //
     243    lout << "- " << GetNodeName() << ": Delete preset value (0x6003)." << endl;
     244    SendSDO(0x6003, (LWORD_t)0xffffffff);
     245    WaitForSdo(0x6003);
     246
     247    //
    238248    // Configure PDOs
    239249    //
    240     lout << "- Configuring SDO 0x1802 of " << GetNodeName() << endl;
     250    lout << "- " << GetNodeName() << ": Configuring PDOs (0x1802)." << endl;
    241251    SendSDO(0x1802, 1, (LWORD_t)0x281);
    242252    WaitForSdo(0x1802, 1);
    243253
    244254    //
    245     // Delete preset Value
    246     //
    247     lout << "- Configuring SDO 0x6003 of " << GetNodeName() << endl;
    248     SendSDO(0x6003, (LWORD_t)0xffffffff);
    249     WaitForSdo(0x6003);
    250 
    251     //
    252255    // Request Parameter
    253256    //
    254     lout << "- Requesting SDO 0x6000 of " << GetNodeName() << endl;
     257    lout << "- " << GetNodeName() << ": Requesting SDO 0x6000." << endl;
    255258    RequestSDO(0x6000);
    256259    WaitForSdo(0x6000);
     
    258261    ReqPos();
    259262
    260     lout << "- Start Node " << GetNodeName() << endl;
     263    lout << "- " << GetNodeName() << ": Start Node (NMT)." << endl;
    261264    SendNMT(kNMT_START);
    262265}
     
    267270    // Request Position
    268271    //
    269     lout << "- Requesting Position of " << GetNodeName() << endl;
     272    lout << "- " << GetNodeName() << ": Requesting Position." << endl;
    270273    RequestSDO(0x6004);
    271274    WaitForSdo(0x6004);
     
    277280    fTurn = pre/16384;
    278281
    279     lout << " - Setting Preset " << GetNodeName() << endl;
     282    lout << "- " << GetNodeName() << ": Setting Preset." << endl;
    280283    SendSDO(0x6003, (LWORD_t)fPos);
    281284    WaitForSdo(0x6003);
     
    284287void ShaftEncoder::StopDevice()
    285288{
    286     lout << "- Stop Node " << GetNodeName() << endl;
     289    lout << "- " << GetNodeName() << ": Stop Node (NMT)." << endl;
    287290    SendNMT(kNMT_STOP);
    288291}
  • trunk/MagicSoft/Cosy/gui/MGAccuracy.cc

    r1111 r1701  
    7272    axe = new TGaxis(  0, -60*4,  0, 60*4,  -4, 4,   304, "+-N");
    7373    axe->SetTitle("Zd"); // \xb0
     74    axe->SetLabelOffset(-0.02);
    7475    axe->SetBit(kCanDelete);
    7576    axe->Draw();
  • trunk/MagicSoft/Cosy/gui/MGCosy.cc

    r1699 r1701  
    4343    kPB_TRACK,
    4444    kPB_STOP,
     45    kPB_HOME,
    4546    kPB_CALCALTAZ,
    4647    kPB_TPOINT,
     
    9899
    99100    l = new TGLabel(f, "Mjd:");
    100     l->Move(x-60, y+20);
     101    l->Move(x-60, y+17);
    101102    fList->Add(l);
    102103
     
    104105    fMjd = new TGLabel(f, "00000.000000");
    105106    fUtc->Move(x-25, y);
    106     fMjd->Move(x-25, y+20);
     107    fMjd->Move(x-25, y+17);
    107108    fList->Add(fUtc);
    108109    fList->Add(fMjd);
    109110
    110111    l = new TGLabel(f, "SE-Az:");
    111     l->Move(x-60, y+60);
     112    l->Move(x-60, y+40);
    112113    fList->Add(l);
    113114
    114115    l = new TGLabel(f, "SE-Zd1:");
    115     l->Move(x-60, y+80);
     116    l->Move(x-60, y+57);
    116117    fList->Add(l);
    117118
    118119    l = new TGLabel(f, "SE-Zd2:");
    119     l->Move(x-60, y+100);
     120    l->Move(x-60, y+74);
    120121    fList->Add(l);
    121122
     
    127128    fLabel1[1]->SetTextJustify(kTextRight);
    128129    fLabel1[2]->SetTextJustify(kTextRight);
    129     fLabel1[0]->Move(x,    y+60);
    130     fLabel1[1]->Move(x+43, y+60);
    131     fLabel1[2]->Move(x+70, y+60);
     130    fLabel1[0]->Move(x,    y+40);
     131    fLabel1[1]->Move(x+43, y+40);
     132    fLabel1[2]->Move(x+70, y+40);
    132133    fList->Add(fLabel1[0]);
    133134    fList->Add(fLabel1[1]);
     
    144145    fLabel2[1]->SetTextJustify(kTextRight);
    145146    fLabel2[2]->SetTextJustify(kTextRight);
    146     fLabel2[0]->Move(x,    y+80);
    147     fLabel2[1]->Move(x+43, y+80);
    148     fLabel2[2]->Move(x+70, y+80);
     147    fLabel2[0]->Move(x,    y+57);
     148    fLabel2[1]->Move(x+43, y+57);
     149    fLabel2[2]->Move(x+70, y+57);
    149150    fList->Add(fLabel2[0]);
    150151    fList->Add(fLabel2[1]);
     
    161162    fLabel3[1]->SetTextJustify(kTextRight);
    162163    fLabel3[2]->SetTextJustify(kTextRight);
    163     fLabel3[0]->Move(x,    y+100);
    164     fLabel3[1]->Move(x+43, y+100);
    165     fLabel3[2]->Move(x+70, y+100);
     164    fLabel3[0]->Move(x,    y+74);
     165    fLabel3[1]->Move(x+43, y+74);
     166    fLabel3[2]->Move(x+70, y+74);
    166167    fList->Add(fLabel3[0]);
    167168    fList->Add(fLabel3[1]);
     
    172173
    173174    l = new TGLabel(f, "Offset-Zd:");
    174     l->Move(x-60, y+140);
     175    l->Move(x-60, y+102);
    175176    fList->Add(l);
    176177
    177178    l = new TGLabel(f, "Offset-Az:");
    178     l->Move(x-60, y+160);
     179    l->Move(x-60, y+119);
    179180    fList->Add(l);
    180181
     
    183184    fOffsetZd->SetTextJustify(kTextRight);
    184185    fOffsetAz->SetTextJustify(kTextRight);
    185     fOffsetZd->Move(x, y+140);
    186     fOffsetAz->Move(x, y+160);
     186    fOffsetZd->Move(x, y+102);
     187    fOffsetAz->Move(x, y+119);
    187188    fList->Add(fOffsetZd);
    188189    fList->Add(fOffsetAz);
     190
     191    l = new TGLabel(f, "Ra (estimated):");
     192    l->Move(x-60, y+142);
     193    fList->Add(l);
     194
     195    l = new TGLabel(f, "Ra (soll):");
     196    l->Move(x-60, y+159);
     197    fList->Add(l);
     198
     199    l = new TGLabel(f, "Dec (estimated):");
     200    l->Move(x-60, y+182);
     201    fList->Add(l);
     202
     203    l = new TGLabel(f, "Dec (soll):");
     204    l->Move(x-60, y+199);
     205    fList->Add(l);
     206
     207    l = new TGLabel(f, "Zd (soll):");
     208    l->Move(x-60, y+222);
     209    fList->Add(l);
     210
     211    l = new TGLabel(f, "Az (soll):");
     212    l->Move(x-60, y+239);
     213    fList->Add(l);
     214
     215    fRaEst  = new TGLabel(f, "+000h 00.0m");
     216    fDecEst = new TGLabel(f, "+000h 00.0m");
     217    fRaSoll = new TGLabel(f, "+000h 00.0m");
     218    fDecSoll = new TGLabel(f, "+000h 00.0m");
     219    fZdSoll = new TGLabel(f, "+000h 00.0m");
     220    fAzSoll = new TGLabel(f, "+000h 00.0m");
     221    fRaEst->SetTextJustify(kTextRight);
     222    fDecEst->SetTextJustify(kTextRight);
     223    fRaSoll->SetTextJustify(kTextRight);
     224    fDecSoll->SetTextJustify(kTextRight);
     225    fZdSoll->SetTextJustify(kTextRight);
     226    fAzSoll->SetTextJustify(kTextRight);
     227    fRaEst->Move(x+30, y+142);
     228    fRaSoll->Move(x+30, y+159);
     229    fDecEst->Move(x+30, y+182);
     230    fDecSoll->Move(x+30, y+199);
     231    fZdSoll->Move(x+30, y+222);
     232    fAzSoll->Move(x+30, y+239);
     233    fList->Add(fRaEst);
     234    fList->Add(fDecEst);
     235    fList->Add(fRaSoll);
     236    fList->Add(fDecSoll);
     237    fList->Add(fZdSoll);
     238    fList->Add(fAzSoll);
    189239
    190240
     
    329379    fList->Add(but);
    330380
     381    but = new TGTextButton(tf1, "Home", kPB_HOME);
     382    but->Resize(80, 25);
     383    but->Move(160, 197);
     384    but->SetToolTipText("Initiate Home Drive.");
     385    but->Associate(this);
     386    fList->Add(but);
     387
    331388    but= new TGTextButton(tf2, "Calc Zd/Az",  kPB_CALCALTAZ);
    332389    but->Resize(80, 25);
     
    637694}
    638695
     696void MGCosy::UpdateRaDec(ZdAz &pos, double mjd, RaDec &radec)
     697{
     698    static Int_t rai=~0;
     699    static Int_t deci=~0;
     700    static Int_t ras=~0;
     701    static Int_t decs=~0;
     702
     703    static SlaStars sla;
     704    sla.SetMjd(mjd);
     705
     706    RaDec rd = sla.CalcRaDec(pos*2*TMath::Pi()/360);
     707
     708    char text[64];
     709
     710    rd.Ra(rd.Ra()  * 24/2/TMath::Pi());
     711    rd.Dec(rd.Dec()*360/2/TMath::Pi());
     712
     713    radec.Ra(radec.Ra()  * 24/2/TMath::Pi());
     714    radec.Dec(radec.Dec()*360/2/TMath::Pi());
     715
     716    RaDec test = rd*600;
     717
     718    if (rai!=(int)test.Ra())
     719    {
     720        rai = (int)test.Ra();
     721        sprintf(text, "%c%dh %.1fm", rd.Ra()<0?'-':'+', abs((int)rd.Ra()), 0.1*(abs((int)test.Ra())%600));
     722        fRaEst->SetText(new TGString(text));
     723    }
     724    if (deci!=(int)test.Dec())
     725    {
     726        deci = (int)test.Dec();
     727        sprintf(text, "%c%dd %.1fm", rd.Dec()<0?'-':'+' , abs((int)rd.Dec()), 0.1*(abs((int)test.Dec())%600));
     728        fDecEst->SetText(new TGString(text));
     729    }
     730
     731    if (radec.Dec()>90|| radec.Dec()<-90)
     732    {
     733        radec.Ra(radec.Ra()+12);
     734        radec.Dec(180-radec.Dec());
     735    }
     736    radec.Ra(fmod((radec.Ra()+48), 24));
     737
     738    test = radec*600;
     739
     740    if (ras!=(int)test.Ra())
     741    {
     742        ras = (int)test.Ra();
     743        sprintf(text, "%c%dh %.1fm", radec.Ra()<0?'-':'+', abs((int)radec.Ra()), 0.1*(abs((int)test.Ra())%600));
     744        fRaSoll->SetText(new TGString(text));
     745    }
     746    if (decs!=(int)test.Dec())
     747    {
     748        decs = (int)test.Dec();
     749        sprintf(text, "%c%dd %.1fm", radec.Dec()<0?'-':'+' , abs((int)radec.Dec()), 0.1*(abs((int)test.Dec())%600));
     750        fDecSoll->SetText(new TGString(text));
     751    }
     752}
     753
    639754void MGCosy::UpdateOffset(ZdAz &off)
    640755{
     
    647762    {
    648763        zd = (Int_t)off.Zd();
    649         sprintf(text, "%d", zd);
     764        sprintf(text, "%dre", zd);
    650765        fOffsetZd->SetText(new TGString(text));
    651766    }
     
    653768    {
    654769        az = (Int_t)off.Az();
    655         sprintf(text, "%d", az);
     770        sprintf(text, "%dre", az);
    656771        fOffsetAz->SetText(new TGString(text));
    657772    }
    658773}
    659774
     775void MGCosy::UpdateZdAz(ZdAz &soll)
     776{
     777    soll *= 360/2/TMath::Pi();
     778
     779    static Int_t zd=~0;
     780    static Int_t az=~0;
     781
     782    char text[21];
     783
     784    ZdAz test = soll*600;
     785
     786    if (zd!=(int)test.Zd())
     787    {
     788        zd = (int)test.Zd();
     789        sprintf(text, "%c%dh %.1fm", soll.Zd()<0?'-':'+', abs((int)soll.Zd()), 0.1*(abs((int)test.Zd())%600));
     790        fZdSoll->SetText(new TGString(text));
     791    }
     792    if (az!=(int)test.Az())
     793    {
     794        az = (int)test.Az();
     795        sprintf(text, "%c%dd %.1fm", soll.Az()<0?'-':'+' , abs((int)soll.Az()), 0.1*(abs((int)test.Az())%600));
     796        fAzSoll->SetText(new TGString(text));
     797    }
     798}
     799
    660800double MGCosy::UpdateTime()
    661801{
     
    682822}
    683823
    684 void MGCosy::Update(ZdAz pos, ZdAz acc, ZdAz vel, ZdAz off, UInt_t stat)
     824void MGCosy::Update(ZdAz pos, ZdAz acc, ZdAz vel, ZdAz off, RaDec radec,
     825                    ZdAz soll, UInt_t stat)
    685826{
    686827    double mjd = UpdateTime();
     
    689830    fVelocity->Update(vel);
    690831    UpdateOffset(off);
     832    UpdateRaDec(pos, mjd, radec);
     833    UpdateZdAz(soll);
    691834
    692835#define kError     0x01
     
    701844    EnableLabel(fStopping, stat&kStopping);
    702845    EnableLabel(fStopped,  stat&kStopped);
     846    EnableLabel(fRaSoll,   stat&kTracking);
     847    EnableLabel(fDecSoll,  stat&kTracking);
     848    EnableLabel(fZdSoll,   stat&kMoving);
     849    EnableLabel(fAzSoll,   stat&kMoving);
    703850
    704851    stat&kTracking ? fAccuracy->MapWindow() : fAccuracy->UnmapWindow();
     
    706853    //    stat&kTracking ? fOffset->MapWindow()   : fOffset->UnmapWindow();
    707854
    708     if (!fLog->TestBit(kHasChanged))
    709         return;
    710 
    711     fLog->MapSubwindows();
    712     fLog->Layout();
    713     fLog->ResetBit(kHasChanged);
     855    if (fLog->TestBit(kHasChanged))
     856    {
     857        fLog->MapSubwindows();
     858        fLog->Layout();
     859        fLog->ResetBit(kHasChanged);
     860    }
    714861}
    715862// ======================================================================
     
    9191066                StopDemo();
    9201067                fQueue->PostMsg(WM_STOP, 0, 0);
    921 
    9221068                cout << "PostMsg (WM_Stop) returned." << endl;
    9231069                return kTRUE;
     
    9721118                fQueue->Proc(WM_RESETBENDING, NULL);
    9731119                return kTRUE;
     1120            case kPB_HOME:
     1121                fQueue->PostMsg(WM_HOME, 0, 0);
     1122                return kTRUE;
    9741123
    9751124            default:
  • trunk/MagicSoft/Cosy/gui/MGCosy.h

    r1531 r1701  
    4747    TGLabel       *fOffsetAz;
    4848
     49    TGLabel       *fRaEst;
     50    TGLabel       *fDecEst;
     51
     52    TGLabel       *fRaSoll;
     53    TGLabel       *fDecSoll;
     54
     55    TGLabel       *fZdSoll;
     56    TGLabel       *fAzSoll;
     57
    4958    TGLabel       *fUtc;
    5059    TGLabel       *fMjd;
     
    8392    void EnableLabel(TGLabel *label, Bool_t stat);
    8493    void UpdateOffset(ZdAz &off);
     94    void UpdateZdAz(ZdAz &off);
     95    void UpdateRaDec(ZdAz &pos, double mjd, RaDec &radec);
    8596    double UpdateTime();
    8697
     
    97108    TGListBox *GetLog() const { return fLog; }
    98109
    99     void Update(ZdAz pos, ZdAz acc, ZdAz vel, ZdAz off, UInt_t stat);
     110    void Update(ZdAz pos, ZdAz acc, ZdAz vel, ZdAz off, RaDec radec, ZdAz soll, UInt_t stat);
    100111
    101112    Bool_t ProcessMessage(Long_t msg, Long_t mp1, Long_t mp2);
  • trunk/MagicSoft/Cosy/gui/MGVelocity.cc

    r1690 r1701  
    123123    axe = new TGaxis(0, -60*2, 0, 60*2,  -2, 2,  304, "+-N");
    124124    axe->SetTitle("Zd"); // \xb0
     125    axe->SetLabelOffset(-0.02);
    125126    axe->SetBit(kCanDelete);
    126127    axe->Draw();
  • trunk/MagicSoft/Cosy/main/MCosy.cc

    r1699 r1701  
    395395    // const ZdAz dest = CorrectTarget(src, dst);
    396396    //
    397     const ZdAz bend = fBending(dst);
    398     const ZdAz dest = bend*16384/2/TMath::Pi();
     397    fZdAzSoll = fBending(dst);
     398    const ZdAz dest = fZdAzSoll*16384/2/TMath::Pi();
    399399
    400400    lout << "Positioning to Target..." << endl;
    401401    cout << "Source        Zd: " << src.Zd()  << "se  Az:" << src.Az()  << "se" << endl;
    402402    cout << "Destination   Zd: " << Rad2SE(dst.Zd()) << "se  Az:" << Rad2SE(dst.Az())  << "se" << endl;
    403     cout << "Bend'd Dest   Zd: " << Rad2SE(bend.Zd()) << "se  Az:" << Rad2SE(bend.Az())  << "se" << endl;
     403    cout << "Bend'd Dest   Zd: " << Rad2SE(fZdAzSoll.Zd()) << "se  Az:" << Rad2SE(fZdAzSoll.Az())  << "se" << endl;
    404404    cout << "Shortest Dest Zd: " << dest.Zd() << "se  Az:" << dest.Az() << "se" << endl;
    405405
     
    674674    {
    675675        //
    676         // The loop should not be executed faster than the ramp of
    677         // a change in the velocity can be followed.
    678         // (This is important on fast machines >500MHz)
    679         //
    680         //usleep(100000000);
    681 
    682         //
    683676        // Request Target position for this moment
    684677        //
     
    759752        // update time
    760753        //
     754        //
     755        // The loop should not be executed faster than the ramp of
     756        // a change in the velocity can be followed.
     757        // (This is important on fast machines >500MHz)
     758        //
    761759        usleep(50000); // 0.05s
    762760    }
     
    779777        return;
    780778    //
    781     // Set status to stopped
     779    // Set status to Stopping
    782780    //
    783781    SetStatus(MCosy::kStopping);
     
    812810void *MCosy::Proc(int msg, void *mp)
    813811{
    814     cout << "MCosy::Proc: 0x" << msg << endl;
    815812    switch (msg)
    816813    {
     
    820817
    821818    case WM_STOP:
     819        cout << "MCosy::Proc: Stop." << endl;
    822820        StopMovement();
    823821        return NULL;
     
    923921        cout << "WM_ResetBending: done. (return 0xbe0e)" << endl;
    924922        return (void*)0xbe0e;
     923
     924    case WM_HOME:
     925        cout << "WM_Home: START" << endl;
     926        if (fMac1 && fMac2)
     927        {
     928            cout << "Going Home..." << endl;
     929            fMac1->SetHome(250000, 100);
     930            fMac2->SetHome(250000, 100);
     931
     932            fAz->SetPreset();
     933            fZd1->SetPreset();
     934            fZd2->SetPreset();
     935
     936            fMac1->ReqPos();
     937            fMac2->ReqPos();
     938        }
     939        cout << "WM_Home: done. (return 0x403e)" << endl;
     940        return (void*)0x403e;
    925941
    926942    case WM_CALCALTAZ:
     
    954970        return (void*)0xaaaa;
    955971    }
    956     cout << "Unknown Msg" << endl;
     972    cout << "MCosy::Proc: Unknown message 0x" << msg << endl;
    957973    return (void*)0xffffffff;
    958974}
     
    9881004    else
    9891005        resrezd = env.GetValue("Zd_ResRE[re/U_mot]", 1500);
    990 
     1006 
    9911007    Double_t ressezd = 0;
    9921008    if (fZd1)
     
    10041020        resseaz = env.GetValue("Az_ResSE[se/U_mot]", 16384);
    10051021
    1006     /* WORKAROUND !!!!!!!!!!!!! FIXME !!!!!!!!!!! */
    1007     resrezd = 500;
    1008     resreaz = 500;
    1009 
    10101022    kGearRatio.Set (gzd*resrezd/ressezd, gaz*resreaz/resseaz);  //[re/se]
    10111023    kGearRatio2.Set(gzd*resrezd/360.0,   gaz*resreaz/360.0);    //[re/deg]
     
    10361048    }
    10371049
    1038     fMac1->EnableTimeout(kTRUE, 500);
    1039     fMac2->EnableTimeout(kTRUE, 500);
     1050    //fMac1->EnableTimeout(kTRUE, 500);
     1051    //fMac2->EnableTimeout(kTRUE, 500);
    10401052
    10411053    if (!(fZd1 && fZd2 && fAz))
    10421054        return;
    10431055
    1044     /*
     1056
    10451057    //
    10461058    // Start the Network
     
    10491061    TEnv env(".cosyrc");
    10501062    cout << "done." << endl;
    1051 
     1063/*
    10521064    const int res = fMac3->GetVelRes();
    10531065
     
    12221234            }
    12231235
     1236            fZdAzSoll.Set(sollzd.Zd(), sollaz.Az());
     1237            fZdAzSoll *= 2*TMath::Pi()/16384;
     1238
    12241239            fTrackingError.Set((ist.Zd()-sollzd.Zd())*kGearRatio.X(),
    12251240                               (ist.Az()-sollaz.Az())*kGearRatio.Y());
     
    12481263
    12491264    fWin->Update(bendist*(360.0/2/TMath::Pi()), fTrackingError/kGearRatio2,
    1250                  fVelocity, fOffset/*/kGearRatio2*/,
     1265                 fVelocity, fOffset/*/kGearRatio2*/, fRaDec, fZdAzSoll,
    12511266                 fStatus);
    12521267
     
    12911306    lout << "- Starting TX Thread." << endl;
    12921307    fTTalk = new MTTalk(this);
     1308    //    fTGui = new MTGui(this);
    12931309
    12941310    lout << "- Starting GUI update." << endl;
    12951311    fUpdateGui->TurnOn();
    1296     //    fTGui = new MTGui(this);
    12971312}
    12981313
  • trunk/MagicSoft/Cosy/main/MCosy.h

    r1699 r1701  
    2121#define WM_RESETBENDING 0x1008
    2222#define WM_CALCALTAZ    0x1009
     23#define WM_HOME         0x100a
     24
    2325
    2426class ShaftEncoder;
     
    7678    ZdAz  fTrackingError; // Tracking Offset between SE and calc-pos [re]
    7779    ZdAz  fOffset;        // Offset between se and re coordinate system [re]
     80    ZdAz  fZdAzSoll;      // Soll position when moving
    7881    RaDec fRaDec;         // Position to track
    7982    int   fTracking;      // Flag for present tracking action
Note: See TracChangeset for help on using the changeset viewer.