Ignore:
Timestamp:
08/15/01 12:52:38 (23 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

    r808 r910  
    188188}
    189189
    190 void Macs::SetHome(LWORDS_t pos)
     190void Macs::SetHome(LWORDS_t pos, WORD_t maxtime)
    191191{
    192192    lout << "- Driving #" << (int)GetId() << " to home position, Offset=" << dec << pos << endl;
     
    195195
    196196    // home also defines the zero point of the system
     197    // maximum time allowd for home drive: 25.000ms
    197198    SendSDO(0x3001, string('h','o','m','e'));       // home
    198     WaitForSdo(0x3001);
     199    WaitForSdo(0x3001, 0, maxtime*1000);
    199200    lout << "- Home position of #" << (int)GetId() << " reached. " << endl;
    200201
     
    253254}
    254255
    255 void Macs::SetSyncMode()
    256 {
    257     lout << "- Setting Sync Mode #" << (int)GetId() << endl;
    258     SendSDO(0x3007, string('S', 'Y', 'N', 'C'));
    259     WaitForSdo(0x3007);
     256void Macs::StartVelSync()
     257{
     258    //
     259    // The syncronization mode is disabled by a 'MOTOR STOP'
     260    // or by a positioning command (POSA, ...)
     261    //
     262    lout << "- Setting Vel Sync Mode #" << (int)GetId() << endl;
     263    SendSDO(0x3007, 0, string('S', 'Y', 'N', 'C'));
     264    WaitForSdo(0x3007, 0);
     265}
     266
     267void Macs::StartPosSync()
     268{
     269    //
     270    // The syncronization mode is disabled by a 'MOTOR STOP'
     271    // or by a positioning command (POSA, ...)
     272    //
     273    lout << "- Setting Pos Sync Mode #" << (int)GetId() << endl;
     274    SendSDO(0x3007, 1, string('S', 'Y', 'N', 'C'));
     275    WaitForSdo(0x3007, 1);
    260276}
    261277/*
  • trunk/MagicSoft/Cosy/devdrv/macs.h

    r808 r910  
    22#define MACS_H
    33
    4 #include "timer.h"
    54#include "nodedrv.h"
     5#include "base/timer.h"
    66
    77class Macs : public NodeDrv
     
    5151    void ReqAxEnd();
    5252    void ReqVelRes();
    53     void SetHome(LWORDS_t pos=0);
     53    void SetHome(LWORDS_t pos=0, WORD_t maxtime=25);
    5454    void SetAcceleration(LWORD_t acc);
    5555    void SetDeceleration(LWORD_t dec);
    5656    void SetVelocity(LWORD_t vel);
    5757    void SetNoWait(BYTE_t flag=TRUE);
    58     void SetSyncMode();
    5958    void SetRpmMode(BYTE_t mode=TRUE);
    6059    void SetRpmVelocity(LWORDS_t cvel);
     
    6463
    6564    void EnableEndswitches(bool neg=true, bool pos=true);
     65
     66    void StartVelSync();
     67    void StartPosSync();
    6668
    6769    void StartRelPos(LWORDS_t pos);
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc

    r732 r910  
    1818    // Show information
    1919    //
    20     pthread_create(&fThread, NULL, MapUpdateThread, this);
     20    //    pthread_create(&fThread, NULL, MapUpdateThread, this);
    2121
    2222}
     
    2424ShaftEncoder::~ShaftEncoder()
    2525{
    26     pthread_cancel(fThread);
     26    //    pthread_cancel(fThread);
    2727}
    2828
     
    9191    cout << endl;
    9292}
    93 
     93/*
    9494void *ShaftEncoder::MapUpdateThread(void *data)
    9595{
     
    106106    return NULL;
    107107}
    108 
     108*/
     109void ShaftEncoder::DisplayVal()
     110{
     111    static LWORDS_t pos;   // ticks
     112    static WORDS_t  vel;   // ticks per 5ms
     113    static WORDS_t  acc;   // ticks per 25ms^2
     114
     115    char text[21];
     116
     117    if (fPos!=pos)
     118    {
     119        sprintf(text, "%ld", fPos);
     120        fLabel[0]->SetText(new TGString(text));
     121    }
     122
     123    if (fVel!=vel)
     124    {
     125        sprintf(text, "%d", fVel);
     126        fLabel[1]->SetText(new TGString(text));
     127    }
     128
     129    if (fAcc!=acc)
     130    {
     131        sprintf(text, "%d", fAcc);
     132        fLabel[2]->SetText(new TGString(text));
     133    }
     134}
     135/*
    109136void ShaftEncoder::UpdateThread()
    110137{
     138    return;
    111139    //
    112140    // check for a running thread and lock mutex
    113141    //
    114     char text[21];
    115142
    116143    //
     
    122149    while (1)
    123150    {
    124         WaitForNextPdo1();
     151        usleep(40000);
     152        //WaitForNextPdo1();
    125153
    126154        //
    127155        // Update information
    128156        //
    129         sprintf(text, "%ld", fPos);
    130         fLabel[0]->SetText(new TGString(text));
    131 
    132         sprintf(text, "%d", fVel);
    133         fLabel[1]->SetText(new TGString(text));
    134 
    135         sprintf(text, "%d", fAcc);
    136         fLabel[2]->SetText(new TGString(text));
     157
    137158
    138159        //
    139160        // make updated information visible
    140161        //
    141         gSystem->ProcessEvents();
    142     }
    143 }
    144 
     162        //gSystem->ProcessEvents(); ----> MCosy::GuiThread
     163    }
     164}
     165*/
    145166void ShaftEncoder::HandlePDOType0(BYTE_t *data)
    146167{
  • trunk/MagicSoft/Cosy/devdrv/shaftencoder.h

    r732 r910  
    2323    Timer fTime;
    2424
    25     pthread_t fThread;
    26 
    27     static void *MapUpdateThread(void *se);
    28     void UpdateThread();
     25    //    pthread_t fThread;
     26    //    static void *MapUpdateThread(void *se);
     27    //    void UpdateThread();
    2928
    3029    void HandlePDOType0(BYTE_t *data);
     
    5857
    5958    void SetPreset(LWORD_t pre=0);
     59
     60    void DisplayVal();
    6061};
    6162
Note: See TracChangeset for help on using the changeset viewer.