Ignore:
Timestamp:
05/20/04 04:42:48 (20 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy/devdrv
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/devdrv/macs.cc

    r2615 r4104  
    382382    //SetNoWait(TRUE);
    383383
    384     StartGuarding(400, 1, kFALSE); // Using PDO1 @ 100ms
     384    //StartGuarding(400, 1, kFALSE); // Using PDO1 @ 100ms
    385385    //StartGuarding(250, 4);
    386386    //StartHostGuarding();
  • trunk/MagicSoft/Cosy/devdrv/macs.h

    r4076 r4104  
    1 #ifndef MACS_H
    2 #define MACS_H
     1#ifndef COSY_Macs
     2#define COSY_Macs
    33
     4#ifndef COSY_NodeDrv
    45#include "nodedrv.h"
     6#endif
     7
     8#ifndef MARS_MTime
    59#include "MTime.h"
     10#endif
    611
    712class Macs : public NodeDrv
     
    119124
    120125    Double_t GetPosTime() const { return fPosTime; }
     126    Double_t GetMjd() const { return fPosTime.GetMjd(); }
     127    Double_t GetPdoMjd() const { return fPdoTime.GetMjd(); }
    121128
    122129    ClassDef(Macs, 0)
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc

    r4076 r4104  
    88#include <TGLabel.h>       // TGLabel->SetText
    99
     10#include "macs.h"
     11
    1012ClassImp(ShaftEncoder);
    1113
     
    1416ShaftEncoder::ShaftEncoder(const BYTE_t nodeid, const char *name, MLog &out)
    1517    : NodeDrv(nodeid, name, out), fPos(0), fVel(0), fAcc(0),
    16     fTurn(0), fLabel(NULL), fPosHasChanged(false), fReport(NULL)
    17 {
    18 }
    19 
     18    fTurn(0), fLabel(NULL), fPosHasChanged(false), fReport(NULL),/*fTwin(0),
     19    fIsUpdated(kFALSE),*/ fMotor(0), fOffset(0)
     20{
     21}
     22/*
     23void ShaftEncoder::CheckTwin(Int_t diff) const
     24{
     25    if (!fTwin)
     26        return;
     27
     28    if (fTwin->fIsUpdated)
     29        fTwin->fIsUpdated = kFALSE;
     30    else
     31        fTwin->fOffset += diff;
     32}
     33*/
    2034void ShaftEncoder::HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv)
    2135{
     
    7993        fPos  = val;
    8094        fTurn = 0;
     95        fOffset = fMotor ? fMotor->GetPdoPos() : 0;
     96        //fIsUpdated=kTRUE;
     97        //fOffset = 0;
    8198        return;
    8299
     
    154171void ShaftEncoder::DisplayVal()
    155172{
     173    const LWORDS_t pos = GetPos();
    156174    if (IsZombieNode())
    157175    {
    158176        fLabel->SetText(new TGString(""));
    159         fUpdPos = ~fPos;
     177        fUpdPos = ~pos;
    160178        return;
    161179    }
    162180
    163181    char text[21];
    164 
    165     if (fPos!=fUpdPos && fLabel)
    166     {
    167         sprintf(text, "%ld", fPos);
     182    if (pos!=fUpdPos && fLabel)
     183    {
     184        sprintf(text, "%ld", pos);
    168185        fLabel->SetText(new TGString(text));
    169         fUpdPos = fPos;
     186        fUpdPos = pos;
    170187    }
    171188}
     
    177194    //
    178195    LWORDS_t pos = data[0] | (data[1]<<8) | (data[2]<<16); // | (data[3]<<24);
    179     if (pos==fPos)
    180         return;
     196
     197    //if (pos==fPos)
     198    //    return;
    181199
    182200    fPos = pos;
     201    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    183202    fTime.Set(*tv);
    184203    fPosHasChanged = true;
    185204
     205    //CheckTwin(fPos-pos);
     206    //fIsUpdated=kTRUE;
     207
    186208    if (fReport)
    187209    {
    188         fReport->Lock();
     210        fReport->Lock("ShaftEncoder::HandlePDOType0");
    189211        *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO0 " << pos << " " << GetNodeName() << endl;
    190         fReport->UnLock();
     212        fReport->UnLock("ShaftEncoder::HandlePDOType0");
    191213    }
    192214}
     
    200222    BYTE_t   flag = data[4];
    201223
    202     if (fPos==pos)
    203         return;
    204 
     224    //if (fPos==pos)
     225    //    return;
     226
     227    //CheckTwin(fPos-pos);
    205228    fPos=pos;
     229    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    206230    fTime.Set(*tv);
    207231    fPosHasChanged=true;
     232    //fIsUpdated=kTRUE;
     233    //fOffset = 0;
    208234
    209235    flag=flag;
     
    211237    if (fReport)
    212238    {
    213         fReport->Lock();
     239        fReport->Lock("ShaftEncoder::HandlePDOType1");
    214240        *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO1 " << pos << " " << (int)flag << " " << GetNodeName() << endl;
    215         fReport->UnLock();
     241        fReport->UnLock("ShaftEncoder::HandlePDOType1");
    216242    }
    217243}
     
    241267        turn--;
    242268
    243     if (fPos==pos && fTurn==fTurn)
    244         return;
     269    //if (fPos==pos && fTurn==fTurn)
     270    //    return;
     271
     272    //CheckTwin(fPos-pos);
    245273
    246274    fPos  = pos;
    247275    fTurn = turn;
    248276
     277    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    249278    fTime.Set(*tv);
    250279    fPosHasChanged=true;
     280    //fIsUpdated=kTRUE;
     281    //fOffset = 0;
     282
    251283
    252284    if (fReport)
    253285    {
    254         fReport->Lock();
     286        fReport->Lock("ShaftEncoder::HandlePDOType2");
    255287        *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO2 " << pos << " " << fVel << " " << fAcc << " " << GetNodeName() << endl;
    256         fReport->UnLock();
     288        fReport->UnLock("ShaftEncoder::HandlePDOType2");
    257289    }
    258290}
     
    383415    fPos  = pre%16384;
    384416    fTurn = pre/16384;
     417
     418    fOffset = fMotor ? fMotor->GetPdoPos() : 0;
    385419}
    386420
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.h

    r4076 r4104  
    1 #ifndef SHAFTENCODER_H
    2 #define SHAFTENCODER_H
     1#ifndef COSY_ShafTEncoder
     2#define COSY_ShafTEncoder
    33
     4#ifndef COSY_NodeDrv
    45#include "nodedrv.h"
     6#endif
     7
     8#ifndef MARS_MTime
    59#include "MTime.h"
     10#endif
    611
     12class Macs;
    713class TGLabel;
    814
     
    1925    TGLabel  *fLabel;     //
    2026    LWORDS_t  fUpdPos;    // ticks
    21     //    WORDS_t   fUpdVel;    // ticks per 5ms
    22     //    WORDS_t   fUpdAcc;    // ticks per 25ms^2
    2327
    2428    bool fPosHasChanged;  //!
     
    2630    MTime fTime;
    2731    MLog *fReport;
     32
     33    Macs *fMotor;
     34    Int_t fOffset;
    2835
    2936    void HandlePDOType0(BYTE_t *data, timeval_t *tv);
     
    3542    void Init();
    3643    void CheckConnection();
     44    // void CheckTwin(Int_t diff) const;
    3745
    3846public:
     
    4250
    4351    void SetDisplay(TGLabel *label) { fLabel = label; }
     52    void SetMotor(Macs *m) { fMotor = m; }
     53    //void SetTwin(ShaftEncoder *se) { fTwin = se; }
    4454
    4555    void HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv);
     
    5262    void HandlePDO2(BYTE_t *data, timeval_t *tv) { HandlePDOType2(data, tv); }
    5363
    54     LWORDS_t GetPos() { return IsZombieNode() ? 0 : fPos+fTurn*fTicks; } // FIXME? 0?
    55     LWORD_t  GetPhysRes() { return fTicks; }
     64    LWORDS_t GetPos() const { return IsZombieNode() ? 0 : fPos+fTurn*fTicks; } // FIXME? 0?
     65    LWORD_t  GetPhysRes() const { return fTicks; }
     66    Int_t    GetOffset() const { return fOffset; }
     67    void     SetOffset(Int_t off) { fOffset = off; }
    5668
    5769    double GetMjd();
Note: See TracChangeset for help on using the changeset viewer.