Help

Protection Coordination TCC

Jump to section

Overview

The Protection Coordination TCC calculator generates Time-Current Characteristic curves for up to 8 protection devices on a single log-log chart. It verifies that adjacent protective devices are properly coordinated — i.e. the downstream device operates faster than the upstream device by a specified time margin.

The calculator provides:

  • TCC curve generation — log-log SVG chart with all device curves
  • Tolerance bands — ±15% for circuit breakers, ±10% for relays
  • Coordination check — automatic verification of time grading between adjacent pairs
  • Multiple device types — circuit breakers (IEC/ANSI/IEEE/LSI), fuses, cables, transformers, motors, relays
  • Multiple standards — IEC 60255, ANSI, IEEE C37.112 curve families

Input Parameters

Parameter Type Default Description
System VoltageSelect415 VNominal system voltage
I Min / I MaxNumber10 / 100,000 ACurrent axis range; I Max is also the maximum fault current up to which coordination is checked
t Min / t MaxNumber0.01 / 1,000 sTime axis range
Coordination MarginNumber0.3 sRequired time gap between adjacent devices
DevicesJSON[]Array of up to 8 protection devices

Device Types

Circuit Breaker

Supports IEC 60255 (SI, VI, EI, LTI, DT), ANSI (MI, VI, EI, STI, LTI, DT), IEEE C37.112 (U1–U5, DT), and LSI (Long-time/Short-time/Instantaneous) trip units. Tolerance bands at ±15%.

Fuse

Supports gG, gM, aM, and aR fuse types with pre-arcing and total clearing curves. gG and gM use a generic curve that passes inside the IEC 60269-1 gates (rated currents 16–1250 A); aM and aR use an uncited generic shape.

Cable

Adiabatic damage curve: t = (k×S)²/I². Supports Cu and Al conductors with PVC, XLPE, EPR, and MI insulation. Accounts for parallel cables.

Transformer

Through-fault damage curve: t = 1250/M² (per ANSI/IEEE C57.109). Magnetising inrush envelope (8-point standard curve).

Motor

Starting current curve (decaying from LRC to FLA). Thermal damage curve: t = 30/M².

Relay

Same curve families as breakers but with CT ratio conversion from secondary to primary amps. Tolerance bands at ±10%.

Output Results

  • TCC Chart — SVG log-log plot with all device curves, tolerance bands, and legend
  • Coordination Status — PASS/FAIL for each adjacent device pair
  • Minimum Margin — smallest upstream − downstream operating time between adjacent devices, and the current where it occurs
  • Device Summary — table of all devices with ratings and settings

Formulas

IEC/ANSI/IEEE Inverse-Time Curve

t = TMS × (A / (M^p - 1) + B)

Where M = I / I_pickup, TMS = Time Multiplier Setting.

IEC 60255 Curves
CurveABp
SI (Standard Inverse)0.1400.02
VI (Very Inverse)13.501.0
EI (Extremely Inverse)8002.0
LTI (Long Time Inverse)12001.0
DT (Definite Time)010
ANSI Curves
CurveABp
MI (Moderately Inverse)0.05150.1140.02
VI (Very Inverse)19.610.4912.0
EI (Extremely Inverse)28.20.12172.0
STI (Short Time Inverse)0.003420.002620.02
LTI (Long Time Inverse)5.61432.185921.0
DT (Definite Time)010
IEEE U-curves (U1–U5)

These are the U.S. relay curves as numbered in SEL relays (SEL-351 / SEL-751 instruction manuals): t = TD × (B + A ÷ (Mp − 1)). U1, U3 and U4 are the IEEE C37.112-2018 Table 1 moderately, very and extremely inverse shapes (the MI/VI/EI rows of the ANSI table above) with the time dial rescaled by about 1/5, so a U-curve TD of 5 is close to a C37.112 TD of 1. U2 (inverse) and U5 (short-time inverse) have no C37.112 counterpart.

CurveABp
U1 (Moderately Inverse)0.01040.02260.02
U2 (Inverse)5.950.1802.0
U3 (Very Inverse)3.880.09632.0
U4 (Extremely Inverse)5.640.024342.0
U5 (Short Time Inverse)0.003420.002620.02
DT (Definite Time)010

Instantaneous Element

Above the instantaneous pickup the operating time is the instantaneous time; below it the inverse-time curve applies. The bands are piecewise by current, as a trip-unit or relay TCC is drawn: the inverse equation is never extrapolated past the instantaneous pickup to a time faster than the instantaneous time.

LSI Circuit Breaker

Electronic trip unit bands per IEC 60947-2 cl. 8.3.3 (overload, short-time-delay and instantaneous releases; UL 489 / IEEE Std 1015 for LSI trip units). Each band governs only its own current range:

Long-time:     t = TD × (6/M)²   (1.05 Ir ≤ I < Ir × ST_pickup)
Short-time:    t = ST_delay      (Ir × ST_pickup ≤ I < Inst_pickup)
Instantaneous: t = Inst_delay    (I ≥ Inst_pickup)

Cable Adiabatic Equation

t = (k × S)² / I²

Where k = conductor constant (Cu/PVC=115, Cu/XLPE=143, Al/PVC=76, Al/XLPE=94), S = CSA in mm².

Fuse Characteristic (gG / gM)

A generic gG pre-arcing curve built from the IEC 60269-1:2006 limits for the rated current In (gM: the characteristic current Ich, which takes the gG gates). Four points are placed mid-window (geometric mean) of each limit, so the curve passes inside every gate:

Provisional data: the IEC 60269-1 Table 3 gate currents and Table 7 pre-arcing I²t limits used here are pending verification against a licensed copy of the standard (the 1000 A and 1250 A I²t rows in particular). Treat fuse curves as indicative until verified.
PointCurrentPre-arcing timeSource
1√(Inf·If) = √(1.25×1.6) In = 1.414 In conventional time: 1 h (≤ 63 A), 2 h (≤ 160 A), 3 h (≤ 400 A), 4 hTable 2
2√(Imin(10 s)·Imax(5 s))√(10×5) = 7.07 sTable 3 gates
3√(Imin(0.1 s)·Imax(0.1 s))0.1 sTable 3 gates
4√((I²t)0.01 / 0.01), (I²t)0.01 = √(I²tmin·I²tmax)0.01 sTable 7 pre-arcing I²t
Between points (log-log straight line):  t_pre = t1 × (t2/t1)^( ln(I/I1) / ln(I2/I1) )
Above point 4 (constant pre-arcing I²t): t_pre = (I²t)0.01 / I²
Below point 1: no operation (the curve starts at 1.414 In)
Total clearing:                          t_total = t_pre + min(0.01 s, (I²t)0.01 / I²)

The total-clearing arcing allowance (half a 50 Hz cycle, reduced where the fuse is current-limiting so that the operating I²t is 2× the pre-arcing I²t) is a generic assumption, not an IEC 60269 value. Worked example, 100 A gG (gates 290 / 580 / 820 / 1450 A, I²t 27–86 kA²s): points (141.4 A, 7200 s), (410.1 A, 7.07 s), (1090.4 A, 0.1 s), (2195.2 A, 0.01 s); pre-arcing 67.4 s at 290 A (gate ≥ 10 s), 1.56 s at 580 A (≤ 5 s), 0.346 s at 820 A (≥ 0.1 s), 0.039 s at 1450 A (≤ 0.1 s); total clearing at 3 kA = 2 × 48 187 / 3000² = 0.0107 s.

aM / aR

Uncited generic shape (not checked against a standard; aR characteristics are manufacturer-specific): t = 10^(3.0 − 5.6 × log10(M)) × 0.8 (pre-arc) / 1.2 (total) below 4 In, t = k × In² / I² above (aM k = 15 / 25, aR k = 3 / 5), starting at 1.3 In.

Transformer Damage

t = 1250 / M²    where M = I / FLA

Transformer FLA

I_FLA = kVA × 1000 / (√3 × V)

Motor Starting Curve

I(t) = FLA + (LRC - FLA) × (1 - t/t_start)^0.5

Where FLA = full-load amps, LRC = locked rotor current, tstart = starting time.

Motor Thermal Damage

t = 30 / M²    where M = I / FLA

Motor FLA

I_FLA = kW × 1000 / (√3 × V × η × cos φ)

Relay CT Conversion

I_primary = I_pickup(sec) × CT_pri / CT_sec

Note: Relay uses the same IEC/ANSI/IEEE curve formula as breakers.

Worked Examples

The 13 examples below are the validation cases for this calculation. Each one was produced by the calculation engine from the inputs shown, every figure was checked against the independent reference quoted at the end of the example, and the same cases are run against every engine build (see validation scorecard, tool fe_calc_protection; worked examples for every calculation).

#CaseDevicesIf (A)t at If (s)Min margin (s)Result
1IEC SI at M = 2: overload-region gradingCB 100A → R 150A2003.0087 / 7.27874.270 (≥ 0.3)PASS
2IEC SI relay over an SI breakerCB 100A → R 400A4,0000.1828 / 0.89120.708 (≥ 0.3)PASS
3Two definite-time stages, 0.4 s apartCB 100A → CB 400A10,0000.2 / 0.60.400 (≥ 0.3)PASS
4IEC EI feeder under a VI incomer fails at high currentR feeder EI → R incomer VI8,0000.015 / 0.14210.127 (≥ 0.3)FAIL
5IEEE C37.112 VI feeder under an MI mainR feeder VI → R main MI6,0000.5401 / 2.73282.193 (≥ 0.3)PASS
6IEC EI relay over a 100 A gG fuse fails at 3 kAF 100A gG → R 400A EI3,0000.0107 / 0.28960.279 (≥ 0.3)FAIL
7IEEE U4 relay over a 0.1 s definite-time breaker failsCB 200A DT → R 600A U46,0000.1 / 0.16260.063 (≥ 0.3)FAIL
8Three-level chain: SI breaker, LSI ACB, SI relayCB 100A SI → ACB 400A LSI → R 1200A SI7,0000.02 / 0.4 / 1.94980.380 (≥ 0.3)PASS
9IEEE U3 feeder under a U1 mainR feeder U3 → R main U16,0000.212 / 1.37761.166 (≥ 0.3)PASS
10IEEE U2 relay over a 100 A gG fuseF 100A gG → R 400A U23,0000.0107 / 0.57540.565 (≥ 0.3)PASS
11IEEE U3 relay over a 0.1 s definite-time breakerCB 200A DT → R 600A U36,0000.1 / 0.5420.442 (≥ 0.3)PASS
12LSI short-time band governs above IsdCB 100A EI → ACB 400A LSI8,0000.02 / 0.40.380 (≥ 0.3)PASS
13Instantaneous band is not undercut by the EI curveR feeder EI → R incomer SI16,0000.05 / 0.34010.290 (≥ 0.3)FAIL

Example 1 — IEC SI at M = 2: overload-region grading

At a 200 A overload the 100 A SI breaker sits at M = 2 (t = 3.009 s, the classic 0.3 TMS check value) and the 150 A SI relay at M = 1.33; the margin is smallest at the 200 A maximum current itself.

Given: CB 100A: breaker, pickup 100 A, IEC SI, TMS 0.3, no instantaneous; R 150A: relay on a 200/5 CT, pickup 3.75 A secondary, IEC SI, TMS 0.3, no instantaneous. Maximum prospective fault current If = 200 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 100A (100 A) → R 150A (150 A)
CB 100AM = 200 ÷ 100 = 2.000; IEC SI (standard inverse, A = 0.14, p = 0.02): t = TMS × (A ÷ (Mp − 1)) = 0.3 × (0.14 ÷ (2.0000.02 − 1)) = 0.3 × (0.14 ÷ 0.013959) = 3.009 s; t(If) = 3.0087 s
R 150AIs = 3.75 × 200/5 = 150 A; M = 200 ÷ 150 = 1.333; IEC SI (standard inverse, A = 0.14, p = 0.02): t = TMS × (A ÷ (Mp − 1)) = 0.3 × (0.14 ÷ (1.3330.02 − 1)) = 0.3 × (0.14 ÷ 0.0057702) = 7.279 s; t(If) = 7.2787 s
Margin CB 100A → R 150AtR 150A − tCB 100A over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 4.270 s at 200 A; at If: 7.2787 − 3.0087 = 4.270 s → 4.270 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 4.270 s against 0.3 s required; governing: selectivity: CB 100A → R 150A
ReferenceHand calculation, IEC 60255-151 t = TMS × A ÷ (M^p − 1) (SI 0.14/0.02, VI 13.5/1, EI 80/2), M = I ÷ Is; CB M = 200/100 = 2 → 0.3 × 0.14 ÷ (2^0.02 − 1) = 0.3 × 0.14 ÷ 0.013959 = 3.009 s; relay pickup 3.75 × 200/5 = 150 A, M = 1.333 → 0.3 × 0.14 ÷ 0.0057702 = 7.279 s; margin at 200 A = 7.279 − 3.009 = 4.270 s (it only grows towards the 157.5 A relay curve start); margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: CB 100A t(200 A) = 3.009 s; R 150A t(200 A) = 7.279 s; CB 100A → R 150A: smallest margin at test current 200.0 A = 7.279 − 3.009 = 4.270 s ≥ 0.3 s (validation case c0039-iec-si-overload-region-m2)

Example 2 — IEC SI relay over an SI breaker

A 400 A SI relay (TMS 0.3) grades over a 100 A SI breaker (TMS 0.1) up to 4 kA; the smallest margin is at the 4 kA fault.

Given: R 400A: relay on a 400/5 CT, pickup 5 A secondary, IEC SI, TMS 0.3, no instantaneous; CB 100A: breaker, pickup 100 A, IEC SI, TMS 0.1, no instantaneous. Maximum prospective fault current If = 4,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 100A (100 A) → R 400A (400 A)
CB 100AM = 4,000 ÷ 100 = 40.00; IEC SI (standard inverse, A = 0.14, p = 0.02): t = TMS × (A ÷ (Mp − 1)) = 0.1 × (0.14 ÷ (40.000.02 − 1)) = 0.1 × (0.14 ÷ 0.076567) = 0.1828 s; t(If) = 0.1828 s
R 400AIs = 5 × 400/5 = 400 A; M = 4,000 ÷ 400 = 10.00; IEC SI (standard inverse, A = 0.14, p = 0.02): t = TMS × (A ÷ (Mp − 1)) = 0.3 × (0.14 ÷ (10.000.02 − 1)) = 0.3 × (0.14 ÷ 0.047129) = 0.8912 s; t(If) = 0.8912 s
Margin CB 100A → R 400AtR 400A − tCB 100A over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.708 s at 4,000 A; at If: 0.8912 − 0.1828 = 0.708 s → 0.708 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 0.708 s against 0.3 s required; governing: selectivity: CB 100A → R 400A
ReferenceHand calculation, IEC 60255-151 t = TMS × A ÷ (M^p − 1) (SI 0.14/0.02, VI 13.5/1, EI 80/2), M = I ÷ Is; relay M = 4000 ÷ 400 = 10 → 0.3 × 0.14 ÷ 0.047129 = 0.891 s; breaker M = 40 → 0.1 × 0.14 ÷ 0.076568 = 0.183 s; margin at 4 kA = 0.891 − 0.183 = 0.708 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: R 400A t(4000 A) = 0.8912 s; CB 100A t(4000 A) = 0.1828 s; CB 100A → R 400A: smallest margin at test current 4000.0 A = 0.8912 − 0.1828 = 0.708 s ≥ 0.3 s (validation case c0039-iec-si-relay-over-breaker)

Example 3 — Two definite-time stages, 0.4 s apart

Definite-time elements grade by their set times alone: 0.6 − 0.2 = 0.4 s at every common current.

Given: CB 100A: breaker, pickup 100 A, IEC DT, TMS 0.2, no instantaneous; CB 400A: breaker, pickup 400 A, IEC DT, TMS 0.6, no instantaneous. Maximum prospective fault current If = 10,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 100A (100 A) → CB 400A (400 A)
CB 100AM = 10,000 ÷ 100 = 100.0; definite time: t = TMS = 0.2 s; t(If) = 0.2 s
CB 400AM = 10,000 ÷ 400 = 25.00; definite time: t = TMS = 0.6 s; t(If) = 0.6 s
Margin CB 100A → CB 400AtCB 400A − tCB 100A over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.400 s at 420 A; at If: 0.6 − 0.2 = 0.400 s → 0.400 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 0.400 s against 0.3 s required; governing: selectivity: CB 100A → CB 400A
ReferenceHand calculation, definite time t = TMS × 1 → 0.2 s and 0.6 s; margin 0.6 − 0.2 = 0.4 s ≥ 0.3 s at every common current: CB 100A t(10000 A) = 0.2 s; CB 400A t(10000 A) = 0.6 s; CB 100A → CB 400A: smallest margin at test current 420.0 A = 0.6 − 0.2 = 0.400 s ≥ 0.3 s (validation case c0039-two-definite-time-breakers)

Example 4 — IEC EI feeder under a VI incomer fails at high current

An extremely-inverse feeder relay is very fast at 8 kA (0.015 s) but the very-inverse incomer only drops to 0.142 s, so the margin falls to 0.127 s at the fault current.

Given: R feeder EI: relay on a 200/5 CT, pickup 5 A secondary, IEC EI, TMS 0.3, no instantaneous; R incomer VI: relay on a 400/5 CT, pickup 5 A secondary, IEC VI, TMS 0.2, no instantaneous. Maximum prospective fault current If = 8,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: R feeder EI (200 A) → R incomer VI (400 A)
R feeder EIIs = 5 × 200/5 = 200 A; M = 8,000 ÷ 200 = 40.00; IEC EI (extremely inverse, A = 80, p = 2): t = TMS × (A ÷ (Mp − 1)) = 0.3 × (80 ÷ (40.002 − 1)) = 0.3 × (80 ÷ 1599.0) = 0.01501 s; t(If) = 0.015 s
R incomer VIIs = 5 × 400/5 = 400 A; M = 8,000 ÷ 400 = 20.00; IEC VI (very inverse, A = 13.5, p = 1): t = TMS × (A ÷ (Mp − 1)) = 0.2 × (13.5 ÷ (20.001 − 1)) = 0.2 × (13.5 ÷ 19.000) = 0.1421 s; t(If) = 0.1421 s
Margin R feeder EI → R incomer VItR incomer VI − tR feeder EI over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.127 s at 8,000 A; at If: 0.1421 − 0.015 = 0.127 s; 49 test current(s) below 0.3 s, worst near 8,000 A → 0.127 vs limit 0.300 s FAIL
Result0/1 checks pass → FAIL; minimum margin 0.127 s against 0.3 s required; governing: selectivity: R feeder EI → R incomer VI. R feeder EI → R incomer VI: margin below 0.3 s at 49 test current(s), worst near 8000 A.
ReferenceHand calculation, IEC 60255-151 t = TMS × A ÷ (M^p − 1) (SI 0.14/0.02, VI 13.5/1, EI 80/2), M = I ÷ Is; feeder EI M = 8000 ÷ 200 = 40 → 0.3 × 80 ÷ (40² − 1) = 0.0150 s; incomer VI M = 20 → 0.2 × 13.5 ÷ 19 = 0.1421 s; margin at 8 kA = 0.1421 − 0.0150 = 0.127 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: R feeder EI t(8000 A) = 0.01501 s; R incomer VI t(8000 A) = 0.1421 s; R feeder EI → R incomer VI: smallest margin at test current 8000.0 A = 0.1421 − 0.01501 = 0.127 s < 0.3 s (validation case c0039-iec-ei-under-vi-fails)

Example 5 — IEEE C37.112 VI feeder under an MI main

ANSI/IEEE C37.112 curves (with the B adder): a very-inverse feeder relay grades under a moderately-inverse main relay at 6 kA.

Given: R feeder VI: relay on a 300/5 CT, pickup 5 A secondary, ANSI VI, TD 1, no instantaneous; R main MI: relay on a 800/5 CT, pickup 5 A secondary, ANSI MI, TD 2, no instantaneous. Maximum prospective fault current If = 6,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: R feeder VI (300 A) → R main MI (800 A)
R feeder VIIs = 5 × 300/5 = 300 A; M = 6,000 ÷ 300 = 20.00; ANSI VI (very inverse, A = 19.61, B = 0.491, p = 2): t = TD × (A ÷ (Mp − 1) + B) = 1 × (19.61 ÷ (20.002 − 1) + 0.491) = 1 × (19.61 ÷ 399.00 + 0.491) = 0.5401 s; t(If) = 0.5401 s
R main MIIs = 5 × 800/5 = 800 A; M = 6,000 ÷ 800 = 7.500; ANSI MI (moderately inverse, A = 0.0515, B = 0.114, p = 0.02): t = TD × (A ÷ (Mp − 1) + B) = 2 × (0.0515 ÷ (7.5000.02 − 1) + 0.114) = 2 × (0.0515 ÷ 0.041121 + 0.114) = 2.733 s; t(If) = 2.7328 s
Margin R feeder VI → R main MItR main MI − tR feeder VI over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 2.193 s at 6,000 A; at If: 2.7328 − 0.5401 = 2.193 s → 2.193 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 2.193 s against 0.3 s required; governing: selectivity: R feeder VI → R main MI
ReferenceHand calculation, IEEE C37.112 t = TD × (A ÷ (M^p − 1) + B), MI A 0.0515 B 0.1140 p 0.02, VI A 19.61 B 0.491 p 2; feeder M = 6000 ÷ 300 = 20 → 1 × (19.61 ÷ 399 + 0.491) = 0.5401 s; main M = 7.5 → 2 × (0.0515 ÷ 0.041121 + 0.114) = 2.733 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: R feeder VI t(6000 A) = 0.5401 s; R main MI t(6000 A) = 2.733 s; R feeder VI → R main MI: smallest margin at test current 6000.0 A = 2.733 − 0.5401 = 2.193 s ≥ 0.3 s (validation case c0039-ansi-vi-under-mi)

Example 6 — IEC EI relay over a 100 A gG fuse fails at 3 kA

An extremely-inverse relay is the natural partner of a fuse, but at TMS 0.2 it falls to 0.290 s at a 3 kA fault: the margin over the fuse's 11 ms total clearing is 0.279 s, short of the default 0.3 s. Checking the fault current itself (not only test currents below it) is what catches this.

Given: F 100A gG: 100 A gG fuse; R 400A EI: relay on a 400/5 CT, pickup 5 A secondary, IEC EI, TMS 0.2, no instantaneous. Maximum prospective fault current If = 3,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: F 100A gG (100 A) → R 400A EI (400 A)
F 100A gGM = 3,000 ÷ 100 = 30.00 ≥ 4 → total clearing t = k × In² ÷ I² (I²t region, component generic gG constant) = 8 × 100² ÷ 3,000² = 0.00889 s; t(If) = 0.0107 s
R 400A EIIs = 5 × 400/5 = 400 A; M = 3,000 ÷ 400 = 7.500; IEC EI (extremely inverse, A = 80, p = 2): t = TMS × (A ÷ (Mp − 1)) = 0.2 × (80 ÷ (7.5002 − 1)) = 0.2 × (80 ÷ 55.250) = 0.2896 s; t(If) = 0.2896 s
Margin F 100A gG → R 400A EItR 400A EI − tF 100A gG over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.279 s at 3,000 A; at If: 0.2896 − 0.0107 = 0.279 s; 3 test current(s) below 0.3 s, worst near 3,000 A → 0.279 vs limit 0.300 s FAIL
Result0/1 checks pass → FAIL; minimum margin 0.279 s against 0.3 s required; governing: selectivity: F 100A gG → R 400A EI. Fuse curves are generic (gG/gM: a curve inside the IEC 60269-1 Table 2/3/7 limits; aM/aR: an uncited shape), not a manufacturer's characteristic: confirm with the fuse maker's time-current and I²t data. F 100A gG → R 400A EI: margin below 0.3 s at 3 test current(s), worst near 3000 A.
ReferenceHand calculation, gG 100 A total clearing (IEC 60269-1:2006 generic curve): 3 kA is above the 0.01 s point √(48 187 ÷ 0.01) = 2195 A, where pre-arcing I²t is constant at √(27 000 × 86 000) = 48 187 A²s (Table 7 geometric mean) and the arcing allowance equals it: t = 2 × 48 187 ÷ 3000² = 0.01071 s; relay IEC EI M = 3000 ÷ 400 = 7.5 → 0.2 × 80 ÷ (7.5² − 1) = 0.2896 s; margin at 3 kA = 0.2896 − 0.0107 = 0.279 s < 0.3 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: F 100A gG t(3000 A) = 0.01071 s; R 400A EI t(3000 A) = 0.2896 s; F 100A gG → R 400A EI: smallest margin at test current 3000.0 A = 0.2896 − 0.01071 = 0.279 s < 0.3 s (validation case c0039-ei-relay-over-gg-fuse)

Example 7 — IEEE U4 relay over a 0.1 s definite-time breaker fails

An extremely-inverse U4 relay keeps falling with current while the definite-time stage stays at 0.1 s, so the margin collapses to about 0.06 s at 6 kA.

Given: CB 200A DT: breaker, pickup 200 A, IEC DT, TMS 0.1, no instantaneous; R 600A U4: relay on a 600/5 CT, pickup 5 A secondary, IEEE U4, TD 2, no instantaneous. Maximum prospective fault current If = 6,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 200A DT (200 A) → R 600A U4 (600 A)
CB 200A DTM = 6,000 ÷ 200 = 30.00; definite time: t = TMS = 0.1 s; t(If) = 0.1 s
R 600A U4Is = 5 × 600/5 = 600 A; M = 6,000 ÷ 600 = 10.00; IEEE U4 (SEL extremely inverse, A = 5.64, B = 0.02434, p = 2): t = TD × (A ÷ (Mp − 1) + B) = 2 × (5.64 ÷ (10.002 − 1) + 0.02434) = 2 × (5.64 ÷ 99.000 + 0.02434) = 0.1626 s; t(If) = 0.1626 s
Margin CB 200A DT → R 600A U4tR 600A U4 − tCB 200A DT over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.063 s at 6,000 A; at If: 0.1626 − 0.1 = 0.063 s; 29 test current(s) below 0.3 s, worst near 6,000 A → 0.063 vs limit 0.300 s FAIL
Result0/1 checks pass → FAIL; minimum margin 0.063 s against 0.3 s required; governing: selectivity: CB 200A DT → R 600A U4. CB 200A DT → R 600A U4: margin below 0.3 s at 29 test current(s), worst near 6000 A.
ReferenceHand calculation, U4 (SEL U.S. extremely inverse) t = TD × (5.64 ÷ (M² − 1) + 0.02434); M = 6000 ÷ 600 = 10 → 2 × (5.64 ÷ 99 + 0.02434) = 0.1626 s; definite time 0.1 × 1 = 0.1 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: CB 200A DT t(6000 A) = 0.1 s; R 600A U4 t(6000 A) = 0.1626 s; CB 200A DT → R 600A U4: smallest margin at test current 6000.0 A = 0.1626 − 0.1 = 0.063 s < 0.3 s (validation case c0039-ieee-u4-over-definite-time-fails)

Example 8 — Three-level chain: SI breaker, LSI ACB, SI relay

A 100 A breaker with a 1 kA instantaneous, a 400 A LSI ACB (long-time 4 s at 6 × Ir, short-time 6 × Ir at 0.4 s) and a 1200 A SI relay: the ACB's short-time band sets a 0.38 s margin over the instantaneous trip.

Given: CB 100A SI: breaker, pickup 100 A, IEC SI, TMS 0.1, instantaneous 1,000 A (0.02 s); ACB 400A LSI: LSI breaker, Ir = 400 A, long-time band 4 s at 6 × Ir, short-time 6 × Ir at 0.4 s, no instantaneous; R 1200A SI: relay on a 1,200/5 CT, pickup 5 A secondary, IEC SI, TMS 0.5, no instantaneous. Maximum prospective fault current If = 7,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 100A SI (100 A) → ACB 400A LSI (400 A) → R 1200A SI (1,200 A)
CB 100A SIM = 7,000 ÷ 100 = 70.00; I ≥ instantaneous pickup 1,000 A → instantaneous band, t = 0.02 s (the inverse-time curve apply only below 1,000 A); t(If) = 0.02 s
ACB 400A LSIM = 7,000 ÷ 400 = 17.50; short-time pickup 6 × 400 = 2,400 A ≤ I → short-time band, t = tsd = 0.4 s (long-time applies only below 2,400 A); t(If) = 0.4 s
R 1200A SIIs = 5 × 1,200/5 = 1,200 A; M = 7,000 ÷ 1,200 = 5.833; IEC SI (standard inverse, A = 0.14, p = 0.02): t = TMS × (A ÷ (Mp − 1)) = 0.5 × (0.14 ÷ (5.8330.02 − 1)) = 0.5 × (0.14 ÷ 0.035901) = 1.950 s; t(If) = 1.9498 s
Margin CB 100A SI → ACB 400A LSItACB 400A LSI − tCB 100A SI over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.380 s at 2,400 A; at If: 0.4 − 0.02 = 0.380 s → 0.380 vs limit 0.300 s PASS
Margin ACB 400A LSI → R 1200A SItR 1200A SI − tACB 400A LSI over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.979 s at 2,194 A; at If: 1.9498 − 0.4 = 1.550 s → 0.979 vs limit 0.300 s PASS
Result2/2 checks pass → PASS; minimum margin 0.380 s against 0.3 s required; governing: selectivity: CB 100A SI → ACB 400A LSI
ReferenceHand calculation, CB IEC SI, instantaneous band from 1000 A → 0.02 s at 7 kA; LSI long-time t = TD × (6/M)² below the short-time pickup 6 × 400 = 2400 A, short-time band 0.4 s from 2400 A (no instantaneous); relay SI M = 7000 ÷ 1200 = 5.833 → 0.5 × 0.14 ÷ 0.035901 = 1.950 s; pair 1 margin 0.4 − 0.02 = 0.38 s at every current ≥ 2400 A; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: CB 100A SI t(7000 A) = 0.02 s; ACB 400A LSI t(7000 A) = 0.4 s; R 1200A SI t(7000 A) = 1.95 s; CB 100A SI → ACB 400A LSI: smallest margin at test current 2400.0 A = 0.4 − 0.02 = 0.380 s ≥ 0.3 s; ACB 400A LSI → R 1200A SI: smallest margin at test current 2201.1 A = 5.734 − 4.755 = 0.979 s ≥ 0.3 s (validation case c0039-three-device-lsi-chain)

Example 9 — IEEE U3 feeder under a U1 main

SEL U.S. curves: a very-inverse U3 feeder relay grades under a moderately-inverse U1 main relay at 6 kA. U1's small A (0.0104) and B adder (0.0226) need a time dial near 5 to match a C37.112 MI curve at TD 1.

Given: R feeder U3: relay on a 300/5 CT, pickup 5 A secondary, IEEE U3, TD 2, no instantaneous; R main U1: relay on a 800/5 CT, pickup 5 A secondary, IEEE U1, TD 5, no instantaneous. Maximum prospective fault current If = 6,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: R feeder U3 (300 A) → R main U1 (800 A)
R feeder U3Is = 5 × 300/5 = 300 A; M = 6,000 ÷ 300 = 20.00; IEEE U3 (SEL very inverse, A = 3.88, B = 0.0963, p = 2): t = TD × (A ÷ (Mp − 1) + B) = 2 × (3.88 ÷ (20.002 − 1) + 0.0963) = 2 × (3.88 ÷ 399.00 + 0.0963) = 0.2120 s; t(If) = 0.212 s
R main U1Is = 5 × 800/5 = 800 A; M = 6,000 ÷ 800 = 7.500; IEEE U1 (SEL moderately inverse, A = 0.0104, B = 0.0226, p = 0.02): t = TD × (A ÷ (Mp − 1) + B) = 5 × (0.0104 ÷ (7.5000.02 − 1) + 0.0226) = 5 × (0.0104 ÷ 0.041121 + 0.0226) = 1.378 s; t(If) = 1.3776 s
Margin R feeder U3 → R main U1tR main U1 − tR feeder U3 over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 1.166 s at 6,000 A; at If: 1.3776 − 0.212 = 1.166 s → 1.166 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 1.166 s against 0.3 s required; governing: selectivity: R feeder U3 → R main U1
ReferenceHand calculation, SEL-351 U.S. curves t = TD × (B + A ÷ (M^p − 1)): U1 A 0.0104 B 0.0226 p 0.02, U3 A 3.88 B 0.0963 p 2; feeder M = 6000 ÷ 300 = 20 → 2 × (3.88 ÷ 399 + 0.0963) = 2 × 0.10602 = 0.2120 s; main M = 7.5 → 5 × (0.0104 ÷ 0.041121 + 0.0226) = 5 × 0.27551 = 1.378 s; margin at 6 kA = 1.166 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: R feeder U3 t(6000 A) = 0.212 s; R main U1 t(6000 A) = 1.378 s; R feeder U3 → R main U1: smallest margin at test current 6000.0 A = 1.378 − 0.212 = 1.166 s ≥ 0.3 s (validation case c0039-ieee-u1-main-over-u3-feeder)

Example 10 — IEEE U2 relay over a 100 A gG fuse

The U2 (inverse) curve has a large 0.180 B adder, so at TD 2 the relay still takes 0.575 s at 3 kA and grades comfortably over the fuse.

Given: F 100A gG: 100 A gG fuse; R 400A U2: relay on a 400/5 CT, pickup 5 A secondary, IEEE U2, TD 2, no instantaneous. Maximum prospective fault current If = 3,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: F 100A gG (100 A) → R 400A U2 (400 A)
F 100A gGM = 3,000 ÷ 100 = 30.00 ≥ 4 → total clearing t = k × In² ÷ I² (I²t region, component generic gG constant) = 8 × 100² ÷ 3,000² = 0.00889 s; t(If) = 0.0107 s
R 400A U2Is = 5 × 400/5 = 400 A; M = 3,000 ÷ 400 = 7.500; IEEE U2 (SEL inverse, A = 5.95, B = 0.18, p = 2): t = TD × (A ÷ (Mp − 1) + B) = 2 × (5.95 ÷ (7.5002 − 1) + 0.18) = 2 × (5.95 ÷ 55.250 + 0.18) = 0.5754 s; t(If) = 0.5754 s
Margin F 100A gG → R 400A U2tR 400A U2 − tF 100A gG over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.565 s at 3,000 A; at If: 0.5754 − 0.0107 = 0.565 s → 0.565 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 0.565 s against 0.3 s required; governing: selectivity: F 100A gG → R 400A U2. Fuse curves are generic (gG/gM: a curve inside the IEC 60269-1 Table 2/3/7 limits; aM/aR: an uncited shape), not a manufacturer's characteristic: confirm with the fuse maker's time-current and I²t data.
ReferenceHand calculation, SEL-351 U2 t = TD × (0.180 + 5.95 ÷ (M² − 1)); M = 3000 ÷ 400 = 7.5 → 2 × (5.95 ÷ 55.25 + 0.180) = 2 × 0.28769 = 0.5754 s; gG 100 A total clearing (IEC 60269-1:2006 generic curve): 3 kA is above the 0.01 s point √(48 187 ÷ 0.01) = 2195 A, where pre-arcing I²t is constant at √(27 000 × 86 000) = 48 187 A²s (Table 7 geometric mean) and the arcing allowance equals it: t = 2 × 48 187 ÷ 3000² = 0.01071 s; margin at 3 kA = 0.5754 − 0.0107 = 0.565 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: F 100A gG t(3000 A) = 0.01071 s; R 400A U2 t(3000 A) = 0.5754 s; F 100A gG → R 400A U2: smallest margin at test current 3000.0 A = 0.5754 − 0.01071 = 0.565 s ≥ 0.3 s (validation case c0039-ieee-u2-relay-over-gg-fuse)

Example 11 — IEEE U3 relay over a 0.1 s definite-time breaker

The very-inverse U3 curve flattens towards its 0.0963 × TD adder, so at TD 4 it keeps 0.44 s over a 0.1 s definite-time stage at 6 kA (compare the U4 case, which fails).

Given: CB 200A DT: breaker, pickup 200 A, IEC DT, TMS 0.1, no instantaneous; R 600A U3: relay on a 600/5 CT, pickup 5 A secondary, IEEE U3, TD 4, no instantaneous. Maximum prospective fault current If = 6,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 200A DT (200 A) → R 600A U3 (600 A)
CB 200A DTM = 6,000 ÷ 200 = 30.00; definite time: t = TMS = 0.1 s; t(If) = 0.1 s
R 600A U3Is = 5 × 600/5 = 600 A; M = 6,000 ÷ 600 = 10.00; IEEE U3 (SEL very inverse, A = 3.88, B = 0.0963, p = 2): t = TD × (A ÷ (Mp − 1) + B) = 4 × (3.88 ÷ (10.002 − 1) + 0.0963) = 4 × (3.88 ÷ 99.000 + 0.0963) = 0.5420 s; t(If) = 0.542 s
Margin CB 200A DT → R 600A U3tR 600A U3 − tCB 200A DT over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.442 s at 6,000 A; at If: 0.542 − 0.1 = 0.442 s → 0.442 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 0.442 s against 0.3 s required; governing: selectivity: CB 200A DT → R 600A U3
ReferenceHand calculation, SEL-351 U3 t = TD × (0.0963 + 3.88 ÷ (M² − 1)); M = 6000 ÷ 600 = 10 → 4 × (3.88 ÷ 99 + 0.0963) = 4 × 0.13549 = 0.5420 s; definite time 0.1 × 1 = 0.1 s; margin at 6 kA = 0.442 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: CB 200A DT t(6000 A) = 0.1 s; R 600A U3 t(6000 A) = 0.542 s; CB 200A DT → R 600A U3: smallest margin at test current 6000.0 A = 0.542 − 0.1 = 0.442 s ≥ 0.3 s (validation case c0039-ieee-u3-over-definite-time)

Example 12 — LSI short-time band governs above Isd

A low long-time band (2 s at 6 × Ir) extrapolates to 0.18 s at 20 × Ir, but above the 2400 A short-time pickup the ACB follows its 0.4 s short-time band, so it grades 0.38 s over the downstream breaker's instantaneous trip.

Given: CB 100A EI: breaker, pickup 100 A, IEC EI, TMS 0.1, instantaneous 1,000 A (0.02 s); ACB 400A LSI: LSI breaker, Ir = 400 A, long-time band 2 s at 6 × Ir, short-time 6 × Ir at 0.4 s, no instantaneous. Maximum prospective fault current If = 8,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: CB 100A EI (100 A) → ACB 400A LSI (400 A)
CB 100A EIM = 8,000 ÷ 100 = 80.00; I ≥ instantaneous pickup 1,000 A → instantaneous band, t = 0.02 s (the inverse-time curve apply only below 1,000 A); t(If) = 0.02 s
ACB 400A LSIM = 8,000 ÷ 400 = 20.00; short-time pickup 6 × 400 = 2,400 A ≤ I → short-time band, t = tsd = 0.4 s (long-time applies only below 2,400 A); t(If) = 0.4 s
Margin CB 100A EI → ACB 400A LSItACB 400A LSI − tCB 100A EI over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.380 s at 2,400 A; at If: 0.4 − 0.02 = 0.380 s → 0.380 vs limit 0.300 s PASS
Result1/1 checks pass → PASS; minimum margin 0.380 s against 0.3 s required; governing: selectivity: CB 100A EI → ACB 400A LSI
ReferenceHand calculation, CB IEC EI with instantaneous from 1000 A → 0.02 s at 8 kA (the EI equation, 0.1 × 80 ÷ (80² − 1) = 0.00125 s, applies only below 1000 A); ACB M = 8000 ÷ 400 = 20 ≥ short-time pickup 6 → short-time band t = 0.4 s (long-time 2 × (6/20)² = 0.18 s applies only below 2400 A); margin 0.4 − 0.02 = 0.38 s at every current ≥ 2400 A; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: CB 100A EI t(8000 A) = 0.02 s; ACB 400A LSI t(8000 A) = 0.4 s; CB 100A EI → ACB 400A LSI: smallest margin at test current 2400.0 A = 0.4 − 0.02 = 0.380 s ≥ 0.3 s (validation case c0039-lsi-short-time-band-governs)

Example 13 — Instantaneous band is not undercut by the EI curve

Above its 4 kA high-set pickup the feeder relay operates in 0.05 s; its EI curve would extrapolate to 1.25 ms at 16 kA but does not apply there. Against the 0.340 s SI incomer the margin is 0.290 s, short of 0.3 s.

Given: R feeder EI: relay on a 200/5 CT, pickup 5 A secondary, IEC EI, TMS 0.1, instantaneous 4,000 A (0.05 s); R incomer SI: relay on a 800/5 CT, pickup 5 A secondary, IEC SI, TMS 0.15, no instantaneous. Maximum prospective fault current If = 16,000 A, required grading margin 0.3 s, system 415 V.

Grading orderSorted by pickup, lowest = most downstream: R feeder EI (200 A) → R incomer SI (800 A)
R feeder EIIs = 5 × 200/5 = 200 A; M = 16,000 ÷ 200 = 80.00; I ≥ instantaneous pickup 4,000 A → instantaneous band, t = 0.05 s (the inverse-time curve apply only below 4,000 A); t(If) = 0.05 s
R incomer SIIs = 5 × 800/5 = 800 A; M = 16,000 ÷ 800 = 20.00; IEC SI (standard inverse, A = 0.14, p = 0.02): t = TMS × (A ÷ (Mp − 1)) = 0.15 × (0.14 ÷ (20.000.02 − 1)) = 0.15 × (0.14 ÷ 0.061746) = 0.3401 s; t(If) = 0.3401 s
Margin R feeder EI → R incomer SItR incomer SI − tR feeder EI over the common current range (test currents ×1.02 apart from the later curve start, plus If and each band breakpoint): smallest 0.290 s at 16,000 A; at If: 0.3401 − 0.05 = 0.290 s; 5 test current(s) below 0.3 s, worst near 16,000 A → 0.290 vs limit 0.300 s FAIL
Result0/1 checks pass → FAIL; minimum margin 0.290 s against 0.3 s required; governing: selectivity: R feeder EI → R incomer SI. R feeder EI → R incomer SI: margin below 0.3 s at 5 test current(s), worst near 16000 A.
ReferenceHand calculation, IEC 60255-151 t = TMS × A ÷ (M^p − 1) (SI 0.14/0.02, VI 13.5/1, EI 80/2), M = I ÷ Is; feeder pickup 5 × 200/5 = 200 A, I = 16 kA ≥ 4000 A → instantaneous band t = 0.05 s (EI 0.1 × 80 ÷ (80² − 1) = 0.00125 s applies only below 4000 A); incomer M = 16000 ÷ 800 = 20 → 0.15 × 0.14 ÷ (20^0.02 − 1) = 0.021 ÷ 0.061746 = 0.3401 s; margin at 16 kA = 0.3401 − 0.05 = 0.290 s < 0.3 s; margin minimised over the whole common current range, from the later curve start (1.05 × pickup; gG fuse √(1.25 × 1.6) × In) up to and including the maximum fault current, either side of every band breakpoint: R feeder EI t(16000 A) = 0.05 s; R incomer SI t(16000 A) = 0.3401 s; R feeder EI → R incomer SI: smallest margin at test current 16000.0 A = 0.3401 − 0.05 = 0.290 s < 0.3 s (validation case c0039-instantaneous-band-not-undercut)

Standards & References

  • IEC 60255-151 — Measuring relays and protection equipment – Functional requirements for over/under current protection
  • IEC 60269-1 — Low-voltage fuses – General requirements (Tables 2, 3 and 7: gG conventional currents, gates and pre-arcing I²t)
  • IEC 60947-2 — Low-voltage switchgear and controlgear – Circuit breakers
  • IEEE C37.112 — Standard Inverse-Time Characteristic Equations for Overcurrent Relays
  • ANSI/IEEE C57.109 — Transformer through-fault current duration guide
  • AS/NZS 3000 — Wiring Rules
  • AS/NZS 3008.1 — Electrical installations – Selection of cables

Tips & Limitations

  • Maximum 8 devices per study
  • Coordination check only applies to protection devices (breakers, fuses, relays) — cables, transformers, and motors are treated as protected equipment
  • Devices are auto-sorted by pickup current (lowest = most downstream) for coordination grading
  • Fuse curves are generic approximations (gG/gM inside the IEC 60269-1 gates, 16–1250 A ratings only) — always verify against manufacturer data
  • Tolerance bands assume ±15% for CBs and ±10% for relays — check manufacturer data for specific tolerances
  • For LSI breakers, the long-time curve uses a simplified I²t characteristic
  • Coordination is checked with exact nominal operating times (fuses: total clearing) at log-spaced test currents (×1.02 apart) from the later curve start up to the current-axis maximum (the maximum fault current), plus that maximum itself and each instantaneous / short-time / fuse breakpoint and the current just below it

Architecture

The component follows the standard calc component architecture:

  • calculations.py — Pure Python TCC math (constants, curve generators, coordination check)
  • component.py — Schema, calculator class, SVG generator, registration
  • equations.py — Report equation builder
  • sidebar_form.html — Vue device editor with dynamic device cards

Curve math was ported from protection/tcc-visualiser-complete (2).html (lines 189–232).

Code Paths

calcs/components/c0039_protection_coordination/
├── __init__.py
├── apps.py
├── calculations.py          # Core TCC math
├── component.py             # Schema, calculator, SVG, registration
├── equations.py             # PDF report builder
├── excel_generator.py       # Excel report builder
└── templates/.../sidebar_form.html  # Vue device editor

Testing

pytest calcs/test_c0039_protection_coordination.py -v

Key test scenarios:

  • Curve coefficient counts (IEC=5, ANSI=6, IEEE=6)
  • IEC SI at M=2, TMS=0.3 ≈ 3.01s
  • Cable Cu/PVC 25mm² at 1kA = 8.27s
  • Fuse prearc always faster than total; gG pre-arcing curve inside every IEC 60269-1 Table 2/3/7 limit for all 20 ratings
  • Tolerance band scaling (±15%, ±10%)
  • Coordination PASS/FAIL with known device pairs
  • Auto-sort by pickup ascending
  • SVG output validation