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