File: INCLUDE\MOTRSTRG\M_MOTHW.H

    1 // File m_mothw.h
    2 // (C) 1993,1994 by Heiko Damerow MPG AG "Roentgenbeugung"
    3 #ifndef __M_MOTHW_H
    4 #define __M_MOTHW_H
    5 
    6 #include "utils\u_utils.h"
    7 #include "motrstrg\motorcontroller.h"
    8 
    9 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--
   10 
   11 union tpos
   12 {
   13         char byte[ 4 ];
   14         long pos;
   15 };
   16 
   17 class TDC_Drive : public TMotor
   18 {
   19 public:
   20         TDC_Drive( void );
   21         // Funktionen, die untergeordnete Pendants aufrufen
   22         BOOL GetPosition( BOOL );
   23         long GetFailure( void );
   24         BOOL MoveByPosition( long );
   25         BOOL MoveToPosition( long );
   26         virtual BOOL SetMoment( float )
   27         {
   28                 return TRUE;
   29         };
   30         virtual float GetMoment( void )
   31         {
   32                 return 1.0;
   33         };
   34         BOOL SetSpeed( double );
   35         double GetSpeed( void );
   36         virtual int SaveSettings( BOOL );
   37         BOOL PushSettings( void );
   38         BOOL PopSettings( void );
   39         virtual BOOL SetVelocity( DWORD )
   40         {
   41                 return TRUE;
   42         };
   43         virtual BOOL SetAcceleration( DWORD )
   44         {
   45                 return TRUE;
   46         };
   47         virtual DWORD GetVelocity( void )
   48         {
   49                 return 1;
   50         };
   51         virtual DWORD GetAcceleration( void )
   52         {
   53                 return 1;
   54         };
   55 protected:
   56         virtual int Initialize( void );
   57         virtual BOOL ActivateDrive( void )
   58         {
   59                 return FALSE;
   60         };
   61         virtual BOOL Reset( void )
   62         {
   63                 return FALSE;
   64         };
   65         virtual BOOL ActivateFilterParameters( void )
   66         {
   67                 return FALSE;
   68         };
   69         WORD wDeathBand;
   70         WORD wDynamicFailure;
   71         WORD wDeccelerationPoint;
   72         WORD wMaxTorque;
   73         // Spezifische Funktionen
   74         virtual BOOL CheckBoardOk( void )
   75         {
   76                 return FALSE;
   77         };
   78         virtual BOOL IsMoveFinish( void )
   79         {
   80                 return FALSE;
   81         };
   82         virtual BOOL IsLimitHit( void )
   83         {
   84                 return FALSE;
   85         };
   86         virtual BOOL _GetPosition( long * )
   87         {
   88                 return FALSE;
   89         };
   90         virtual BOOL _GetFailure( long * )
   91         {
   92                 return FALSE;
   93         };
   94         virtual BOOL MoveRelative( long )
   95         {
   96                 return FALSE;
   97         };
   98         virtual BOOL MoveAbsolute( long )
   99         {
  100                 return FALSE;
  101         };
  102 private:
  103         int nMaxError;
  104 };
  105 
  106 class TC_812 : public TDC_Drive
  107 {
  108         friend class TOptimizeDC_812Dlg;
  109 
  110 public:
  111         TC_812( void );
  112 
  113         virtual int ExecuteCmd( char* )
  114         {
  115                 return R_OK;
  116         };
  117         void OptimizingDlg( void );
  118 
  119 protected:
  120         int SaveSettings( BOOL );
  121         virtual int Reset( void );
  122         virtual BOOL CheckBoardOk( void )
  123         {
  124                 return TRUE;
  125         };
  126         virtual BOOL SetHome( void );
  127         virtual BOOL _GetPosition( long* );
  128         virtual BOOL _GetFailure( long* );
  129         BOOL ActivateDrive( void );
  130         BOOL ActivateFilterParameters( void );
  131         BOOL SetMoment( float );
  132         float GetMoment( void );
  133         virtual BOOL IsMoveFinish( void );
  134         BOOL SetLine( int, BOOL );
  135         BOOL IsLimitHit( void );
  136         BOOL IsIndexArrived( void );
  137         BOOL StartToIndex( long& );
  138         BOOL StopDrive( BOOL ); // Kullmann, Reinecker (08.08.02) Parameter geändert int -> BOOL
  139         BOOL MoveRelative( long );
  140         BOOL MoveAbsolute( long );
  141         WORD GetStatus( void );
  142         int nWaitTicks;
  143         WORD wTorque;
  144         WORD wStaticGain;
  145         WORD wDynamicGain;
  146         int nOnBoardId;
  147 
  148 private:
  149         BOOL SetLimit( DWORD );
  150         BOOL SetVelocity( DWORD );
  151         DWORD GetVelocity( void );
  152         BOOL SetStaticGain( WORD );
  153         WORD GetStaticGain( void );
  154         BOOL SetDynamicGain( WORD );
  155         WORD GetDynamicGain( void );
  156         BOOL SetTorque( WORD );
  157         WORD GetTorque( void );
  158         BOOL SetAcceleration( DWORD );
  159         DWORD GetAcceleration( void );
  160 };
  161 
  162 
  163 class TC_812ISA : public TC_812
  164 {
  165 public:
  166         TC_812ISA( void );
  167 
  168 protected:
  169         int ExecuteCmd( char* );
  170         BOOL CheckBoardOk( void );
  171         BOOL SetHome( void );
  172         void StartCheckScan( void );
  173         // the following functions can used the direct access
  174         BOOL IsMoveFinish( void );
  175         BOOL _GetPosition( long* );
  176         BOOL _GetFailure( long* );
  177 
  178 private:
  179         int PutChar( const char );
  180         char GetChar( void );
  181         DWORD dwBaseAddr;
  182 
  183         TC_812Controller* Hardware;
  184 };
  185 
  186 class TC_832 : public TDC_Drive
  187 {
  188         friend class TOptimizeDC_832Dlg;
  189 
  190 public:
  191         TC_832( void );
  192 
  193         BOOL StopLimitWatch( void );
  194         BOOL StartLimitWatch( void );
  195         void ( *lpfnLimitWatch ) ( UINT, UINT, DWORD, DWORD, DWORD );
  196         void OptimizingDlg( void );
  197 
  198 protected:
  199         int SaveSettings( BOOL );
  200         BOOL ActivateFilterParameters( void );
  201         BOOL CheckBoardOk( void );
  202         BOOL ActivateDrive( void );
  203         void StartCheckScan( void );
  204         int Reset( void );
  205         WORD wKI;    //  IntegralGain
  206         WORD wKL;    //  IntegralLimit
  207         WORD wKP;    //  StaticGain
  208         WORD wKD;    //  DynamicGain
  209 
  210 private:
  211         long Drive628( BYTE, WORD, long );
  212         int ExecuteCmd( LPSTR );
  213         BOOL IsMoveFinish( void );
  214         BOOL IsLimitHit( void );
  215         BOOL IsIndexArrived( void );
  216         BOOL StartToIndex( long & );
  217         BOOL StopDrive( BOOL ); // Kullmann, Reinecker (08.08.02) Parameter geändert int -> BOOL
  218         BOOL SetLimit( DWORD );
  219         BOOL SetVelocity( DWORD );
  220         DWORD GetVelocity( void );
  221         BOOL SetHome( void );
  222         BOOL SetAcceleration( DWORD );
  223         DWORD GetAcceleration( void );
  224         WORD GetStatus( void );
  225         BOOL _GetPosition( long * );
  226         BOOL _GetFailure( long * );
  227         BOOL MoveRelative( long );
  228         BOOL MoveAbsolute( long );
  229         
  230         WORD wBaseAddr;
  231         int nOnBoardId;
  232         BYTE cConfig;
  233         WORD wSample;
  234         
  235         TC_832Controller* Hardware;
  236         DWORD ControllerIndex;
  237         UINT nEvent;
  238         const WORD CmdRegister;
  239         const WORD DataRegister;
  240 
  241         WORD baddr;
  242         WORD raddr;
  243 };
  244 
  245 class TPosControlDlg : public TModalDlg
  246 {
  247 public:
  248         TPosControlDlg( );
  249 
  250         // ANFANG Kullmann+Reinecker (12.03.2004)
  251         typedef enum EPosType {eMin, ePos, eMax};
  252         int ScrollbarCalculate( TMotor *act, EPosType aType );  //Neu : Kullmann, Reinecker (14.11.02) const beim Parameter entfernt, sonst const-member-functions im Motor nötig       
  253         /*int GetBarRange( TMotor * ); 
  254         int GetBarPos( TMotor * );   */
  255         // ENDE Kullmann+Reinecker (12.03.2004)
  256 
  257         BOOL HScrollBar( WPARAM, LPARAM );
  258         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
  259         void Dlg_OnCommand( HWND, int, HWND, UINT );
  260         void Dlg_OnTimer( HWND, UINT );
  261         void LeaveDialog( void );
  262 
  263 private:
  264         long NewPosition;
  265         HWND BarHandle;
  266         HWND hMotorList;
  267         BOOL bMoveActive;
  268         LPMotor Motor;
  269 };
  270 
  271 class TMotorParamDlg : public TModalDlg
  272 {
  273 public:
  274         TMotorParamDlg( void );
  275 
  276         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
  277         void Dlg_OnCommand( HWND, int, HWND, UINT );
  278         BOOL CanClose( void );
  279 
  280 private:
  281         LPMotor Motor;
  282         BOOL Flag;
  283         float SpeedScale;
  284         HWND hMotorList;
  285 };
  286 
  287 class TCalibrateDlg : public TModalDlg
  288 {
  289 public:
  290         TCalibrateDlg( int );
  291         virtual  ~TCalibrateDlg( void );
  292 
  293 private:
  294         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
  295         void Dlg_OnCommand( HWND, int, HWND, UINT );
  296         void Dlg_OnTimer( HWND, UINT );
  297         BOOL CanClose( void );
  298         void LeaveDialog( void );
  299         HWND hMotorList;
  300         LPMotor Motor;
  301         BOOL nTask; // Kullmann, Reinecker (08.08.02) Parameter geändert int -> BOOL
  302         long* lOldPos;
  303         BOOL* bIndexPosReached;
  304         BOOL* bZeroPosReached;
  305         BOOL* bTargetPosReached;
  306         BOOL bValidCalibrationData;
  307         BOOL bZeroShouldSet;
  308         BOOL bAllMotors;
  309         BOOL bHoldPosition;
  310 };
  311 
  312 class TOptimizeDC_832Dlg : public TModalDlg
  313 {
  314 public:
  315         TOptimizeDC_832Dlg( void );
  316 
  317 private:
  318         BOOL CanClose( void );
  319         void Dlg_OnCommand( HWND, int, HWND, UINT );
  320         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
  321         void LeaveDialog( void );
  322         TC_832* Drive;
  323         DWORD old_vel, old_accel;
  324         WORD old_kd, old_kp, old_ki, old_kl;
  325         WORD old_poswidth;
  326         BOOL bCancel;
  327 };
  328 
  329 class TOptimizeDC_812Dlg : public TModalDlg
  330 {
  331 public:
  332         TOptimizeDC_812Dlg( void );
  333 
  334 private:
  335         BOOL CanClose( void );
  336         void Dlg_OnCommand( HWND, int, HWND, UINT );
  337         BOOL Dlg_OnInit( HWND, HWND, LPARAM );
  338         void LeaveDialog( void );
  339         TC_812 *Drive;
  340         DWORD old_vel, old_accel;
  341         WORD old_gain, old_dgain, old_torque;
  342         WORD old_poswidth;
  343         BOOL bCancel;
  344 };
  345 
  346 #endif 
  347 // _M_MOTHW_H
  348 // __LastLine__
  349