12 #ifndef __EIOT2SRAO2_H
13 #define __EIOT2SRAO2_H
19 #define AOC_CAL_MA_LOW (2.0)
20 #define AOC_CAL_MA_HIGH (18.0)
21 #define AOC_CAL_VOLT_LOW (1000.0)
22 #define AOC_CAL_VOLT_HIGH (9000.0)
25 #define AOC_MA_RANGE_LOW (-0.1f)
26 #define AOC_MA_RANGE_HIGH (20.5)
27 #define AOC_VOLT_RANGE_LOW (-500.0)
28 #define AOC_VOLT_RANGE_HIGH (10500.0)
32 #define AO2_MAX_UPDATES_AFTER_RESET 2
34 enum Ao2CalibrationRangeEnum
36 AO2_CALIBRATION_RANGE_VOLTS,
37 AO2_CALIBRATION_RANGE_MILLIAMPS,
38 AO2_NUMBER_OF_CALIBRATION_RANGES
43 EioAOCalRangeType rangeType;
53 #include "eio_t25srm.h"
64 AO2_NUMBER_OF_CHANNELS,
69 EIO_T2500AO2_STATE_JUST_CREATED,
70 EIO_T2500AO2_STATE_MODULE_HAS_CHANGED,
71 EIO_T2500AO2_STATE_INITIALISING,
72 EIO_T2500AO2_STATE_RUNTIME,
73 EIO_T2500AO2_STATE_DELETE,
74 EIO_T2500AO2_STATE_SECONDARY,
75 EIO_T2500AO2_STATE_BECOMING_PRIMARY_1,
76 EIO_T2500AO2_STATE_BECOMING_PRIMARY_2,
79 enum Ao2EepromAccessState
81 AO2_EEPROM_RESET_STATE,
89 enum Ao2CalibrationState
92 AO2_CAL_STATE_WAIT_FOR_RANGE,
94 AO2_CAL_STATE_POINT_DONE,
95 AO2_CAL_STATE_POINT_DONE2,
97 AO2_CAL_STATE_DATA_SAVED,
98 AO2_CAL_STATE_DEFAULT,
99 AO2_CAL_STATE_END_CAL,
100 AO2_CAL_STATE_SAVE_LOW_POINT,
101 AO2_CAL_STATE_SAVE_HIGH_POINT,
102 AO2_CAL_STATE_SAVE_CHECKSUM,
103 AO2_CAL_STATE_FACTORY_SAVE_LOW_POINT,
104 AO2_CAL_STATE_FACTORY_SAVE_HIGH_POINT,
105 AO2_CAL_STATE_FACTORY_SAVE_CHECKSUM,
106 AO2_CAL_STATE_CORRUPT_CHECKSUM
114 typedef struct AOC_CAL_DATA_T
126 typedef struct AOC_EE_CAL_DATA_T
128 AOC_CAL_DATA_T m_factoryCal[AO2_NUMBER_OF_CALIBRATION_RANGES];
129 AOC_CAL_DATA_T m_refCalOffset[AO2_NUMBER_OF_CALIBRATION_RANGES];
132 enum Ao2CalibrationPoints
136 AO2_NUMBER_OF_CALIBRATION_POINTS
142 EioT2500AO2Module(
unsigned char moduleNumber, EioT2500CycleEnum z_expectedCycleNumber);
143 virtual ~EioT2500AO2Module();
146 virtual void update62_5mS();
147 virtual void update125mS();
148 virtual void updateBuffers125ms();
151 bool decipherCalibration(
int z_channel);
153 EioUint16 eeCheckCal( AOC_CAL_DATA_T *z_calData );
154 void driveChannelLeds();
155 void disableAllDfcMessages();
156 void configureRuntimeMessages();
157 EioUint16 getCounts(
int z_channel);
158 int channelToPort(
int z_channel){
return 1-z_channel;};
159 void generatePointStatus();
160 void updateEepromData125mS();
161 void updateCalibrationState();
163 Ao2RunStates m_state;
164 Ao2EepromAccessState m_eepromState;
165 Ao2CalibrationState m_calibrationState[AO2_NUMBER_OF_CHANNELS];
167 bool m_rangeCalibrated[AO2_NUMBER_OF_CHANNELS][AO2_NUMBER_OF_CALIBRATION_RANGES];
168 EioBoolean m_rangeUserCalibrated[AO2_NUMBER_OF_CHANNELS][AO2_NUMBER_OF_CALIBRATION_RANGES];
170 static float m_calScaleFactor;
171 static float m_calibrationRefLow[AO2_NUMBER_OF_CALIBRATION_RANGES];
172 static float m_calibrationRefHigh[AO2_NUMBER_OF_CALIBRATION_RANGES];
173 static Ao2CalibrationRangeEnum m_calType[EIO_AO_NUMBER_OF_TYPES];
174 static EioAOType m_calOutputType[AO2_NUMBER_OF_CALIBRATION_RANGES];
176 Ao2CalibrationPoints m_calPointIndex[AO2_NUMBER_OF_CHANNELS];
177 float m_actualCalValue[AO2_NUMBER_OF_CHANNELS][AO2_NUMBER_OF_CALIBRATION_POINTS];
178 float m_measuredValue[AO2_NUMBER_OF_CHANNELS][AO2_NUMBER_OF_CALIBRATION_POINTS];
200 bool m_haveReadValidCalibration[AO2_NUMBER_OF_CHANNELS];
202 AOC_EE_CAL_DATA_T m_calibrationData[AO2_NUMBER_OF_CHANNELS];
203 AOC_EE_CAL_DATA_T m_oldCalData[AO2_NUMBER_OF_CHANNELS];
206 EioAOStatus m_pointStatus[AO2_NUMBER_OF_CHANNELS];
207 EioAOStatus m_localStatus[AO2_NUMBER_OF_CHANNELS];
208 float m_demand[AO2_NUMBER_OF_CHANNELS];
211 bool m_clippedLow[AO2_NUMBER_OF_CHANNELS];
212 bool m_clippedHigh[AO2_NUMBER_OF_CHANNELS];
213 bool m_capabilitiesExceeded[AO2_NUMBER_OF_CHANNELS];
214 bool m_iocError[AO2_NUMBER_OF_CHANNELS];
215 bool m_hadHardwareError[AO2_NUMBER_OF_CHANNELS];
216 EioUint8 m_lastHeartBeat[AO2_NUMBER_OF_CHANNELS];
218 EioSint8 m_rangingTrapCounter[AO2_NUMBER_OF_CHANNELS];
220 EioUint8 m_retryCounter;
222 bool m_messagesScheduled;
223 bool m_iocFilterValid;
224 bool m_heartbeatValid;
225 EioUint8 m_rangingCounter;
226 EioUint8 m_resetCounter;
Definition: eio_t25srm.h:58
Definition: dfc_ssm.h:340
Definition: dfc_ssm.h:399
Definition: dfc_ssm.h:198
Definition: dfc_ssm.h:363
Definition: dfc_ssm.h:233
Definition: dfc_ssm.h:206
Definition: dfc_ssm.h:379
Definition: eiot2cal.h:61
Definition: eiot2srao2.h:41
Definition: dfc_ssm.h:352