Lewati ke konten

Panduan Simulasi & Yield P50/P90

Engine simulasi Sonus Solar Studio dikembangkan dalam bahasa Rust berkecepatan tinggi untuk menghasilkan estimasi produksi energi yang deterministik dan dapat diaudit secara matematis. Kesesuaiannya dengan pvlib dilaporkan per versi engine, lengkap dengan toleransi dan status tiap tahap, di laporan validasi 0.4.0; persamaan tiap tahap ada di docs/formulation/ pada repositori.


Engine mensimulasikan satu tahun penuh, 8.760 timestep per jam, di atas data cuaca PVGIS TMY (PVGIS-ERA5 / ERA5, 2005–2023) untuk 7 site referensi: Cikarang, Surabaya, Semarang, Bali, Medan, Balikpapan, dan Makassar. Tidak ada lagi hari representatif atau pengali jumlah hari per bulan: setiap jam dihitung sendiri, dan energi tahunan adalah jumlah dari 8.760 jam itu.

$$E_{tahunan} = \sum_{i=1}^{8760} P_{grid}(i) \times 1\text{ jam}$$

Hal-hal yang berlaku untuk setiap simulasi:

  • Weather dipilih oleh region_id; GHI dan suhu udara per jam diambil apa adanya dari file TMY. SHA-256 file itu dicatat di hasil (weather_sha256).
  • Tahun 365 hari: tidak ada 29 Februari, jadi satu tahun selalu 8.760 baris.
  • Kalender lokal: beban pabrik, tarif WBP/LWBP, jam baterai, dan jumlah per bulan memakai waktu standar site (WIB UTC+7 atau WITA UTC+8), bukan UTC.
  • Baterai membawa state of charge sepanjang tahun, tidak di-reset tiap bulan.
  • Rekening Minimum (40 jam nyala) diterapkan per bulan kalender lokal.
  • Deterministik: input, kondisi, versi engine, dan weather yang sama menghasilkan angka yang sama bit per bit. Karena itu hasil per jam tidak disimpan, tetapi dihitung ulang dari input tersimpan di GET /api/v1/simulations/{id}/hourly, dan ditolak (409) bila versi engine atau weather telah berubah.
  • Hari tipikal pada grafik 24 jam adalah satu hari nyata dari file TMY (default 15 September, dapat diganti lewat ?day=MM-DD), bukan rata-rata.

Loss tree: 19 tahap dalam urutan HelioScope

Section titled “Loss tree: 19 tahap dalam urutan HelioScope”

Setiap tahap rantai perhitungan punya kolomnya sendiri di tabel per jam, beserta statusnya. Urutannya mengikuti Production Report HelioScope (Production Report Summary), lalu tahap derate AC, dan tahap terakhir khusus helio: batas ekspor Permen ESDM 2/2024. Rugi bersifat multiplikatif: Δ sebuah tahap dihitung terhadap tahap sebelumnya di blok yang sama (irradiance dalam kWh/m², energi dalam kWh), bukan dijumlahkan. Tahap yang belum dimodelkan tertulis kosong dengan Δ 0%, tidak dilipat ke tahap lain.

#TahapKolomStatus bawaanDerate bawaan dan sumbernyaDiganti oleh
1GHIghiweather--
2GHI setelah koreksi spektraladjusted_ghibelum dimodelkan-#12
3POApoa_irradiancependekatan: transposisi isotropik dari DNI/DHI, posisi matahari NREL SPA per jam (ADR-0013)-#12
4Setelah bayanganshaded_irradiancependekatan, elevasi dari SPA-#23
5Setelah pantulan (IAM)effective_irradiancebelum dimodelkan-#12
6Setelah soilingsoiled_irradiancedimodelkan2%: HelioScope Typical Loss Factors, “Default is 2% loss”-
7Total irradiance kolektortotal_irradiancedimodelkan (sisi belakang bifacial belum)-#28
8Nameplatenameplate_powerdimodelkan--
9Output pada tingkat irradiancemodule_irradiance_derated_powerdimodelkan: $P_{mp}(G_{eff}, 25^\circ\mathrm{C})$ dari model diode tunggal karakterisasi modul (#14); kosong tanpa karakterisasiparameter PAN/CEC (Rs, Rsh, Rp_0/Rp_Exp, Gamma)-
10Output pada suhu selmodule_mpp_powerdimodelkan: $P_{mp}(G_{eff}, T_{cell})$ model diode tunggal (#14), suhu sel Sandia per racking (ADR-0018)parameter modul; tanpa karakterisasi, cadangan PVWatts linear dengan MODULE_MODEL_UNAVAILABLE/MODULE_TEMP_COEFF_DEFAULT-
11Output setelah mismatchmodule_powerpendekatan2%: HelioScope Typical Loss Factors, “~2% mismatch loss”#54
12Output optimizeroptimizer_output_powerbelum dimodelkan-#40
13DC optimal (kabel DC)optimal_dc_powerbelum dimodelkan; pendekatan bila losses.dc_wiring_pct diisitanpa bawaan#25
14DC terbatas inverteractual_dc_powerpendekatan: batas daya AC dan jendela tegangan MPPT-#15
15Output inverterac_powerpendekatan: efisiensi datar96%: HelioScope Versus PV Watts, “standard 96% efficient inverter”#15
16Energi ke grid (kabel AC, trafo)energy_to_grid_powerbelum dimodelkan; pendekatan bila losses.ac_loss_pct diisitanpa bawaan#25
17LIDlid_derated_powerdimodelkan bila ConditionSet.lid diisi; baris loss tree sendiritanpa bawaan (HelioScope tidak memasangnya sendiri)-
18Ketidaktersediaan sistemavailability_derated_powerbelum dimodelkan; dimodelkan bila losses.unavailability_pct diisitanpa bawaan (HelioScope tidak menghitungnya sendiri)-
19Terkirim setelah batas eksporgrid_powerdimodelkan--

Tahap 14 memuat empat sub-rugi inverter dalam urutan CSV HelioScope: inverter_overpower_loss, inverter_underpower_loss, inverter_overvoltage_loss, inverter_undervoltage_loss. Sub-rugi bukan tahap dan tidak ikut perkalian. Degradasi tahunan (#53) diterapkan ke parameter single-diode sebelum tahap 10; deret tahunan beserta under-voltage loss dan loss tree per tahun disediakan di degradation_years.

  • Performance Ratio = energi ke grid / (irradiasi POA × kapasitas DC nameplate), definisi PR di Production Report HelioScope. PR dari loss tree dan PR yang dilaporkan engine adalah angka yang sama.
  • Jam operasi (operating_hours) = jumlah jam dengan GHI > 0 (Operating Hours vs Sun Hours).
  • Sun hours (peak_sun_hours) = GHI tahunan (kWh/m²) / 365.

Bila Δ tahunan sebuah tahap berada di luar rentang tipikal HelioScope (Typical Loss Factors), engine menambahkan warning di warnings[], tanpa pernah mengubah angkanya. Rentang (Δ dalam %): POA +1 s.d. +20, bayangan 0 s.d. -10, pantulan -1 s.d. -5, soiling -1 s.d. -5, tingkat irradiance -1 s.d. -5, suhu sel -3 s.d. -7 (fixed tilt) atau -6 s.d. -15 (flush mount), mismatch 0 s.d. -7, optimizer 0 s.d. -2, kabel DC 0 s.d. -2, DC terbatas 0 s.d. -3, inverter -2 s.d. -7, energi ke grid -0,5 s.d. -3; PR 68% s.d. 88%. Rentang suhu sel mengikuti jenis rak; HelioScope tidak memberi rentang untuk East-West dan Carport, jadi untuk keduanya tidak ada warning rentang. Di iklim tropis TEMPERATURE_ABOVE_TYPICAL tetap wajar muncul pada fixed tilt: rentang HelioScope tidak diperlebar.

Angka yang berubah dibanding versi 12 hari representatif adalah wajar: GHI kini berasal dari PVGIS-ERA5 (bukan tabel bulanan tulisan tangan), dan suhu udara adalah nilai ERA5 per jam. Hasil engine dibandingkan dengan oracle pvlib per tahap di tools/oracle/; selisihnya dilaporkan, bukan disembunyikan.


2. Analisis Bayangan 3D Obstacles (Raycasting)

Section titled “2. Analisis Bayangan 3D Obstacles (Raycasting)”

Halangan di atap industri seperti cooling tower, exhaust fan, skylight, parapet, atau gedung tetangga dapat menurunkan produksi string fotovoltaik secara drastis.

Sonus Solar Studio memodelkan halangan dalam koordinat 3D $(x, y, z)$ dengan parameter panjang ($w$), lebar ($d$), dan tinggi ($h$).

Pada setiap jam simulasi ($h$):

  1. Dihitung posisi matahari lokal: Elevasi Matahari ($\alpha$) dan Azimuth Matahari ($\theta_{az}$).
  2. Bila $\alpha > 0$ (matahari di atas cakrawala), vektor arah datang sinar matahari diproyeksikan terhadap setiap elemen halangan atap.
  3. Ditentukan panjang dan arah bayangan: $$L_{shadow} = \frac{h_{obstacle}}{\tan(\alpha)}$$
  4. Bila poligon bayangan menutupi zona panel surya, faktor derating bayangan ($f_{shading}$) dihitung proporsional terhadap luasan yang terhalang dan langsung mengurangi iradiasi efektif pada modul.

Iklim tropis Indonesia memiliki kelembapan tinggi dan suhu ambien yang sering melebihi 33°C pada siang hari. Suhu sel fotovoltaik ($T_{cell}$) dapat mencapai 55°C–65°C saat menerima iradiasi puncak ($G > 800\text{ W/m}^2$) pada rak terbuka, dan lebih tinggi pada atap rapat.

Masukan termal adalah irradiance setelah bayangan (shaded_irradiance, sebelum soiling): modul yang tertutup bayangan lebih dingin (HelioScope Modeling 101). Angin diambil dari weather dan dipakai apa adanya oleh semua model, yang mengacu angin pada ketinggian 10 m; bila weather tidak diukur di 10 m engine tidak mengonversi tinggi dan memberi warning WIND_HEIGHT_NOT_10M.

Model bawaan adalah Sandia (SAPM) dengan preset HelioScope menurut jenis rak (Cell Temperature Model); pilihan lain dikirim lewat temperature_model dengan semua parameternya:

ModelRumus ($G$ W/m², $T_a$ °C, $WS$ m/s di 10 m)Sumber
Sandia (sapm)$T_m = G,e^{a + b,WS} + T_a$, $T_{cell} = T_m + \dfrac{G}{1000}\Delta T$King dkk. 2004, SAND2004-3535, pers. 11–12
Faiman (faiman)$T_{cell} = T_a + \dfrac{G}{u_0 + u_1,WS}$Faiman 2008; pvlib faiman
PVsyst / diffusion (pvsyst)$T_{cell} = T_a + \dfrac{G,\alpha,(1-\eta)}{u_c + u_v,WS}$PVsyst 7 Help; pvlib pvsyst_cell
NOCT SAM (noct_sam)$T_{cell} = T_a + \dfrac{G}{800}(NOCT_{adj} - 20)\left(1 - \dfrac{\eta}{\tau\alpha}\right)\dfrac{9{,}5}{5{,}7 + 3{,}8,WS_{adj}}$Gilman dkk. 2018, NREL/TP-6A20-67399, 10.6; pvlib noct_sam

Preset Sandia bawaan (HelioScope, sama dengan pvlib.temperature.TEMPERATURE_MODEL_PARAMETERS['sapm']):

Racking$a$$b$$\Delta T$Kunci pvlib
Fixed tilt, East-West, Carport−3,56−0,0753open_rack_glass_polymer
Flush mount−2,81−0,04550insulated_back_glass_polymer

Preset diffusion HelioScope (fixed tilt, East-West, carport $U_c$ 29; flush mount 15; $U_v$ 0 untuk semuanya; kunci pvlib freestanding dan insulated) tidak dipasang otomatis karena butuh $\alpha$ dan $\eta$ modul; salin ke temperature_model bila ingin menyamakan dengan PVsyst. Jenis rak yang kosong memakai preset fixed tilt dan memunculkan RACKING_NOT_SET. Celah pemasangan atap tidak punya preset: HelioScope sendiri hanya memberi contoh, misalnya celah 8 cm setara $a = -3{,}22$, $b = -0{,}0655$ (artikel), yang bisa diisikan sebagai {"model":"sapm","a":-3.22,"b":-0.0655,"delta_t":3} bila pemilik proyek menetapkannya.

Daya modul mengikuti model diode tunggal dari karakterisasi modul (#14, ENG-11) pada setiap jam: $$I = I_L - I_0\left[\exp!\left(\frac{V + I R_s}{a}\right) - 1\right] - \frac{V + I R_s}{R_{sh}}, \qquad P_{mp} = V_{mp} I_{mp}$$

Lima parameter $I_L, I_0, R_s, R_{sh}, a$ diturunkan dari file PAN/CEC (De Soto 2006 untuk CEC, PVsyst v6 untuk PAN: $R_{sh}$ dari RShunt/Rp_0/Rp_Exp, $\gamma$ dari Gamma/muGamma). Tahap “Output pada tingkat irradiance” = $P_{mp}(G_{eff}, 25^\circ\mathrm{C})$ dan tahap “Output pada suhu sel” = $P_{mp}(G_{eff}, T_{cell})$; selisihnya bisa nol atau positif, sesuai perilaku cahaya rendah modul. Tanpa karakterisasi yang bisa dimodelkan, engine memakai cadangan PVWatts v5 linear dengan warning MODULE_MODEL_UNAVAILABLE; tahap output-at-irradiance lalu kosong (not_modeled), bukan angka karangan. Ringkasan model, racking, dan sumbernya ada di thermal/module_model pada hasil dan di panel “Derating Suhu Sel” studio.


4. Analisis Probabilitas (P50, P75, P90, P99)

Section titled “4. Analisis Probabilitas (P50, P75, P90, P99)”

Lembaga keuangan, bank BUMN/swasta, dan investor institusi di Indonesia mensyaratkan skenario probabilitas ketercapaian energi sebelum menyetujui pinjaman konstruksi PLTS (project finance).

Sonus Solar Studio tidak memakai sigma tetap. Bila project memakai seri weather multi-tahun (#17), engine menjalankan simulasi yang sama pada setiap tahun, lalu menghitung $\sigma_{IAV}$ sebagai standar deviasi sampel dibagi mean energi tahunan. Tabel ketidakpastian menampilkan setiap baris (resource jangka panjang, IAV, transposisi, model modul/PAN, suhu, soiling, mismatch, inverter, degradasi, availability, dan custom) beserta nilai $\sigma$ dan sumbernya. Baris tanpa nilai atau sumber tidak diisi angka karangan: P90 berstatus needs_multi_year_weather atau needs_uncertainty_inputs.

Kombinasi baku adalah akar jumlah kuadrat, $\sigma_{total}=\sqrt{\sum \sigma_i^2}$, dengan opsi penjumlahan linear untuk perbandingan. Horizon $N$ tahun memakai $\sigma_1=\sqrt{\sigma_{IAV}^2+\sigma_{lain}^2}$ dan $\sigma_N=\sqrt{\sigma_{IAV}^2/N+\sigma_{lain}^2}$ (bawaan $N=10$). Exceedance Gaussian $P_x=P50,(1-z_x,\sigma_N)$ memakai $z=1{,}2816$ (P90), $1{,}6449$ (P95), dan $2{,}3263$ (P99); bila tersedia sedikitnya 10 tahun, P90 empiris (persentil ke-10 energi tahunan) ditampilkan di samping P90 Gaussian. P50 dari TMY dan median multi-tahun ditampilkan beserta selisihnya.

MetrikProbabilitas PelampauanTingkat KepercayaanPeruntukan Dokumen
P50$50%$MedianPerkiraan dasar kelayakan finansial & cashflow internal
P75$75%$KonservatifEvaluasi komite investasi EPC & mitigasi risiko
P90$90%$Standar Kredit BankStandar evaluasi perbankan untuk menghitung DSCR (Debt Service Coverage Ratio) hanya bila status P90 ready
P99$99%$Skenario EkstremStress test skenario terburuk tahun basah (curah hujan anomali La Niña)