/* * fuel_map.c * * Created on: Oct 18, 2024 * Author: herli */ #include #include "fuel_map.h" struct fuelMapIndexes indexes; float* phi_pointer; void init_FuelMap(float* PHIAD) { //fuelmap = fuelmap_25; //fuelmap2 = fuelmap_74; indexes = fuelMapI; phi_pointer = PHIAD; } /*float LinearInterp_noT(float var, float Indexarray[], int N, int OBIndex, int isRPM){ float Z = 0; for(int i = 0; i < N; i++){ if(var >= Indexarray[i] && var < Indexarray[i+1]){ if(isRPM){ Z = fuelmap.ME_RPM_Beta_array[OBIndex][i] + ((fuelmap.ME_RPM_Beta_array[OBIndex][i+1] - fuelmap.ME_RPM_Beta_array[OBIndex][i]) / (indexes.RPM_Index_array[i+1] - indexes.RPM_Index_array[i])) * (var - indexes.RPM_Index_array[i]); }else{ Z = fuelmap.ME_RPM_Beta_array[i][OBIndex] + ((fuelmap.ME_RPM_Beta_array[i+1][OBIndex] - fuelmap.ME_RPM_Beta_array[i][OBIndex]) / (indexes.ME_Index_array[i+1] - indexes.ME_Index_array[i])) * (var - indexes.ME_Index_array[i]); } break; } } return Z; }*/ /*float LinearInterp(float var, float Indexarray[], int N, int OBIndex, int isRPM){ //para la transpuesta float Z = 0; for(int i = 0; i < N; i++){ if(var >= Indexarray[i] && var < Indexarray[i+1]){ if(isRPM){ Z = fuelmap.ME_RPM_Beta_array[i][OBIndex] + ((fuelmap.ME_RPM_Beta_array[i+1][OBIndex] - fuelmap.ME_RPM_Beta_array[i][OBIndex]) / (indexes.RPM_Index_array[i+1] - indexes.RPM_Index_array[i])) * (var - indexes.RPM_Index_array[i]); }else{ Z = fuelmap.ME_RPM_Beta_array[OBIndex][i] + ((fuelmap.ME_RPM_Beta_array[OBIndex][i+1] - fuelmap.ME_RPM_Beta_array[OBIndex][i]) / (indexes.ME_Index_array[i+1] - indexes.ME_Index_array[i])) * (var - indexes.ME_Index_array[i]); } break; } } return Z; }*/ static inline void SelectTempBracket(const struct fuelMapIndexes* idx, float Temp, int* t_lo, int* t_hi, float* T1, float* T2, float* w) { // clamp Temp into axis if (Temp <= idx->T_Index_array[0]) { *t_lo = *t_hi = 0; } else if (Temp >= idx->T_Index_array[FM_N_T - 1]) { *t_lo = *t_hi = FM_N_T - 1; } else { int i = 0; // find i such that T[i] <= Temp < T[i+1] while (i + 1 < FM_N_T && Temp >= idx->T_Index_array[i + 1]) i++; *t_lo = i; *t_hi = i + 1; } *T1 = idx->T_Index_array[*t_lo]; *T2 = idx->T_Index_array[*t_hi]; float denom = (*T2 - *T1); *w = (denom != 0.0f) ? (Temp - *T1) / denom : 0.0f; // blend weight in [0,1] } float weirdasscorrection; float GetAlpha(float RPM, float ME, float Tein, float Temp){ int RPMBounds = -1; // (-1)-Central Point, 0-Outside Minimum, 1-Outside Maximum int MEBounds = -1; int I_RPM = 0; int I_ME = 0; float Z = 0; if(ME < 0.031){//0.031 *phi_pointer = 0.0; return 0.0; } if(RPM >= indexes.RPM_Index_array[FM_N_RPM-1]){ //MAX RPM RPMBounds = 1; I_RPM = FM_N_RPM-2; //RPM = indexes.RPM_Index_array[FM_N_RPM-1]; } if(ME >= indexes.ME_Index_array[FM_N_ME-1]){ //MAX ME MEBounds = 1; I_ME = FM_N_ME-2; //ME = indexes.ME_Index_array[FM_N_ME-1]; } if(RPM <= indexes.RPM_Index_array[0]){ RPMBounds = 0; I_RPM = 0; //RPM = indexes.RPM_Index_array[0]; } if(ME <= indexes.ME_Index_array[0]){ MEBounds = 0; I_ME = 0; //ME = indexes.ME_Index_array[0]; } if(RPMBounds == -1){ for(int i = 0; i < FM_N_RPM-1; i++){ if(RPM >= indexes.RPM_Index_array[i] && RPM < indexes.RPM_Index_array[i+1]){ I_RPM = i; break; } } } if(MEBounds == -1){ for(int i = 0; i < FM_N_ME-1; i++){ if(ME >= indexes.ME_Index_array[i] && ME < indexes.ME_Index_array[i+1]){ I_ME = i; break; } } } // --- now: pick them from the array based on Temp int t_lo, t_hi; float FM_T_1, FM_T_2, wT; SelectTempBracket(&fuelMapI, Temp, &t_lo, &t_hi, &FM_T_1, &FM_T_2, &wT); const struct AlphaStruct* fuelmap_low = g_FuelMaps[t_lo]; const struct AlphaStruct* fuelmap_high = g_FuelMaps[t_hi]; // ---- your existing bilinear on the LOW temp map ---- float X1 = indexes.RPM_Index_array[I_RPM]; float X2 = indexes.RPM_Index_array[I_RPM+1]; float Y1 = indexes.ME_Index_array[I_ME]; float Y2 = indexes.ME_Index_array[I_ME + 1]; float Z1 = fuelmap_low->ME_RPM_Beta_array[I_RPM ][I_ME ]; float Z2 = fuelmap_low->ME_RPM_Beta_array[I_RPM + 1][I_ME ]; float Z3 = fuelmap_low->ME_RPM_Beta_array[I_RPM ][I_ME + 1]; float Z4 = fuelmap_low->ME_RPM_Beta_array[I_RPM + 1][I_ME + 1]; float Z_low = (1.0f / ((X2 - X1) * (Y2 - Y1))) * ( Z1 * (X2 - RPM) * (Y2 - ME) + Z2 * (RPM - X1) * (Y2 - ME) + Z3 * (X2 - RPM) * (ME - Y1) + Z4 * (RPM - X1) * (ME - Y1) ); // ---- the same bilinear on the HIGH temp map ---- Z1 = fuelmap_high->ME_RPM_Beta_array[I_RPM ][I_ME ]; Z2 = fuelmap_high->ME_RPM_Beta_array[I_RPM + 1][I_ME ]; Z3 = fuelmap_high->ME_RPM_Beta_array[I_RPM ][I_ME + 1]; Z4 = fuelmap_high->ME_RPM_Beta_array[I_RPM + 1][I_ME + 1]; float Z_high = (1.0f / ((X2 - X1) * (Y2 - Y1))) * ( Z1 * (X2 - RPM) * (Y2 - ME) + Z2 * (RPM - X1) * (Y2 - ME) + Z3 * (X2 - RPM) * (ME - Y1) + Z4 * (RPM - X1) * (ME - Y1) ); // ---- final: identical blending idea you had before, but generic ---- Z = (t_lo == t_hi) ? Z_low : (Z_low + wT * (Z_high - Z_low)); /*if(MEBounds != -1 && RPMBounds != -1){ //if Out of Two Bounds --> Get the Corner value I_RPM = RPMBounds * (FM_N_RPM - 1); // 0 Minimum, 1*Max Value I_ME = MEBounds * (FM_N_ME -1); //Z = fuelmap.ME_RPM_Beta_array[I_RPM][I_ME]; //la transpuesta }else if(MEBounds != -1 || RPMBounds != -1){ if(RPMBounds == -1){ //If Out of Bounds in ME Z = LinearInterp(RPM, indexes.RPM_Index_array, FM_N_RPM, MEBounds * (FM_N_ME -1), 1); }else{ Z = LinearInterp(ME, indexes.ME_Index_array, FM_N_ME, RPMBounds * (FM_N_RPM - 1), 0); } }else{ //CENTER VALUES for(int i = 0; i < FM_N_RPM; i++){ if(RPM >= indexes.RPM_Index_array[i] && RPM < indexes.RPM_Index_array[i+1]){ I_RPM = i; break; } } for(int i = 0; i < FM_N_ME; i++){ if(ME >= indexes.ME_Index_array[i] && ME < indexes.ME_Index_array[i+1]){ I_ME = i; break; } } float X1 = indexes.RPM_Index_array[I_RPM]; float X2 = indexes.RPM_Index_array[I_RPM+1]; float Y1 = indexes.ME_Index_array[I_ME]; float Y2 = indexes.ME_Index_array[I_ME+1]; float Z1 = fuelmap.ME_RPM_Beta_array[I_RPM][I_ME]; float Z2 = fuelmap.ME_RPM_Beta_array[I_RPM+1][I_ME]; float Z3 = fuelmap.ME_RPM_Beta_array[I_RPM][I_ME+1]; float Z4 = fuelmap.ME_RPM_Beta_array[I_RPM+1][I_ME+1]; Z = (1.0 / ((X2 - X1) * (Y2 - Y1))) * ( Z1 * (X2 - RPM) * (Y2 - ME) + Z2 * (RPM - X1) * (Y2 - ME) + Z3 * (X2 - RPM) * (ME - Y1) + Z4 * (RPM - X1) * (ME - Y1) ); Z1 = fuelmap2.ME_RPM_Beta_array[I_RPM][I_ME]; Z2 = fuelmap2.ME_RPM_Beta_array[I_RPM+1][I_ME]; Z3 = fuelmap2.ME_RPM_Beta_array[I_RPM][I_ME+1]; Z4 = fuelmap2.ME_RPM_Beta_array[I_RPM+1][I_ME+1]; Z = Z + ((Temp - FM_T_1) / (FM_T_2 - FM_T_1)) * ((1.0 / ((X2 - X1) * (Y2 - Y1))) * ( Z1 * (X2 - RPM) * (Y2 - ME) + Z2 * (RPM - X1) * (Y2 - ME) + Z3 * (X2 - RPM) * (ME - Y1) + Z4 * (RPM - X1) * (ME - Y1)) - Z); }*/ //Z -= RPM / 256 + 1.171875; //Calibrated PHIAD //Z += correctedTein*RPM*USTODEG; //PHIAD + Tein correction weirdasscorrection = RPM > 300 && RPM < 1838 ? 0.13*cos(0.0041*RPM+3.1415*1.1) : 0; Z -= weirdasscorrection; Z = Z < 0 ? 0 : Z; *phi_pointer = Z; return Z + (Tein - TEIN_NOMINAL)*RPM*USTODEG; //en el 504012 el ref era en 1500, en la vp30 004005 es 1000; } float FM_GET_PHIAD(float RPM, float ME, float Temp){ int RPMBounds = -1; // (-1)-Central Point, 0-Outside Minimum, 1-Outside Maximum int MEBounds = -1; int I_RPM = 0; int I_ME = 0; float Z = 0; if(ME < 0.031){//0.031 *phi_pointer = 0.0; return 0.0; } if(RPM >= indexes.RPM_Index_array[FM_N_RPM-1]){ //MAX RPM RPMBounds = 1; I_RPM = FM_N_RPM-2; //RPM = indexes.RPM_Index_array[FM_N_RPM-1]; } if(ME >= indexes.ME_Index_array[FM_N_ME-1]){ //MAX ME MEBounds = 1; I_ME = FM_N_ME-2; //ME = indexes.ME_Index_array[FM_N_ME-1]; } if(RPM <= indexes.RPM_Index_array[0]){ RPMBounds = 0; I_RPM = 0; //RPM = indexes.RPM_Index_array[0]; } if(ME <= indexes.ME_Index_array[0]){ MEBounds = 0; I_ME = 0; //ME = indexes.ME_Index_array[0]; } if(RPMBounds == -1){ for(int i = 0; i < FM_N_RPM-1; i++){ if(RPM >= indexes.RPM_Index_array[i] && RPM < indexes.RPM_Index_array[i+1]){ I_RPM = i; break; } } } if(MEBounds == -1){ for(int i = 0; i < FM_N_ME-1; i++){ if(ME >= indexes.ME_Index_array[i] && ME < indexes.ME_Index_array[i+1]){ I_ME = i; break; } } } // --- now: pick them from the array based on Temp int t_lo, t_hi; float FM_T_1, FM_T_2, wT; SelectTempBracket(&fuelMapI, Temp, &t_lo, &t_hi, &FM_T_1, &FM_T_2, &wT); const struct AlphaStruct* fuelmap_low = g_FuelMaps[t_lo]; const struct AlphaStruct* fuelmap_high = g_FuelMaps[t_hi]; // ---- your existing bilinear on the LOW temp map ---- float X1 = indexes.RPM_Index_array[I_RPM]; float X2 = indexes.RPM_Index_array[I_RPM+1]; float Y1 = indexes.ME_Index_array[I_ME]; float Y2 = indexes.ME_Index_array[I_ME + 1]; float Z1 = fuelmap_low->ME_RPM_Beta_array[I_RPM ][I_ME ]; float Z2 = fuelmap_low->ME_RPM_Beta_array[I_RPM + 1][I_ME ]; float Z3 = fuelmap_low->ME_RPM_Beta_array[I_RPM ][I_ME + 1]; float Z4 = fuelmap_low->ME_RPM_Beta_array[I_RPM + 1][I_ME + 1]; float Z_low = (1.0f / ((X2 - X1) * (Y2 - Y1))) * ( Z1 * (X2 - RPM) * (Y2 - ME) + Z2 * (RPM - X1) * (Y2 - ME) + Z3 * (X2 - RPM) * (ME - Y1) + Z4 * (RPM - X1) * (ME - Y1) ); // ---- the same bilinear on the HIGH temp map ---- Z1 = fuelmap_high->ME_RPM_Beta_array[I_RPM ][I_ME ]; Z2 = fuelmap_high->ME_RPM_Beta_array[I_RPM + 1][I_ME ]; Z3 = fuelmap_high->ME_RPM_Beta_array[I_RPM ][I_ME + 1]; Z4 = fuelmap_high->ME_RPM_Beta_array[I_RPM + 1][I_ME + 1]; float Z_high = (1.0f / ((X2 - X1) * (Y2 - Y1))) * ( Z1 * (X2 - RPM) * (Y2 - ME) + Z2 * (RPM - X1) * (Y2 - ME) + Z3 * (X2 - RPM) * (ME - Y1) + Z4 * (RPM - X1) * (ME - Y1) ); // ---- final: identical blending idea you had before, but generic ---- Z = (t_lo == t_hi) ? Z_low : (Z_low + wT * (Z_high - Z_low)); weirdasscorrection = RPM > 300 && RPM < 1838 ? 0.13*cos(0.0041*RPM+3.1415*1.1) : 0; Z -= weirdasscorrection; Z = Z < -12 ? 0 : Z; *phi_pointer = Z; return Z; } float GetBeta(float inRPM, float Tein){ //float extraTein = Tein > 800 ? Tein - 800 : Tein ; return PHI1 - Tein*inRPM*USTODEG; } #define BOO_MIN_RPM_1 600 #define BOO_MAX_RPM_1 2000 #define BOO_MAX_BOOST_1 0.6 #define BOO_MIN_ME_1 16 #define BOO_MAX_ME_1 30 float bp_1 = -4*BOO_MAX_BOOST_1/((BOO_MAX_RPM_1-BOO_MIN_RPM_1)*(BOO_MAX_RPM_1-BOO_MIN_RPM_1)); #define BOO_MIN_RPM_2 500 #define BOO_MAX_RPM_2 2000 #define BOO_MAX_BOOST_2 0.8 #define BOO_MIN_ME_2 10 #define BOO_MAX_ME_2 18 float bp_2 = -4*BOO_MAX_BOOST_2/((BOO_MAX_RPM_2-BOO_MIN_RPM_2)*(BOO_MAX_RPM_2-BOO_MIN_RPM_2)); float BoostMultiplier(uint8_t mode, float RPM, float ME){ // https://www.desmos.com/calculator/euezpayzxb float m = 1.0; switch (mode) { case 0: m = 1.0; break; case 1: //boost float a1 = RPM-BOO_MIN_RPM_1; float b1 = RPM-BOO_MAX_RPM_1; if(a1 > 0 && b1 < 0 && ME > BOO_MIN_ME_1){ float d = (ME-BOO_MIN_ME_1)/(BOO_MAX_ME_1-BOO_MIN_ME_1); d = d>1 ? 1 : d; m = 1 + d*bp_1*a1*b1; }else{ m = 1; } break; case 2: //boost 2 float a2 = RPM-BOO_MIN_RPM_2; float b2 = RPM-BOO_MAX_RPM_2; if(a2 > 0 && b2 < 0 && ME > BOO_MIN_ME_2){ float d = (ME-BOO_MIN_ME_2)/(BOO_MAX_ME_2-BOO_MIN_ME_2); d = d>1 ? 1 : d; m = 1 + d*bp_2*a2*b2; }else{ m = 1; } break; case 3: //itv if(RPM > 600) m = 1 - 0.25*(RPM-600)/(2600-600); else{ m = 1; } break; default: m = 1.0; break; } return m; } #if defined(_004006) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 6.094, 8.250, 8.344, 8.355, 8.414, 8.859, 10.383, 10.781, 11.004, 11.227, 12.598, 13.699}, //RPM = 99 { 5.555, 7.746, 7.828, 7.934, 8.250, 8.930, 10.887, 11.168, 11.508, 11.859, 13.207, 14.273}, //RPM = 199 { 4.441, 6.703, 6.879, 7.125, 7.828, 9.000, 11.063, 11.648, 12.293, 12.938, 14.531, 15.820}, //RPM = 424 { 3.984, 6.281, 6.504, 6.773, 7.535, 8.883, 11.297, 11.930, 12.539, 13.148, 14.859, 16.230}, //RPM = 499 { 2.824, 5.449, 5.883, 6.129, 7.008, 8.051, 11.801, 12.750, 13.688, 14.602, 17.402, 19.652}, //RPM = 896 { 2.543, 5.320, 5.695, 5.977, 6.750, 7.945, 11.930, 12.984, 13.980, 14.988, 18.000, 20.426}, //RPM = 999 { 0.609, 3.609, 4.395, 4.770, 5.871, 6.832, 11.859, 13.148, 14.473, 15.773, 19.711, 22.852}, //RPM = 1399 { 0.340, 3.469, 4.301, 4.652, 5.660, 6.738, 11.977, 13.301, 14.707, 16.125, 20.379, 23.777}, //RPM = 1499 { -1.148, 2.414, 3.410, 3.703, 4.488, 5.836, 11.918, 13.324, 15.492, 17.566, 23.496, 24.598}, //RPM = 2002 { -1.898, 1.840, 2.730, 3.047, 3.961, 5.227, 11.543, 12.938, 15.504, 18.047, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 6.211, 8.391, 8.484, 8.496, 8.555, 9.012, 10.535, 10.957, 11.180, 11.426, 12.797, 13.898}, //RPM = 99 { 5.648, 7.875, 7.957, 8.063, 8.379, 9.105, 11.168, 11.496, 11.883, 12.258, 13.605, 14.684}, //RPM = 199 { 4.559, 6.867, 7.031, 7.254, 7.992, 9.164, 11.332, 11.906, 12.563, 13.207, 14.789, 16.090}, //RPM = 425 { 4.102, 6.410, 6.621, 6.902, 7.711, 9.047, 11.496, 12.164, 12.820, 13.465, 15.164, 16.512}, //RPM = 499 { 2.871, 5.566, 5.930, 6.234, 7.090, 8.191, 12.094, 13.113, 14.051, 14.988, 17.777, 19.992}, //RPM = 894 { 2.590, 5.391, 5.777, 6.059, 6.867, 8.004, 12.246, 13.348, 14.379, 15.398, 18.422, 20.848}, //RPM = 999 { 0.785, 3.832, 4.523, 4.887, 5.930, 6.996, 12.258, 13.594, 14.918, 16.230, 20.168, 23.320}, //RPM = 1399 { 0.480, 3.645, 4.406, 4.758, 5.730, 6.879, 12.363, 13.758, 15.176, 16.605, 20.848, 24.246}, //RPM = 1499 { -1.148, 2.484, 3.434, 3.750, 4.605, 5.965, 12.492, 14.063, 16.113, 18.188, 24.059, 24.598}, //RPM = 2000 { -1.910, 1.828, 2.730, 3.082, 4.078, 5.402, 12.270, 13.898, 16.313, 18.738, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 6.316, 8.531, 8.625, 8.637, 8.695, 9.152, 10.688, 11.109, 11.367, 11.625, 12.996, 14.098}, //RPM = 99 { 5.742, 7.992, 8.086, 8.191, 8.508, 9.270, 11.449, 11.824, 12.246, 12.668, 14.004, 15.082}, //RPM = 199 { 4.652, 7.008, 7.184, 7.430, 8.145, 9.305, 11.590, 12.164, 12.820, 13.430, 15.059, 16.348}, //RPM = 424 { 4.195, 6.539, 6.773, 7.055, 7.852, 9.188, 11.730, 12.410, 13.090, 13.723, 15.434, 16.781}, //RPM = 498 { 2.906, 5.602, 6.012, 6.316, 7.160, 8.285, 12.398, 13.395, 14.402, 15.328, 18.188, 20.379}, //RPM = 894 { 2.648, 5.484, 5.848, 6.141, 6.926, 8.063, 12.574, 13.711, 14.766, 15.820, 18.844, 21.270}, //RPM = 999 { 0.949, 4.066, 4.664, 5.004, 5.988, 7.148, 12.656, 14.039, 15.352, 16.699, 20.637, 23.777}, //RPM = 1399 { 0.609, 3.820, 4.523, 4.852, 5.801, 7.008, 12.762, 14.215, 15.633, 17.074, 21.316, 24.598}, //RPM = 1499 { -1.160, 2.520, 3.445, 3.797, 4.746, 6.082, 12.984, 14.777, 16.793, 18.785, 24.598, 24.598}, //RPM = 1999 { -1.898, 1.840, 2.719, 3.117, 4.195, 5.613, 12.973, 14.848, 17.133, 19.430, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 6.445, 8.719, 8.813, 8.824, 8.883, 9.328, 10.875, 11.309, 11.590, 11.871, 13.242, 14.344}, //RPM = 99 { 5.859, 8.156, 8.250, 8.344, 8.660, 9.457, 11.789, 12.223, 12.680, 13.148, 14.484, 15.563}, //RPM = 199 { 4.793, 7.184, 7.371, 7.582, 8.309, 9.480, 11.848, 12.504, 13.125, 13.746, 15.375, 16.641}, //RPM = 425 { 4.313, 6.691, 6.902, 7.219, 8.074, 9.352, 11.977, 12.715, 13.395, 14.121, 15.797, 17.180}, //RPM = 499 { 3.000, 5.719, 6.082, 6.387, 7.242, 8.344, 12.727, 13.758, 14.824, 15.785, 18.621, 20.824}, //RPM = 895 { 2.719, 5.555, 5.941, 6.234, 7.055, 8.133, 12.926, 14.109, 15.199, 16.277, 19.301, 21.727}, //RPM = 999 { 1.102, 4.313, 4.805, 5.121, 6.047, 7.313, 13.078, 14.508, 15.855, 17.191, 21.129, 24.270}, //RPM = 1399 { 0.750, 4.020, 4.664, 4.969, 5.883, 7.160, 13.172, 14.695, 16.125, 17.578, 21.820, 24.598}, //RPM = 1499 { -1.125, 2.508, 3.480, 3.820, 4.840, 6.234, 13.605, 15.527, 17.461, 19.430, 24.598, 24.598}, //RPM = 1999 { -1.922, 1.852, 2.742, 3.141, 4.324, 5.859, 13.734, 15.844, 17.988, 20.145, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_80 = { //probar este mapa { { 6.633, 8.965, 9.059, 9.059, 9.117, 9.574, 11.145, 11.590, 11.895, 12.199, 13.582, 14.672}, //RPM = 99 { 6.023, 8.367, 8.461, 8.566, 8.883, 9.738, 12.258, 12.773, 13.289, 13.816, 15.164, 16.230}, //RPM = 199 { 4.957, 7.430, 7.605, 7.840, 8.555, 9.715, 12.281, 12.926, 13.570, 14.180, 15.785, 17.074}, //RPM = 425 { 4.477, 6.902, 7.125, 7.441, 8.355, 9.598, 12.375, 13.137, 13.840, 14.555, 16.289, 17.672}, //RPM = 499 { 3.047, 5.813, 6.164, 6.504, 7.359, 8.496, 13.207, 14.320, 15.375, 16.406, 19.254, 21.469}, //RPM = 895 { 2.801, 5.672, 6.059, 6.363, 7.207, 8.215, 13.441, 14.684, 15.820, 16.945, 19.969, 22.395}, //RPM = 999 { 1.406, 4.676, 5.016, 5.309, 6.141, 7.559, 13.699, 15.211, 16.570, 17.930, 21.855, 24.598}, //RPM = 1399 { 0.961, 4.301, 4.816, 5.121, 5.953, 7.371, 13.793, 15.422, 16.863, 18.328, 22.570, 24.598}, //RPM = 1499 { -1.102, 2.496, 3.516, 3.914, 5.027, 6.480, 14.461, 16.652, 18.527, 20.320, 24.598, 24.598}, //RPM = 1998 { -1.922, 1.852, 2.742, 3.188, 4.500, 6.105, 14.859, 17.344, 19.242, 21.199, 24.598, 24.598}, //RPM = 2199 } }; struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 425, 500, 895, 1000, 1400, 1500, 2000, 2200}, //N_RPM = 17 { 0.375, 0.500, 1.625, 2.500, 5.000, 10.000, 30.000, 35.000, 40.000, 45.000, 60.000, 72.000}, { -10, 10, 30.5, 50, 80} }; #elif defined(_004004) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 5.027, 6.902, 7.020, 7.113, 7.383, 8.074, 10.641, 11.508, 11.684, 11.871, 12.879, 13.688}, //RPM = 99 { 5.309, 7.488, 7.629, 7.734, 8.051, 8.766, 11.309, 12.117, 12.258, 12.410, 13.371, 14.133}, //RPM = 199 { 4.242, 6.504, 6.750, 7.031, 7.770, 8.895, 11.004, 11.484, 11.977, 12.480, 13.934, 15.105}, //RPM = 424 { 3.855, 5.051, 5.473, 5.742, 6.539, 7.676, 11.309, 12.363, 13.254, 14.145, 17.004, 19.289}, //RPM = 999 { 0.809, 3.891, 4.430, 4.863, 6.105, 7.266, 12.082, 13.512, 14.426, 15.340, 19.582, 22.969}, //RPM = 1399 { 0.504, 3.691, 4.277, 4.699, 5.848, 7.066, 12.047, 13.500, 14.602, 15.703, 20.168, 23.730}, //RPM = 1499 { -1.348, 6.129, 6.492, 6.797, 7.617, 8.789, 11.109, 11.695, 12.246, 12.785, 14.531, 15.938}, //RPM = 499 { 2.578, 5.250, 5.625, 5.930, 6.691, 7.898, 11.262, 12.223, 12.996, 13.863, 16.582, 18.762}, //RPM = 896 { 2.285, 2.215, 3.164, 3.516, 4.535, 5.801, 12.094, 14.227, 15.785, 17.355, 23.309, 24.598}, //RPM = 1999 { -2.273, 1.383, 2.438, 2.848, 4.008, 5.145, 12.363, 15.117, 16.523, 17.941, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_m5 = { //probar este mapa { { 5.109, 7.020, 7.137, 7.230, 7.500, 8.156, 10.711, 11.520, 11.742, 11.965, 12.961, 13.781}, //RPM = 99 { 5.367, 7.559, 7.688, 7.793, 8.121, 8.859, 11.379, 12.141, 12.316, 12.504, 13.465, 14.227}, //RPM = 199 { 4.289, 6.574, 6.797, 7.090, 7.875, 8.977, 11.133, 11.625, 12.117, 12.621, 14.086, 15.246}, //RPM = 424 { 3.902, 6.152, 6.539, 6.832, 7.699, 8.906, 11.238, 11.848, 12.398, 12.938, 14.695, 16.090}, //RPM = 499 { 2.590, 5.250, 5.672, 5.977, 6.785, 7.969, 11.449, 12.363, 13.219, 14.063, 16.770, 18.949}, //RPM = 895 { 2.297, 5.063, 5.484, 5.777, 6.598, 7.711, 11.484, 12.539, 13.453, 14.355, 17.215, 19.500}, //RPM = 999 { 0.855, 3.949, 4.488, 4.922, 6.164, 7.301, 12.246, 13.699, 14.684, 15.691, 19.934, 23.320}, //RPM = 1399 { 0.551, 3.738, 4.348, 4.746, 5.906, 7.102, 12.246, 13.734, 14.895, 16.055, 20.531, 24.094}, //RPM = 1500 { -1.289, 2.285, 3.246, 3.586, 4.605, 5.848, 12.375, 14.543, 16.148, 17.789, 23.742, 24.598}, //RPM = 1999 { -2.203, 1.477, 2.543, 2.953, 4.090, 5.215, 12.609, 15.352, 16.898, 18.457, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 5.320, 7.289, 7.406, 7.500, 7.781, 8.355, 10.898, 11.566, 11.871, 12.188, 13.184, 14.004}, //RPM = 99 { 5.484, 7.711, 7.852, 7.957, 8.285, 9.094, 11.531, 12.176, 12.445, 12.738, 13.699, 14.461}, //RPM = 199 { 4.395, 6.715, 6.973, 7.254, 8.074, 9.188, 11.449, 11.977, 12.469, 12.961, 14.438, 15.609}, //RPM = 424 { 3.984, 6.316, 6.691, 7.008, 7.898, 9.105, 11.520, 12.164, 12.727, 13.301, 15.070, 16.465}, //RPM = 499 { 2.602, 5.332, 5.684, 6.047, 6.914, 8.063, 11.813, 12.785, 13.676, 14.520, 17.238, 19.418}, //RPM = 894 { 2.320, 5.109, 5.531, 5.836, 6.750, 7.805, 11.906, 13.008, 13.934, 14.859, 17.719, 20.004}, //RPM = 999 { 0.961, 4.090, 4.629, 5.051, 6.281, 7.395, 12.633, 14.133, 15.305, 16.523, 20.766, 24.164}, //RPM = 1399 { 0.645, 3.879, 4.488, 4.887, 6.035, 7.184, 12.715, 14.273, 15.586, 16.910, 21.375, 24.598}, //RPM = 1499 { -1.172, 2.426, 3.457, 3.750, 4.781, 5.988, 13.020, 15.258, 17.039, 18.844, 24.598, 24.598}, //RPM = 1997 { -2.027, 1.711, 2.836, 3.199, 4.254, 5.391, 13.254, 15.938, 17.801, 19.676, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 5.590, 7.652, 7.781, 7.863, 8.145, 8.613, 11.133, 11.625, 12.047, 12.457, 13.477, 14.297}, //RPM = 99 { 5.637, 7.922, 8.074, 8.168, 8.496, 9.375, 11.707, 12.223, 12.609, 13.020, 13.969, 14.730}, //RPM = 199 { 4.535, 6.902, 7.148, 7.453, 8.309, 9.410, 11.824, 12.398, 12.879, 13.371, 14.848, 16.020}, //RPM = 425 { 4.113, 6.469, 6.832, 7.172, 8.145, 9.352, 11.883, 12.527, 13.137, 13.723, 15.445, 16.898}, //RPM = 499 { 2.648, 5.391, 5.777, 6.176, 7.148, 8.191, 12.223, 13.219, 14.121, 15.059, 17.730, 19.969}, //RPM = 895 { 2.355, 5.145, 5.566, 5.918, 6.938, 7.887, 12.328, 13.488, 14.414, 15.352, 18.199, 20.520}, //RPM = 999 { 1.066, 4.219, 4.758, 5.191, 6.410, 7.465, 13.043, 14.543, 15.949, 17.379, 21.563, 24.598}, //RPM = 1399 { 0.750, 3.996, 4.605, 5.016, 6.152, 7.242, 13.195, 14.824, 16.254, 17.695, 22.160, 24.598}, //RPM = 1499 { -1.043, 2.637, 3.609, 3.973, 4.922, 6.094, 13.664, 15.902, 17.859, 19.852, 24.598, 24.598}, //RPM = 2000 { -1.875, 1.945, 3.070, 3.445, 4.430, 5.578, 13.793, 16.465, 18.668, 20.824, 24.598, 24.598}, //RPM = 2199664, 2.180, 3.398, 3.715, 4.711, 5.777, 14.461, 17.086, 19.605, 22.125, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 5.918, 8.109, 8.227, 8.320, 8.590, 8.930, 11.426, 11.695, 12.246, 12.820, 13.816, 14.625}, //RPM = 99 { 5.824, 8.180, 8.309, 8.426, 8.742, 9.727, 11.953, 12.281, 12.809, 13.336, 14.320, 15.070}, //RPM = 199 { 4.688, 7.125, 7.359, 7.676, 8.625, 9.703, 12.293, 12.891, 13.395, 13.898, 15.375, 16.559}, //RPM = 424 { 4.242, 6.668, 7.020, 7.395, 8.438, 9.633, 12.316, 12.949, 13.605, 14.250, 15.984, 17.414}, //RPM = 499 { 2.766, 5.438, 5.906, 6.246, 7.395, 8.262, 12.715, 13.781, 14.766, 15.656, 18.387, 20.590}, //RPM = 895 { 2.391, 5.203, 5.625, 6.000, 7.102, 8.004, 12.879, 14.074, 15.023, 15.996, 18.844, 21.117}, //RPM = 999 { 1.195, 4.395, 4.945, 5.355, 6.563, 7.570, 13.523, 15.094, 16.723, 18.398, 22.605, 24.598}, //RPM = 1399 { 0.867, 4.172, 4.781, 5.168, 6.328, 7.359, 13.734, 15.480, 17.133, 18.738, 23.215, 24.598}, //RPM = 1499 { -0.891, 2.824, 3.855, 4.184, 5.133, 6.246, 14.449, 16.793, 18.949, 21.035, 24.598, 24.598}, //RPM = 1999 { -1.641, 2.227, 3.398, 3.738, 4.664, 5.789, 14.543, 17.180, 19.688, 22.207, 24.598, 24.598}, //RPM = 2199 } }; struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 425, 500, 895, 1000, 1400, 1500, 2000, 2200}, //N_RPM = 17 { 0.375, 0.500, 1.625, 2.500, 5.000, 10.000, 30.000, 35.000, 40.000, 45.000, 60.000, 72.000}, { -15, 3, 25, 46, 75} }; #elif defined(_004002) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 5.367, 7.371, 7.453, 7.465, 7.512, 8.414, 10.570, 11.320, 11.625, 11.930, 13.383, 14.543}, //RPM = 99 { 5.133, 7.242, 7.746, 7.898, 8.344, 9.059, 11.191, 11.836, 12.234, 12.621, 13.852, 14.414}, //RPM = 199 { 5.332, 7.313, 7.395, 7.406, 7.465, 8.379, 10.535, 11.309, 11.602, 11.883, 13.336, 14.496}, //RPM = 99 { 5.098, 7.219, 7.395, 7.559, 7.992, 9.023, 11.168, 11.754, 11.953, 12.164, 13.395, 14.379}, //RPM = 199 { 4.125, 6.340, 6.656, 7.008, 7.992, 9.059, 10.898, 11.426, 11.930, 12.434, 13.957, 15.188}, //RPM = 425 { 3.762, 6.023, 6.445, 6.832, 7.969, 8.859, 11.063, 11.660, 12.164, 12.691, 14.461, 15.879}, //RPM = 499 { 2.320, 4.898, 5.754, 6.035, 7.031, 8.098, 11.402, 12.270, 13.172, 14.074, 17.039, 19.383}, //RPM = 896 { 1.980, 4.664, 5.590, 5.883, 6.738, 7.910, 11.414, 12.410, 13.441, 14.496, 17.742, 20.344}, //RPM = 999 { 0.539, 3.516, 4.430, 4.816, 5.941, 7.301, 12.047, 13.535, 14.402, 15.281, 19.418, 22.699}, //RPM = 1399 { 0.188, 3.246, 4.172, 4.582, 5.813, 7.184, 12.141, 13.629, 14.695, 15.762, 20.074, 23.566}, //RPM = 1499 { -1.840, 1.547, 2.320, 2.953, 4.723, 6.293, 12.410, 14.320, 15.914, 17.496, 23.484, 24.598}, //RPM = 1999 { -2.824, 0.633, 1.277, 2.004, 4.102, 5.707, 12.586, 14.859, 16.336, 17.836, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_m5 = { //probar este mapa { { 5.461, 7.488, 7.570, 7.570, 7.641, 8.496, 10.641, 11.344, 11.684, 12.023, 13.477, 14.625}, //RPM = 99 { 5.168, 7.313, 7.500, 7.641, 8.086, 9.152, 11.250, 11.777, 12.035, 12.281, 13.512, 14.496}, //RPM = 199 { 4.195, 6.410, 6.703, 7.090, 8.098, 9.176, 11.051, 11.613, 12.094, 12.621, 14.156, 15.375}, //RPM = 424 { 3.809, 6.059, 6.516, 6.902, 8.051, 8.953, 11.203, 11.789, 12.340, 12.891, 14.602, 16.043}, //RPM = 499 { 2.320, 4.922, 5.801, 6.117, 7.113, 8.121, 11.602, 12.480, 13.383, 14.309, 17.250, 19.664}, //RPM = 896 { 2.016, 4.676, 5.613, 5.918, 6.797, 7.934, 11.602, 12.621, 13.664, 14.719, 17.965, 20.555}, //RPM = 999 { 0.586, 3.586, 4.500, 4.887, 6.000, 7.336, 12.223, 13.734, 14.684, 15.645, 19.781, 23.074}, //RPM = 1399 { 0.234, 3.316, 4.242, 4.641, 5.859, 7.230, 12.328, 13.875, 15.012, 16.137, 20.461, 23.918}, //RPM = 1499 { -1.781, 1.617, 2.402, 3.035, 4.805, 6.352, 12.703, 14.637, 16.289, 17.941, 23.953, 24.598}, //RPM = 1999 { -2.742, 0.738, 1.406, 2.109, 4.184, 5.777, 12.832, 15.094, 16.699, 18.352, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 5.578, 7.641, 7.723, 7.734, 7.793, 8.602, 10.746, 11.367, 11.754, 12.141, 13.594, 14.754}, //RPM = 99 { 5.238, 7.395, 7.582, 7.734, 8.180, 9.281, 11.332, 11.801, 12.105, 12.410, 13.641, 14.625}, //RPM = 199 { 4.242, 6.504, 6.820, 7.172, 8.227, 9.281, 11.215, 11.789, 12.270, 12.820, 14.332, 15.563}, //RPM = 425 { 3.867, 6.152, 6.586, 6.996, 8.180, 9.070, 11.355, 11.977, 12.516, 13.090, 14.848, 16.254}, //RPM = 499 { 2.367, 4.957, 5.801, 6.164, 7.184, 8.203, 11.766, 12.645, 13.594, 14.508, 17.496, 19.828}, //RPM = 895 { 2.016, 4.699, 5.625, 5.965, 6.891, 7.992, 11.813, 12.832, 13.887, 14.941, 18.199, 20.813}, //RPM = 999 { 0.633, 3.668, 4.559, 4.945, 6.047, 7.371, 12.410, 13.934, 14.977, 16.031, 20.168, 23.461}, //RPM = 1399 { 0.281, 3.375, 4.289, 4.699, 5.941, 7.254, 12.539, 14.109, 15.316, 16.512, 20.848, 24.305}, //RPM = 1499 { -1.723, 1.699, 2.508, 3.117, 4.887, 6.410, 12.996, 14.965, 16.688, 18.410, 24.422, 24.598}, //RPM = 1999 { -2.672, 0.832, 1.523, 2.227, 4.266, 5.871, 13.125, 15.340, 17.133, 18.902, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 5.719, 7.828, 7.910, 7.922, 7.969, 8.742, 10.863, 11.391, 11.848, 12.293, 13.746, 14.906}, //RPM = 99 { 5.320, 7.512, 7.699, 7.852, 8.297, 9.434, 11.438, 11.824, 12.199, 12.574, 13.793, 14.777}, //RPM = 199 { 4.313, 6.598, 6.914, 7.289, 8.379, 9.387, 11.461, 12.047, 12.551, 13.066, 14.590, 15.820}, //RPM = 425 { 3.926, 6.258, 6.680, 7.102, 8.320, 9.211, 11.566, 12.211, 12.785, 13.336, 15.094, 16.523}, //RPM = 499 { 2.414, 5.004, 5.871, 6.199, 7.289, 8.320, 12.035, 12.984, 13.934, 14.906, 17.824, 20.215}, //RPM = 896 { 2.051, 4.734, 5.660, 6.000, 6.996, 8.051, 12.117, 13.184, 14.227, 15.316, 18.563, 21.164}, //RPM = 999 { 0.703, 3.773, 4.664, 5.039, 6.141, 7.430, 12.668, 14.250, 15.445, 16.652, 20.777, 24.082}, //RPM = 1399 { 0.352, 3.457, 4.395, 4.793, 5.988, 7.324, 12.891, 14.531, 15.832, 17.156, 21.469, 24.598}, //RPM = 1499 { -1.629, 1.816, 2.648, 3.258, 5.004, 6.504, 13.477, 15.504, 17.344, 19.195, 24.598, 24.598}, //RPM = 1999 { -2.531, 1.020, 1.734, 2.414, 4.406, 6.000, 13.582, 15.773, 17.801, 19.840, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 5.977, 8.180, 8.262, 8.273, 8.320, 8.988, 11.098, 11.449, 12.000, 12.563, 14.016, 15.176}, //RPM = 99 { 5.473, 7.711, 7.887, 8.039, 8.484, 9.715, 11.613, 11.871, 12.352, 12.832, 14.063, 15.047}, //RPM = 199 { 4.441, 6.773, 7.078, 7.477, 8.602, 9.645, 11.813, 12.434, 12.938, 13.453, 14.965, 16.195}, //RPM = 424 { 4.043, 6.387, 6.809, 7.277, 8.578, 9.445, 11.895, 12.563, 13.137, 13.734, 15.480, 16.922}, //RPM = 499 { 2.449, 5.063, 5.918, 6.340, 7.500, 8.391, 12.363, 13.359, 14.332, 15.363, 18.281, 20.684}, //RPM = 895 { 2.063, 4.770, 5.695, 6.070, 7.125, 8.133, 12.527, 13.617, 14.695, 15.797, 19.043, 21.645}, //RPM = 999 { 0.809, 3.879, 4.793, 5.168, 6.258, 7.512, 13.066, 14.648, 16.031, 17.438, 21.504, 24.598}, //RPM = 1399 { 0.445, 3.598, 4.523, 4.922, 6.141, 7.395, 13.324, 15.023, 16.453, 17.918, 22.254, 24.598}, //RPM = 1499 { -1.535, 1.969, 2.836, 3.422, 5.145, 6.633, 14.051, 16.125, 18.129, 20.098, 24.598, 24.598}, //RPM = 1999 { -2.379, 1.230, 1.969, 2.625, 4.547, 6.164, 14.121, 16.277, 18.586, 20.883, 24.598, 24.598}, //RPM = 2199 } }; struct AlphaStruct fuelmap_80 = { //probar este mapa { { 6.234, 8.531, 8.602, 8.613, 8.672, 9.234, 11.320, 11.508, 12.176, 12.844, 14.285, 15.445}, //RPM = 99 { 5.625, 7.910, 8.098, 8.238, 8.684, 9.996, 11.801, 11.918, 12.516, 13.102, 14.332, 15.316}, //RPM = 199 { 4.582, 6.949, 7.266, 7.664, 8.859, 9.891, 12.188, 12.844, 13.348, 13.840, 15.387, 16.594}, //RPM = 424 { 4.160, 6.527, 6.973, 7.441, 8.801, 9.668, 12.234, 12.879, 13.523, 14.203, 15.973, 17.367}, //RPM = 499 { 2.496, 5.145, 5.988, 6.434, 7.676, 8.520, 12.832, 13.840, 14.859, 15.891, 18.855, 21.188}, //RPM = 895 { 2.109, 4.805, 5.742, 6.141, 7.313, 8.238, 12.984, 14.109, 15.223, 16.336, 19.582, 22.172}, //RPM = 999 { 0.914, 4.031, 4.945, 5.320, 6.387, 7.594, 13.488, 15.117, 16.723, 18.328, 22.465, 24.598}, //RPM = 1399 { 0.551, 3.727, 4.652, 5.074, 6.281, 7.488, 13.816, 15.598, 17.203, 18.820, 23.145, 24.598}, //RPM = 1499 { -1.383, 2.156, 3.023, 3.621, 5.320, 6.773, 14.754, 16.922, 19.066, 21.223, 24.598, 24.598}, //RPM = 1999 { -2.191, 1.477, 2.262, 2.906, 4.746, 6.363, 14.766, 16.898, 19.523, 22.160, 24.598, 24.598}, //RPM = 2199 } }; struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 425, 500, 950, 1000, 1400, 1500, 2000, 2200}, //N_RPM = 17 { 0.375, 0.500, 1.625, 2.500, 5.000, 10.000, 30.000, 35.000, 40.000, 45.000, 60.000, 72.000}, { -15.5, -5.5 ,6.3, 27.5, 47.8, 75} }; #elif defined(_504010) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 8.594, 9.368, 9.344, 9.473, 9.801, 10.083, 11.219, 11.747, 12.579, 13.141, 13.961, 15.919}, //RPM = 99 { 7.841, 8.626, 8.509, 8.638, 9.001, 9.388, 11.087, 11.509, 12.165, 12.716, 13.536, 15.505}, //RPM = 199 { 6.874, 7.741, 7.659, 7.870, 8.456, 9.065, 10.846, 11.631, 12.862, 13.940, 15.229, 18.182}, //RPM = 399 { 6.519, 7.444, 7.409, 7.644, 8.230, 8.816, 10.784, 11.792, 13.269, 14.487, 15.601, 17.980}, //RPM = 499 { 4.721, 5.893, 6.127, 6.397, 7.018, 7.498, 10.604, 12.608, 15.127, 17.272, 18.104, 19.123}, //RPM = 999 { 2.724, 4.166, 4.646, 4.916, 5.619, 6.369, 10.740, 13.154, 16.986, 18.931, 19.634, 20.419}, //RPM = 1499 { 1.550, 3.085, 3.694, 3.976, 4.726, 5.675, 10.714, 13.222, 17.968, 19.409, 20.124, 21.237}, //RPM = 1749 { 0.501, 2.189, 2.411, 2.704, 3.525, 4.661, 10.052, 13.228, 19.228, 19.884, 20.048, 20.048}, //RPM = 2099 } }; struct AlphaStruct fuelmap_m5 = { //probar este mapa { { 8.594, 9.379, 9.497, 9.626, 9.954, 10.235, 11.348, 11.958, 12.860, 13.422, 14.243, 16.200}, //RPM = 99 { 7.841, 8.638, 8.650, 8.790, 9.154, 9.540, 11.216, 11.720, 12.458, 13.009, 13.818, 15.786}, //RPM = 199 { 6.874, 7.752, 7.799, 8.022, 8.608, 9.217, 10.975, 11.842, 13.143, 14.233, 15.522, 18.475}, //RPM = 399 { 6.519, 7.444, 7.538, 7.761, 8.347, 8.933, 10.925, 11.991, 13.573, 14.804, 15.894, 18.273}, //RPM = 499 { 4.721, 5.905, 6.198, 6.455, 7.088, 7.580, 10.768, 12.830, 15.549, 17.694, 18.526, 19.510}, //RPM = 999 { 2.876, 4.330, 4.810, 5.080, 5.783, 6.533, 10.974, 13.541, 17.595, 19.541, 20.255, 21.041}, //RPM = 1499 { 1.773, 3.343, 3.941, 4.222, 4.972, 5.921, 11.019, 13.737, 18.659, 20.112, 20.827, 21.941}, //RPM = 1749 { 0.701, 2.411, 2.646, 2.927, 3.759, 4.896, 10.568, 13.872, 20.177, 20.845, 20.986, 21.115}, //RPM = 2099 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 8.594, 9.391, 9.590, 9.719, 10.047, 10.340, 11.430, 12.086, 13.047, 13.610, 14.430, 16.387}, //RPM = 99 { 7.841, 8.650, 8.755, 8.896, 9.259, 9.646, 11.310, 11.861, 12.657, 13.208, 14.029, 15.997}, //RPM = 199 { 6.874, 7.764, 7.916, 8.139, 8.725, 9.334, 11.081, 12.006, 13.366, 14.456, 15.745, 18.698}, //RPM = 399 { 6.519, 7.433, 7.632, 7.866, 8.452, 9.038, 11.030, 12.155, 13.819, 15.038, 16.151, 18.530}, //RPM = 499 { 4.721, 5.905, 6.244, 6.502, 7.135, 7.627, 10.909, 13.018, 15.924, 18.069, 18.901, 19.920}, //RPM = 999 { 3.017, 4.470, 4.951, 5.232, 5.935, 6.685, 11.197, 13.892, 18.169, 20.115, 20.818, 21.615}, //RPM = 1499 { 1.995, 3.577, 4.175, 4.456, 5.206, 6.155, 11.312, 14.241, 19.327, 20.780, 21.495, 22.620}, //RPM = 1749 { 0.900, 2.634, 2.857, 3.232, 3.970, 5.130, 11.072, 14.505, 21.126, 21.783, 21.947, 21.935}, //RPM = 2099 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 8.583, 9.415, 9.825, 9.965, 10.294, 10.575, 11.641, 12.415, 13.493, 14.055, 14.876, 16.833}, //RPM = 99 { 7.829, 8.661, 8.978, 9.118, 9.482, 9.868, 11.497, 12.165, 13.079, 13.630, 14.450, 16.419}, //RPM = 199 { 6.862, 7.776, 8.127, 8.350, 8.936, 9.545, 11.268, 12.288, 13.764, 14.854, 16.143, 19.096}, //RPM = 399 { 6.507, 7.468, 7.796, 8.030, 8.616, 9.202, 11.218, 12.425, 14.206, 15.425, 16.538, 18.917}, //RPM = 499 { 4.709, 5.916, 6.326, 6.584, 7.217, 7.709, 11.108, 13.299, 16.451, 18.596, 19.428, 20.448}, //RPM = 999 { 3.193, 4.669, 5.162, 5.431, 6.134, 6.884, 11.490, 14.349, 18.896, 20.841, 21.544, 22.330}, //RPM = 1499 { 2.265, 3.870, 4.468, 4.749, 5.499, 6.448, 11.675, 14.839, 20.124, 21.577, 22.292, 23.405}, //RPM = 1749 { 1.146, 2.892, 3.115, 3.396, 4.228, 5.376, 11.622, 15.267, 22.169, 22.826, 22.978, 22.978}, //RPM = 2099 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 8.583, 9.426, 10.024, 10.176, 10.504, 10.786, 11.817, 12.262, 13.844, 14.442, 14.676, 17.219}, //RPM = 99 { 7.829, 8.685, 9.177, 9.329, 9.693, 10.079, 11.685, 12.446, 13.466, 14.017, 14.837, 16.806}, //RPM = 199 { 6.862, 7.788, 8.327, 8.561, 9.147, 9.756, 11.444, 12.569, 14.151, 15.241, 16.530, 19.483}, //RPM = 399 { 6.507, 7.480, 7.960, 8.194, 8.792, 9.378, 11.394, 12.706, 14.605, 15.823, 16.937, 19.292}, //RPM = 499 { 4.709, 5.916, 6.420, 6.678, 7.311, 7.803, 11.319, 13.592, 17.026, 19.170, 20.002, 21.022}, //RPM = 999 { 3.404, 4.892, 5.373, 5.642, 6.345, 7.095, 11.818, 14.865, 19.716, 21.662, 22.365, 23.162}, //RPM = 1499 { 2.569, 4.198, 4.796, 5.089, 5.839, 6.788, 12.097, 15.530, 21.073, 22.515, 23.230, 24.343}, //RPM = 1749 { 1.427, 3.197, 3.431, 3.701, 4.533, 5.681, 12.326, 16.087, 23.447, 24.091, 24.255, 24.267}, //RPM = 2099 } }; struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 400, 500, 1000, 1500, 1750, 2100}, //N_RPM = 17 { 0.375, 0.500, 1.625, 2.500, 5.000, 8.313, 24.938, 35.000, 49.813, 60.000, 72.000, 99.625}, { -15, 5 , 30, 45.5, 72.5} }; #elif defined(_504003) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 0.563, 10.008, 10.113, 10.172, 10.676, 11.895, 12.691, 13.406, 14.273, 21.059}, //RPM = 99.75 { 0.609, 10.324, 10.559, 10.688, 11.531, 12.668, 13.535, 13.910, 14.730, 20.730}, //RPM = 199.75 { 0.527, 11.098, 11.438, 11.672, 13.078, 14.602, 15.680, 16.289, 17.742, 18.680}, //RPM = 399.75 { 1.031, 14.977, 15.410, 15.727, 17.215, 20.238, 22.348, 23.801, 26.484, 28.441}, //RPM = 999.75 { 0.984, 19.594, 20.016, 20.262, 22.066, 27.398, 30.633, 33.188, 33.188, 33.188}, //RPM = 1749.75 { 1.066, 22.266, 22.863, 23.074, 25.090, 30.961, 34.816, 38.145, 38.109, 38.121}, //RPM = 2149.50 } }; struct AlphaStruct fuelmap_m5 = { //probar este mapa { { 0.656, 10.102, 10.207, 10.266, 10.758, 12.023, 12.867, 13.570, 14.438, 21.223}, //RPM = 99.75 { 0.691, 10.406, 10.641, 10.758, 11.613, 12.949, 13.781, 14.168, 14.965, 20.977}, //RPM = 199.75 { 0.656, 11.227, 11.578, 11.801, 13.219, 14.801, 15.926, 16.629, 18.082, 19.031}, //RPM = 399.75 { 1.078, 15.023, 15.457, 15.773, 17.262, 20.402, 22.711, 24.246, 26.930, 28.887}, //RPM = 999.75 { 1.172, 19.781, 20.215, 20.461, 22.266, 27.703, 31.125, 33.926, 33.961, 33.949}, //RPM = 1749.75 { 1.313, 22.500, 23.098, 23.309, 25.336, 31.313, 35.449, 39.105, 39.070, 39.094}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 0.762, 10.207, 10.313, 10.371, 10.863, 12.164, 13.078, 13.770, 14.637, 21.410}, //RPM = 99.75 { 0.773, 10.500, 10.723, 10.863, 11.695, 13.301, 14.086, 14.461, 15.270, 21.281}, //RPM = 199.75 { 0.832, 11.402, 11.754, 11.977, 13.395, 15.047, 16.242, 17.039, 18.492, 19.441}, //RPM = 399.75 { 1.137, 15.082, 15.516, 15.832, 17.320, 20.602, 23.133, 24.785, 27.492, 29.461}, //RPM = 999.75 { 1.430, 20.039, 20.438, 20.707, 22.488, 28.078, 31.734, 34.898, 34.922, 34.793}, //RPM = 1749.75 { 1.605, 22.793, 23.391, 23.602, 25.629, 31.781, 36.211, 40.277, 40.289, 40.289}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 0.844, 10.289, 10.395, 10.453, 10.945, 12.293, 13.242, 13.922, 14.789, 21.574}, //RPM = 99.75 { 0.855, 10.570, 10.816, 10.934, 11.777, 13.559, 14.309, 14.695, 15.504, 21.516}, //RPM = 199.75 { 0.961, 11.531, 11.883, 12.105, 13.512, 15.234, 16.500, 17.367, 18.820, 19.770}, //RPM = 399.75 { 1.172, 15.117, 15.563, 15.867, 17.355, 20.754, 23.496, 25.219, 27.902, 29.859}, //RPM = 999.75 { 1.617, 20.215, 20.648, 20.883, 22.688, 28.348, 32.203, 35.555, 35.555, 35.566}, //RPM = 1749.75 { 1.828, 23.004, 23.613, 23.824, 25.852, 32.133, 36.773, 41.203, 41.227, 41.215}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 0.938, 10.383, 10.488, 10.547, 11.039, 12.410, 13.418, 14.086, 14.953, 21.738}, //RPM = 99.75 { 0.949, 10.664, 10.898, 11.027, 11.871, 13.863, 14.578, 14.965, 15.773, 21.773}, //RPM = 199.75 { 1.113, 11.684, 12.035, 12.258, 13.664, 15.457, 16.770, 17.730, 19.195, 20.145}, //RPM = 399.75 { 1.230, 15.176, 15.609, 15.926, 17.414, 20.930, 23.895, 25.711, 28.395, 30.352}, //RPM = 999.75 { 1.828, 20.426, 20.848, 21.094, 22.910, 28.699, 32.754, 36.363, 36.387, 36.398}, //RPM = 1749.75 { 2.098, 23.273, 23.883, 24.094, 26.121, 32.543, 37.512, 42.293, 42.305, 42.316}, //RPM = 2149.75 } }; /*struct AlphaStruct fuelmap_80 = { //probar este mapa { { 6.234, 8.531, 8.602, 8.613, 8.672, 9.234, 11.320, 11.508, 12.176, 12.844, 14.285, 15.445}, //RPM = 99 { 5.625, 7.910, 8.098, 8.238, 8.684, 9.996, 11.801, 11.918, 12.516, 13.102, 14.332, 15.316}, //RPM = 199 { 4.582, 6.949, 7.266, 7.664, 8.859, 9.891, 12.188, 12.844, 13.348, 13.840, 15.387, 16.594}, //RPM = 424 { 4.160, 6.527, 6.973, 7.441, 8.801, 9.668, 12.234, 12.879, 13.523, 14.203, 15.973, 17.367}, //RPM = 499 { 2.496, 5.145, 5.988, 6.434, 7.676, 8.520, 12.832, 13.840, 14.859, 15.891, 18.855, 21.188}, //RPM = 895 { 2.109, 4.805, 5.742, 6.141, 7.313, 8.238, 12.984, 14.109, 15.223, 16.336, 19.582, 22.172}, //RPM = 999 { 0.914, 4.031, 4.945, 5.320, 6.387, 7.594, 13.488, 15.117, 16.723, 18.328, 22.465, 24.598}, //RPM = 1399 { 0.551, 3.727, 4.652, 5.074, 6.281, 7.488, 13.816, 15.598, 17.203, 18.820, 23.145, 24.598}, //RPM = 1499 { -1.383, 2.156, 3.023, 3.621, 5.320, 6.773, 14.754, 16.922, 19.066, 21.223, 24.598, 24.598}, //RPM = 1999 { -2.191, 1.477, 2.262, 2.906, 4.746, 6.363, 14.766, 16.898, 19.523, 22.160, 24.598, 24.598}, //RPM = 2199 } };*/ struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 400, 1000, 1750, 2150}, //N_RPM = 17 { 0.031, 0.406, 1.656, 2.406, 8.313, 24.906, 37.313, 45.688, 60.000, 72.000}, { -15.0, 5.1 ,30, 50, 74.5} }; #elif defined(_504009) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 0.563, 9.387, 9.680, 9.785, 10.406, 11.742, 12.434, 12.844, 13.898, 20.602}, //RPM = 99.75 { 0.598, 9.785, 9.820, 9.996, 11.063, 12.762, 13.020, 13.242, 14.180, 20.145}, //RPM = 199.75 { 0.680, 10.910, 11.227, 11.426, 12.867, 14.355, 14.988, 15.516, 16.758, 17.613}, //RPM = 399.75 { 0.949, 14.777, 15.164, 15.410, 16.605, 19.207, 21.059, 22.219, 24.609, 26.367}, //RPM = 999.50 { 1.137, 19.277, 19.629, 19.875, 21.234, 25.582, 28.324, 30.281, 34.922, 37.922}, //RPM = 1749.75 { 1.336, 22.617, 23.496, 23.801, 25.523, 29.719, 32.742, 34.676, 40.770, 42.176}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_m5 = { //probar este mapa { { 0.633, 9.457, 9.750, 9.855, 10.477, 11.848, 12.645, 13.148, 14.203, 20.906}, //RPM = 99.75 { 0.668, 9.855, 9.891, 10.066, 11.133, 12.855, 13.230, 13.547, 14.484, 20.438}, //RPM = 199.75 { 0.738, 10.969, 11.285, 11.484, 12.926, 14.461, 15.199, 15.809, 17.051, 17.906}, //RPM = 399.75 { 1.020, 14.848, 15.234, 15.480, 16.676, 19.406, 21.352, 22.641, 25.031, 26.801}, //RPM = 999.75 { 1.266, 19.406, 19.758, 20.004, 21.363, 25.840, 28.734, 30.902, 35.543, 38.543}, //RPM = 1749.75 { 1.488, 22.770, 23.672, 23.953, 25.652, 29.988, 33.117, 35.473, 41.555, 42.984}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 0.715, 9.539, 9.832, 9.938, 10.559, 11.965, 12.902, 13.512, 14.566, 21.270}, //RPM = 99.75 { 0.750, 9.938, 9.961, 10.148, 11.203, 12.984, 13.488, 13.898, 14.836, 20.801}, //RPM = 199.75 { 0.820, 11.051, 11.367, 11.566, 13.008, 14.578, 15.457, 16.172, 17.414, 18.270}, //RPM = 399.75 { 1.113, 14.941, 15.328, 15.574, 16.770, 19.641, 21.703, 23.156, 25.547, 27.316}, //RPM = 999.75 { 1.430, 19.570, 19.922, 20.168, 21.527, 26.168, 29.238, 31.688, 36.316, 39.316}, //RPM = 1749.75 { 1.676, 22.934, 23.859, 24.117, 25.840, 30.328, 33.609, 36.457, 42.563, 43.969}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 0.773, 9.598, 9.891, 9.996, 10.617, 12.059, 13.102, 13.793, 14.836, 21.539}, //RPM = 99.75 { 0.809, 9.996, 10.031, 10.207, 11.273, 13.078, 13.676, 14.180, 15.129, 21.082}, //RPM = 199.75 { 0.879, 11.109, 11.426, 11.625, 13.066, 14.672, 15.656, 16.453, 17.695, 18.551}, //RPM = 399.75 { 1.184, 15.012, 15.398, 15.645, 16.840, 19.828, 21.984, 23.555, 25.945, 27.715}, //RPM = 999.75 { 1.547, 19.688, 20.039, 20.285, 21.645, 26.414, 29.613, 32.262, 36.914, 39.902}, //RPM = 1749.75 { 1.805, 23.086, 23.988, 24.328, 25.980, 30.598, 33.973, 37.207, 43.301, 44.707}, //RPM = 2149.75 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 0.855, 9.680, 9.973, 10.078, 10.699, 12.176, 13.348, 14.145, 15.188, 21.891}, //RPM = 99.75 { 0.879, 10.066, 10.102, 10.277, 11.344, 13.195, 13.934, 14.531, 15.469, 21.434}, //RPM = 199.75 { 0.949, 11.191, 11.508, 11.707, 13.148, 14.789, 15.902, 16.781, 18.047, 18.902}, //RPM = 399.50 { 1.277, 15.105, 15.492, 15.738, 16.934, 20.063, 22.324, 24.047, 26.438, 28.207}, //RPM = 999.75 { 1.699, 19.840, 20.191, 20.438, 21.797, 26.730, 30.094, 33.000, 37.664, 40.652}, //RPM = 1749.75 { 1.992, 23.262, 24.164, 24.457, 26.145, 30.914, 34.418, 38.227, 44.238, 45.680}, //RPM = 2150.00 } }; struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 400, 1000, 1750, 2150}, //N_RPM = 17 { 0.031, 0.406, 1.656, 2.406, 8.313, 24.906, 37.313, 45.688, 60.000, 72.000}, { -15.0, 5.1 ,30, 50, 74.5} }; #elif defined(_504012) struct AlphaStruct fuelmap_m12 = { //probar este mapa { { 0.434, 9.152, 9.352, 9.469, 10.430, 10.945, 11.402, 12.246, 13.137, 13.793, 13.887}, //RPM = 99.75 { 0.480, 9.668, 10.395, 10.465, 11.027, 12.023, 12.598, 13.852, 14.895, 15.867, 15.973}, //RPM = 199.75 { 0.539, 10.969, 11.215, 11.367, 12.504, 14.109, 14.309, 14.625, 15.797, 16.641, 16.652}, //RPM = 399.75 { 0.949, 14.871, 15.281, 15.492, 17.109, 18.656, 19.605, 21.832, 23.906, 25.641, 25.641}, //RPM = 999.75 { 1.441, 19.441, 19.781, 19.945, 21.434, 23.508, 24.961, 27.926, 31.313, 31.887, 31.898}, //RPM = 1599.75 { 1.559, 21.316, 21.855, 21.984, 23.309, 26.672, 28.266, 31.793, 34.453, 34.465, 34.488}, //RPM = 1999.75 } }; struct AlphaStruct fuelmap_m5 = { //probar este mapa { { 0.586, 9.305, 9.504, 9.621, 10.582, 11.203, 11.707, 12.668, 13.535, 14.191, 14.273}, //RPM = 99.75 { 0.621, 9.809, 10.535, 10.605, 11.168, 12.246, 12.891, 14.191, 15.328, 16.277, 16.383}, //RPM = 199.75 { 0.691, 11.121, 11.355, 11.508, 12.645, 14.344, 14.766, 15.480, 16.652, 17.508, 17.496}, //RPM = 399.75 { 1.031, 14.953, 15.363, 15.574, 17.191, 18.797, 19.887, 22.254, 24.457, 26.180, 26.191}, //RPM = 999.75 { 1.453, 19.453, 19.793, 19.957, 21.445, 23.777, 25.254, 28.500, 32.039, 32.625, 32.625}, //RPM = 1599.75 { 1.582, 21.316, 21.879, 22.008, 23.320, 26.953, 28.688, 32.496, 35.309, 35.297, 35.320}, //RPM = 1999.75 } }; struct AlphaStruct fuelmap_10 = { //probar este mapa { { 0.738, 9.457, 9.656, 9.773, 10.723, 11.461, 12.000, 13.090, 13.934, 14.590, 14.684}, //RPM = 99.75 { 0.762, 9.949, 10.676, 10.746, 11.309, 12.469, 13.195, 14.531, 15.750, 16.711, 16.816}, //RPM = 199.75 { 0.844, 11.273, 11.520, 11.672, 12.797, 14.602, 15.246, 16.406, 17.578, 18.434, 18.422}, //RPM = 399.75 { 1.113, 15.035, 15.445, 15.656, 17.273, 18.949, 20.191, 22.734, 25.043, 26.777, 26.777}, //RPM = 999.75 { 1.477, 19.477, 19.816, 19.980, 21.469, 24.070, 25.594, 29.109, 32.848, 33.422, 33.434}, //RPM = 1599.75 { 1.617, 21.387, 21.914, 22.031, 23.367, 27.258, 29.145, 33.293, 36.258, 36.270, 36.281}, //RPM = 1999.75 } }; struct AlphaStruct fuelmap_25 = { //probar este mapa { { 0.855, 9.574, 9.773, 9.891, 10.852, 11.684, 12.234, 13.441, 14.262, 14.918, 15.012}, //RPM = 99.75 { 0.879, 10.066, 10.793, 10.863, 11.426, 12.645, 13.441, 14.824, 16.102, 17.063, 17.168}, //RPM = 199.75 { 0.973, 11.402, 11.648, 11.789, 12.926, 14.813, 15.645, 17.156, 18.328, 19.184, 19.172}, //RPM = 399.75 { 1.184, 15.105, 15.516, 15.727, 17.344, 19.078, 20.449, 23.121, 25.535, 27.270, 27.246}, //RPM = 999.25 { 1.500, 19.500, 19.840, 20.004, 21.492, 24.316, 25.875, 29.625, 33.516, 34.102, 34.102}, //RPM = 1599.75 { 1.629, 21.410, 21.926, 22.043, 23.379, 27.516, 29.520, 33.949, 37.055, 37.066, 37.066}, //RPM = 1999.75 } }; struct AlphaStruct fuelmap_60 = { //probar este mapa { { 1.020, 9.738, 9.938, 10.055, 11.016, 11.965, 12.551, 13.887, 14.695, 15.340, 15.434}, //RPM = 99.75 { 1.031, 10.219, 10.945, 11.004, 11.566, 12.879, 13.758, 15.188, 16.559, 17.520, 17.613}, //RPM = 199.75 { 1.125, 11.555, 11.801, 11.953, 13.090, 15.082, 16.160, 18.117, 19.289, 20.133, 20.145}, //RPM = 399.75 { 1.277, 15.199, 15.609, 15.820, 17.438, 19.242, 20.766, 23.613, 26.156, 27.891, 27.891}, //RPM = 999.75 { 1.523, 19.523, 19.863, 20.027, 21.516, 24.621, 26.215, 30.281, 34.359, 34.945, 34.945}, //RPM = 1599.75 { 1.664, 21.434, 21.949, 22.078, 23.414, 27.832, 30.000, 34.793, 38.051, 38.039, 38.063}, //RPM = 1999.75 } }; struct fuelMapIndexes fuelMapI = { //probar este mapa { 100, 200, 400, 1000, 1600, 2000}, //N_RPM = 17 { 0.031, 0.406, 1.656, 2.406, 8.313, 20.813, 29.094, 45.688, 60.000, 70.594, 72.000}, { -14.2, 5.25, 29.9, 50, 75.3} }; #endif