MSHEZI PROJECTS / ENGINEERING TOOLS

Commercial solar pre-design.

Traceable inputs. Hourly energy balance. Equipment compatibility screens.

COMMERCIAL 1.0OFFLINE · THREE PHASEPRELIMINARY ENGINEERING
The source 100 kWp study contains unverified equipment, ambiguous module dimensions and conflicting fuse calculations. Replace assumptions with project evidence. A checked pre-design is not an installation approval.
01 / Project and operating mode

Define the system

Topology: identical three-phase inverter units with the same MPPT string allocation on each unit. Storage studies use aggregate bank ratings and require OEM-approved parallel operation. Grid-connected loads may also receive grid power. During outages only critical loads remain connected; off-grid studies supply all loads. AC-coupled storage, mixed inverter/module models, detailed parallel controls and series battery-bank design are outside this version.

Recovery is optional and unencrypted. Browser storage for local HTML may be unavailable or cleared. Save a JSON copy for dependable retention. Existing website logins do not protect downloaded files.

02 / Demand and evidence

Appliances and hourly schedules

Each schedule has 24 comma-separated on-time fractions, from 00:00 to 23:00. A value of 0.25 means 15 minutes at full power within that hour. Appliance watts are per unit. The workbook contains no site load profile. The initial daytime schedule is illustrative; replace it with measured commercial demand. PF, start multiplier and start duration require evidence; “1” is not a verified motor starting value.

ApplianceQty / WCriticalPF / startProfile and manual hoursEvidenceRemove

03 / Datasheets and compatibility

Equipment records

The allocation 4,4,3 means 11 strings across three inputs on each inverter. Installed panels are derived from this allocation, modules per string and inverter count. AC power, kVA and PV throughput ratings are whole-bank totals; voltage/current limits are per MPPT. Repeat only identical units; separate studies are required for mixed equipment. Enter verified module dimensions for roof area.

Preserve draft fields even when a mode or check is disabled. A missing calculation-critical rating prevents simulation; a missing verification record makes the assessment incomplete. “Measured” or “Datasheet” requires a source and revision/date.

04 / Resource and chronological study

Hourly simulation

CSV columns: load_kwh,critical_kwh,pv_kwh_per_kwp,grid_available. One row = one hour. PV is DC energy per installed kWp after array losses, before inverter conversion, input clipping or storage. Do not import AC yield into that column. Grid availability is 0 or 1. Imported rows run once in order; the outage window overrides grid availability. Align timestamps, time zones and units externally and record the source/date below.

05 / Calculation and review

Study results

Calculate to generate a current report.
06 / Design alternatives

Compare up to three snapshots

Snapshots retain full inputs. Results are recomputed when opened, never trusted from saved totals. Only compare energy totals across identical load/resource sequences, modes, horizon and outage basis.

Commercial model: basis and limits

Source workbook and corrected calculations

Source: COMMERCIAL SOLAR PV SYSTEM DESIGN-REV00.xlsx, “SIZING SOLAR PV MODULES” and “CABLE SIZING-1”. The 100 kW source value is treated as a 100 kWp DC array target, not daily energy or a measured site demand.

  • The source module is 220 W, Voc 36.4 V, Vmp 28.6 V, Imp 7.8 A, Isc 8.2 A, maximum system voltage 600 V and maximum series fuse 12 A. Its −129 mV/°C voltage coefficient is provisionally treated as Voc: −0.129/36.4 × 100 = −0.3544%/°C. Confirm the coefficient’s original OEM definition. The separate Vmp coefficient is left blank.
  • At −5°C, cold Voc = 36.4 + (−5 − 25) × (−0.129) = 40.27 V/module. Fourteen modules give 563.78 V; fifteen would give 604.05 V, exceeding 600 V.
  • The source rounds 100,000/220 down to 454 modules (99.88 kWp), while its 33 whole strings of 14 require 462 modules (101.64 kWp). This tool uses one authoritative string allocation: 462 modules and 8,778 kg at 19 kg/module. The power-target minimum before string rounding is 455 modules.
  • Source dimensions 156 × 156 and a 54-cell multiplier do not establish verified module dimensions. Length and width remain blank. Once supplied, area = allocated module count × length × width, with the chosen allowance; no cell-count multiplier is used.
  • The source assumes cell temperature as ambient + NOCT. This tool requires an explicit maximum cell temperature. Isc uses the source 4.8 mA/°C converted to %/°C. In the original 85°C source calculation, 8.488 A × 1.25 × 1.25 = 13.2625 A, above the stated 12 A series-fuse maximum. The conflict is flagged rather than silently choosing 12 A.
  • The source’s 965.85 A “combined current” multiplies derated cable ampacity by 33 strings. That is not operating current. This tool distributes strings per inverter and MPPT, and separates operating current, adjusted Isc and corrected cable ampacity.
Three-phase and cable equations

Balanced rated inverter current = total bank kVA × 1,000 / (√3 × line-to-line volts). For each load, kvar = kW × tan(acos(PF)), assuming lagging PF. Add kW and kvar on each phase; phase kVA = √(kW² + kvar²), and phase current = phase kVA × 1,000 / (VLL/√3). Unassigned phases make the assessment incomplete.

String DC drop = 2 × one-way length (km) × conductor resistance at operating temperature (Ω/km) × module Imp (A). Divide by hot string Vmp if available, otherwise STC string Vmp; this distinction is shown. Each string is screened individually; the tool does not design separate combiner-to-inverter feeders.

Balanced AC feeder voltage-change magnitude = √3 × current × one-way length (km) × [R × PF + X × √(1 − PF²)]. Input resistance and reactance must match conductor geometry and operating temperature. This lagging-load magnitude screen does not replace an export voltage-rise/network study. There is no universal “3% per 30 metres” rule in this calculation.

Thermal screens compare load current ≤ selected device ≤ reference ampacity × combined derating. String fuse screening uses the entered Isc and additional fuse multipliers, constrained by module maximum series fuse. The source’s 0.41 derating factor is retained as an unverified assumption, not a generally applicable value. Verify protection requirements and temperature/grouping/installation factors against the actual design.

Reference equation: Schneider Electric, Electrical Installation Guide — voltage drop in steady load conditions. No claim of automatic IEC/SANS compliance is made.

Chronological energy and storage

One simulation step is one hour. The synthetic profile is a repeated representative day: PSH × PV DC yield factor distributed over daylight. It is not a weather model. Alternatively import chronological load, critical load, DC PV yield per kWp and grid availability in the provided CSV format. Do not import AC PV yield as DC yield. The illustrative 60 kW daytime load and 400 V inverter bank are not taken from the workbook.

PV supplies DC auxiliaries then AC loads. Battery discharge obeys SOC, power and current limits. Surplus PV charges storage, exports within limits, then curtails. Grid fills deficits while available. Reserve mode can recharge from grid; self-consumption mode discharges only above the configured reserve. Available battery energy includes the entered ageing/temperature factor and separate charge/discharge efficiencies.

Inverters are treated as an aggregate energy-conversion bank with the same module orientation/resource and identical per-inverter string allocations. Battery/hybrid studies require an engineered shared-bus and parallel-control arrangement. Aggregate kVA and hourly energy do not prove phase imbalance capability, motor-start ride-through or black-start behaviour. One-hour averaging does not establish tariff billing demand or sub-hourly outage performance. No financial savings/payback forecast is included.

Reporting, verification and release boundaries

Save incomplete drafts and preserve disabled data. Optional local recovery is unencrypted and browser-dependent. Scenario snapshots store inputs; calculations are rerun. A report fingerprint identifies the saved input basis, not professional approval. Reviewer acknowledgement clears on changes. Print reports include the input record and current failed/incomplete checks.

Excluded: detailed shading/irradiance, roof structural design, cable selection tables, short-circuit protection studies, harmonics, network voltage-rise analysis, municipal/utility approvals and installation sign-off. Final designs require site measurements, OEM data and review by the responsible engineer.

10 simulated-control wiring checks passed (not actual browser tests). 37/37 commercial engine/reference checks passed. Actual browser rendering/PDF pagination and independent site-production benchmarking are not verified. The browser environment previously blocked local HTML inspection.
Verification record
{
  "version": "Commercial 1.0",
  "timestamp": "2026-09-17T02:44:56.333Z",
  "passed": 37,
  "total": 37,
  "results": [
    {
      "name": "Workbook reconciliation: 33 strings, 462 modules, 101.64 kWp",
      "status": "PASS"
    },
    {
      "name": "100 kWp requires at least 455 modules before string rounding",
      "status": "PASS"
    },
    {
      "name": "Workbook cold Voc: 14 \u00d7 40.27 = 563.78 V",
      "status": "PASS"
    },
    {
      "name": "15 modules exceed source 600 V limit",
      "status": "PASS"
    },
    {
      "name": "Corrected module mass is 8778 kg",
      "status": "PASS"
    },
    {
      "name": "Unverified module dimensions withhold area",
      "status": "PASS"
    },
    {
      "name": "Verified input dimensions give face area without cell multiplier",
      "status": "PASS"
    },
    {
      "name": "Source current/fuse replay at 85\u00b0C reproduces 13.2625 A conflict",
      "status": "PASS"
    },
    {
      "name": "Derating inverse gives 29.2683 A reference ampacity",
      "status": "PASS"
    },
    {
      "name": "Reference DC drop: 2 \u00d7 .03 km \u00d7 4 ohm/km \u00d7 7.8 A = 1.872 V",
      "status": "PASS"
    },
    {
      "name": "Reference AC drop: sqrt(3) \u00d7 100 A \u00d7 .05 km \u00d7 (.6\u00d7.8+.08\u00d7.6)",
      "status": "PASS"
    },
    {
      "name": "Balanced 110 kVA bank at 400 V: 158.771 A",
      "status": "PASS"
    },
    {
      "name": "Balanced 60 kW site at PF .9: 96.225 A on each phase",
      "status": "PASS"
    },
    {
      "name": "Single-phase assignment moves full demand to A",
      "status": "PASS"
    },
    {
      "name": "Unassigned phase creates incomplete finding",
      "status": "PASS"
    },
    {
      "name": "PV inverter does not need to supply entire grid-connected site load",
      "status": "PASS"
    },
    {
      "name": "MPPT allocation per inverter preserves independent currents",
      "status": "PASS"
    },
    {
      "name": "Too many parallel strings fails MPPT current",
      "status": "PASS"
    },
    {
      "name": "Mismatched allocation length rejected",
      "status": "PASS"
    },
    {
      "name": "Fractional strings rejected",
      "status": "PASS"
    },
    {
      "name": "Disabled string inputs retained in project draft",
      "status": "PASS"
    },
    {
      "name": "Incomplete commercial drafts save without discarding layout",
      "status": "PASS"
    },
    {
      "name": "Blank required cable field prevents misleading result",
      "status": "PASS"
    },
    {
      "name": "Reference module W/VI inconsistency flagged",
      "status": "PASS"
    },
    {
      "name": "Residential projects rejected rather than silently changing topology",
      "status": "PASS"
    },
    {
      "name": "Draft snapshots retain commercial allocation and phase",
      "status": "PASS"
    },
    {
      "name": "Cable thermal failure when corrected ampacity below device",
      "status": "PASS"
    },
    {
      "name": "Cable voltage-change limit identifies excessive route resistance",
      "status": "PASS"
    },
    {
      "name": "PV sizing follows allocation rather than stale manual panel count",
      "status": "PASS"
    },
    {
      "name": "Changed inverter unit count updates array, mass and per-unit ratings",
      "status": "PASS"
    },
    {
      "name": "PV power limiter catches underspecified inverter bank",
      "status": "PASS"
    },
    {
      "name": "Battery mode permits no PV allocation",
      "status": "PASS"
    },
    {
      "name": "Imported hourly CSV retains three-phase load inventory",
      "status": "PASS"
    },
    {
      "name": "Grid outage disables grid-tied PV and leaves critical load unmet",
      "status": "PASS"
    },
    {
      "name": "Commercial synthetic energy yield conserves 100%-efficient grid-only flow",
      "status": "PASS"
    },
    {
      "name": "Both HTML script blocks parse",
      "status": "PASS"
    },
    {
      "name": "Offline artifact has no network script/style dependencies",
      "status": "PASS"
    }
  ]
}
Draft · calculation required