00001
00002
00003
#ifndef __M_MOTHW_H
00004
#define __M_MOTHW_H
00005
00006
#include "utils\u_utils.h"
00007
#include "motrstrg\motorcontroller.h"
00008
00009
00010
00011 union tpos
00012 {
00013 char byte[ 4 ];
00014 long pos;
00015 };
00016
00017 class TDC_Drive :
public TMotor
00018 {
00019
public:
00020
TDC_Drive(
void );
00021
00022 BOOL
GetPosition( BOOL );
00023
long GetFailure(
void );
00024 BOOL
MoveByPosition(
long );
00025 BOOL
MoveToPosition(
long );
00026 virtual BOOL
SetMoment(
float )
00027 {
00028
return TRUE;
00029 };
00030 virtual float GetMoment(
void )
00031 {
00032
return 1.0;
00033 };
00034 BOOL SetSpeed(
double );
00035
double GetSpeed(
void );
00036
virtual int SaveSettings( BOOL );
00037 BOOL
PushSettings(
void );
00038 BOOL
PopSettings(
void );
00039 virtual BOOL
SetVelocity( DWORD )
00040 {
00041
return TRUE;
00042 };
00043 virtual BOOL
SetAcceleration( DWORD )
00044 {
00045
return TRUE;
00046 };
00047 virtual DWORD
GetVelocity(
void )
00048 {
00049
return 1;
00050 };
00051 virtual DWORD
GetAcceleration(
void )
00052 {
00053
return 1;
00054 };
00055
protected:
00056
virtual int Initialize(
void );
00057 virtual BOOL
ActivateDrive(
void )
00058 {
00059
return FALSE;
00060 };
00061 virtual BOOL
Reset(
void )
00062 {
00063
return FALSE;
00064 };
00065 virtual BOOL
ActivateFilterParameters(
void )
00066 {
00067
return FALSE;
00068 };
00069 WORD
wDeathBand;
00070 WORD
wDynamicFailure;
00071 WORD
wDeccelerationPoint;
00072 WORD
wMaxTorque;
00073
00074 virtual BOOL
CheckBoardOk(
void )
00075 {
00076
return FALSE;
00077 };
00078 virtual BOOL
IsMoveFinish(
void )
00079 {
00080
return FALSE;
00081 };
00082 virtual BOOL
IsLimitHit(
void )
00083 {
00084
return FALSE;
00085 };
00086 virtual BOOL
_GetPosition(
long * )
00087 {
00088
return FALSE;
00089 };
00090 virtual BOOL
_GetFailure(
long * )
00091 {
00092
return FALSE;
00093 };
00094 virtual BOOL
MoveRelative(
long )
00095 {
00096
return FALSE;
00097 };
00098 virtual BOOL
MoveAbsolute(
long )
00099 {
00100
return FALSE;
00101 };
00102
private:
00103
int nMaxError;
00104 };
00105
00106 class TC_812 :
public TDC_Drive
00107 {
00108
friend class TOptimizeDC_812Dlg;
00109
00110
public:
00111
TC_812(
void );
00112
00113 virtual int ExecuteCmd(
char* )
00114 {
00115
return R_OK;
00116 };
00117
void OptimizingDlg(
void );
00118
00119
protected:
00120
int SaveSettings( BOOL );
00121
virtual int Reset(
void );
00122 virtual BOOL
CheckBoardOk(
void )
00123 {
00124
return TRUE;
00125 };
00126
virtual BOOL
SetHome(
void );
00127
virtual BOOL _GetPosition(
long* );
00128
virtual BOOL _GetFailure(
long* );
00129 BOOL
ActivateDrive(
void );
00130 BOOL
ActivateFilterParameters(
void );
00131 BOOL SetMoment(
float );
00132
float GetMoment(
void );
00133
virtual BOOL
IsMoveFinish(
void );
00134 BOOL SetLine(
int, BOOL );
00135 BOOL
IsLimitHit(
void );
00136 BOOL
IsIndexArrived(
void );
00137 BOOL StartToIndex(
long& );
00138 BOOL StopDrive( BOOL );
00139 BOOL MoveRelative(
long );
00140 BOOL MoveAbsolute(
long );
00141 WORD
GetStatus(
void );
00142 int nWaitTicks;
00143 WORD
wTorque;
00144 WORD
wStaticGain;
00145 WORD
wDynamicGain;
00146 int nOnBoardId;
00147
00148
private:
00149 BOOL SetLimit( DWORD );
00150 BOOL SetVelocity( DWORD );
00151 DWORD
GetVelocity(
void );
00152 BOOL SetStaticGain( WORD );
00153 WORD GetStaticGain(
void );
00154 BOOL SetDynamicGain( WORD );
00155 WORD GetDynamicGain(
void );
00156 BOOL SetTorque( WORD );
00157 WORD GetTorque(
void );
00158 BOOL SetAcceleration( DWORD );
00159 DWORD
GetAcceleration(
void );
00160 };
00161
00162
00163 class TC_812ISA :
public TC_812
00164 {
00165
public:
00166
TC_812ISA(
void );
00167
00168
protected:
00169
int ExecuteCmd(
char* );
00170 BOOL
CheckBoardOk(
void );
00171 BOOL
SetHome(
void );
00172
void StartCheckScan(
void );
00173
00174 BOOL
IsMoveFinish(
void );
00175 BOOL
_GetPosition(
long* );
00176 BOOL
_GetFailure(
long* );
00177
00178
private:
00179
int PutChar(
const char );
00180
char GetChar(
void );
00181 DWORD dwBaseAddr;
00182
00183
TC_812Controller* Hardware;
00184 };
00185
00186 class TC_832 :
public TDC_Drive
00187 {
00188
friend class TOptimizeDC_832Dlg;
00189
00190
public:
00191
TC_832(
void );
00192
00193 BOOL
StopLimitWatch(
void );
00194 BOOL
StartLimitWatch(
void );
00195
void ( *
lpfnLimitWatch ) ( UINT, UINT, DWORD, DWORD, DWORD );
00196
void OptimizingDlg(
void );
00197
00198
protected:
00199
int SaveSettings( BOOL );
00200 BOOL
ActivateFilterParameters(
void );
00201 BOOL
CheckBoardOk(
void );
00202 BOOL
ActivateDrive(
void );
00203
void StartCheckScan(
void );
00204
int Reset(
void );
00205 WORD
wKI;
00206 WORD
wKL;
00207 WORD
wKP;
00208 WORD
wKD;
00209
00210
private:
00211
long Drive628( BYTE, WORD,
long );
00212
int ExecuteCmd( LPSTR );
00213 BOOL
IsMoveFinish(
void );
00214 BOOL
IsLimitHit(
void );
00215 BOOL
IsIndexArrived(
void );
00216 BOOL StartToIndex(
long & );
00217 BOOL StopDrive( BOOL );
00218 BOOL SetLimit( DWORD );
00219 BOOL SetVelocity( DWORD );
00220 DWORD
GetVelocity(
void );
00221 BOOL
SetHome(
void );
00222 BOOL SetAcceleration( DWORD );
00223 DWORD
GetAcceleration(
void );
00224 WORD
GetStatus(
void );
00225 BOOL _GetPosition(
long * );
00226 BOOL _GetFailure(
long * );
00227 BOOL MoveRelative(
long );
00228 BOOL MoveAbsolute(
long );
00229
00230 WORD wBaseAddr;
00231
int nOnBoardId;
00232 BYTE cConfig;
00233 WORD wSample;
00234
00235
TC_832Controller* Hardware;
00236 DWORD ControllerIndex;
00237 UINT nEvent;
00238
const WORD CmdRegister;
00239
const WORD DataRegister;
00240
00241 WORD baddr;
00242 WORD raddr;
00243 };
00244
00245 class TPosControlDlg :
public TModalDlg
00246 {
00247
public:
00248
TPosControlDlg( );
00249
00250
00251 typedef enum EPosType {
eMin,
ePos,
eMax};
00252
int ScrollbarCalculate(
TMotor *act, EPosType aType );
00253
00254
00255
00256
00257 BOOL HScrollBar( WPARAM, LPARAM );
00258 BOOL Dlg_OnInit( HWND, HWND, LPARAM );
00259
void Dlg_OnCommand( HWND,
int, HWND, UINT );
00260
void Dlg_OnTimer( HWND, UINT );
00261
void LeaveDialog(
void );
00262
00263
private:
00264
long NewPosition;
00265 HWND BarHandle;
00266 HWND hMotorList;
00267 BOOL bMoveActive;
00268
LPMotor Motor;
00269 };
00270
00271 class TMotorParamDlg :
public TModalDlg
00272 {
00273
public:
00274
TMotorParamDlg(
void );
00275
00276 BOOL
Dlg_OnInit( HWND, HWND, LPARAM );
00277
void Dlg_OnCommand( HWND,
int, HWND, UINT );
00278 BOOL
CanClose(
void );
00279
00280
private:
00281
LPMotor Motor;
00282 BOOL Flag;
00283
float SpeedScale;
00284 HWND hMotorList;
00285 };
00286
00287 class TCalibrateDlg :
public TModalDlg
00288 {
00289
public:
00290
TCalibrateDlg(
int );
00291
virtual ~TCalibrateDlg(
void );
00292
00293
private:
00294 BOOL Dlg_OnInit( HWND, HWND, LPARAM );
00295
void Dlg_OnCommand( HWND,
int, HWND, UINT );
00296
void Dlg_OnTimer( HWND, UINT );
00297 BOOL
CanClose(
void );
00298
void LeaveDialog(
void );
00299 HWND hMotorList;
00300
LPMotor Motor;
00301 BOOL nTask;
00302
long* lOldPos;
00303 BOOL* bIndexPosReached;
00304 BOOL* bZeroPosReached;
00305 BOOL* bTargetPosReached;
00306 BOOL bValidCalibrationData;
00307 BOOL bZeroShouldSet;
00308 BOOL bAllMotors;
00309 BOOL bHoldPosition;
00310 };
00311
00312 class TOptimizeDC_832Dlg :
public TModalDlg
00313 {
00314
public:
00315
TOptimizeDC_832Dlg(
void );
00316
00317
private:
00318 BOOL
CanClose(
void );
00319
void Dlg_OnCommand( HWND,
int, HWND, UINT );
00320 BOOL Dlg_OnInit( HWND, HWND, LPARAM );
00321
void LeaveDialog(
void );
00322
TC_832* Drive;
00323 DWORD old_vel, old_accel;
00324 WORD old_kd, old_kp, old_ki, old_kl;
00325 WORD old_poswidth;
00326 BOOL bCancel;
00327 };
00328
00329 class TOptimizeDC_812Dlg :
public TModalDlg
00330 {
00331
public:
00332
TOptimizeDC_812Dlg(
void );
00333
00334
private:
00335 BOOL
CanClose(
void );
00336
void Dlg_OnCommand( HWND,
int, HWND, UINT );
00337 BOOL Dlg_OnInit( HWND, HWND, LPARAM );
00338
void LeaveDialog(
void );
00339
TC_812 *Drive;
00340 DWORD old_vel, old_accel;
00341 WORD old_gain, old_dgain, old_torque;
00342 WORD old_poswidth;
00343 BOOL bCancel;
00344 };
00345
00346
#endif
00347
00348