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é) :

\[\begin{split}P &= \sqrt3 \cdot U \cdot I \cdot \cos\varphi \;/\; 1000 \quad [\text{kW}] \\ Q &= P \cdot \tan(\arccos\cos\varphi) \quad [\text{kVAr}] \\ Q_\text{limite} &= 0{,}5 \cdot P \quad [\text{kVAr}]\end{split}\]

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 :

\[\begin{split}Q_{c,\text{th}} &= Q - Q_\text{cible} \\ Q_\text{new} &= Q - Q_c \\ \cos\varphi_\text{new} &= \frac{P}{\sqrt{P^2 + Q_\text{new}^2}} \\ I_\text{new} &= \frac{P \cdot 1000}{\sqrt3 \cdot U \cdot \cos\varphi_\text{new}}\end{split}\]

Les gains de courant et de pertes Joule, ainsi que la conformité, s’écrivent :

\[\begin{split}\text{gain}_I &= \frac{I - I_\text{new}}{I} \cdot 100 \quad [\%] \\ \text{gain}_\text{pertes} &= \left(1 - \left(\frac{I_\text{new}}{I}\right)^2\right) \cdot 100 \quad [\%] \\ \text{conforme} &\iff Q_\text{new} \le Q_\text{limite}\end{split}\]

\(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 (m.df)

Valeur

Unité

P_kW

51,962

kW

Q_kVAr

45,826

kVAr

Q_limite_kVAr

25,981

kVAr

Qc_theorique_kVAr

19,845

kVAr

Qc_normalise_kVAr

20

kVAr

condensateurs_kVAr

[20]

kVAr

Q_residuel_kVAr

25,826

kVAr

cos_phi_nouveau

0,8955

I_nouveau_A

83,753

A

gain_courant_%

16,25

%

gain_pertes_%

29,85

%

conforme_Q_inf_0.5P

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 :

\[\begin{split}\Delta P_0 &= n \cdot P_0 \quad \text{(pertes fer, à vide)} \\ \Delta P_\text{ch} &= \frac{1}{n} \cdot P_\text{cc} \cdot \left(\frac{S_\text{ch}}{S_n}\right)^2 \quad \text{(pertes cuivre, en charge)} \\ \Delta Q_0 &= n \cdot \frac{I_0}{100} \cdot S_n \quad \text{(réactif à vide)} \\ \Delta Q_\text{ch} &= \frac{1}{n} \cdot \frac{U_\text{cc}}{100} \cdot \frac{S_\text{ch}^2}{S_n} \quad \text{(réactif en charge)}\end{split}\]

Le taux de charge par transformateur, les pertes d’énergie annuelles et les coûts optionnels sont :

\[\begin{split}\tau_\text{charge} &= \frac{S_\text{ch}}{n \cdot S_n} \cdot 100 \quad [\%] \\ \Delta E_P &= \Delta P_0 \cdot T_0 + \Delta P_\text{ch} \cdot T_\text{ch} \quad [\text{kWh}] \\ \Delta E_Q &= \Delta Q_0 \cdot T_0 + \Delta Q_\text{ch} \cdot T_\text{ch} \quad [\text{kVarh}] \\ C_{ea} &= \Delta E_P \cdot c_\text{active}, \quad C_{er} = \Delta E_Q \cdot c_\text{réactive}, \quad C_{et} = C_{ea} + C_{er}\end{split}\]

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 (t.df)

Valeur

Unité

n_transformateurs

1

S_n_kVA

1000,0

kVA

S_charge_kVA

777,75

kVA

taux_charge_%

77,78

%

pertes_actives_vide_kW

2,7

kW

pertes_actives_charge_kW

47,666

kW

pertes_reactives_vide_kVar

27,0

kVar

pertes_reactives_charge_kVar

35,084

kVar

energie_active_perdue_kWh

275327,1

kWh

energie_reactive_perdue_kVarh

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), ...].