12 #ifndef __EIOT2SRAI3_H
13 #define __EIOT2SRAI3_H
18 enum Ai3CalibrationRangeEnum
20 AI3_CALIBRATION_RANGE_MILLIAMPS,
21 AI3_NUMBER_OF_CALIBRATION_RANGES
28 #include "eio_t25srm.h"
45 AI3_UPDATE_CYCLE_62_5mS,
46 AI3_UPDATE_CYCLE_125mS,
47 AI3_UPDATE_CYCLE_187_5mS,
48 AI3_UPDATE_CYCLE_250mS,
49 AI3_NUMBER_OF_UPDATE_CYCLES,
57 AI3_NUMBER_OF_READINGS_PER_CHANNEL
84 AI3_NUMBER_OF_CHANNELS,
87 enum AI3OperatingRanges
101 EIO_T2500AI3_STATE_MODULE_NEEDS_RESET,
102 EIO_T2500AI3_STATE_INITIALISING,
103 EIO_T2500AI3_STATE_RUNTIME,
104 EIO_T2500AI3_STATE_DELETE,
105 EIO_T2500AI3_STATE_SECONDARY,
106 EIO_T2500AI3_STATE_BECOMING_PRIMARY_1,
107 EIO_T2500AI3_STATE_BECOMING_PRIMARY_2,
108 EIO_T2500AI3_STATE_BECOMING_PRIMARY_3,
111 enum Ai3EepromAccessState
113 AI3_EEPROM_RESET_STATE,
114 AI3_EEPROM_READ_CHANNEL_1_USER_CALIBRATION,
115 AI3_EEPROM_READ_CHANNEL_2_USER_CALIBRATION,
116 AI3_EEPROM_READ_CHANNEL_3_USER_CALIBRATION,
117 AI3_EEPROM_READ_CHANNEL_1_FACTORY_CALIBRATION,
118 AI3_EEPROM_READ_CHANNEL_2_FACTORY_CALIBRATION,
119 AI3_EEPROM_READ_CHANNEL_3_FACTORY_CALIBRATION,
121 AI3_EEPROM_WRITE_DONE,
126 enum Ai3CalibrationState
129 AI3_CAL_STATE_WAIT_FOR_RANGE,
131 AI3_CAL_STATE_RUNNING,
132 AI3_CAL_STATE_DATA_GATHERED,
133 AI3_CAL_STATE_WAIT_FOR_VALUE,
134 AI3_CAL_STATE_POINT_DONE,
136 AI3_CAL_STATE_SAVE_LOW_POINT,
137 AI3_CAL_STATE_SAVE_HIGH_POINT,
138 AI3_CAL_STATE_DATA_SAVED,
139 AI3_CAL_STATE_RESTORE,
140 AI3_CAL_STATE_END_CAL
143 enum Ai3CalibrationPoints
147 AI3_NUMBER_OF_CALIBRATION_POINTS
153 EioUint8 m_filter1Input;
154 AI3Channels m_filter1Channel;
155 AI3Polarity m_filter1Sign;
156 AI3Channels m_filter2Channel;
157 AI3Polarity m_filter2Sign;
164 EioT2500AI3Module(
unsigned char moduleNumber, EioT2500CycleEnum z_expectedCycleNumber);
165 virtual ~EioT2500AI3Module();
168 virtual void update62_5mS();
169 virtual void update125mS();
170 virtual void updateBuffers125ms();
171 EioBoolean getCalibrated(EioUint8 channel, EioAICalType calType, EioUint8 rangeNumber);
174 void decipherCalibration();
175 void checkUserCalibration();
177 AI3OperatingRanges getOperatingRange(EioUint8 channel);
178 EioUint8 eeCheckBits( EioUint8 *bytePtr);
179 static void secondaryFilter(
float sample,
float *polep,
float divisor, EioSint8 *resetp );
180 void driveChannelLeds();
181 void updateEepromImage125mS();
182 void disableAll62_5mS();
183 void disableAll125mS();
184 void setFaultValues();
185 void updateCalibrationState();
187 AI3RunStates m_state;
188 Ai3EepromAccessState m_eepromState;
189 Ai3CalibrationState m_calibrationState[AI3_NUMBER_OF_CHANNELS];
191 float m_calibrationCoefficient1[AI3_NUMBER_OF_CHANNELS];
192 float m_calibrationCoefficient2[AI3_NUMBER_OF_CHANNELS];
193 float m_oldCalCoefficient1[AI3_NUMBER_OF_CHANNELS];
194 float m_oldCalCoefficient2[AI3_NUMBER_OF_CHANNELS];
195 bool m_rangeCalibrated[AI3_NUMBER_OF_CHANNELS];
196 bool m_oldRangeCalibrated[AI3_NUMBER_OF_CHANNELS];
197 EioBoolean m_rangeFactoryCalibrated[AI3_NUMBER_OF_CHANNELS];
198 EioBoolean m_rangeUserCalibrated[AI3_NUMBER_OF_CHANNELS];
199 EioUint8 m_calCounter[AI3_NUMBER_OF_CHANNELS];
200 EioUint32 m_calReading[AI3_NUMBER_OF_CHANNELS][AI3_NUMBER_OF_CALIBRATION_POINTS];
201 EioUint32 m_deltaCounts[AI3_NUMBER_OF_CHANNELS];
202 Ai3CalibrationPoints m_calPointIndex[AI3_NUMBER_OF_CHANNELS];
203 float m_actualCalValue[AI3_NUMBER_OF_CHANNELS][AI3_NUMBER_OF_CALIBRATION_POINTS];
205 static float m_calScaleFactor;
206 static float m_calibrationRefLow;
207 static float m_calibrationRefHigh;
208 static AI3CycleDataType m_cycleData[AI3_NUMBER_OF_UPDATE_CYCLES];
210 EioUint8 m_spiLatchOutputs;
236 bool m_messagesScheduled;
237 EioUint8 m_eepromImage[256];
239 EioSint32 m_filterCount[AI3_NUMBER_OF_CHANNELS][AI3_NUMBER_OF_READINGS_PER_CHANNEL];
240 EioUint8 m_filterStatus[AI3_NUMBER_OF_CHANNELS][AI3_NUMBER_OF_READINGS_PER_CHANNEL];
242 float m_divisor[AI3_NUMBER_OF_CHANNELS];
243 EioSint8 m_filterReset[AI3_NUMBER_OF_CHANNELS];
244 EioUint8 m_rangingCount[AI3_NUMBER_OF_CHANNELS];
248 float m_sensorBreakValue[AI3_NUMBER_OF_CHANNELS];
249 EioUint8 m_psuResetTimer;
251 AI3OperatingRanges m_currentRange[AI3_NUMBER_OF_CHANNELS];
253 AI3UpdateCycles m_updateCycle;
254 AI3UpdateCycles m_muxCycle;
255 EioUint8 m_dfcConfigAttempts;
Definition: eio_t25srm.h:58
Definition: sla_ssm.h:162
Definition: eiot2cal.h:36
Definition: dfc_ssm.h:322
Definition: dfc_ssm.h:233
Definition: dfc_ssm.h:266
Definition: dfc_ssm.h:206
Definition: sla_ssm.h:172