Table des matières

Modelling multi-phased AC electrical system interconnexion

Quick and dirty mathematics background and rationale

We suppose that all the multi-phased electrical systems are properly balanced: $ \forall n \in \{1,2\}; Iph_{n} = Iph_{n+1} $.

Let's call $ A = (p_{a}, V_{a}, I_{a}, Iph_{a}) $ and $ B = (p_{b}, V_{b}, I_{b}, Iph_{b}) $ two multi-phased electrical systems where $ p_{a},p_{b} \in \mathbb{N} $ are respectively the number of phases, $ V_{a}, V_{b} \in \mathbb{N} $ are the voltage per phase, $ I_{a}, I_{b} \in \mathbb{N} $ are the total intensity and $ Iph_{a}, Iph_{b} \in \mathbb{N} $ the intensity per phase.
The intensities properties can be deduced one from the other: $ I_{a} = p_{a} \times Iph_{a} $ and $ I_{b} = p_{b} \times Iph_{b} $.

How to evaluate the properties of the resulting system $ A \triangleleft \triangleright B $?
$ A \triangleleft \triangleright B = (p = min(p_{a},p_{b}), V_{A \triangleleft \triangleright B} = min(V_{a}, V_{b}), I_{A \triangleleft \triangleright B} = min(I_{a}, I_{b}), Iph_{A \triangleleft \triangleright B} = min(Iph_{a},Iph_{b})) $

Let's say you only have $ I_{a}, I_{b} $ in $ A $ and $ B $. We can deduce $ Iph_{a}, Iph_{b} $ from them.
How can we deduce $ Iph_{A \triangleleft \triangleright B} $?
$ Iph_{A \triangleleft \triangleright B} = min(I_{a}, I_{b}) \div min(p_{a},p_{b}) $
Division evaluation:

We can expose at least two cases where $ Iph_{A \triangleleft \triangleright B} \notin \mathbb{N} $ if $ p_{a}, p_{b} \in \{2,3\} $

Let's say you only have $ Iph_{a}, Iph_{b} $ in $ A $ and $ B $. We can deduce $ I_{a}, I_{b} $ from them.
How can we deduce $ I_{A \triangleleft \triangleright B} $?
$ I_{A \triangleleft \triangleright B} = min(p_{a},p_{b}) \times min(I_{a}, I_{b}) \in \mathbb{N} $

So if you model an AC electrical system with the properties $ (p, V, Iph) $, you can deduce the properties of any interconnexion of them within the natural integer set.

Star topology with balanced phases

$ I $ is the line current.
$ V $ is the line-to-neutral voltage.
$ U $ is the line-to-line voltage: $ U = \sqrt{3} \times V $.

$$ I = p \times Iph \\ Pph = Vph \times Iph \times \cos(\varphi) \\ P = \sum_{n=1}^{p} Pph_{n} = \sum_{n=1}^{p} Vph_{n} \times Iph_{n} \times \cos(\varphi) = p \times Vph \times Iph \times \cos(\varphi) = Vph \times I \times \cos(\varphi) \\ Qph = Vph \times Iph \times \sin(\varphi) \\ Q = \sum_{n=1}^{p} Qph_{n} = \sum_{n=1}^{p} Vph_{n} \times Iph_{n} \times \sin(\varphi) = p \times Vph \times Iph \times \sin(\varphi) = Vph \times I \times \sin(\varphi) \\ Sph = Vph \times Iph \\ S = \sum_{n=1}^{p} Sph_{n} = \sum_{n=1}^{p} Vph_{n} \times Iph_{n} = p \times Vph \times Iph = Vph \times I $$

Delta topology with balanced phases

$ J $ is the phase current.
$ I $ is the line current: $ I = \sqrt{3} \times J $.
$ U $ is the line-to-line voltage.

$$ J = p \times Jph \\ Pph = Uph \times Jph \times \cos(\varphi) \\ P = \sum_{n=1}^{p} Pph_{n} = \sum_{n=1}^{p} Uph_{n} \times Jph_{n} \times \cos(\varphi) = p \times Uph \times Jph \times \cos(\varphi) = Uph \times J \times \cos(\varphi) \\ Qph = Uph \times Jph \times \sin(\varphi) \\ Q = \sum_{n=1}^{p} Qph_{n} = \sum_{n=1}^{p} Uph_{n} \times Jph_{n} \times \sin(\varphi) = p \times Uph \times Jph \times \sin(\varphi) = Uph \times J \times \sin(\varphi) \\ Sph = Uph \times Jph \\ S = \sum_{n=1}^{p} Sph_{n} = \sum_{n=1}^{p} Uph_{n} \times Jph_{n} = p \times Uph \times Jph = Uph \times J $$

Typescript code sketches

Low level class of electrical helper methods implementation:

/**
 * Targeted to AC related values calculation.
 */
export class ACElectricUtils {
  static amperageTotal(nbOfPhases: number, Iph: number): number {
    return nbOfPhases * Iph;
  }
 
  static powerPerPhase(V: number, Iph: number, cosPhi = 1): number {
    const powerPerPhase = V * Iph * cosPhi;
    if (cosPhi === 1) {
      return powerPerPhase;
    }
    return Math.round(powerPerPhase);
  }
 
  static powerTotal(nbOfPhases: number, V: number, Iph: number, cosPhi = 1): number {
    return nbOfPhases * ACElectricUtils.powerPerPhase(V, Iph, cosPhi);
  }
 
  static amperageTotalFromPower(P: number, V: number, cosPhi = 1): number {
    const amperage = P / (V * cosPhi);
    if (cosPhi === 1 && P % V === 0) {
      return amperage;
    }
    return Math.round(amperage);
  }
 
  static amperagePerPhaseFromPower(nbOfPhases: number, P: number, V: number, cosPhi = 1): number {
    const amperage = ACElectricUtils.amperageTotalFromPower(P, V, cosPhi);
    const amperagePerPhase = amperage / nbOfPhases;
    if (amperage % nbOfPhases === 0) {
      return amperagePerPhase;
    }
    return Math.round(amperagePerPhase);
  }
}
 
/**
 * Targeted to DC related values calculation.
 */
export class DCElectricUtils {
  static power(V: number, I: number): number {
    return V * I;
  }
 
  static amperage(P: number, V: number): number {
    const amperage = P / V;
    if (P % V === 0) {
      return amperage;
    }
    return Math.round(amperage);
  }
}

AC electrical component interface:

interface ElectricACComponent {
  nPhases: number;
  Iph: number;
  V: number;
  I?: number;
  P?: number;
}

Electrical properties calculation of an electric car connected to a AC charging station implementation (the electrical properties of the connexion cable are always beyond):

const Car = {
  nPhases: 2,
  Iph: 18,
  V: 220,
};
 
const ChargingStation = {
  nPhases: 3,
  Iph: 32,
  V: 230,
};
 
function getCombinedElectricObject(Car, ChargingStation): ElectricACComponent {
  return {
    nPhases: Math.min(Car.nPhases, ChargingStation.nPhases),
    Iph: Math.min(Car.Iph, ChargingStation.Iph),
    V: Math.min(Car.V, ChargingStation.V),
    I: ACElectricUtils.amperageTotal(this.nPhases, this.Iph),
    P: ACElectricUtils.powerTotal(this.nPhases, this.Iph, this.V),
  };
}

And now for example you can define a fine grained OCPP charging profile with the following schedule for the electric car connected to the charging station that will include the number of phases used and the max intensity per phase:

const ChargingSchedulePeriod = {
  startPeriod: 60,
  limit: 15, // Sanity check: ensure the limit is below getCombinedElectricObject(Car, ChargingStation).Iph
  numberPhases: getCombinedElectricObject(Car, ChargingStation).nPhases,
};

Modelling multi-phased AC/DC electrical system

AC modelling

See first section.

Rectifier modelling

FIXME

DC modelling

FIXME

Modelling multi-phased DC/AC electrical system

DC modelling

FIXME

Inverter modelling

FIXME

AC modelling

See first section.

References

Composants symétriques : https://fr.qwe.wiki/wiki/Symmetrical_components