Files
shipheart-qt/fonctions_batteries.js

170 lines
6.5 KiB
JavaScript
Executable File

.pragma library
//=====================================================================================
// Fonctions : Fournit une chaine de caractères constituant une liste de valeurs§niveaux
// de batterie. La liste est composée de couples de nombre séparés par des ';'
// et les deux valeurs au sein d'un couple sont séparés par '/'.
// Par exemple : "13800/10000;13400/9800;13150/9600;13000/9400;12900/9000;12800/8000;12443/4887;12100/2000;11800/1000;11500/500;11000/200;10500/0"
// La chaine est établie en fonction du paramètre de 'Tension_nominale' recue en paramètre.
// Reçoit : La tension nomniale (a priori, 12, 24 ou 48)
// Retour : La chaine
//=====================================================================================
function chaine_tension_niveau_batterie_usine(tension)
{
var chaine;
switch(tension)
{
default:
case 12:
chaine = "13.800/100.00";
chaine += ";13.200/98.00";
chaine += ";13.000/96.00";
chaine += ";12.800/94.00";
chaine += ";12.600/90.00";
chaine += ";12.480/80.00";
chaine += ";12.100/30.00";
chaine += ";12.020/20.00";
chaine += ";11.800/10.00";
chaine += ";11.500/5.00";
chaine += ";11.000/2.00";
chaine += ";10.500/0.00";
break;
case 24:
chaine = "27.600/100.00";
chaine += ";26.400/98.00";
chaine += ";26.000/96.00";
chaine += ";25.600/94.00";
chaine += ";25.200/90.00";
chaine += ";24.960/80.00";
chaine += ";24.200/30.00";
chaine += ";24.040/20.00";
chaine += ";23.600/10.00";
chaine += ";23.000/5.00";
chaine += ";22.000/2.00";
chaine += ";21.000/0.00";
break;
case 48:
// Version issue des tables Suncy :
chaine = "56.000/100.00";
chaine += ";50.000/84.00";
chaine += ";49.300/79.00";
chaine += ";49.000/74.00";
chaine += ";48.800/69.00";
chaine += ";48.000/30.00";
chaine += ";47.600/20.00";
chaine += ";47.200/15.00";
chaine += ";46.400/10.00";
chaine += ";45.000/5.00";
chaine += ";43.500/2.00";
chaine += ";42.000/0.00";
break;
}
return(chaine);
}
//=====================================================================================
// Fonctions : Fournit une chaine de caractères constituant une liste de temérature/résistance_interne
// de batterie. La liste est composée de couples de nombre séparés par des ';'
// et les deux valeurs au sein d'un couple sont séparés par '/'.
// La chaine est établie en fonction du paramètre de 'Type' (de batterie) recue en paramètre.
// Reçoit : Le type de batterie
// Retour : La chaine
//=====================================================================================
function chaine_temperature_resistance_interne_usine(type)
{
var chaine;
switch(type)
{
default:
case 0: // Non défini
case 1: // Pb-Acide liquide
case 2: // Pb-AGM/VRLA
case 3: // Pb-Gel
case 4: // Pb-Carbone
chaine = "30/0.9";
chaine += ";25/1.0";
chaine += ";20/1.0";
chaine += ";15/1.1";
chaine += ";10/1.2";
chaine += ";5/1.3";
chaine += ";0/1.6";
chaine += ";-5/1.8";
chaine += ";-10/2.3";
chaine += ";-15/2.9";
chaine += ";-20/3.7";
chaine += ";-25/4.7";
chaine += ";-30/6.0"; // 30/0.9;25/1.0;20/1.0;15/1.1;10/1.2;5/1.3;0/1.6;-5/1.8;-10/2.3;-15/2.9;-20/3.7;-25/4.7;-30/6.0
break;
case 10: // Lithium
chaine = "25/0.8";
chaine += ";20/1.0";
chaine += ";15/1.0";
chaine += ";10/1.3";
chaine += ";5/1.8";
chaine += ";0/3.0";
chaine += ";-5/4.5";
chaine += ";-10/6.3";
chaine += ";-15/8.3";
chaine += ";-20/11.0";
chaine += ";-25/16.0";
chaine += ";-30/23.0"; // 25/0.8;20/1.0;15/1.0;10/1.3;5/1.8;0/3.0;-5/4.5;-10/6.3;-15/8.3;-20/11.0;-25/16.0;-30/23.0
break;
}
return(chaine);
}
//=====================================================================================
// Fonctions : Calcule le coefficient de Peukert à partir de 2 couples de Capacité/Durée
// de batterie. Si ces valeurs ne sont pas exploitables, la fonction renvoit la
// valeur par défaut dépendant du type de batterie.
// La formule pour calculer le coefficient est :
// n = log (T0/T1) / [log(C1/C0) - log (T1/T0)]
// Reçoit : Le type de batterie, la capacité 1 et la durée 1, la capacité 2 et la durée 2
// Retour : Le coefficient de Peukert
//=====================================================================================
function coefficient_de_peukert(type, capacite_1, heures_capacite_1, capacite_2, heures_capacite_2)
{
var coeff_peukert = 0;
if ((capacite_1 > 0) && (heures_capacite_1 > 0) && (capacite_2 > 0) && (heures_capacite_2 > 0))
{
var denom = (Math.log(capacite_2/capacite_1) - Math.log(heures_capacite_2/heures_capacite_1));
if (denom !== 0) coeff_peukert = Math.log(heures_capacite_1/heures_capacite_2) / denom;
}
if (coeff_peukert < 1) // On traite le cas où on n'a fait aucun calcul, où 'denom' est nul et si le résultat lui-même n'est pas conforme.
{
switch(type)
{
default:
case 0: // Non défini
coeff_peukert = 1.25
break;
case 1: // Plomb acide liquide
coeff_peukert = 1.30
break;
case 2: // Plomb AGM
coeff_peukert = 1.10
break;
case 3: // Plomb Gel
coeff_peukert = 1.10
break;
case 4: // Plomb Carbone
coeff_peukert = 1.15
break;
case 10: // Lithium
coeff_peukert = 1.05
break;
}
}
return(coeff_peukert);
}