Sesi 02 dari 16

Pemodelan Matematis
Sistem Infrastruktur Kritis

Belajar "berbicara dalam bahasa matematika" untuk menggambarkan sistem fisik — dari persamaan diferensial hingga simulasi Python.

Mengapa Pemodelan? Persamaan Diferensial State-Space Model Fungsi Transfer Linearisasi Studi Kasus Python Simulasi
🗺️
Topik 2.1
Mengapa Kita Perlu Pemodelan?
🗺️ Analogi — Peta sebelum Perjalanan

Sebelum membangun jalan tol, insinyur tidak langsung menuang aspal. Mereka membuat peta dan cetak biru terlebih dahulu — mensimulasikan jalur mana yang paling efisien. Begitu pula dengan sistem kontrol: model matematis adalah "cetak biru" sistem yang memungkinkan kita merancang dan menguji kontroller di komputer sebelum dipasang di dunia nyata.

Tanpa model yang akurat, merancang kontroller sama seperti merakit mesin tanpa gambar teknik — bisa berhasil, tapi berisiko fatal untuk infrastruktur kritis.

🎯 Manfaat Pemodelan Matematis

  • Memahami perilaku sistem tanpa harus membangun fisiknya
  • Merancang dan menguji kontroller di simulasi → hemat biaya & aman
  • Memprediksi respons sistem terhadap gangguan
  • Mengoptimalkan parameter kontrol secara analitis
  • Dasar untuk desain kontrol adaptif (model bisa di-update online!)
📐
Topik 2.2
Persamaan Diferensial: Bahasa Dinamika Sistem
💧 Analogi — Tangki Air dengan Keran

Bayangkan tangki air. Ada air masuk (pompa) dan air keluar (keran). Laju perubahan level air = (laju masuk − laju keluar). Ini adalah persamaan diferensial! Bukan sesuatu yang misterius — hanya cara formal mengatakan "seberapa cepat sesuatu berubah".

📐 Contoh: Sistem Tangki Air
A · dh/dt = Q_in − Q_out
A = luas penampang tangki (m²), h = tinggi air (m)
Q_in = debit masuk (m³/s), Q_out = a√(2gh) (Torricelli)
📐 Contoh: Sistem Listrik RC (Kapasitor)
RC · dV_c/dt + V_c = V_in
R = resistansi (Ω), C = kapasitansi (F)
V_c = tegangan kapasitor, V_in = tegangan input

Order Sistem

OrderCiriContoh Sistem
Orde 1Satu turunan pertama (dX/dt)Tangki air, RC, sistem termal sederhana
Orde 2Turunan hingga d²X/dt²Sistem pegas-massa-redaman, motor DC, ayunan
Orde TinggiBanyak variabel statusJaringan listrik, reaktor kimia, turbin
📊
Topik 2.3
State-Space Model: Representasi Modern
🎮 Analogi — Status Karakter dalam Game RPG

Dalam game RPG, karakter Anda punya banyak "status": HP, MP, Strength, Defense, Level. Semua status ini bersama-sama menentukan kondisi karakter saat ini. State-space model melakukan hal yang sama untuk sistem fisik — mengumpulkan semua "status" penting (disebut state variables) dalam satu representasi terstruktur.

📐 Bentuk Umum State-Space
ẋ(t) = Ax(t) + Bu(t)   ← State equation
y(t) = Cx(t) + Du(t)   ← Output equation

Arti Setiap Variabel

x(t) — State vector
Kumpulan variabel yang menggambarkan "kondisi dalam" sistem
u(t) — Input vector
Sinyal kontrol yang diberikan ke sistem (perintah aktuator)
y(t) — Output vector
Sinyal yang terukur/diobservasi (pembacaan sensor)
A, B, C, D — Matriks sistem
Parameter yang menentukan dinamika sistem

Contoh: Motor DC dalam Sistem Pompa

🔧 State-Space Motor DC (State: kecepatan ω, arus i)
[di/dt ] = [-R/L -Kb/L] [i] + [1/L] u(t)
[dω/dt ] [Kt/J -B/J ] [ω] [ 0 ]

y(t) = [0 1] [i]
             [ω]

✅ Mengapa State-Space Populer di Kontrol Adaptif?

State-space bisa menangani sistem multi-input multi-output (MIMO) dengan mudah. Selain itu, matriks A, B, C bisa di-update secara online ketika parameter sistem berubah — itulah inti kontrol adaptif!

Topik 2.4
Fungsi Transfer & Diagram Blok
📻 Analogi — Volume Knob Radio

Fungsi transfer seperti "deskripsi matematis" dari sebuah komponen. Radio punya fungsi transfer: "putar 1 notch = naikkan volume 2 dB". Sistem fisik punya fungsi transfer: "beri tegangan 1V = putaran motor 10 rad/s". Fungsi transfer menghubungkan INPUT → OUTPUT tanpa peduli isi dalamnya.

📐 Definisi Fungsi Transfer
G(s) = Y(s) / U(s) = (b₀sⁿ + b₁sⁿ⁻¹ + ... + bₙ) / (a₀sᵐ + a₁sᵐ⁻¹ + ... + aₘ)
s = variabel Laplace (domain frekuensi), Y(s) = output, U(s) = input

Diagram Blok Sistem Kontrol Sederhana

R(s)
Setpoint

error
C(s)
Controller
G(s)
Plant
Y(s)
Output
↑________________ H(s) Sensor (feedback) _______________↑
📐 Fungsi Transfer Closed-Loop
T(s) = C(s)·G(s) / (1 + C(s)·G(s)·H(s))
T(s) = fungsi transfer dari setpoint ke output
C(s) = controller, G(s) = plant, H(s) = sensor

Contoh Umum Fungsi Transfer

SistemFungsi Transfer G(s)Parameter
Sistem orde-1 (RC, tangki)K / (τs + 1)K = gain, τ = time constant
Sistem orde-2 (motor, pegas)ωn² / (s² + 2ζωns + ωn²)ωn = natural freq, ζ = damping ratio
Sistem dengan delay (pipa)Ke⁻ᵀᵈˢ / (τs + 1)Td = dead time (delay)
Integrator (pompa)K/sOutput terus naik jika ada input
📏
Topik 2.5
Linearisasi Sistem Nonlinier
🌍 Analogi — Peta Datar vs Bumi Bulat

Bumi sesungguhnya bulat (nonlinier). Tapi jika kita hanya bepergian di kota kecil, peta datar (linier) sudah cukup akurat! Linearisasi bekerja sama: kita buat "peta lokal yang datar" untuk sistem nonlinier di sekitar titik operasi (operating point) tertentu.

Kebanyakan sistem fisik nyata bersifat nonlinier. Contoh: debit air melalui keran ∝ √h (akar kuadrat tinggi air, bukan linier). Tapi untuk kontrol, kita perlu model linier. Solusinya: linearisasi di sekitar titik kerja.

📐 Metode Linearisasi (Deret Taylor)
f(x) ≈ f(x₀) + (df/dx)|ₓ₀ · Δx
x₀ = operating point, Δx = x − x₀ (deviasi kecil)

Contoh: Q_out = a√(2gh) → dilinearisasi di h₀:
ΔQ ≈ (a/√(2h₀)) · Δh
= gain konstan di sekitar h₀
  1. Tentukan Operating Point (x₀, u₀)
    Titik di mana sistem biasanya beroperasi (steady-state). Contoh: suhu reaktor 150°C, tekanan 5 bar.
  2. Hitung Turunan Parsial (Jacobian)
    Hitung ∂f/∂x dan ∂f/∂u di titik operasi untuk mendapatkan matriks A dan B.
  3. Buat Model Deviasi
    Ganti variabel asli dengan deviasi: Δx = x − x₀, Δu = u − u₀
  4. Validasi
    Pastikan model linier akurat di sekitar operating point dengan simulasi.

⚠️ Keterbatasan Linearisasi

Model linier hanya valid di sekitar operating point. Jika sistem bergerak jauh dari titik operasi (misal: beban listrik berubah drastis), model linier tidak akurat lagi. Inilah salah satu alasan mengapa gain scheduling (Sesi 6) dan kontrol adaptif diperlukan!

🏭
Topik 2.6
Studi Kasus: Pemodelan Sistem Nyata

Kasus 1: Sistem HVAC Gedung Kritis (Data Center)

🏢 Skenario: Data Center Bank Indonesia

Suhu data center harus dijaga tepat 20°C. Server menghasilkan panas (gangguan). AC (aktuator) harus mengkompensasinya. Kita modelkan sebagai sistem termal orde-1.

🌡️ Model Termal Ruangan (Orde-1)
C · dT/dt = Q_AC(t) − Q_server(t) − UA·(T − T_ambient)
C = thermal capacitance (J/°C)
Q_AC = panas yang diserap AC (W), Q_server = panas server (W)
UA = koefisien kehilangan panas ke lingkungan

Fungsi Transfer (Q_AC → T):
G(s) = 1/(Cs + UA)

Kasus 2: Sistem Distribusi Tenaga Listrik

⚡ Model Load-Frequency Control (LFC) Sederhana
M·df/dt = P_mech − P_load − D·f
M = inersia sistem (MW·s/Hz)
f = deviasi frekuensi dari 50 Hz
P_mech = daya mekanik turbin, P_load = beban listrik
D = koefisien damping
🐍
Topik 2.7
Simulasi Python: Respons Sistem & State-Space

Kita akan gunakan Python Control Library untuk mensimulasikan respons sistem HVAC data center.

Python 🐍 — Install Library
# Install terlebih dahulu (jalankan di terminal):
# pip install control matplotlib numpy scipy
Python 🐍 — hvac_model.py
import control as ct
import numpy as np
import matplotlib.pyplot as plt

# ==========================================
# MODEL HVAC DATA CENTER
# ==========================================

# Parameter sistem termal
C  = 5000    # Thermal capacitance (J/°C)
UA = 200     # Heat loss coefficient (W/°C)

# Fungsi Transfer: G(s) = 1/(Cs + UA)
# = (1/UA) / ((C/UA)s + 1) = K/(τs+1)
K   = 1/UA         # Steady-state gain
tau = C/UA          # Time constant (detik)
print(f"Gain K     = {K:.4f} °C/W")
print(f"Time const = {tau:.1f} detik ({tau/60:.1f} menit)")

# Buat transfer function
num = [K]
den = [tau, 1]
G = ct.tf(num, den)
print(f"\nFungsi Transfer:\n{G}")

# --- RESPONS STEP (AC menyala tiba-tiba) ---
t   = np.linspace(0, 600, 1000)   # 0 sampai 600 detik
t, y = ct.step_response(G, T=t)

# Konversi: step = 1000W AC → perubahan suhu
Q_AC   = 1000        # 1 kW cooling
delta_T = y * Q_AC    # perubahan suhu (°C)

# --- PLOT 1: Step Response ---
fig, axes = plt.subplots(1, 2, figsize=(12, 5))

axes[0].plot(t/60, delta_T, 'orange', lw=2)
axes[0].axhline(K*Q_AC, color='red', ls='--', label=f'Steady-state: {K*Q_AC:.1f}°C')
axes[0].axvline(tau/60, color='gray', ls=':', label=f'τ = {tau/60:.1f} menit')
axes[0].set_xlabel('Waktu (menit)'); axes[0].set_ylabel('ΔSuhu (°C)')
axes[0].set_title('Respons Step: HVAC 1 kW')
axes[0].legend(); axes[0].grid(alpha=0.3)

# --- SIMULASI LENGKAP: Server Panas + AC ON/OFF ---
dt   = 1       # 1 detik per langkah
T_sim = 3600   # 1 jam simulasi
time = np.arange(0, T_sim, dt)
T_room = np.zeros(len(time))
T_room[0] = 25.0   # suhu awal 25°C
T_target = 20.0
T_ambient = 30.0

for k in range(1, len(time)):
    # Panas server (fluktuasi realistis)
    Q_server = 800 + 200*np.sin(2*np.pi*time[k]/1800)  # 600-1000W
    
    # Controller on/off (bang-bang)
    Q_AC = 1200 if T_room[k-1] > T_target else 0
    
    # Update suhu
    dT = (Q_AC - Q_server - UA*(T_room[k-1] - T_ambient)) / C * dt
    T_room[k] = T_room[k-1] + dT

axes[1].plot(time/60, T_room, 'tomato', lw=1.5, label='Suhu ruangan')
axes[1].axhline(T_target, color='lime', ls='--', lw=2, label=f'Target {T_target}°C')
axes[1].fill_between(time/60, T_target-0.5, T_target+0.5, alpha=0.2, color='lime', label='±0.5°C toleransi')
axes[1].set_xlabel('Waktu (menit)'); axes[1].set_ylabel('Suhu (°C)')
axes[1].set_title('Simulasi 1 Jam: HVAC Data Center')
axes[1].legend(); axes[1].grid(alpha=0.3)

plt.tight_layout()
plt.savefig('hvac_simulation.png', dpi=150)
plt.show()
print("\n✅ Simulasi selesai! Grafik disimpan sebagai 'hvac_simulation.png'")

✅ Interpretasi Hasil

  • Grafik Kiri: Respons step — suhu turun perlahan mengikuti kurva eksponensial. Time constant τ = 25 menit artinya setelah 25 menit suhu sudah 63% menuju steady-state.
  • Grafik Kanan: Simulasi realistis — AC on/off (bang-bang control) membuat suhu berosilasi di sekitar 20°C. Di Sesi berikutnya, kita akan ganti dengan PID lalu kontrol adaptif untuk hasil yang lebih halus!
Python 🐍 — state_space_example.py
import control as ct
import numpy as np

# ==========================================
# STATE-SPACE: Motor DC untuk Pompa Air
# ==========================================
R  = 1.0   # Resistansi armature (Ω)
L  = 0.5   # Induktansi (H)
Kb = 0.01  # Back-EMF constant
Kt = 0.01  # Torque constant
J  = 0.01  # Momen inersia (kg·m²)
B  = 0.1   # Koefisien gesek (N·m·s)

# Matriks state-space
A = np.array([[-R/L,  -Kb/L],
              [ Kt/J, -B/J ]])
B_mat = np.array([[1/L], [0]])
C_mat = np.array([[0, 1]])   # output = kecepatan angular ω
D_mat = np.array([[0]])

sys = ct.ss(A, B_mat, C_mat, D_mat)
print("State-Space Motor DC:")
print(f"A = \n{A}")
print(f"\nEigenvalues (poles): {np.linalg.eigvals(A)}")

# Konversi ke fungsi transfer
tf = ct.ss2tf(sys)
print(f"\nFungsi Transfer (V → ω):\n{tf}")

# Respons step (tegangan 12V)
t, y = ct.step_response(sys)
import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))
plt.plot(t, y*12, 'orange', lw=2)
plt.xlabel('Waktu (s)'); plt.ylabel('Kecepatan ω (rad/s)')
plt.title('Respons Motor DC: Tegangan 12V → Kecepatan Putar')
plt.grid(alpha=0.3); plt.tight_layout(); plt.show()

🧠 Kuis Pemahaman Sesi 2

1. Dalam representasi state-space ẋ = Ax + Bu, apa fungsi matriks A?

2. Linearisasi sistem nonlinier dilakukan dengan tujuan?

3. Jika time constant τ = 25 menit, berapa lama hingga respons mencapai ~95% nilai akhir?