Modèles électriques
Le module Electrical regroupe des outils de bilan et de dimensionnement
électrique basés uniquement sur les données de plaque signalétique et de
documentation constructeur. Deux modèles sont disponibles :
MotorPFCompensation (compensation du facteur de puissance d’un moteur) et
TransformerEnergyBalance (bilan énergétique d’un transformateur).
MotorPFCompensation — compensation du facteur de puissance d’un moteur
Le module MotorPFCompensation dimensionne une batterie de condensateurs pour
réduire la puissance réactive absorbée par un moteur. Par défaut, il vise la
limite réglementaire algérienne \(\tan\varphi \le 0{,}5\) (soit
\(Q \le 0{,}5\,P\)), mais un cos φ cible peut aussi être imposé. Le
condensateur retenu est toujours une valeur normalisée du marché (jamais une
valeur continue calculée), choisie dans une gamme (individuelle, moyenne,
batterie ou complète).
Équations
À partir du courant nominal \(I\), du facteur de puissance \(\cos\varphi\) et de la tension \(U\) (avec \(\sqrt3\) en triphasé, 1 en monophasé) :
L’objectif de réactif \(Q_\text{cible}\) vaut
\(P\cdot\tan(\arccos\cos\varphi_\text{cible})\) si un cos φ cible est
fourni, sinon \(Q_\text{limite}\). La compensation théorique, le réactif
résiduel, le nouveau facteur de puissance et le nouveau courant sont :
Les gains de courant et de pertes Joule, ainsi que la conformité, s’écrivent :
où \(Q_c\) est la valeur normalisée retenue (première valeur de la gamme supérieure ou égale à \(Q_{c,\text{th}}\), avec combinaison possible de plusieurs condensateurs si \(Q_{c,\text{th}}\) dépasse la plus grande unité).
Paramètres
Paramètre |
Description |
Unité / Défaut |
|---|---|---|
I |
Courant nominal absorbé par le moteur |
A |
cos_phi |
Facteur de puissance nominal (0 < cos φ ≤ 1) |
|
U |
Tension réseau |
V (défaut 400) |
name |
Identifiant du moteur (optionnel) |
|
cos_phi_cible |
cos φ cible visé au lieu de la limite 0,5 P (optionnel) |
|
gamme |
« individuelle », « moyenne », « batterie » ou « complete » |
défaut « complete » |
standard_values |
Liste custom de condensateurs normalisés (prioritaire sur gamme) |
liste kVAr |
Qc_impose |
Dimensionnement imposé (test « what-if »), court-circuite la sélection |
kVAr |
allow_combination |
Autorise la combinaison de plusieurs condensateurs |
défaut True |
three_phase |
Triphasé (√3) si True, monophasé sinon |
défaut True |
Gammes normalisées disponibles (kVAr) :
Gamme |
Valeurs (kVAr) |
|---|---|
individuelle |
2.5, 5, 6.25, 7.5, 10, 12.5, 15 |
moyenne |
20, 25, 30, 40, 50 |
batterie |
50, 75, 100, 125, 150, 200, 250, 300, 400, 500, 600, 800, 1000 |
complete |
union triée des trois gammes ci-dessus (défaut) |
Exemple
from Electrical.MotorPFCompensation import MotorPFCompensation
m = MotorPFCompensation(I=100, cos_phi=0.75)
m.calculate()
print(m.df.T)
print(m.Qc) # condensateur normalisé retenu (kVAr)
Sortie réelle m.df pour cet exemple (triphasé 400 V, gamme complète) :
Résultat ( |
Valeur |
Unité |
|---|---|---|
|
51,962 |
kW |
|
45,826 |
kVAr |
|
25,981 |
kVAr |
|
19,845 |
kVAr |
|
20 |
kVAr |
|
[20] |
kVAr |
|
25,826 |
kVAr |
|
0,8955 |
|
|
83,753 |
A |
|
16,25 |
% |
|
29,85 |
% |
|
True |
La fonction compensate_motors(motors) applique le calcul à une liste de
moteurs (dicts ou objets) et retourne un DataFrame, une ligne par moteur.
TransformerEnergyBalance — bilan énergétique d’un transformateur
Le module TransformerEnergyBalance met en évidence les pertes d’un (ou de
\(n\)) transformateur(s) selon le point de charge. Le modèle de pertes est
universel (normes CEI/IEC) et repose uniquement sur les données de plaque
signalétique. La valorisation financière des pertes est optionnelle et agnostique
à la devise.
Équations
Avec \(n\) le nombre de transformateurs identiques en parallèle et le rapport de charge \(S_\text{ch}/S_n\), les pertes en puissance sont :
Le taux de charge par transformateur, les pertes d’énergie annuelles et les coûts optionnels sont :
avec \(T_0\) les heures à vide et \(T_\text{ch}\) les heures en charge (8760 h/an par défaut). Le rendement en charge se déduit de ces pertes : \(\eta = P_\text{utile} / (P_\text{utile} + \Delta P_0 + \Delta P_\text{ch})\), les pertes cuivre \(\Delta P_\text{ch}\) croissant avec le carré de la charge tandis que les pertes fer \(\Delta P_0\) restent constantes.
Paramètres
Paramètre |
Description |
Unité / Défaut |
|---|---|---|
S_n |
Puissance apparente nominale |
kVA |
P0 |
Pertes actives à vide (pertes fer) |
kW |
Pcc |
Pertes actives en charge à 75 °C (pertes cuivre, pleine charge) |
kW |
Ucc |
Tension de court-circuit |
% |
I0 |
Courant à vide |
% |
S_ch |
Puissance apparente de charge totale |
kVA |
P_ch, cos_phi |
Alternative à S_ch : S_ch = P_ch / cos_phi |
kW, - |
n |
Nombre de transformateurs en parallèle sur le même jeu de barre |
défaut 1 |
hours_load |
Heures de fonctionnement en charge (T_ch) |
h (défaut 8760) |
hours_noload |
Heures de fonctionnement à vide (T_0) |
h (défaut 8760) |
cost_active |
Coût moyen de l’énergie active (optionnel) |
devise/kWh |
cost_reactive |
Coût moyen de l’énergie réactive (optionnel) |
devise/kVarh |
currency |
Libellé de la devise (indicatif) |
défaut « « |
U1n, U2n, f, name |
Tensions primaire/secondaire, fréquence, identifiant (informatifs) |
V, V, Hz, - |
Exemple
from Electrical.TransformerEnergyBalance import TransformerEnergyBalance
t = TransformerEnergyBalance(
S_n=1000, P0=2.7, Pcc=78.8, Ucc=5.8, I0=2.7,
S_ch=777.75, hours_load=5280, hours_noload=8760,
)
t.calculate()
print(t.df.T)
print(t.dP_energy_active) # pertes d'énergie active sur l'année (kWh)
Sortie réelle t.df pour cet exemple (un transformateur 1000 kVA, sans coût) :
Résultat ( |
Valeur |
Unité |
|---|---|---|
|
1 |
|
|
1000,0 |
kVA |
|
777,75 |
kVA |
|
77,78 |
% |
|
2,7 |
kW |
|
47,666 |
kW |
|
27,0 |
kVar |
|
35,084 |
kVar |
|
275327,1 |
kWh |
|
421763,1 |
kVarh |
Sans coût fourni (cost_active / cost_reactive), seules les colonnes de
coût restent à None et seul le bilan physique est produit.
Fonctions utilitaires :
balance_transformers(transformers)— applique le bilan à une liste de transformateurs (ou modes de fonctionnement) et retourne un DataFrame, une ligne par entrée.average_energy_cost(posts, unit_scale=1.0, period_hours=24.0)— coût moyen pondéré du kWh (ou du kVarh) à partir d’une grille tarifaire à postes horaires[(prix_unitaire, durée_heures), ...].