Oleh: Ketut P. Kumajaya — 3 Oktober 2025

Latar Belakang

Dalam sistem distribusi daya, ketidakseimbangan antar fase tegangan atau arus dapat menyebabkan panas berlebih, penurunan efisiensi, dan gangguan pada peralatan. Sayangnya, banyak power meter tidak menyediakan informasi unbalance secara langsung. Untuk menutup celah ini, Function Block K_UNBALANCE dirancang menggunakan Structured Text (ST) di Supcon DCS sebagai artefak modular yang siap diaudit dan teachable lintas operator.


Struktur Function Block

(*------------------------------------------------------------------------------
 FB Name     : K_UNBALANCE
 Purpose     : Menghitung persentase ketidakseimbangan dari tiga input
               (tegangan atau arus 3-fasa) berdasarkan metode Unbalance Ratio
               (Voltage/Current). Memberikan nilai rata-rata sebagai referensi
               audit dan status alarm jika melebihi ambang batas.
 Author      : Ketut P. Kumajaya
 Contributor : Copilot (Microsoft AI)
 Version     : 1.1
 Date        : 21/10/2025

 Input       :
    IN1 (FLOAT) - Input pertama (misalnya V_A atau I_A)
    IN2 (FLOAT) - Input kedua (misalnya V_B atau I_B)
    IN3 (FLOAT) - Input ketiga (misalnya V_C atau I_C)
    THR (FLOAT) - Batas maksimum unbalance yang diperbolehkan

 Output      :
    UNB (FLOAT) - Persentase ketidakseimbangan
    AVG (FLOAT) - Nilai rata-rata dari ketiga input
    ALM (BOOL)  - Status alarm jika UNB > THR

  Notes       :
    - UNB dihitung sebagai (deviasi maksimum / rata-rata) * 100% 
      (aproksimasi sederhana; untuk IEC Class A gunakan metode symmetrical components).
    - Proteksi div/0: jika AVG=0 maka UNB=0 dan ALM=FALSE.
    - Nilai absolut AVG digunakan sebagai denominator agar hasil selalu positif.
    - Voltage Unbalance harus dijaga ≤ 2% continuous (IEC 61000-4-30) 
      atau ≤ 1% di motor terminals (NEMA MG-1).
      Tegangan yang tidak seimbang sekecil 1–2% dapat memicu Current Unbalance 
      hingga 6–10 kali lebih besar. Current Unbalance direkomendasikan ≤ 10% 
      untuk menghindari derating motor.
    - Current Unbalance sangat sensitif terhadap voltage imbalance 
      dan dapat menyebabkan pemanasan berlebih. 
      Motor biasanya perlu derating 0.5–2% daya untuk setiap 1% Current Unbalance 
      yang melebihi batas.

  Referensi Standar :
    - IEC 61000-4-30 : Metode symmetrical components untuk Voltage Unbalance 
                       (Class A: agregasi 10-menit).
    - NEMA MG-1      : Voltage Unbalance < 1% di motor terminals; 
                       Current Unbalance bisa 6–10 kali lebih besar 
                       (≤ 10% direkomendasikan).
    - IEEE 1159      : Praktik monitoring kualitas daya, termasuk imbalance detection.
------------------------------------------------------------------------------*)

FUNCTION_BLOCK K_UNBALANCE

VAR_INPUT
    IN1 : FLOAT;   (* Input pertama *)
    IN2 : FLOAT;   (* Input kedua *)
    IN3 : FLOAT;   (* Input ketiga *)
    THR : FLOAT;   (* Threshold unbalance *)
END_VAR

VAR_OUTPUT
    AVG : FLOAT;   (* Nilai rata-rata dari ketiga input *)
    UNB : FLOAT;   (* Persentase ketidakseimbangan *)
    ALM : BOOL;    (* Alarm jika UNB > THR *)
END_VAR

VAR
    Delta1 : FLOAT;
    Delta2 : FLOAT;
    Delta3 : FLOAT;
    DeltaMax : FLOAT;
END_VAR

(* Hitung rata-rata *)
AVG := (IN1 + IN2 + IN3) / 3.0;

(* Proteksi div/0 *)
IF AVG <> 0.0 THEN
    (* Deviasi masing-masing input *)
    Delta1 := ABS_FLOAT(IN1 - AVG);
    Delta2 := ABS_FLOAT(IN2 - AVG);
    Delta3 := ABS_FLOAT(IN3 - AVG);

    (* Cari deviasi terbesar *)
    DeltaMax := MAX_FLOAT(Delta1, Delta2);
    DeltaMax := MAX_FLOAT(DeltaMax, Delta3);

    (* Hitung unbalance *)
    UNB := (DeltaMax / ABS_FLOAT(AVG)) * 100.0;

    (* Alarm check *)
    IF UNB > THR THEN
        ALM := TRUE;
    ELSE
        ALM := FALSE;
    END_IF;
ELSE
    UNB := 0.0;
    ALM := FALSE;
END_IF;

END_FUNCTION_BLOCK

Penjelasan Modularitas

FB ini menggunakan pendekatan perhitungan eksplisit untuk menghitung rata-rata (AVG), deviasi tiap input, dan deviasi maksimum. Dengan cara ini, setiap langkah logika terlihat jelas dan mudah dipahami.

Output UNB menunjukkan persentase ketidakseimbangan, AVG menjadi baseline referensi, dan ALM memberikan status alarm otomatis jika nilai unbalance melebihi ambang batas (THR). Proteksi terhadap pembagian nol tetap diterapkan, sehingga FB robust dan siap diintegrasikan ke sistem SCADA lintas plant.


Flowchart

flowchart TD IN1["IN1 (Input pertama)"] IN2["IN2 (Input kedua)"] IN3["IN3 (Input ketiga)"] THR["THR (Threshold)"] AVG_CALC["Hitung AVG = (IN1+IN2+IN3)/3"] PROTEKSI{"AVG ≠ 0 ?"} DELTA["Hitung deviasi Δ1, Δ2, Δ3"] DELTAMAX["Cari deviasi maksimum"] HITUNG_UNB["Hitung UNB = (Δmax / |AVG|) * 100%"] CEK_ALM{"UNB > THR ?"} OUTPUT_UNB["UNB (Persentase ketidakseimbangan)"] OUTPUT_AVG["AVG (Nilai rata-rata)"] OUTPUT_ALM["ALM (Status Alarm)"] IN1 --> AVG_CALC IN2 --> AVG_CALC IN3 --> AVG_CALC AVG_CALC --> PROTEKSI PROTEKSI -->|True| DELTA PROTEKSI -->|False| OUTPUT_UNB DELTA --> DELTAMAX DELTAMAX --> HITUNG_UNB HITUNG_UNB --> CEK_ALM THR --> CEK_ALM CEK_ALM -->|Ya| OUTPUT_ALM CEK_ALM -->|Tidak| OUTPUT_ALM HITUNG_UNB --> OUTPUT_UNB AVG_CALC --> OUTPUT_AVG

Kesimpulan

Function Block K_UNBALANCE adalah artefak modular yang memperkuat transparansi dan efisiensi dalam sistem DCS. Dengan perhitungan eksplisit, proteksi terhadap pembagian nol, serta output yang informatif (UNB, AVG, dan ALM), FB ini siap dijadikan template untuk pengembangan Function Block lain yang audit‑grade dan teachable lintas plant.