Files
hpsg5-controller_v2-stm32g4/Core/Src/fuel_map.c

843 lines
45 KiB
C

/*
* fuel_map.c
*
* Created on: Oct 18, 2024
* Author: herli
*/
#include <id.h>
#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;
}
//#define _004006
//#define _004004
//#define _004002
//#define _504003
#define _504009
//#define _504010
#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
{
{ 7.734, 8.520, 8.777, 8.918, 9.246, 9.621, 10.945, 11.227, 11.496, 11.801, 12.680, 13.500}, //RPM = 99
{ 6.750, 7.559, 7.746, 7.875, 8.250, 8.789, 10.547, 10.770, 10.980, 11.203, 11.988, 12.797}, //RPM = 199
{ 4.863, 5.754, 6.000, 6.223, 6.820, 7.605, 9.680, 10.102, 10.500, 10.945, 12.539, 13.758}, //RPM = 424
{ 4.336, 5.273, 5.520, 5.742, 6.352, 7.137, 9.434, 9.949, 10.465, 10.957, 12.691, 13.793}, //RPM = 499
{ 1.547, 2.684, 3.035, 3.293, 3.891, 4.688, 8.227, 9.117, 10.066, 10.898, 13.535, 14.309}, //RPM = 896
{ 0.773, 1.957, 2.355, 2.613, 3.246, 4.043, 7.934, 8.941, 9.973, 10.840, 13.758, 14.590}, //RPM = 999
{ -1.898, -0.480, -0.047, 0.223, 0.891, 1.992, 6.938, 8.156, 9.363, 10.582, 13.898, 14.602}, //RPM = 1399
{ -2.707, -1.230, -0.750, -0.480, 0.223, 1.441, 6.633, 7.887, 9.152, 10.512, 13.770, 14.484}, //RPM = 1499
{ -6.258, -4.547, -4.230, -3.938, -3.117, -1.430, 4.828, 6.363, 8.063, 10.066, 13.020, 13.324}, //RPM = 1999
{ -7.406, -5.602, -5.273, -5.027, -4.266, -2.543, 3.703, 5.320, 7.289, 9.563, 12.363, 12.492}, //RPM = 2199
}
};
struct AlphaStruct fuelmap_m5 = { //probar este mapa
{
{ 7.840, 8.625, 8.895, 9.035, 9.352, 9.727, 11.063, 11.379, 11.672, 12.000, 12.879, 13.699}, //RPM = 99
{ 6.855, 7.664, 7.852, 7.992, 8.355, 8.895, 10.664, 10.910, 11.156, 11.402, 12.188, 13.008}, //RPM = 199
{ 4.945, 5.871, 6.105, 6.328, 6.914, 7.699, 9.785, 10.254, 10.688, 11.168, 12.750, 13.992}, //RPM = 425
{ 4.430, 5.367, 5.625, 5.859, 6.457, 7.219, 9.574, 10.102, 10.617, 11.156, 12.902, 14.004}, //RPM = 499
{ 1.594, 2.730, 3.070, 3.328, 3.949, 4.746, 8.367, 9.293, 10.254, 11.121, 13.828, 14.590}, //RPM = 896
{ 0.820, 2.004, 2.402, 2.660, 3.293, 4.113, 8.074, 9.105, 10.160, 11.086, 14.086, 14.906}, //RPM = 999
{ -1.805, -0.387, 0.047, 0.316, 0.984, 2.086, 7.137, 8.391, 9.656, 10.934, 14.309, 15.023}, //RPM = 1399
{ -2.566, -1.102, -0.621, -0.352, 0.340, 1.570, 6.855, 8.168, 9.492, 10.910, 14.238, 14.941}, //RPM = 1499
{ -6.082, -4.371, -4.031, -3.762, -2.941, -1.242, 5.215, 6.832, 8.578, 10.652, 13.676, 14.051}, //RPM = 2001
{ -7.266, -5.438, -5.109, -4.863, -4.102, -2.344, 4.172, 5.813, 7.828, 10.207, 13.137, 13.254}, //RPM = 2199
}
};
struct AlphaStruct fuelmap_10 = { //probar este mapa
{
{ 7.980, 8.766, 9.035, 9.164, 9.492, 9.867, 11.215, 11.566, 11.895, 12.246, 13.148, 13.969}, //RPM = 99
{ 6.996, 7.805, 7.992, 8.133, 8.484, 9.023, 10.816, 11.109, 11.379, 11.648, 12.445, 13.266}, //RPM = 199
{ 5.086, 5.988, 6.258, 6.457, 7.055, 7.816, 9.938, 10.441, 10.910, 11.379, 12.996, 14.250}, //RPM = 424
{ 4.523, 5.473, 5.719, 5.965, 6.551, 7.313, 9.703, 10.277, 10.828, 11.391, 13.137, 14.285}, //RPM = 499
{ 1.641, 2.777, 3.141, 3.387, 3.984, 4.770, 8.496, 9.445, 10.465, 11.379, 14.145, 14.895}, //RPM = 896
{ 0.879, 2.063, 2.461, 2.719, 3.352, 4.160, 8.238, 9.305, 10.371, 11.379, 14.438, 15.270}, //RPM = 999
{ -1.699, -0.281, 0.152, 0.422, 1.102, 2.203, 7.383, 8.684, 9.984, 11.355, 14.836, 15.539}, //RPM = 1399
{ -2.426, -0.961, -0.480, -0.211, 0.480, 1.711, 7.137, 8.496, 9.879, 11.355, 14.754, 15.469}, //RPM = 1499
{ -5.906, -4.172, -3.844, -3.551, -2.742, -1.031, 5.684, 7.359, 9.164, 11.309, 14.449, 14.754}, //RPM = 1999
{ -7.043, -5.309, -4.922, -4.676, -3.902, -2.133, 4.699, 6.398, 8.461, 10.934, 14.004, 14.121}, //RPM = 2199
}
};
struct AlphaStruct fuelmap_25 = { //probar este mapa
{
{ 8.098, 8.883, 9.152, 9.293, 9.621, 9.996, 11.355, 11.730, 12.105, 12.469, 13.383, 14.203}, //RPM = 99
{ 7.125, 7.934, 8.109, 8.250, 8.613, 9.152, 10.957, 11.273, 11.578, 11.871, 12.691, 13.512}, //RPM = 199
{ 5.227, 6.117, 6.363, 6.586, 7.172, 7.957, 10.102, 10.594, 11.098, 11.637, 13.254, 14.484}, //RPM = 425
{ 4.652, 5.590, 5.836, 6.059, 6.645, 7.430, 9.891, 10.453, 11.016, 11.625, 13.406, 14.520}, //RPM = 499
{ 1.699, 2.836, 3.176, 3.445, 4.055, 4.863, 8.719, 9.668, 10.676, 11.648, 14.496, 15.270}, //RPM = 896
{ 0.926, 2.109, 2.508, 2.766, 3.398, 4.230, 8.402, 9.492, 10.605, 11.660, 14.813, 15.656}, //RPM = 1000
{ -1.582, -0.164, 0.270, 0.539, 1.207, 2.332, 7.617, 8.977, 10.336, 11.766, 15.328, 16.043}, //RPM = 1399
{ -2.285, -0.832, -0.340, -0.070, 0.621, 1.863, 7.418, 8.883, 10.289, 11.824, 15.305, 15.996}, //RPM = 1499
{ -5.672, -3.961, -3.621, -3.352, -2.555, -0.797, 6.152, 7.816, 9.762, 12.000, 15.246, 15.445}, //RPM = 1997
{ -6.867, -5.051, -4.723, -4.465, -3.703, -1.910, 5.250, 6.996, 9.105, 11.707, 14.895, 15.035}, //RPM = 2199
}
};
struct AlphaStruct fuelmap_60 = { //probar este mapa
{
{ 8.332, 9.117, 9.387, 9.527, 9.855, 10.219, 11.613, 12.047, 12.469, 12.867, 13.816, 14.637}, //RPM = 99
{ 7.348, 8.156, 8.344, 8.484, 8.848, 9.387, 11.215, 11.590, 11.941, 12.270, 13.125, 13.945}, //RPM = 199
{ 5.449, 6.352, 6.586, 6.809, 7.395, 8.180, 10.359, 10.910, 11.461, 12.023, 13.676, 14.918}, //RPM = 425
{ 4.840, 5.777, 6.023, 6.258, 6.844, 7.641, 10.113, 10.758, 11.379, 12.012, 13.863, 14.965}, //RPM = 499
{ 1.770, 2.918, 3.270, 3.527, 4.137, 4.969, 8.953, 9.984, 11.039, 12.129, 15.082, 15.832}, //RPM = 896
{ 1.031, 2.215, 2.613, 2.871, 3.504, 4.336, 8.695, 9.820, 10.969, 12.164, 15.445, 16.277}, //RPM = 999
{ -1.359, 0.023, 0.457, 0.727, 1.395, 2.531, 8.027, 9.516, 10.910, 12.492, 16.207, 16.910}, //RPM = 1399
{ -2.039, -0.574, -0.105, 0.176, 0.879, 2.121, 7.887, 9.422, 10.957, 12.633, 16.207, 16.934}, //RPM = 1499
{ -5.344, -3.609, -3.270, -3.000, -2.191, -0.410, 6.938, 8.801, 10.758, 13.172, 16.523, 16.828}, //RPM = 1999
{ -6.551, -4.699, -4.406, -4.137, -3.375, -1.512, 6.164, 8.004, 10.184, 12.973, 16.418, 16.535}, //RPM = 2199
}
};
struct fuelMapIndexes fuelMapI = { //probar este mapa
{ 100, 200, 425, 500, 900, 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},
{ -5, 10.5 , 27, 45.5, 75.3}
};
#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}
};
#endif