Hauptseite | Klassenhierarchie | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente | Datei-Elemente | Zusätzliche Informationen

MJ_FUNK.H

gehe zur Dokumentation dieser Datei
00001 //############################################################################## 00002 // // 00003 // MJ_FUNK.H // 00004 // // 00005 // Subsystem : neue Manuelle Justage / Funktionalität // 00006 // Benutzung durch andere Subsysteme erforderlich: NEIN // 00007 //----------------------------------------------------------------------------// 00008 // Autoren: Thomas Kullmann, Günther Reinecker // 00009 // Stand : 23.11.2002 // 00010 // letzter vollständiger Test: 20.08.2002 // 00011 // // 00012 //############################################################################## 00013 00014 #ifndef _MJ_FUNK_H 00015 #define _MJ_FUNK_H 00016 00017 #include "motrstrg\motrstrg.h" // Motorsteuerung 00018 #include "detecuse\detecuse.h" // Detektornutzung 00019 00020 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||-- 00021 00022 //############################################################################## 00023 // globale Typdeklarationen 00024 //############################################################################## 00025 00026 enum EMotionType { mtDirect= 1, mtDrive= 2, mtStep= 3 }; // 0 zur Kennzeichnung einer unbekannten Betriebsart 00027 enum EDirection { dUp= 1, dDown= 2 }; 00028 typedef double TAngle; 00029 typedef double TSpeed; 00030 typedef int TChannel; 00031 const EAxisType _HWBAXIS= DF; // Antrieb der zur Halbwertsbreitenmessung verwendet wird 00032 00033 //############################################################################## 00034 // TManJustage 00035 //############################################################################## 00036 00037 class TManJustage 00038 { // Klasse für die Funktionalität der Manuellen Justage 00039 00040 //------------------------------------------------------------------------------ 00041 // TMotorData 00042 //------------------------------------------------------------------------------ 00043 00044 private: 00045 00046 struct TMotorData 00047 { // Informationen für jeweils einen Antrieb der Manuelle Justage 00048 00049 TMotor *m_lnkMotor; // Antrieb dessen Daten hier verwaltet werden 00050 EAxisType m_AxisType; // zugeordneter Antriebstyp 00051 char m_MotorId[50]; // "MOTOR<Index>" Name der INI-Sektion in der HARDWARE.INI 00052 00053 EMotionType m_MotionType; // aktuelle Betriebsart 00054 00055 // aktuelle Bewegungsparameter 00056 TAngle m_AngleDest; // SollPosition 00057 TSpeed m_Speed; // Geschwindigkeit 00058 TAngle m_AngleWidth; // Schrittweite 00059 00060 // Info's über die Bewegung 00061 BOOL m_KzMoving; // OnTimer(): wenn m_KzMoving!= IsMoving(), dann hat Bewegung gestartet oder gestoppt 00062 00063 // Speeding (zwischenspeichern der Daten zwischen BeginUpdate und EndUpdate erspart das ständige/ langsame Auslesen beim Antrieb) 00064 TAngle m_SpAngle; // letzte Antriebsposition 00065 BOOL m_HasAngle; // FALSE wenn die letzte Antriebsposition seit BeginUpdate noch NICHT in m_SpAngle zwischengespeichert wurde 00066 BOOL m_SpMoving; // letzter Antriebsstatus (in Bewegung?) 00067 BOOL m_HasMoving; // FALSE wenn der letzte Antriebsstatus seit BeginUpdate noch NICHT in m_SpMoving zwischengespeichert wurde 00068 }; 00069 00070 //------------------------------------------------------------------------------ 00071 // Konstruktor/Destruktor 00072 public: 00073 00074 TManJustage( void ); 00075 virtual ~TManJustage( void ); 00076 00077 //------------------------------------------------------------------------------ 00078 // Antriebssteuerung 00079 public: 00080 00081 BOOL DoDirect ( const int ); // Bewegung im Direktbetrieb 00082 BOOL DoDrive ( const int, const EDirection ); // Bewegung im Fahrbetrieb 00083 BOOL DoStep ( const int, const EDirection ); // Bewegung im Schrittbetrieb 00084 BOOL DoStop ( const int ); // stoppen der Bewegung, unabhängig von der Betriebsart 00085 void DoStopEverything ( void ); // Stoppen aller Antriebe, der Halbwertsbreitenmessung und der Detektormessung 00086 00087 //------------------------------------------------------------------------------ 00088 // Statusinformationen 00089 public: 00090 00091 BOOL IsIndexValid ( const int ) const; // gültiger Index der Antriebsliste ? 00092 BOOL HasOffset ( const int, BOOL& ) const; // Offset gesetzt, d.h. (Offset != 0) ? 00093 BOOL IsMoving ( const int, BOOL& ); // Antrieb in Bewegung ? 00094 BOOL IsCalibrated ( const int, BOOL& ) const; // Antrieb kalibriert? 00095 00096 //------------------------------------------------------------------------------ 00097 // GET-Methoden 00098 public: 00099 00100 // lesen der aktuellen Betriebsart und der Bewegungsparameter 00101 EMotionType GetMotionType ( const int, BOOL& ) const; // Betriebsart 00102 TAngle GetAngleDest ( const int, BOOL& ) const; // Sollposition 00103 TSpeed GetSpeed ( const int, BOOL& ) const; // Geschwindigkeit 00104 TAngle GetAngleWidth ( const int, BOOL& ) const; // Schrittweite 00105 BOOL GetKzMoving ( const int, BOOL& ) const; // OnTimer() will auf Start/ Stop der Bewegung reagiert 00106 TAngle GetOffset ( const int, BOOL& ) const; // aktuellen Offset für <Antrieb> 00107 UINT GetMotorCount ( void ) const; // Anzahl der Antriebe in der Antriebsliste 00108 LPCSTR GetMotorName ( const int, BOOL& ) const; // Antriebsbezeichnung per standardisierter Antriebsbezeichnung 00109 int GetMotorIdx ( const LPCSTR ) const; // Index des angegebenen Antriebs; ggf. -1 00110 int GetMotorIdx ( const EAxisType ) const; // Index des angegebenen Antriebs; ggf. -1 00111 00112 // lesen der relativen Positionsdaten als Winkelangabe 00113 TAngle GetAngle ( const int, BOOL& ); // aktuelle Antriebsposition 00114 TAngle GetAngleMin ( const int, BOOL& ) const; // minimale Antriebsposition 00115 TAngle GetAngleMax ( const int, BOOL& ) const; // maximale Antriebsposition 00116 00117 UINT GetDigits ( const int, BOOL& ) const; // lesen der Nachkommastellen 00118 LPCSTR GetUnit ( const int, BOOL& ) const; // lesen der Einheit 00119 00120 static UINT ParsingAxis( const LPCSTR ); // lesen der standardisierten Antriebsbezeichnung 00121 00122 //------------------------------------------------------------------------------ 00123 // SET-Methoden 00124 public: 00125 00126 // setzen der aktuellen Betriebsart und der Bewegungsparameter 00127 BOOL SetMotionType ( const int, EMotionType& ); // Betriebsart 00128 BOOL SetAngleDest ( const int, TAngle& ); // Sollposition 00129 BOOL SetSpeed ( const int, TSpeed& ); // Geschwindigkeit 00130 BOOL SetAngleWidth ( const int, TAngle& ); // Schrittweite 00131 BOOL SetKzMoving ( const int, const BOOL ); // OnTimer() hat auf Start/ Stop der Bewegung reagiert 00132 00133 //------------------------------------------------------------------------------ 00134 // Offset bzw relative Null 00135 public: 00136 00137 BOOL SetRelativeZero ( const int ); // setzen der relativen Null 00138 BOOL ResetRelativeZero ( const int ); // aufheben der relativen Null 00139 BOOL SetOffset ( const int, TAngle& ); // setzen des Offset für <Antrieb> 00140 00141 // Berechnungen zum Offset für <Antrieb> 00142 TAngle CalcOffsetFromAngle ( const int, TAngle& ) const; // Berechnung des Offset aus einer Position 00143 TAngle CalcAngleFromOffset ( const int, TAngle& ) const; // Berechnung der Position aus dem Offset 00144 00145 //------------------------------------------------------------------------------ 00146 // Kanal-Offset 00147 public: 00148 00149 int GetDetectorAxisIdx ( void ) const; // Index DES PSD-Antriebs; ggf. -1 00150 LPCSTR GetDetectorName ( BOOL& ) const; // gibt die Bezeichnung des Detektors zurück; ggf. "PSD" 00151 BOOL HasDetectorAxis ( void ) const; // angeschlossen? 00152 00153 int GetChannel ( void ) const; 00154 TAngle GetAnglePerChannel ( void ) const; // lesen des aktuellen Verhältnis: Winkel pro Kanal 00155 BOOL SetChannel ( int& ); // setzen des Kanals 00156 00157 // Berechnungen zum PSD-Offset 00158 TAngle CalcChannelOffset ( TChannel& ) const; 00159 TAngle CalcChannelAngle ( TChannel& ) const; 00160 private: 00161 BOOL ResetChannelOffset( const int ); // aufheben des Kanaloffsets 00162 00163 //------------------------------------------------------------------------------ 00164 // Halbwertsbreitenmessung 00165 public: 00166 00167 BOOL DoStartMeasure ( const HWND ); // starten 00168 BOOL DoStopMeasure ( void ); // stoppen 00169 00170 BOOL IsMeasuring ( void ) const; // ==> TRUE <--> Messung aktiv 00171 BOOL IsMeasureReset ( void ) const; // Messung abgebrochen? 00172 BOOL GetKzMeasuring ( void ) const; // OnTimer() will auf Start/ Stop der Makroverarbeitung reagiert 00173 BOOL GetMeasureProgress ( int&, LPSTR, int& ) const; //Index und Anzahl der Kommandos und Statusinformationen bzw. Kommandonamne werden per Parameter zurückgegeben; ==> TRUE <--> Messung aktiv 00174 double GetMeasureHwb ( void ) const; // ==> HWB oder 0.0 00175 TDetector *GetDetector ( void ) const; // Zeiger für den ausgewählten Detektor, der für die Halbwertsbreitenmessung benötigt wird 00176 void SetKzMeasuring ( const BOOL ); // OnTimer() hat auf Start/ Stop der Makroverarbeitung reagiert 00177 void UpdateDetector ( void ) const; // informiert die Makroverarbeitung, dass neue Messwerte vorliegen 00178 00179 //------------------------------------------------------------------------------ 00180 // Zustand für Bewegung ermitteln 00181 public: 00182 00183 // können die folgenden Funktionalitäten durchgeführt werden? 00184 // das freigeben bzw. sperren und ausgrauen von Steuerelementen 00185 BOOL CanDoDirect ( const int ); // Direktbetrieb möglich ? 00186 BOOL CanDoDrive ( const int, const EDirection ); // Fahrbetrieb möglich ? 00187 BOOL CanDoStep ( const int, const EDirection ); // Schrittbetrieb möglich ? 00188 BOOL CanDoStop ( const int ); // kann Bewegung gestoppt werden ? 00189 00190 //------------------------------------------------------------------------------ 00191 // Zustand zum Setzen von Parametern 00192 public: 00193 00194 BOOL CanSetMotionType ( const int ); // setzen der Betriebsart möglich ? 00195 BOOL CanSetAngleDest ( const int ); // setzen der Sollposition möglich ? 00196 BOOL CanSetSpeed ( const int ); // setzen der Geschwindigkeit möglich ? 00197 BOOL CanSetAngleWidth ( const int ); // setzen der Schrittweite möglich ? 00198 BOOL CanResetRelativeZero ( const int ); // aufheben der Relativen Null möglich ? 00199 BOOL CanSetOffset ( const int ); // setzen des Offset und der rel.Null für <Antrieb> möglich ? 00200 00201 BOOL CanDoStartMeasure ( void ); // starten der Halbwertsbreitenmessung möglich ? 00202 BOOL CanDoStopMeasure ( void ) const; // stoppen der Halbwertsbreitenmessung möglich ? 00203 00204 //------------------------------------------------------------------------------ 00205 // Speeding beginnen bzw. beenden 00206 public: 00207 UINT BeginUpdate ( void ); // m_UpdateCount erhöhen 00208 UINT EndUpdate ( void ); // verringern 00209 00210 //------------------------------------------------------------------------------ 00211 // Auslesen der wirklichen Antriebsdaten ohne Speeding (Aquäivalent zu GetAngle und IsMoving) 00212 private: 00213 TAngle DetermineAngle ( const int, BOOL& ) const; // aktuelle Antriebsposition beim Antrieb auslesen 00214 BOOL DetermineMoving ( const int, BOOL& ) const; // Antriebsstatus (in Bewegung?) beim Antrieb auslesen 00215 00216 //------------------------------------------------------------------------------ 00217 // Attribute 00218 private: 00219 TMotorData *m_MotorList; // Liste der verfügbaren Antriebe 00220 00221 TOneDimDetector *m_lnkDetector; // Detektor für den PSD-Offset 00222 char m_DetectorId[50]; // // "DEVICE<Index>" Name der INI-Sektion in der HARDWARE.INI 00223 int m_Channel; // PSD-Kanal für den Offset 00224 00225 BOOL m_IsMeasuring; // Status der HWB-Messung 00226 UINT m_MotorCount; // Anzahl der Motoren in m_MotorList 00227 BOOL m_KzMeasuring; // OnTimer(): wenn m_IsMeasuring!= IsMeasuring(), dann hat Makroverarbeitung gestartet oder gestoppt 00228 00229 UINT m_UpdateCount; // Speeding 00230 }; 00231 00232 #endif //__MJ_FUNK.H 00233 00234 //############################################################################# 00235 // LastLine 00236 //############################################################################# 00237

Erzeugt am Sat Nov 13 12:48:07 2004 für XCTL32 von doxygen 1.3.7