Test

Dependencies:   mbed-dev-OS5_10_4

Committer:
kevman
Date:
Fri Aug 07 07:24:21 2020 +0000
Revision:
0:014fad4dfb9d
Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevman 0:014fad4dfb9d 1 /*-------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 2 Programm Name: Struct.H
kevman 0:014fad4dfb9d 3 Version: 1.0
kevman 0:014fad4dfb9d 4 Sprache: C
kevman 0:014fad4dfb9d 5 Compiler: CrossStudio Ver. 2.0
kevman 0:014fad4dfb9d 6 Autor: PS
kevman 0:014fad4dfb9d 7 Copyright: PS
kevman 0:014fad4dfb9d 8
kevman 0:014fad4dfb9d 9
kevman 0:014fad4dfb9d 10 Funktion: Strukturen fuer EcmCom
kevman 0:014fad4dfb9d 11
kevman 0:014fad4dfb9d 12 28.10.2012:
kevman 0:014fad4dfb9d 13
kevman 0:014fad4dfb9d 14 -------------------------------------------------------------------------------*/
kevman 0:014fad4dfb9d 15 #define UINT8 unsigned char
kevman 0:014fad4dfb9d 16 #define uint8_t UINT8
kevman 0:014fad4dfb9d 17 #define UINT16 unsigned int
kevman 0:014fad4dfb9d 18 #define uint16_t UINT16
kevman 0:014fad4dfb9d 19 #define uint UINT16
kevman 0:014fad4dfb9d 20 #define BYTE unsigned char
kevman 0:014fad4dfb9d 21 #define UINT32 unsigned long
kevman 0:014fad4dfb9d 22 #define uint32_t unsigned long
kevman 0:014fad4dfb9d 23 #define INT16 int
kevman 0:014fad4dfb9d 24
kevman 0:014fad4dfb9d 25 #define FALSE false
kevman 0:014fad4dfb9d 26 #define TRUE true
kevman 0:014fad4dfb9d 27
kevman 0:014fad4dfb9d 28 #define LOW 0
kevman 0:014fad4dfb9d 29 #define HIGH 1
kevman 0:014fad4dfb9d 30
kevman 0:014fad4dfb9d 31 #define ANZ_POT 2
kevman 0:014fad4dfb9d 32 #define ANZ_POLY 101
kevman 0:014fad4dfb9d 33
kevman 0:014fad4dfb9d 34 #define GEN_TYP_QST 1
kevman 0:014fad4dfb9d 35 #define GEN_TYP_FKT 0
kevman 0:014fad4dfb9d 36
kevman 0:014fad4dfb9d 37
kevman 0:014fad4dfb9d 38 /*===========================================================================
kevman 0:014fad4dfb9d 39 Die nachfolgende Struktur dient zur Speicherung der Startup Konfiguration
kevman 0:014fad4dfb9d 40 ===========================================================================*/
kevman 0:014fad4dfb9d 41 struct StartUp
kevman 0:014fad4dfb9d 42 {
kevman 0:014fad4dfb9d 43 int HwConfig; // KOnfiguration der Hardware
kevman 0:014fad4dfb9d 44 int StpConfig; // ohne oder mit seriell to parallel
kevman 0:014fad4dfb9d 45
kevman 0:014fad4dfb9d 46 int PotAnz; // 0 = 1 Pot. 1 = 2 Pot.
kevman 0:014fad4dfb9d 47 int AoInvert[ANZ_POT];
kevman 0:014fad4dfb9d 48 float Offset[ANZ_POT];
kevman 0:014fad4dfb9d 49 int PotTyp[ANZ_POT]; // 0=Alter, 1=PGU
kevman 0:014fad4dfb9d 50 bool fPotActive[ANZ_POT];
kevman 0:014fad4dfb9d 51 bool fStartConnection;
kevman 0:014fad4dfb9d 52 bool fNoiseMeasurement;
kevman 0:014fad4dfb9d 53
kevman 0:014fad4dfb9d 54 };
kevman 0:014fad4dfb9d 55 typedef struct StartUp START_UP;
kevman 0:014fad4dfb9d 56
kevman 0:014fad4dfb9d 57 /*===========================================================================
kevman 0:014fad4dfb9d 58 Die nachfolgende Struktur dient zur Verwaltung der Watchdogfunktion
kevman 0:014fad4dfb9d 59 ===========================================================================*/
kevman 0:014fad4dfb9d 60 struct strWatchDog
kevman 0:014fad4dfb9d 61 {
kevman 0:014fad4dfb9d 62 int fEnabled; // 0=kein Watchdog, 1=Watchdog aktiv
kevman 0:014fad4dfb9d 63 int nTimeOut; // Timeout-Zeit für Watchdog
kevman 0:014fad4dfb9d 64 char cSign[8]; // Watchdog Zeichen was vom Host gesendet wird
kevman 0:014fad4dfb9d 65 int nCounter;
kevman 0:014fad4dfb9d 66 int nMsTimeOut;
kevman 0:014fad4dfb9d 67 int fLogFile;
kevman 0:014fad4dfb9d 68 int fHandShake;
kevman 0:014fad4dfb9d 69 };
kevman 0:014fad4dfb9d 70 typedef struct strWatchDog WATCH_DOG;
kevman 0:014fad4dfb9d 71
kevman 0:014fad4dfb9d 72 /*===========================================================================
kevman 0:014fad4dfb9d 73 Die nachfolgende Struktur dient zur Speicherung der Messkanaele
kevman 0:014fad4dfb9d 74 ===========================================================================*/
kevman 0:014fad4dfb9d 75 struct MChn1
kevman 0:014fad4dfb9d 76 {
kevman 0:014fad4dfb9d 77 float VarGalvFaktor; // Variabler Faktor für die Ansteuerung Galvanostat
kevman 0:014fad4dfb9d 78
kevman 0:014fad4dfb9d 79 };
kevman 0:014fad4dfb9d 80 typedef struct MChn1 M_KANAL;
kevman 0:014fad4dfb9d 81
kevman 0:014fad4dfb9d 82 /*===========================================================================
kevman 0:014fad4dfb9d 83 Die nachfolgende Struktur ist für die Meßparameter
kevman 0:014fad4dfb9d 84 ===========================================================================*/
kevman 0:014fad4dfb9d 85 struct StrMPara
kevman 0:014fad4dfb9d 86 {
kevman 0:014fad4dfb9d 87 int RpDauer[ANZ_POT]; // Dauer der Ruhepotentialmessung
kevman 0:014fad4dfb9d 88 int RpDauerVor[ANZ_POT]; // Dauer der Ruhepotentialmessung
kevman 0:014fad4dfb9d 89 int RpDauerNach[ANZ_POT]; // Dauer der Ruhepotentialmessung
kevman 0:014fad4dfb9d 90 int IBereichPos[ANZ_POT]; // Position im Array
kevman 0:014fad4dfb9d 91 float IKritPos[ANZ_POT]; // Positiver Endwert des Kritischen Stromdichtebereiches
kevman 0:014fad4dfb9d 92 float IKritNeg[ANZ_POT]; // Negativer Endwert des Kritischen Stromdichtebereiches
kevman 0:014fad4dfb9d 93 int UKritPos[ANZ_POT]; // Positiver Endwert des Potential bei Galvanostat
kevman 0:014fad4dfb9d 94 int UKritNeg[ANZ_POT]; // Negativer Endwert des Potential bei Galvanostat
kevman 0:014fad4dfb9d 95 int GrenzVerhalten[ANZ_POT]; // Verhalten bei Grenzwertüberschreitung
kevman 0:014fad4dfb9d 96 float ProbenGroesse[ANZ_POT]; // Größe der Probe
kevman 0:014fad4dfb9d 97 float dUdTRpEnde[ANZ_POT]; // dU/dt für Rp-Ende
kevman 0:014fad4dfb9d 98 double SMax[ANZ_POT]; // für Galvanostat
kevman 0:014fad4dfb9d 99 int PolarisationsStart[ANZ_POT];// Start der Polarisation absolut oder relativ
kevman 0:014fad4dfb9d 100 };
kevman 0:014fad4dfb9d 101 typedef struct StrMPara MESS_PARAMETER;
kevman 0:014fad4dfb9d 102
kevman 0:014fad4dfb9d 103 /*===========================================================================
kevman 0:014fad4dfb9d 104 Struktur Deklaration für die Quasistationäre Funktion
kevman 0:014fad4dfb9d 105 ===========================================================================*/
kevman 0:014fad4dfb9d 106 struct strQst1 {
kevman 0:014fad4dfb9d 107 int StartPotential;
kevman 0:014fad4dfb9d 108 int EndPotential;
kevman 0:014fad4dfb9d 109 float StufenHoehe;
kevman 0:014fad4dfb9d 110 float StufenDauer;
kevman 0:014fad4dfb9d 111 int AufAb;
kevman 0:014fad4dfb9d 112 int StartWertRelativ;
kevman 0:014fad4dfb9d 113 int AnzZyklen;
kevman 0:014fad4dfb9d 114 float flW_StartPotential; // Variable zum arbeiten
kevman 0:014fad4dfb9d 115 float flW_EndPotential; // Variable zum arbeiten
kevman 0:014fad4dfb9d 116 float flW_StufenHoehe[2]; // Variable zum arbeiten
kevman 0:014fad4dfb9d 117 long nW_StufenDauer;
kevman 0:014fad4dfb9d 118 int nW_Richtung;
kevman 0:014fad4dfb9d 119 int nW_StepCounter;
kevman 0:014fad4dfb9d 120 };
kevman 0:014fad4dfb9d 121 typedef struct strQst1 QST_DATEN;
kevman 0:014fad4dfb9d 122
kevman 0:014fad4dfb9d 123 /*===========================================================================
kevman 0:014fad4dfb9d 124 Struktur Definition für die Frequenzwerte and den DDS
kevman 0:014fad4dfb9d 125 ===========================================================================*/
kevman 0:014fad4dfb9d 126 struct strFrqValues
kevman 0:014fad4dfb9d 127 {
kevman 0:014fad4dfb9d 128 BYTE OutH0, OutH1;
kevman 0:014fad4dfb9d 129 BYTE OutL0, OutL1;
kevman 0:014fad4dfb9d 130 BYTE Clock;
kevman 0:014fad4dfb9d 131 int nFilterAuto;
kevman 0:014fad4dfb9d 132 BYTE AdControlLow; // 0x00=Sinus, 0x02 = Dreieck
kevman 0:014fad4dfb9d 133 bool fImpedance;
kevman 0:014fad4dfb9d 134 BYTE V1, V2, Mux;
kevman 0:014fad4dfb9d 135 bool fSendEnable;
kevman 0:014fad4dfb9d 136 uint16_t nAktAmplitude;
kevman 0:014fad4dfb9d 137 uint16_t nLastAmplitude;
kevman 0:014fad4dfb9d 138 };
kevman 0:014fad4dfb9d 139 typedef struct strFrqValues FRQ_VALUES;
kevman 0:014fad4dfb9d 140
kevman 0:014fad4dfb9d 141 /*===========================================================================
kevman 0:014fad4dfb9d 142 Struktur zum Speichern der Generatorwerte
kevman 0:014fad4dfb9d 143 ===========================================================================*/
kevman 0:014fad4dfb9d 144 struct FktStr2
kevman 0:014fad4dfb9d 145 {
kevman 0:014fad4dfb9d 146 int AnzPoly; // Anzahl der Polygone einer Fuktion
kevman 0:014fad4dfb9d 147 long nAnzZyklus; // Anzahl der Zyklen
kevman 0:014fad4dfb9d 148 long ZyklusStartPunkt; // Einstiegspunkt für den Zyklus
kevman 0:014fad4dfb9d 149 int PolyNummer[ANZ_POLY+1]; // Satznummer
kevman 0:014fad4dfb9d 150 double ZeitWert[ANZ_POLY+1];// Abs. Zeitwerte der Polygone
kevman 0:014fad4dfb9d 151 float SpngWert[ANZ_POLY+1]; // Programmierter Spannungsw. der Polygone
kevman 0:014fad4dfb9d 152 double ScanRate[ANZ_POLY+1]; // Scanrate in mV/s
kevman 0:014fad4dfb9d 153 int ScanRichtung[ANZ_POLY+1]; // Richtung auf/ab/Sprung/Haltepot.
kevman 0:014fad4dfb9d 154 float RealSpngWert[ANZ_POLY+1]; // Tatsächlicher Spannungsw. der Polygone
kevman 0:014fad4dfb9d 155
kevman 0:014fad4dfb9d 156 double Schritt[ANZ_POLY+2];
kevman 0:014fad4dfb9d 157 unsigned long Count[ANZ_POLY+2];
kevman 0:014fad4dfb9d 158 int GenActive;
kevman 0:014fad4dfb9d 159 long ZCount; // Zähler für Zyklus während der Messung
kevman 0:014fad4dfb9d 160 double GenVal;
kevman 0:014fad4dfb9d 161 int SetVal; // Der aktuell zu setztende Integer-Wert
kevman 0:014fad4dfb9d 162 int LastSetVal; // Der zuletzt gesetzte Integer-Wert
kevman 0:014fad4dfb9d 163 float MaxUS, MinUS;
kevman 0:014fad4dfb9d 164 float MaxTime;
kevman 0:014fad4dfb9d 165 int StartWertRelativ;
kevman 0:014fad4dfb9d 166 int FolgeWerteRelativ;
kevman 0:014fad4dfb9d 167 float flZyklusOffset;
kevman 0:014fad4dfb9d 168 int nZlOffsetMode;
kevman 0:014fad4dfb9d 169 float flScanOffset;
kevman 0:014fad4dfb9d 170 int VpStatus; // wird vorpolarisiert, dann muá das eingearbeitet werden
kevman 0:014fad4dfb9d 171 UINT16 nAktZyklus;
kevman 0:014fad4dfb9d 172 };
kevman 0:014fad4dfb9d 173 typedef struct FktStr2 FKT_WERTE;
kevman 0:014fad4dfb9d 174
kevman 0:014fad4dfb9d 175 /*===========================================================================
kevman 0:014fad4dfb9d 176 Struktur Deklaration für die Scanner Variablen
kevman 0:014fad4dfb9d 177 ===========================================================================*/
kevman 0:014fad4dfb9d 178 struct strScanVal
kevman 0:014fad4dfb9d 179 {
kevman 0:014fad4dfb9d 180 unsigned long GenCount;
kevman 0:014fad4dfb9d 181 int GenPos;
kevman 0:014fad4dfb9d 182 int Skiped;
kevman 0:014fad4dfb9d 183 int Vz;
kevman 0:014fad4dfb9d 184 bool SetStop;
kevman 0:014fad4dfb9d 185 bool fNewCycle;
kevman 0:014fad4dfb9d 186 float MaxUValue;
kevman 0:014fad4dfb9d 187 float MinUValue;
kevman 0:014fad4dfb9d 188 int AoMinWert, AoMaxWert;
kevman 0:014fad4dfb9d 189 };
kevman 0:014fad4dfb9d 190 typedef struct strScanVal SCAN_VAL;
kevman 0:014fad4dfb9d 191 /*===========================================================================
kevman 0:014fad4dfb9d 192 Struktur Deklaration für die Puls Variablen. Übernimmt die Pulswerte aus dem
kevman 0:014fad4dfb9d 193 Datentelegramm und hält die Werte ohne das sie vom Programm verändert werden
kevman 0:014fad4dfb9d 194 ===========================================================================*/
kevman 0:014fad4dfb9d 195 struct strPulsValue
kevman 0:014fad4dfb9d 196 {
kevman 0:014fad4dfb9d 197 int nPulsCounter;
kevman 0:014fad4dfb9d 198 int nPulsPauseCounter;
kevman 0:014fad4dfb9d 199 float flPulsStartPot;
kevman 0:014fad4dfb9d 200 float flUpperPulsValue;
kevman 0:014fad4dfb9d 201 float flLowerPulsValue;
kevman 0:014fad4dfb9d 202 long nAnzPulsUp;
kevman 0:014fad4dfb9d 203 long nAnzPulsDown;
kevman 0:014fad4dfb9d 204 float flPulsOffset;
kevman 0:014fad4dfb9d 205 };
kevman 0:014fad4dfb9d 206 typedef struct strPulsValue PULS_VALUE;
kevman 0:014fad4dfb9d 207
kevman 0:014fad4dfb9d 208 /*===========================================================================
kevman 0:014fad4dfb9d 209 Struktur Deklaration für Puls Variablen. Diese Strukturvariablen dienen zum
kevman 0:014fad4dfb9d 210 Arbeiten, können verändert werden und müssen im Bedarfsfalls aus den Basisdaten
kevman 0:014fad4dfb9d 211 neu geladen werden
kevman 0:014fad4dfb9d 212 ===========================================================================*/
kevman 0:014fad4dfb9d 213 struct strPulsWorkValue
kevman 0:014fad4dfb9d 214 {
kevman 0:014fad4dfb9d 215 int nPulsCounter;
kevman 0:014fad4dfb9d 216 int nPulsPauseCounter;
kevman 0:014fad4dfb9d 217 float flUpperPulsValue;
kevman 0:014fad4dfb9d 218 float flLowerPulsValue;
kevman 0:014fad4dfb9d 219 float flPulsStartPot;
kevman 0:014fad4dfb9d 220 long nAnzPulsUp;
kevman 0:014fad4dfb9d 221 long nAnzPulsDown;
kevman 0:014fad4dfb9d 222 float flPulsOffset;
kevman 0:014fad4dfb9d 223 bool nPulsState;
kevman 0:014fad4dfb9d 224 };
kevman 0:014fad4dfb9d 225 typedef struct strPulsWorkValue PULS_WORK_VALUES;
kevman 0:014fad4dfb9d 226
kevman 0:014fad4dfb9d 227
kevman 0:014fad4dfb9d 228 /*===========================================================================
kevman 0:014fad4dfb9d 229 Die nachfolgende Struktur ist für Variablen, die während der Messung
kevman 0:014fad4dfb9d 230 von allen Messmodulen benötigt werden. Eine solche Struktur sollte für
kevman 0:014fad4dfb9d 231 jeden zu messenden Potentiostaten separat angelegt werden. So läßt sich
kevman 0:014fad4dfb9d 232 das Messen besser für Parallel-Messungen erweitern.
kevman 0:014fad4dfb9d 233 ===========================================================================*/
kevman 0:014fad4dfb9d 234 struct StrMVariables
kevman 0:014fad4dfb9d 235 {
kevman 0:014fad4dfb9d 236 int BetriebsArt; // Potentiostat=0, Galvanostat=1
kevman 0:014fad4dfb9d 237 int Circuit; // OLP=0, I-Zelle = 1, Messung Ende = 2
kevman 0:014fad4dfb9d 238 float flAktIRange; // Aktueller Max-Strom in mA
kevman 0:014fad4dfb9d 239 float RangeFaktor;
kevman 0:014fad4dfb9d 240 float IAktInVolt;
kevman 0:014fad4dfb9d 241 int GenDateiTyp; // normal oder QST
kevman 0:014fad4dfb9d 242 int m_nReversePotential;
kevman 0:014fad4dfb9d 243 int m_nLastPotential;
kevman 0:014fad4dfb9d 244 int nMessArt;
kevman 0:014fad4dfb9d 245 int nReversed;
kevman 0:014fad4dfb9d 246
kevman 0:014fad4dfb9d 247 };
kevman 0:014fad4dfb9d 248 typedef struct StrMVariables MESS_VARIABLES;
kevman 0:014fad4dfb9d 249
kevman 0:014fad4dfb9d 250 /*===========================================================================
kevman 0:014fad4dfb9d 251 Die nachfolgende Struktur ist für Variablen, die der I-Bereichsprüfung und
kevman 0:014fad4dfb9d 252 Umschaltung dienen.
kevman 0:014fad4dfb9d 253 ===========================================================================
kevman 0:014fad4dfb9d 254 struct StrIRange
kevman 0:014fad4dfb9d 255 {
kevman 0:014fad4dfb9d 256 int RangeAnz[ANZ_POT];
kevman 0:014fad4dfb9d 257 int AktRange[ANZ_POT];
kevman 0:014fad4dfb9d 258 int nIRangeMax[ANZ_POT];
kevman 0:014fad4dfb9d 259 int nIRangeMin[ANZ_POT];
kevman 0:014fad4dfb9d 260 UINT32 lIMax[ANZ_POT];
kevman 0:014fad4dfb9d 261 UINT32 lIMin[ANZ_POT];
kevman 0:014fad4dfb9d 262 UINT32 lIMaxCompare[ANZ_POT];
kevman 0:014fad4dfb9d 263 UINT32 lIMinCompare[ANZ_POT];
kevman 0:014fad4dfb9d 264
kevman 0:014fad4dfb9d 265 int TempRange;
kevman 0:014fad4dfb9d 266 int AutoRange[ANZ_POT]; // 0=aktiv, 1=nicht aktiv
kevman 0:014fad4dfb9d 267 int IDownCount[ANZ_POT];
kevman 0:014fad4dfb9d 268 bool m_fIRangeSwitchedUp[ANZ_POT];
kevman 0:014fad4dfb9d 269 BYTE RangeValue[ANZ_POT];
kevman 0:014fad4dfb9d 270 int Iz1, Iz2;
kevman 0:014fad4dfb9d 271 float I1, I2;
kevman 0:014fad4dfb9d 272 float IInVolt[ANZ_POT];
kevman 0:014fad4dfb9d 273 bool m_fCheckRange;
kevman 0:014fad4dfb9d 274 bool m_fAussenStromLos;
kevman 0:014fad4dfb9d 275 };
kevman 0:014fad4dfb9d 276 typedef struct StrIRange I_RANGE;
kevman 0:014fad4dfb9d 277 */
kevman 0:014fad4dfb9d 278 /*===========================================================================
kevman 0:014fad4dfb9d 279 Struktur Definition der Werte für die Änderung der Senderate während der Messung
kevman 0:014fad4dfb9d 280 ===========================================================================*/
kevman 0:014fad4dfb9d 281 struct NewScanRate
kevman 0:014fad4dfb9d 282 {
kevman 0:014fad4dfb9d 283 int nNewSendeRate;
kevman 0:014fad4dfb9d 284 bool fFallBack; // nach einer bestimmten Anzahl zurücksetzen
kevman 0:014fad4dfb9d 285 int nFallBackTime; // zurück zur alten Einstellung nach n Sekunden
kevman 0:014fad4dfb9d 286 int nNewAutoRange;
kevman 0:014fad4dfb9d 287 int nNewRange; // neuer Bereich, wenn nicht -1 dann setzen
kevman 0:014fad4dfb9d 288 int nOldSendAnzWerte;
kevman 0:014fad4dfb9d 289 int nOldAutoRange;
kevman 0:014fad4dfb9d 290 int nOldIntervall;
kevman 0:014fad4dfb9d 291 int nExtSigOnOff;
kevman 0:014fad4dfb9d 292 int n2ndExtSigOnOff;
kevman 0:014fad4dfb9d 293 };
kevman 0:014fad4dfb9d 294 typedef struct NewScanRate NEW_SCAN_RATE;
kevman 0:014fad4dfb9d 295
kevman 0:014fad4dfb9d 296
kevman 0:014fad4dfb9d 297 /*===========================================================================
kevman 0:014fad4dfb9d 298 Struktur Definition von MessVariables
kevman 0:014fad4dfb9d 299 ===========================================================================*/
kevman 0:014fad4dfb9d 300 struct MessVariables
kevman 0:014fad4dfb9d 301 {
kevman 0:014fad4dfb9d 302
kevman 0:014fad4dfb9d 303 int MwChn[16];
kevman 0:014fad4dfb9d 304 int SwitchChn[4];
kevman 0:014fad4dfb9d 305 bool m_fChnValid[16]; // Sagt, welcher Kanal übertragen wird, es werden 16 übertragen
kevman 0:014fad4dfb9d 306 int ZInfo[2]; // liefert dem Hauptrechner die Info, wo der Messablauf ist
kevman 0:014fad4dfb9d 307
kevman 0:014fad4dfb9d 308 int nAnzahlSchritte; // Anzahl der Schritte pro Sekunde
kevman 0:014fad4dfb9d 309 float FrkValue[ANZ_POT];
kevman 0:014fad4dfb9d 310
kevman 0:014fad4dfb9d 311 int SendAnzWerte; // Anzahl Werte, die pro Sekunden gesendet werden
kevman 0:014fad4dfb9d 312 int SendAnzSave; // Zwischenspeicher fuer das Sendintervall
kevman 0:014fad4dfb9d 313 // int m_nStoreMwIntervall; // Zeitabstand, in dem die Messwerte gespeichert werden
kevman 0:014fad4dfb9d 314 int m_nAnzChnSend; // Zählt die Kanäle die gesendet werden
kevman 0:014fad4dfb9d 315 int m_nSendValues; // das Senden von Single-Messdaten wird mit 1, Cont.Messdaten mit 2 freigegeben
kevman 0:014fad4dfb9d 316 int nMessZustand[ANZ_POT];
kevman 0:014fad4dfb9d 317 int nOldZustand[ANZ_POT];
kevman 0:014fad4dfb9d 318
kevman 0:014fad4dfb9d 319 //------------------------------------------------------------------------------
kevman 0:014fad4dfb9d 320
kevman 0:014fad4dfb9d 321 long double dbAdSum[ANZ_POT*4];
kevman 0:014fad4dfb9d 322 double dbAdResult[ANZ_POT*4];
kevman 0:014fad4dfb9d 323 int nChnAverage[ANZ_POT*4];
kevman 0:014fad4dfb9d 324
kevman 0:014fad4dfb9d 325 long nMwMittelCount; // wird nach jedem erfolgreichen Lesen des A/D Wandlers incrementiert
kevman 0:014fad4dfb9d 326 int nMittelTimer; // zählt die Zeit, über die bisher gemittelt wurde
kevman 0:014fad4dfb9d 327 int nMittelAfter; // ist die Zeit in ms, nach der gemäß der Anzahl der Werte eine Mittelung durchgeführt wird
kevman 0:014fad4dfb9d 328 int nAktMittelAfter; // ist der aktuelle Wert nach dem gemittelt wird
kevman 0:014fad4dfb9d 329 int nSendTimer; // zählt die Zeit zwischen dem senden der Werte
kevman 0:014fad4dfb9d 330 int nDaTimer; // zählt die Zeit zwischen der DA Wandlung
kevman 0:014fad4dfb9d 331 int nSendAfter; // ist die Zeit in ms, nach der die Daten gesendet werden
kevman 0:014fad4dfb9d 332 int nDestCount; // zählt die Werte im Zielpuffer der versendet wird
kevman 0:014fad4dfb9d 333 bool m_fStartTel; // sagt, daß ein STX mit MW gesendet werden muss
kevman 0:014fad4dfb9d 334 int m_nAnzValue;
kevman 0:014fad4dfb9d 335 int nTelLen;
kevman 0:014fad4dfb9d 336 bool m_fSendStatus;
kevman 0:014fad4dfb9d 337 bool m_fPotGal;
kevman 0:014fad4dfb9d 338 bool m_fDoFinishMeasurement;
kevman 0:014fad4dfb9d 339 bool m_fFinishMeasurement;
kevman 0:014fad4dfb9d 340 bool m_fMeasurementFinished;
kevman 0:014fad4dfb9d 341 bool m_fDisableStopTel;
kevman 0:014fad4dfb9d 342
kevman 0:014fad4dfb9d 343 // int nMwMittelVal; // ist der Endwert, nachdem gesendet wird
kevman 0:014fad4dfb9d 344 int nSecCounter[2];
kevman 0:014fad4dfb9d 345 bool m_fScan; // Flag zum aktivieren des Scanners
kevman 0:014fad4dfb9d 346 bool m_fScanPuls;
kevman 0:014fad4dfb9d 347 bool m_fPulsMessung;
kevman 0:014fad4dfb9d 348 bool m_fQstMessung;
kevman 0:014fad4dfb9d 349 bool m_fCellSwitchOff;
kevman 0:014fad4dfb9d 350 bool m_fChangeMittelValue;
kevman 0:014fad4dfb9d 351 bool fAdReInit;
kevman 0:014fad4dfb9d 352 int m_nSendAnz;
kevman 0:014fad4dfb9d 353 int nSwapNr; // Nummer des Puffers in den die aktuellen Messdaten geschrieben werden
kevman 0:014fad4dfb9d 354
kevman 0:014fad4dfb9d 355 int Frk1, Frk2;
kevman 0:014fad4dfb9d 356 float Fr1, Fr2;
kevman 0:014fad4dfb9d 357 int m_nSendStart;
kevman 0:014fad4dfb9d 358 int m_nSendEnd; // beginnt wieder von vorne
kevman 0:014fad4dfb9d 359 int nMwPerBlock;
kevman 0:014fad4dfb9d 360 int fTelStart;
kevman 0:014fad4dfb9d 361 int nBlockCount;
kevman 0:014fad4dfb9d 362 int nIpsDebug;
kevman 0:014fad4dfb9d 363 uint8_t CsSpiMask;
kevman 0:014fad4dfb9d 364 // Ports für den I/O Zugriff
kevman 0:014fad4dfb9d 365 uint16_t nRefPort;
kevman 0:014fad4dfb9d 366 uint8_t nCurrentPort;
kevman 0:014fad4dfb9d 367 uint8_t nRingPort;
kevman 0:014fad4dfb9d 368 uint8_t nExtPort;
kevman 0:014fad4dfb9d 369 uint8_t nGenPort;
kevman 0:014fad4dfb9d 370 uint8_t nNoisePort;
kevman 0:014fad4dfb9d 371
kevman 0:014fad4dfb9d 372 uint8_t nUGain;
kevman 0:014fad4dfb9d 373 uint8_t nIGain;
kevman 0:014fad4dfb9d 374 uint8_t CsOff;
kevman 0:014fad4dfb9d 375 uint8_t IrKompPort;
kevman 0:014fad4dfb9d 376 int m_fMessDlgOpened;
kevman 0:014fad4dfb9d 377 uint8_t AdConvTime;
kevman 0:014fad4dfb9d 378 bool fChangeCt;
kevman 0:014fad4dfb9d 379 int nKurveForm;
kevman 0:014fad4dfb9d 380
kevman 0:014fad4dfb9d 381 int nMwMittelVal;
kevman 0:014fad4dfb9d 382 int m_nStoreMwIntervall;
kevman 0:014fad4dfb9d 383
kevman 0:014fad4dfb9d 384
kevman 0:014fad4dfb9d 385 int nMessArt;
kevman 0:014fad4dfb9d 386 int nMessTimer;
kevman 0:014fad4dfb9d 387 bool fSequenzMessung;
kevman 0:014fad4dfb9d 388 uint8_t fEnableAuto; // wenn true, dann wir Enable Autorange gesetzt
kevman 0:014fad4dfb9d 389 int nAnzPot;
kevman 0:014fad4dfb9d 390
kevman 0:014fad4dfb9d 391 };
kevman 0:014fad4dfb9d 392 typedef struct MessVariables MESS_VARS;
kevman 0:014fad4dfb9d 393
kevman 0:014fad4dfb9d 394 /*===========================================================================
kevman 0:014fad4dfb9d 395 Struktur Speichern der der A/D Daten
kevman 0:014fad4dfb9d 396 ===========================================================================*/
kevman 0:014fad4dfb9d 397 struct AnalogDigital
kevman 0:014fad4dfb9d 398 {
kevman 0:014fad4dfb9d 399 double AdResult[8][16]; // wird auch fuer den digitalen Filter verwendet
kevman 0:014fad4dfb9d 400 UINT32 AdRingBuf[8][1024];
kevman 0:014fad4dfb9d 401 long AdTempU, AdTempU1, AdTempI, AdDiff;
kevman 0:014fad4dfb9d 402 double FKoeff[11];
kevman 0:014fad4dfb9d 403 uint8_t nStartFk, nEndeFk;
kevman 0:014fad4dfb9d 404 double dbUFkResult, dbIFkResult;
kevman 0:014fad4dfb9d 405 double dbUNoiseGainFaktor, dbINoiseGainFaktor;
kevman 0:014fad4dfb9d 406 };
kevman 0:014fad4dfb9d 407 typedef struct AnalogDigital AD_VAL;
kevman 0:014fad4dfb9d 408
kevman 0:014fad4dfb9d 409
kevman 0:014fad4dfb9d 410 /*===========================================================================
kevman 0:014fad4dfb9d 411 Struktur für das IR-Handling
kevman 0:014fad4dfb9d 412 ===========================================================================*/
kevman 0:014fad4dfb9d 413 struct IrCompensation
kevman 0:014fad4dfb9d 414 {
kevman 0:014fad4dfb9d 415 double dbRArray[8];
kevman 0:014fad4dfb9d 416 uint8_t nRIndex;
kevman 0:014fad4dfb9d 417 bool fMitIrValue;
kevman 0:014fad4dfb9d 418 bool fMosFetState;
kevman 0:014fad4dfb9d 419 bool fMosFetOpen;
kevman 0:014fad4dfb9d 420 bool fWaitForIrVoltage;
kevman 0:014fad4dfb9d 421 bool fSendInfo;
kevman 0:014fad4dfb9d 422 bool fIrInProcess;
kevman 0:014fad4dfb9d 423 bool fCalculate;
kevman 0:014fad4dfb9d 424
kevman 0:014fad4dfb9d 425 double dbIrValue[16], dbRValue, dbOldRValue;
kevman 0:014fad4dfb9d 426 double dbIrAddVoltage, dbKorrVoltage;
kevman 0:014fad4dfb9d 427
kevman 0:014fad4dfb9d 428 double dbUDiffValue, dbLastIValue, dbUScale;
kevman 0:014fad4dfb9d 429 uint8_t nIChn, nUChn;
kevman 0:014fad4dfb9d 430 double dbAOut[2];
kevman 0:014fad4dfb9d 431 double dbDiv, dbUDisplay; // zum Berechnen der Spannung
kevman 0:014fad4dfb9d 432 uint16_t nMosFetCounter;
kevman 0:014fad4dfb9d 433 uint8_t n100msCounter; // wird alle 100ms incrementiert, Zeitfenster für die IR-Unterbrechung
kevman 0:014fad4dfb9d 434 uint8_t nOffCount;
kevman 0:014fad4dfb9d 435 uint8_t nOffSollCount;
kevman 0:014fad4dfb9d 436 uint16_t nSollCounter;
kevman 0:014fad4dfb9d 437 uint8_t nStartupCounter;
kevman 0:014fad4dfb9d 438 uint8_t nDistanceCounter;
kevman 0:014fad4dfb9d 439 uint8_t nSkipCounter;
kevman 0:014fad4dfb9d 440
kevman 0:014fad4dfb9d 441 };
kevman 0:014fad4dfb9d 442 typedef struct IrCompensation IR_COMP;
kevman 0:014fad4dfb9d 443
kevman 0:014fad4dfb9d 444