Hochschule München
/
H2M_2014_race
Shell Eco Fuelcell controller
components.cpp@0:adf68d4b873f, 2014-01-07 (annotated)
- Committer:
- HMFK03LST1
- Date:
- Tue Jan 07 12:02:52 2014 +0000
- Revision:
- 0:adf68d4b873f
work in Progress
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
HMFK03LST1 | 0:adf68d4b873f | 1 | #include "mbed.h" |
HMFK03LST1 | 0:adf68d4b873f | 2 | |
HMFK03LST1 | 0:adf68d4b873f | 3 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 4 | { |
HMFK03LST1 | 0:adf68d4b873f | 5 | uint16_t voltage_act; // Actual CAP Voltage |
HMFK03LST1 | 0:adf68d4b873f | 6 | uint16_t voltage_low; // Switch to full current |
HMFK03LST1 | 0:adf68d4b873f | 7 | uint16_t voltage_mid; // Switch to medium current |
HMFK03LST1 | 0:adf68d4b873f | 8 | uint16_t voltage_high; // Switch to minimum current |
HMFK03LST1 | 0:adf68d4b873f | 9 | uint16_t voltage_max; // Stopp loading |
HMFK03LST1 | 0:adf68d4b873f | 10 | uint16_t voltage_down; // reduce Voltage (CAP down) |
HMFK03LST1 | 0:adf68d4b873f | 11 | uint16_t current_low; // minimum current |
HMFK03LST1 | 0:adf68d4b873f | 12 | uint16_t current_mid; // medium current |
HMFK03LST1 | 0:adf68d4b873f | 13 | uint16_t current_high; // high current |
HMFK03LST1 | 0:adf68d4b873f | 14 | } struct_cap; |
HMFK03LST1 | 0:adf68d4b873f | 15 | |
HMFK03LST1 | 0:adf68d4b873f | 16 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 17 | { |
HMFK03LST1 | 0:adf68d4b873f | 18 | uint16_t air_needed; |
HMFK03LST1 | 0:adf68d4b873f | 19 | uint16_t current_act; |
HMFK03LST1 | 0:adf68d4b873f | 20 | uint16_t current_load; |
HMFK03LST1 | 0:adf68d4b873f | 21 | uint16_t temp_act; |
HMFK03LST1 | 0:adf68d4b873f | 22 | uint16_t temp_max; |
HMFK03LST1 | 0:adf68d4b873f | 23 | uint16_t voltage_act; |
HMFK03LST1 | 0:adf68d4b873f | 24 | uint16_t voltage_max; |
HMFK03LST1 | 0:adf68d4b873f | 25 | } struct_fuelcell; |
HMFK03LST1 | 0:adf68d4b873f | 26 | |
HMFK03LST1 | 0:adf68d4b873f | 27 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 28 | { |
HMFK03LST1 | 0:adf68d4b873f | 29 | bool fan_override; |
HMFK03LST1 | 0:adf68d4b873f | 30 | uint16_t fan_over_pwm; //name |
HMFK03LST1 | 0:adf68d4b873f | 31 | uint16_t fan_p; |
HMFK03LST1 | 0:adf68d4b873f | 32 | uint16_t fan_i; |
HMFK03LST1 | 0:adf68d4b873f | 33 | uint16_t fan_thr; |
HMFK03LST1 | 0:adf68d4b873f | 34 | short fan_up; //add |
HMFK03LST1 | 0:adf68d4b873f | 35 | short fan_up_count; //add |
HMFK03LST1 | 0:adf68d4b873f | 36 | short fan_pwm; |
HMFK03LST1 | 0:adf68d4b873f | 37 | uint16_t fan_pwm_act; |
HMFK03LST1 | 0:adf68d4b873f | 38 | bool pump_override; |
HMFK03LST1 | 0:adf68d4b873f | 39 | uint16_t pump_over_pwm; //name |
HMFK03LST1 | 0:adf68d4b873f | 40 | uint16_t pump_min; |
HMFK03LST1 | 0:adf68d4b873f | 41 | uint16_t pump_p; |
HMFK03LST1 | 0:adf68d4b873f | 42 | uint16_t pump_i; |
HMFK03LST1 | 0:adf68d4b873f | 43 | short pump_up; //add |
HMFK03LST1 | 0:adf68d4b873f | 44 | short pump_up_count; //add |
HMFK03LST1 | 0:adf68d4b873f | 45 | short pump_pwm; |
HMFK03LST1 | 0:adf68d4b873f | 46 | uint16_t pump_pwm_act; |
HMFK03LST1 | 0:adf68d4b873f | 47 | uint16_t temp_out; |
HMFK03LST1 | 0:adf68d4b873f | 48 | } struct_h2o; |
HMFK03LST1 | 0:adf68d4b873f | 49 | |
HMFK03LST1 | 0:adf68d4b873f | 50 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 51 | { |
HMFK03LST1 | 0:adf68d4b873f | 52 | uint16_t current_act; |
HMFK03LST1 | 0:adf68d4b873f | 53 | uint16_t current_delta; |
HMFK03LST1 | 0:adf68d4b873f | 54 | uint16_t current_load; |
HMFK03LST1 | 0:adf68d4b873f | 55 | uint16_t i; // added |
HMFK03LST1 | 0:adf68d4b873f | 56 | uint16_t pwm; |
HMFK03LST1 | 0:adf68d4b873f | 57 | uint16_t pwm_act; |
HMFK03LST1 | 0:adf68d4b873f | 58 | uint16_t temp_act; |
HMFK03LST1 | 0:adf68d4b873f | 59 | uint16_t temp_max; |
HMFK03LST1 | 0:adf68d4b873f | 60 | } struct_mosfet; |
HMFK03LST1 | 0:adf68d4b873f | 61 | |
HMFK03LST1 | 0:adf68d4b873f | 62 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 63 | { |
HMFK03LST1 | 0:adf68d4b873f | 64 | uint16_t air_current; |
HMFK03LST1 | 0:adf68d4b873f | 65 | uint16_t air_needed; |
HMFK03LST1 | 0:adf68d4b873f | 66 | uint16_t water_created; //name |
HMFK03LST1 | 0:adf68d4b873f | 67 | uint16_t back_lower; |
HMFK03LST1 | 0:adf68d4b873f | 68 | uint16_t delta_t; |
HMFK03LST1 | 0:adf68d4b873f | 69 | uint16_t lambda; |
HMFK03LST1 | 0:adf68d4b873f | 70 | uint16_t lambda_max; |
HMFK03LST1 | 0:adf68d4b873f | 71 | uint16_t lambda_min; |
HMFK03LST1 | 0:adf68d4b873f | 72 | short lambda_delta; |
HMFK03LST1 | 0:adf68d4b873f | 73 | short lambda_delta_sum; |
HMFK03LST1 | 0:adf68d4b873f | 74 | bool pump_on; |
HMFK03LST1 | 0:adf68d4b873f | 75 | bool pump_override; |
HMFK03LST1 | 0:adf68d4b873f | 76 | uint16_t pump_over_load; //name |
HMFK03LST1 | 0:adf68d4b873f | 77 | uint16_t pump_load; //name |
HMFK03LST1 | 0:adf68d4b873f | 78 | uint16_t pump_load_act; //name |
HMFK03LST1 | 0:adf68d4b873f | 79 | short pump_up; |
HMFK03LST1 | 0:adf68d4b873f | 80 | short pump_up_count; |
HMFK03LST1 | 0:adf68d4b873f | 81 | uint16_t pump_pwm_1; |
HMFK03LST1 | 0:adf68d4b873f | 82 | uint16_t pump_pwm_2; |
HMFK03LST1 | 0:adf68d4b873f | 83 | bool pump_dual; //name |
HMFK03LST1 | 0:adf68d4b873f | 84 | uint16_t pump_dual_on; //added |
HMFK03LST1 | 0:adf68d4b873f | 85 | uint16_t pump_dual_off; //added |
HMFK03LST1 | 0:adf68d4b873f | 86 | uint16_t rh_out_delta |
HMFK03LST1 | 0:adf68d4b873f | 87 | uint16_t rh_pump_load; |
HMFK03LST1 | 0:adf68d4b873f | 88 | uint16_t rh_pump_min; |
HMFK03LST1 | 0:adf68d4b873f | 89 | uint16_t rh_pump_max; |
HMFK03LST1 | 0:adf68d4b873f | 90 | uint16_t rh_out_min; |
HMFK03LST1 | 0:adf68d4b873f | 91 | uint16_t rh_out_max; |
HMFK03LST1 | 0:adf68d4b873f | 92 | uint16_t rh_back_p; |
HMFK03LST1 | 0:adf68d4b873f | 93 | uint16_t rh_in; |
HMFK03LST1 | 0:adf68d4b873f | 94 | uint16_t rh_out; |
HMFK03LST1 | 0:adf68d4b873f | 95 | uint16_t temp_in; |
HMFK03LST1 | 0:adf68d4b873f | 96 | uint16_t temp_out; // added |
HMFK03LST1 | 0:adf68d4b873f | 97 | uint16_t temp_calc; |
HMFK03LST1 | 0:adf68d4b873f | 98 | uint16_t water_extracted; |
HMFK03LST1 | 0:adf68d4b873f | 99 | uint16_t water_in; |
HMFK03LST1 | 0:adf68d4b873f | 100 | uint16_t water_out; |
HMFK03LST1 | 0:adf68d4b873f | 101 | |
HMFK03LST1 | 0:adf68d4b873f | 102 | } struct_o2; |
HMFK03LST1 | 0:adf68d4b873f | 103 | |
HMFK03LST1 | 0:adf68d4b873f | 104 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 105 | { |
HMFK03LST1 | 0:adf68d4b873f | 106 | bool capdown; |
HMFK03LST1 | 0:adf68d4b873f | 107 | bool drive; |
HMFK03LST1 | 0:adf68d4b873f | 108 | bool master; |
HMFK03LST1 | 0:adf68d4b873f | 109 | bool safety; |
HMFK03LST1 | 0:adf68d4b873f | 110 | } struct_switch; |
HMFK03LST1 | 0:adf68d4b873f | 111 | |
HMFK03LST1 | 0:adf68d4b873f | 112 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 113 | { |
HMFK03LST1 | 0:adf68d4b873f | 114 | bool cap_down_load; |
HMFK03LST1 | 0:adf68d4b873f | 115 | bool cap_down_reset; |
HMFK03LST1 | 0:adf68d4b873f | 116 | bool cap_load; |
HMFK03LST1 | 0:adf68d4b873f | 117 | bool cap_voltage_reset; |
HMFK03LST1 | 0:adf68d4b873f | 118 | bool fuelcell; |
HMFK03LST1 | 0:adf68d4b873f | 119 | bool fc_overtemp; |
HMFK03LST1 | 0:adf68d4b873f | 120 | bool fc_overvoltage; |
HMFK03LST1 | 0:adf68d4b873f | 121 | bool load; |
HMFK03LST1 | 0:adf68d4b873f | 122 | bool load_act; |
HMFK03LST1 | 0:adf68d4b873f | 123 | bool load_reset; |
HMFK03LST1 | 0:adf68d4b873f | 124 | bool mosfet; |
HMFK03LST1 | 0:adf68d4b873f | 125 | bool mos_overtemp; |
HMFK03LST1 | 0:adf68d4b873f | 126 | bool run; |
HMFK03LST1 | 0:adf68d4b873f | 127 | bool temp; |
HMFK03LST1 | 0:adf68d4b873f | 128 | bool voltage; |
HMFK03LST1 | 0:adf68d4b873f | 129 | uint16_t count; |
HMFK03LST1 | 0:adf68d4b873f | 130 | uint16_t h2_analog; |
HMFK03LST1 | 0:adf68d4b873f | 131 | uint16_t safety_V; |
HMFK03LST1 | 0:adf68d4b873f | 132 | uint16_t current_out; |
HMFK03LST1 | 0:adf68d4b873f | 133 | } struct_system; |
HMFK03LST1 | 0:adf68d4b873f | 134 | |
HMFK03LST1 | 0:adf68d4b873f | 135 | typedef struct |
HMFK03LST1 | 0:adf68d4b873f | 136 | { |
HMFK03LST1 | 0:adf68d4b873f | 137 | bool o2_in; |
HMFK03LST1 | 0:adf68d4b873f | 138 | bool o2_out; |
HMFK03LST1 | 0:adf68d4b873f | 139 | bool mosfet_temp; |
HMFK03LST1 | 0:adf68d4b873f | 140 | bool fc_voltage; |
HMFK03LST1 | 0:adf68d4b873f | 141 | bool cap_voltage; |
HMFK03LST1 | 0:adf68d4b873f | 142 | bool mosfet_cur; |
HMFK03LST1 | 0:adf68d4b873f | 143 | bool h2o_temp_out; |
HMFK03LST1 | 0:adf68d4b873f | 144 | bool t_1; |
HMFK03LST1 | 0:adf68d4b873f | 145 | bool t_2; |
HMFK03LST1 | 0:adf68d4b873f | 146 | bool t_3; |
HMFK03LST1 | 0:adf68d4b873f | 147 | bool t_4; |
HMFK03LST1 | 0:adf68d4b873f | 148 | bool t_5; |
HMFK03LST1 | 0:adf68d4b873f | 149 | bool t_6; |
HMFK03LST1 | 0:adf68d4b873f | 150 | bool t_7; |
HMFK03LST1 | 0:adf68d4b873f | 151 | bool t_8; |
HMFK03LST1 | 0:adf68d4b873f | 152 | bool o_1; |
HMFK03LST1 | 0:adf68d4b873f | 153 | bool o_2; |
HMFK03LST1 | 0:adf68d4b873f | 154 | bool o_3; |
HMFK03LST1 | 0:adf68d4b873f | 155 | bool o_4; |
HMFK03LST1 | 0:adf68d4b873f | 156 | bool o_5; |
HMFK03LST1 | 0:adf68d4b873f | 157 | bool o_6; |
HMFK03LST1 | 0:adf68d4b873f | 158 | bool o_7; |
HMFK03LST1 | 0:adf68d4b873f | 159 | }struct_error; |
HMFK03LST1 | 0:adf68d4b873f | 160 | |
HMFK03LST1 | 0:adf68d4b873f | 161 | /* |
HMFK03LST1 | 0:adf68d4b873f | 162 | struct_cap cap; |
HMFK03LST1 | 0:adf68d4b873f | 163 | struct_fuelcell fuelcell; |
HMFK03LST1 | 0:adf68d4b873f | 164 | struct_h2o h2o; |
HMFK03LST1 | 0:adf68d4b873f | 165 | struct_mosfet mosfet; |
HMFK03LST1 | 0:adf68d4b873f | 166 | struct_o2 o2; |
HMFK03LST1 | 0:adf68d4b873f | 167 | struct_switch switches; |
HMFK03LST1 | 0:adf68d4b873f | 168 | struct_system sys; |
HMFK03LST1 | 0:adf68d4b873f | 169 | struct_error error; |
HMFK03LST1 | 0:adf68d4b873f | 170 | */ |