![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Kalibriersoftware Stromwerte
Pruefprogramm_Motorteststand.cpp@1:ea5f520dcdc1, 2015-11-28 (annotated)
- Committer:
- Racer01014
- Date:
- Sat Nov 28 13:50:31 2015 +0000
- Revision:
- 1:ea5f520dcdc1
- Parent:
- 0:5e35c180ed4a
-
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Racer01014 | 0:5e35c180ed4a | 1 | #include "mbed.h" |
Racer01014 | 0:5e35c180ed4a | 2 | #include "Matrix.h" |
Racer01014 | 0:5e35c180ed4a | 3 | #include "USBSerial.h" |
Racer01014 | 1:ea5f520dcdc1 | 4 | #include "Ticker.h" |
Racer01014 | 1:ea5f520dcdc1 | 5 | |
Racer01014 | 1:ea5f520dcdc1 | 6 | //************************************* DEFINES ***************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 7 | |
Racer01014 | 1:ea5f520dcdc1 | 8 | #define PI 3.1415926 |
Racer01014 | 1:ea5f520dcdc1 | 9 | #define Gravity 9.81 |
Racer01014 | 1:ea5f520dcdc1 | 10 | |
Racer01014 | 1:ea5f520dcdc1 | 11 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 12 | //Current_Factors ------- Calibrated in A (Ampere) |
Racer01014 | 1:ea5f520dcdc1 | 13 | |
Racer01014 | 1:ea5f520dcdc1 | 14 | #define Mot_curr_fac 0.00039021 // Factor for calculation |
Racer01014 | 1:ea5f520dcdc1 | 15 | #define Mot_curr_off 10034.87 // Offset |
Racer01014 | 1:ea5f520dcdc1 | 16 | |
Racer01014 | 1:ea5f520dcdc1 | 17 | #define Bra_curr_fac 0.00028048 |
Racer01014 | 1:ea5f520dcdc1 | 18 | #define Bra_curr_off 49481.61 // Offset |
Racer01014 | 1:ea5f520dcdc1 | 19 | |
Racer01014 | 1:ea5f520dcdc1 | 20 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 21 | //Voltage_Factors ------- Calibrated in V (Volt) |
Racer01014 | 1:ea5f520dcdc1 | 22 | |
Racer01014 | 1:ea5f520dcdc1 | 23 | #define Mot_volt_fac 0.00050860 // Factor for calculation |
Racer01014 | 1:ea5f520dcdc1 | 24 | #define Mot_volt_off 25.80 // Offset |
Racer01014 | 1:ea5f520dcdc1 | 25 | |
Racer01014 | 1:ea5f520dcdc1 | 26 | #define Bra_volt_fac 0.00051015 // Factor for calculation |
Racer01014 | 1:ea5f520dcdc1 | 27 | #define Bra_volt_off 33.63 // Offset |
Racer01014 | 1:ea5f520dcdc1 | 28 | |
Racer01014 | 1:ea5f520dcdc1 | 29 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 30 | //DMS_Factors ------- Calibrated in g (Gramm) |
Racer01014 | 1:ea5f520dcdc1 | 31 | |
Racer01014 | 1:ea5f520dcdc1 | 32 | #define DMS_fac 0.019467 // Factor for calculation, gives back gramms |
Racer01014 | 1:ea5f520dcdc1 | 33 | #define DMS_off 1629.33 // Offset |
Racer01014 | 1:ea5f520dcdc1 | 34 | |
Racer01014 | 1:ea5f520dcdc1 | 35 | //*******LEVER******** |
Racer01014 | 1:ea5f520dcdc1 | 36 | #define Lever 0.05 // Length of lever |
Racer01014 | 0:5e35c180ed4a | 37 | |
Racer01014 | 0:5e35c180ed4a | 38 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 39 | //Outputs |
Racer01014 | 0:5e35c180ed4a | 40 | |
Racer01014 | 0:5e35c180ed4a | 41 | DigitalOut Multiplex_select_A (p26); |
Racer01014 | 0:5e35c180ed4a | 42 | DigitalOut Multiplex_select_B (p25); |
Racer01014 | 1:ea5f520dcdc1 | 43 | DigitalOut File(LED1); |
Racer01014 | 0:5e35c180ed4a | 44 | |
Racer01014 | 0:5e35c180ed4a | 45 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 46 | //Inputs |
Racer01014 | 0:5e35c180ed4a | 47 | |
Racer01014 | 0:5e35c180ed4a | 48 | AnalogIn Messkanal_X (p15); |
Racer01014 | 0:5e35c180ed4a | 49 | AnalogIn Messkanal_Y (p16); |
Racer01014 | 1:ea5f520dcdc1 | 50 | AnalogIn Messkanal_DMS (p17); |
Racer01014 | 1:ea5f520dcdc1 | 51 | |
Racer01014 | 1:ea5f520dcdc1 | 52 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 53 | //Interrupts |
Racer01014 | 0:5e35c180ed4a | 54 | |
Racer01014 | 1:ea5f520dcdc1 | 55 | InterruptIn Lichtschranke(p29); |
Racer01014 | 1:ea5f520dcdc1 | 56 | |
Racer01014 | 1:ea5f520dcdc1 | 57 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 58 | //Ticker |
Racer01014 | 1:ea5f520dcdc1 | 59 | |
Racer01014 | 1:ea5f520dcdc1 | 60 | Ticker Puls; |
Racer01014 | 0:5e35c180ed4a | 61 | |
Racer01014 | 0:5e35c180ed4a | 62 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 63 | //PWM |
Racer01014 | 0:5e35c180ed4a | 64 | |
Racer01014 | 0:5e35c180ed4a | 65 | PwmOut Motor(p23); |
Racer01014 | 0:5e35c180ed4a | 66 | PwmOut Bremse(p21); |
Racer01014 | 0:5e35c180ed4a | 67 | |
Racer01014 | 0:5e35c180ed4a | 68 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 69 | //Communication |
Racer01014 | 0:5e35c180ed4a | 70 | |
Racer01014 | 0:5e35c180ed4a | 71 | Serial pc(USBTX, USBRX); |
Racer01014 | 0:5e35c180ed4a | 72 | |
Racer01014 | 1:ea5f520dcdc1 | 73 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 74 | //File System |
Racer01014 | 1:ea5f520dcdc1 | 75 | |
Racer01014 | 1:ea5f520dcdc1 | 76 | LocalFileSystem local("local"); |
Racer01014 | 1:ea5f520dcdc1 | 77 | |
Racer01014 | 1:ea5f520dcdc1 | 78 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 79 | //Variablen |
Racer01014 | 0:5e35c180ed4a | 80 | |
Racer01014 | 0:5e35c180ed4a | 81 | |
Racer01014 | 1:ea5f520dcdc1 | 82 | volatile float rps_old, rps, time_passed, Motorspannung, Bremsenspannung , Motorstrom, An_In_0, Bremsenstrom, Temperatur_0, Temperatur_1, Temperatur_2, DMS_Out; |
Racer01014 | 1:ea5f520dcdc1 | 83 | volatile float P_Mech[2000], P_Elec[2000], PE, PM, eta; |
Racer01014 | 1:ea5f520dcdc1 | 84 | float counter = 0; |
Racer01014 | 0:5e35c180ed4a | 85 | |
Racer01014 | 0:5e35c180ed4a | 86 | |
Racer01014 | 0:5e35c180ed4a | 87 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 88 | //read sensors via multiplexer |
Racer01014 | 0:5e35c180ed4a | 89 | |
Racer01014 | 0:5e35c180ed4a | 90 | void read_sensors() |
Racer01014 | 0:5e35c180ed4a | 91 | { |
Racer01014 | 0:5e35c180ed4a | 92 | |
Racer01014 | 0:5e35c180ed4a | 93 | Multiplex_select_A = 0; |
Racer01014 | 0:5e35c180ed4a | 94 | Multiplex_select_B = 0; |
Racer01014 | 1:ea5f520dcdc1 | 95 | wait_us(1); |
Racer01014 | 0:5e35c180ed4a | 96 | An_In_0 = Messkanal_X.read_u16(); |
Racer01014 | 1:ea5f520dcdc1 | 97 | Motorspannung = (Messkanal_Y.read_u16()-Mot_volt_off) * Mot_volt_fac; |
Racer01014 | 1:ea5f520dcdc1 | 98 | |
Racer01014 | 0:5e35c180ed4a | 99 | Multiplex_select_A = 1; |
Racer01014 | 1:ea5f520dcdc1 | 100 | wait_us(1); |
Racer01014 | 0:5e35c180ed4a | 101 | Temperatur_0 = Messkanal_X.read_u16(); |
Racer01014 | 1:ea5f520dcdc1 | 102 | Motorstrom = (Messkanal_Y.read_u16() - Mot_curr_off) * Mot_curr_fac; |
Racer01014 | 1:ea5f520dcdc1 | 103 | |
Racer01014 | 0:5e35c180ed4a | 104 | Multiplex_select_A = 0; |
Racer01014 | 0:5e35c180ed4a | 105 | Multiplex_select_B = 1; |
Racer01014 | 1:ea5f520dcdc1 | 106 | wait_us(1); |
Racer01014 | 0:5e35c180ed4a | 107 | Temperatur_1 = Messkanal_X.read_u16(); |
Racer01014 | 1:ea5f520dcdc1 | 108 | Bremsenspannung = (Messkanal_Y.read_u16() - Bra_volt_off) * Bra_curr_fac; |
Racer01014 | 1:ea5f520dcdc1 | 109 | |
Racer01014 | 0:5e35c180ed4a | 110 | Multiplex_select_A = 1; |
Racer01014 | 1:ea5f520dcdc1 | 111 | wait_us(1); |
Racer01014 | 1:ea5f520dcdc1 | 112 | Temperatur_2 = Messkanal_X.read_u16(); |
Racer01014 | 1:ea5f520dcdc1 | 113 | Bremsenstrom = (Messkanal_Y.read_u16() - Bra_curr_off) * Bra_curr_fac; |
Racer01014 | 1:ea5f520dcdc1 | 114 | |
Racer01014 | 1:ea5f520dcdc1 | 115 | DMS_Out = (Messkanal_DMS.read_u16() - DMS_off) * DMS_fac; |
Racer01014 | 1:ea5f520dcdc1 | 116 | |
Racer01014 | 0:5e35c180ed4a | 117 | } |
Racer01014 | 0:5e35c180ed4a | 118 | |
Racer01014 | 0:5e35c180ed4a | 119 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 120 | //Safety Circuit |
Racer01014 | 0:5e35c180ed4a | 121 | |
Racer01014 | 0:5e35c180ed4a | 122 | int safety() |
Racer01014 | 0:5e35c180ed4a | 123 | { |
Racer01014 | 0:5e35c180ed4a | 124 | int Temp_max; |
Racer01014 | 0:5e35c180ed4a | 125 | read_sensors(); |
Racer01014 | 1:ea5f520dcdc1 | 126 | |
Racer01014 | 0:5e35c180ed4a | 127 | if( (Temperatur_0 < Temp_max) && (Temperatur_1 < Temp_max) && (Temperatur_2 < Temp_max)) |
Racer01014 | 0:5e35c180ed4a | 128 | return(0); |
Racer01014 | 0:5e35c180ed4a | 129 | else |
Racer01014 | 0:5e35c180ed4a | 130 | return(1); |
Racer01014 | 0:5e35c180ed4a | 131 | } |
Racer01014 | 1:ea5f520dcdc1 | 132 | |
Racer01014 | 0:5e35c180ed4a | 133 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 134 | //Checkup @ Start |
Racer01014 | 0:5e35c180ed4a | 135 | |
Racer01014 | 0:5e35c180ed4a | 136 | int checkup() |
Racer01014 | 0:5e35c180ed4a | 137 | { |
Racer01014 | 1:ea5f520dcdc1 | 138 | return(1); |
Racer01014 | 1:ea5f520dcdc1 | 139 | } |
Racer01014 | 0:5e35c180ed4a | 140 | |
Racer01014 | 1:ea5f520dcdc1 | 141 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 142 | //Increase Counter to get rpm |
Racer01014 | 1:ea5f520dcdc1 | 143 | |
Racer01014 | 1:ea5f520dcdc1 | 144 | void rpm_counter() |
Racer01014 | 1:ea5f520dcdc1 | 145 | { |
Racer01014 | 1:ea5f520dcdc1 | 146 | counter++; |
Racer01014 | 1:ea5f520dcdc1 | 147 | } |
Racer01014 | 0:5e35c180ed4a | 148 | |
Racer01014 | 0:5e35c180ed4a | 149 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 150 | //send values |
Racer01014 | 0:5e35c180ed4a | 151 | |
Racer01014 | 0:5e35c180ed4a | 152 | void send_data(void) |
Racer01014 | 0:5e35c180ed4a | 153 | { |
Racer01014 | 1:ea5f520dcdc1 | 154 | /* |
Racer01014 | 1:ea5f520dcdc1 | 155 | pc.printf(" [Temperatur1, Motorspannung]; 0 %5.2f deg; 1 %5.2f V;", Temperatur_0, Motorspannung); |
Racer01014 | 1:ea5f520dcdc1 | 156 | pc.printf(" [Temperatur2, Motorstrom]; 0 %5.2f deg; 1 %5.2f A;", Temperatur_1, Motorstrom); |
Racer01014 | 1:ea5f520dcdc1 | 157 | pc.printf(" [Temperatur3, Bremsenspannung]; 0 %5.2f deg; 1 %5.2f V;", Temperatur_2, Bremsenspannung); |
Racer01014 | 1:ea5f520dcdc1 | 158 | pc.printf(" [Aux, Bremsenstrom]; 0 %5.2f ; 1 %5.2f ;", An_In_0, Bremsenstrom); |
Racer01014 | 1:ea5f520dcdc1 | 159 | pc.printf(" [DMS-Kanal]; 0 %5.2f ;", DMS_Out); |
Racer01014 | 1:ea5f520dcdc1 | 160 | pc.printf(" [Temp_1, Temp_2]; %5.2f deg; %5.2f deg;", Temperatur_0, Temperatur_1); |
Racer01014 | 1:ea5f520dcdc1 | 161 | pc.printf(" [Temp_3, Analog_0; %5.2f deg; %5.2f deg;", Temperatur_2, An_In_0); |
Racer01014 | 1:ea5f520dcdc1 | 162 | */ |
Racer01014 | 1:ea5f520dcdc1 | 163 | pc.printf(" [Motorstrom, Motorspannung]; %5.2f A ; %5.2f A ;", Motorstrom, Motorspannung); |
Racer01014 | 1:ea5f520dcdc1 | 164 | pc.printf(" [Bremsenstrom, Bremsenspannung]; %5.2f V ; %5.2f V ;", Bremsenstrom, Bremsenspannung); |
Racer01014 | 1:ea5f520dcdc1 | 165 | pc.printf(" [Kraft]; %5.2f ;", DMS_Out); |
Racer01014 | 1:ea5f520dcdc1 | 166 | pc.printf(" [rps]; %5.2f ;", rps); |
Racer01014 | 1:ea5f520dcdc1 | 167 | pc.printf(" [P_Mech, P_Elec]; %5.2f W ; %5.2f W ;", PM, PE ); |
Racer01014 | 1:ea5f520dcdc1 | 168 | pc.printf(" [rpm]; %5.2f ;", rps*60); |
Racer01014 | 1:ea5f520dcdc1 | 169 | pc.printf(" [eta]; %5.2f ;", eta); |
Racer01014 | 0:5e35c180ed4a | 170 | pc.printf(" \r\n\r\n"); |
Racer01014 | 1:ea5f520dcdc1 | 171 | // wait_ms(5); |
Racer01014 | 0:5e35c180ed4a | 172 | } |
Racer01014 | 1:ea5f520dcdc1 | 173 | |
Racer01014 | 1:ea5f520dcdc1 | 174 | //*************************************************************************************************** |
Racer01014 | 1:ea5f520dcdc1 | 175 | //calc rpm |
Racer01014 | 1:ea5f520dcdc1 | 176 | |
Racer01014 | 1:ea5f520dcdc1 | 177 | void calc_rps() |
Racer01014 | 1:ea5f520dcdc1 | 178 | { |
Racer01014 | 1:ea5f520dcdc1 | 179 | rps = counter/5; |
Racer01014 | 1:ea5f520dcdc1 | 180 | counter=0; |
Racer01014 | 1:ea5f520dcdc1 | 181 | rps_old = rps; |
Racer01014 | 1:ea5f520dcdc1 | 182 | } |
Racer01014 | 1:ea5f520dcdc1 | 183 | |
Racer01014 | 0:5e35c180ed4a | 184 | |
Racer01014 | 0:5e35c180ed4a | 185 | //*************************************************************************************************** |
Racer01014 | 0:5e35c180ed4a | 186 | // MAIN: |
Racer01014 | 0:5e35c180ed4a | 187 | |
Racer01014 | 0:5e35c180ed4a | 188 | int main(void) |
Racer01014 | 0:5e35c180ed4a | 189 | { |
Racer01014 | 0:5e35c180ed4a | 190 | //********************* VARIABLEN ***************************** |
Racer01014 | 1:ea5f520dcdc1 | 191 | |
Racer01014 | 1:ea5f520dcdc1 | 192 | |
Racer01014 | 1:ea5f520dcdc1 | 193 | bool lock = 0; |
Racer01014 | 1:ea5f520dcdc1 | 194 | // |
Racer01014 | 1:ea5f520dcdc1 | 195 | time_passed=0; |
Racer01014 | 1:ea5f520dcdc1 | 196 | Motor.period_us(200); |
Racer01014 | 0:5e35c180ed4a | 197 | Bremse.period_us(200); |
Racer01014 | 0:5e35c180ed4a | 198 | |
Racer01014 | 1:ea5f520dcdc1 | 199 | Motor.pulsewidth_us(100); |
Racer01014 | 1:ea5f520dcdc1 | 200 | Bremse.pulsewidth_us(193); |
Racer01014 | 0:5e35c180ed4a | 201 | |
Racer01014 | 0:5e35c180ed4a | 202 | // Matrix Values(1,4); |
Racer01014 | 1:ea5f520dcdc1 | 203 | File=0; |
Racer01014 | 1:ea5f520dcdc1 | 204 | Lichtschranke.fall(&rpm_counter); // Call function rpm_counter |
Racer01014 | 1:ea5f520dcdc1 | 205 | Puls.attach(&calc_rps, 1.0); |
Racer01014 | 1:ea5f520dcdc1 | 206 | wait(3); |
Racer01014 | 1:ea5f520dcdc1 | 207 | //FILE *fp = fopen("/local/Values.txt", "w"); |
Racer01014 | 1:ea5f520dcdc1 | 208 | // fprintf(fp, "Motorstrom [A], Motorspannung [V], Bremsenstrom [A], Bremsenspannung [V], Kraft [g], Umdrehungen [1/s] \r\n"); |
Racer01014 | 0:5e35c180ed4a | 209 | |
Racer01014 | 0:5e35c180ed4a | 210 | //************************ MAIN ******************************** |
Racer01014 | 0:5e35c180ed4a | 211 | |
Racer01014 | 1:ea5f520dcdc1 | 212 | |
Racer01014 | 1:ea5f520dcdc1 | 213 | while(1) { |
Racer01014 | 0:5e35c180ed4a | 214 | |
Racer01014 | 0:5e35c180ed4a | 215 | |
Racer01014 | 1:ea5f520dcdc1 | 216 | |
Racer01014 | 1:ea5f520dcdc1 | 217 | for (int i = 0; i<2000; i++) { |
Racer01014 | 1:ea5f520dcdc1 | 218 | read_sensors(); |
Racer01014 | 1:ea5f520dcdc1 | 219 | P_Elec[i] = Motorstrom * Motorspannung; |
Racer01014 | 1:ea5f520dcdc1 | 220 | P_Mech[i] = ((DMS_Out / 1000) * Lever * Gravity * 2 * PI * rps); |
Racer01014 | 1:ea5f520dcdc1 | 221 | } |
Racer01014 | 1:ea5f520dcdc1 | 222 | |
Racer01014 | 1:ea5f520dcdc1 | 223 | for (int i = 0; i<2000; i++) { |
Racer01014 | 1:ea5f520dcdc1 | 224 | PE = P_Elec[i] + PE; |
Racer01014 | 1:ea5f520dcdc1 | 225 | PM = P_Mech[i] + PM; |
Racer01014 | 1:ea5f520dcdc1 | 226 | } |
Racer01014 | 1:ea5f520dcdc1 | 227 | PE = PE / 2000; |
Racer01014 | 1:ea5f520dcdc1 | 228 | PM = PM / 2000; |
Racer01014 | 1:ea5f520dcdc1 | 229 | eta = PM / PE; |
Racer01014 | 1:ea5f520dcdc1 | 230 | send_data(); |
Racer01014 | 1:ea5f520dcdc1 | 231 | |
Racer01014 | 1:ea5f520dcdc1 | 232 | /* |
Racer01014 | 1:ea5f520dcdc1 | 233 | wait_ms(500); |
Racer01014 | 1:ea5f520dcdc1 | 234 | |
Racer01014 | 1:ea5f520dcdc1 | 235 | if(((rps - rps_old) < 1) && lock) { |
Racer01014 | 1:ea5f520dcdc1 | 236 | lock = 0; |
Racer01014 | 1:ea5f520dcdc1 | 237 | File = 1; |
Racer01014 | 1:ea5f520dcdc1 | 238 | fprintf(fp, "\r\n"); |
Racer01014 | 1:ea5f520dcdc1 | 239 | |
Racer01014 | 1:ea5f520dcdc1 | 240 | for (int b=0; b<1000; b++) { |
Racer01014 | 1:ea5f520dcdc1 | 241 | read_sensors(); |
Racer01014 | 1:ea5f520dcdc1 | 242 | File = !File; |
Racer01014 | 1:ea5f520dcdc1 | 243 | fprintf(fp, "%5.2f; %5.2f; ", Motorstrom, Motorspannung); |
Racer01014 | 1:ea5f520dcdc1 | 244 | fprintf(fp, "%5.2f; %5.2f; ", Bremsenstrom, Bremsenspannung); |
Racer01014 | 1:ea5f520dcdc1 | 245 | fprintf(fp, "%5.2f; %5.2f; ", DMS_Out, rps); |
Racer01014 | 1:ea5f520dcdc1 | 246 | fprintf(fp, "\r\n"); |
Racer01014 | 1:ea5f520dcdc1 | 247 | File = !File; |
Racer01014 | 1:ea5f520dcdc1 | 248 | } |
Racer01014 | 1:ea5f520dcdc1 | 249 | fclose(fp); |
Racer01014 | 1:ea5f520dcdc1 | 250 | File = 0; |
Racer01014 | 1:ea5f520dcdc1 | 251 | Motor.pulsewidth_us(200); |
Racer01014 | 1:ea5f520dcdc1 | 252 | |
Racer01014 | 1:ea5f520dcdc1 | 253 | } |
Racer01014 | 1:ea5f520dcdc1 | 254 | */ |
Racer01014 | 1:ea5f520dcdc1 | 255 | |
Racer01014 | 1:ea5f520dcdc1 | 256 | |
Racer01014 | 0:5e35c180ed4a | 257 | |
Racer01014 | 0:5e35c180ed4a | 258 | //********************* Messprozedur **************************** |
Racer01014 | 0:5e35c180ed4a | 259 | //********************* |
Racer01014 | 0:5e35c180ed4a | 260 | |
Racer01014 | 1:ea5f520dcdc1 | 261 | } |
Racer01014 | 1:ea5f520dcdc1 | 262 | |
Racer01014 | 0:5e35c180ed4a | 263 | } |