IV. Algoritma DDC dan Implementasinya - Bab IV Algoritma DDC dan Implementasinya
- Pada kasus ini dipilih algoritma pengontrolan yang sederhana mempergunakan PID dengan atau tiga jenis algoritma pengontrolan
- Yang akan dipertimbangkan:
- Algoritma dalam bentuk digital
- Waktu yang diperlukan
- Penyelesaian Integral (Integral Wind-up) dan Pengalihan tanpa rintangan (bumpless transfer)
- Pemilihan sampling rate
- Persamaan variabel manipulasi dalam domain waktu yang dihasilkan oleh pengontrol PID : t
1 de ( t ) m ( t ) K e ( t ) e ( t ) dt T
p d
T dt i
dengan e(t) = error = r(t) – c(t) dengan r(t) adalah set point dan c(t) adalah variabel yang dikontrol atau dalam bentuk domain laplace
M ( s )
1 G ( s ) Kp
1 T s c d E ( s ) T s i
dengan G (s) adalah fungsi transfer dari pengontrol c Diagram untuk sistem kontrol
- Bentuk kontinu
E(s) R(s) + M(s) C(s) G (s) G (s) c p
- Bentuk Diskrit
E(s) M(s) R(s) +
C(s) G (z) G (s) c p
- T s
• Menggunakan metoda first-order finite difference dengan
hubungan : n
df f f k k 1 dan e ( t ) dt e t k
dt t k k 1 maka persamaan domain waktu yang kontinu dapat didiskritkan menjadi : n e ( n ) e ( n 1 )
1
m ( n ) K T e ( n ) e t
p d k
t T
k i 1
- Dengan memperkenalkan K = K (T /T ) dan K = K (T /T ) dengan T i p s i d p d s s = t = perioda sampling serta s(n) = sumasi error dari 0 sampai nT s maka
s ( n ) s ( n
1 ) e ( n )
m ( n ) K e ( n ) K s ( n ) K e ( n ) e ( n
1 ) p i d Implementasi Algoritma dasar PID
- Persamaan terakhir dapat dinyatakan dalam suatu prosedur program :
PROCEDURE PIDControl (en:REAL; VAR mn:REAL); BEGIN sn:=sn+en; mn:=Kp*En+Ki*sn+Kd*(en-enold); enold:=en; END PIDControl;
- Jika diasumsikan bahwa keluaran plant diperoleh
menggunakan ADC yang mensampling dan sinyal kontrol
aktuator dihasilkan oleh DAC makan modul pengontrolan
PID dapat dituliskan sebagai berikut : - MODULE PIDcontroller ; From IOmodule IMPORT ADC,DAC; From IO Import KeyPressed; CONST KpValue=1.0; KiValue=0.8;
KdValue=0.3
VAR sn,kp,ki,kd,en,enold,mn:REAL; PROCEDURE PIDControl(en:REAL;Var mn:REAL); BEGIN sn:=sn+en; mn:=kp*en+ki*sn+kd*(en-enold); enold:=en; END PIDController
- BEGIN (*Main Program*) sn:=0.0; kp:=KpValue; ki:=KiValue; kd:=KdValue; enold:=ADC(); REPEAT en:=ADC() PIDControl(en,mn); DAC(mn); UNTIL Keypressed(); END PIDControlller
- Program di atas mengabaikan beberapa masalah penting yaitu:
- Perlunya sinkronisasi pada perhitungan program PIDController dengan waktu nyata
- Perioda sampling (Ts) tidak tergantung pada kecepatan komputer padahal penting diperhatikan
- bumpless transfer : transfer yang mulus antara kontrol manual ke otomatis
- keterbatasan aktuator dan beberap bentuk saturasi alat
- Noise pengukuran dan proses
Sinkronisasi Lup Kontrol
- Salah satu ciri dari program real time adalah saat program sudah dijalankan maka program ini akan terus berjalan secara kontinu sampai adanya kejadian eksternal yang terjadi dan memberhentikannya.
- Untuk mempertegasnya dapat digunakan pemrograman looping tak hingga yaitu membuat LOOP…END dengan pernyataan EXIT
- MODULE RealTimeControl; (*Declaration) BEGIN (*Initialisation) LOOP (*synchronisation*)
(*get plant data*) (*control calculation*) (*EXIT condition check*) (*put control data to plant*) END(*Loop); END RealTimeControl;
- Sinkronisasi dapat diperoleh dengan :
- polling
- sinyal interrupt luar
- ballast coding
- sinyal real-time clock Polling Pengiriman sinyal pengecekan dari prosesor untuk mengecek status ready dari suatu alat PROCEDURE Synchronisation; (*Use of polling for synchrisation*) BEGIN LOOP
WHILE NOT (Digin(SampleTime)) DO (* wait until time*) END (*While*);
Ballast Code (Hine and Burbridge, 1979)
- Ide dari Ballast coding adalah membuat waktu loop benar-benar tidak tergantung pada operasi internal dari komputer dan tidak tergantung pada pewaktuan eksternal (external timing) dan sinyal sinkronisasi
- Metoda ini melibatkan :
- pencarian waktu yang dipakai untuk eksekusi setiap jalur yang ada pada control loop dari program
- penambahan statement kode (ballast code) untuk membuat waktu eksekusi di setiap jalur sama
- Jika perlu ditambahkan ballast code di akhir untuk membuat total waktu eksekusi untuk control loop sama dengan waktu eksekusi yang dikehendaki
- Metoda Ballast code tidak dapat digunakan bila digunakan interrupt dan kode haru dimodifikasi kembali jika CPU Clock rate-nya berubah
- Jadi dibandingkan dengan polling, metoda ballast code ini mencegah sistem komputer digunakan untuk perhitungan pada saat menunggu perhitungan kontrol berikutnya
Ilustrasi Ballast code
A A1 A2 T s Ballast
A2 A1.1 A1.2 Ballast Ballast
A1.1 A1.2 B Ballast External Interrupt
- Untuk sistem yang kecil dengan jumlah lup DDC
(atau aksi lain yang memerlukan sinkronisasi) terbatas penggunaan interrupt eksternal untuk sinkronisasi dapat sangat efektif
- Lup kontrol ditulis sebagai interrupt yang berkaitan dengan suatu baris interrupt tertentu. Baris interrupt diaktifkan oleh peralatan luar misal clock
- Saat lup kontrol menunggu untuk diaktifkan program lain dapat dijalankan
- Jenis ini operasi ini mengacu pada operasi foreground-background
Real-time Clock
- Solusi umum yang sering digunakan untuk masalah pewaktuan dari lup kontrol adalah dengan menambahkan real-time clock pada komputer
- Pemakaian real-time clock memerlukan penambahan beberapa hardware dan software
- Saat clock diakses waktu yang diperoleh dinyatakan dalam satuan ticks. 1 ticks = 1 / 18,2 detik
Sinkronisasi perhitungan control loop dengan real-time clock
FROM Timer IMPORT Ticks; CONST ST=20; (*time between samples in ‘Ticks’*)
VAR time,NextSample:LongCard; BEGIN (*Main Program*) NextSampleTime:=Ticks()+ST; time:=Ticks()+ST; LOOP WHILE Ticks()<NextSampleTime DO (*Nothing*) END; (* of while*) time:=Ticks() (*get plant input*) (*Control calculation*) (*put plant output*) NextSample Time:=time+ST; If KeyPressed() THEN EXIT; END(*If*)
Bumpless Transfer
- Dari persamaan:
s ( n ) s ( n 1 ) e ( n ) m ( n ) K e ( n ) K s ( n ) K e ( n ) e ( n 1 )
p i d Jika error nol maka m(n) sama dengan K s(n) i
- Secara ideal pada kondisi mantap (steady state) dengan error nol, bagian integral s(n) juga nol sehingga m(n) juga nol. Tapi ada juga beberapa
aplikasi yang mengharuskan pada kondisi mantap
m(n) tidak nol misal sebesar M, maka persamaannya diubah menjadi
m ( n ) K e ( n ) K s ( n ) K e ( n ) e ( n 1 ) M p i d
- Jika M dihilangkan sebenarnya proses integral dapat mengkompensasi tapi perubahan m(n) tidak mulus saat pergantian dari manual ke kontrol otomatik. Pergantian dari kontrol manual ke otomatik ini harus mulus yang disebut bumpless
- Beberapa metoda untuk memperoleh bumpless transfer:
- Preset Change-over Value - Tracking of Operator - Velocity Algorithm
- Nilai dari M dihitung untuk suatu nilai pada kondisi mantap dan nilai M pada kondisi mantap ini dimasukkan sebagai konstanta ke dalam program atau melalui suatu operator sebelum terjadi pengalihan (change over) dari manual ke mode automatik.
• Pengalihan ke mode automatik ini dilakukan pada saat
nilai error sama dengan nol, yaitu pada saat integral
menjadi nol dan m(n) = M.- Kelemahannya adalah nilai M ini hanya cocok untuk beban tertentu yang telah ditentukan jika bebannya
bervariasi tidak akan cocok. Serta jika error tidak nol
maka akan pada saat pengalihan akan ada perubahan mendadak dari m(n) karena aksi pengontonrol proporsional.
Metoda 2 – Tracking of Operator Setting
- Selama operasi dilakukan operator, nilai manipulated variable (m) diatur dari panel kontrol operator dan sistem komputer menelusuri nilai ini.
- Hal ini bisa dilakukan dengan pembacaan secara analog/digital atau dengan membaca nilai input dari aktuator dalam plant. Kedua hal ini diperlukan untuk mengkonversi dan penskalakan pembacaan m
- Pada saat pengalihan manual ke otomatik terjadi nilai m di simpan pada variabel mc. Dua metoda pengalihan yang dapat digunakan :
1. M tidak ada dan pengalihan dilakukan pada saat error sama dengan nol maka M = mc
2. M diset pada nilai nominal tertentu dan pengalihan terjadi pada saat error tidak sama dengan nol. Bagian integral harus diset pada nilai inisial : s = mc - K ec – M p dengan ec = error pada saat change-over Metoda 3 – Velocity Algorithm
- Algoritma PID yang diberikan sebelumnya sebenarnya mengarah kepada algoritma posisi
karena digunakan untuk menghitung nilai absolut
dari posisi aktuator - Bentuk alternatif dari algoritma PID yaitu algoritma kecepatan digunakan untuk menyediakan terjadinya bumpless transfer secara otomatis.
- Algoritma kecepatan ini memberikan perubahan dari nilai m bukan nilai absolut dari m. 2 dm ( t ) de ( t ) 1 d e ( t ) K e t T
- Bentuk persamaan differen dari : adalah : atau
- Dalam prakteknya nilai dari variabel manipulasi m(n) terbatas pada batasan fisik. Misal katup tidak dapat lebih terbuka dari batas fully open atau tidak dapat lebih tertutup dari batas fully closed • Sebagai contoh kita tinjau sistem pemanasan ruangan.
- Jika terjadi kondisi ekstrim yaitu temperatur di musim
dingin sangat dingin dan angin sangat kencang maka
sistem pemanas ini meskipun pada kondisi maksimum
tetap tidak bisa menghasilkan temperatur yang diinginkan - Pada kondisi ini akan terjadi standing error yang besar pada temperatur
- 20 -
- Jika digunakan pengontrol PI maka karena adanya standing error komponen integral akan terus naik, yaitu nilai s(n) akan terus naik pada setiap waktu sampling. Akibatnya nilai manipulated variable akan naik dan suplai panas akan terus meningkat. Tapi karena suplai panas ini sudah sampai batas maksimum maka panas yang diminta tidak akan tercapai
- Jika anginnya melemah dan temperatur udara luar menghangat maka temperatut bangunan akan naik dan akhirnya mencapai temperatur yang diinginkan.
- Namun nilai s(n) tetap besar karena nilainya tidak akan berkurang sampai temperatur bangunan melewati temperatur yang diinginkan.
- Akibatnya meskipun temperatur bangunan lebih tinggi dari temperatur yang diinginkan komponen integral akan tetap mempertahankan suplai panas atau output panas pada nilai maksimumnya.
- Efek ini disebut integral wind-up (pembelokan integral) atau integral saturation (integral jenuh).
- Saat pengontrol ada pada kondisi batas, efek ini akan melemahkan respon
- Pada metoda ini nilai dari integral sumasi akan diberhentikan saat aktuator saturasi dan nilai ini akan konstan selama aktuator masih saturasi. Pemberhentian dapat terjadi dengan membekukan sumasi pada saat manipulated variable keluar dari rentang mmin – mmax atau dengan menggunakan sinyal input digital dari aktuator yang muncul saat akuator saturasi
- Kelemahannya : saat komponen integral meninggalkan kondisi saturasi tidak diimbangi dengan dinamika plant yang sedang daya penuh
- Akibatnya pada saat set point tercapati, offset pengontrol (yang dinyatakan dengan komponen integral) tertinggal di belakang offset yang diperlukan plant dan beban
- Teknik pemberhentian sumasi akan memberikan respon yang lebih baik jika komponen integral tidak dibekukan saat terjadi perubahan tanda pada error. Tanda (+/-) dari error akan terjadi sebelum aktuator mencapai saturasi.
- Jika diasumsikan bahwa error positif akan membuat aktuator menuju batas atasnya (upper limit) maka diperlukan perilaku :
- stop upper limit
- aktif upper limit
- aktif normal normal - aktif
- lower limit
- stop lower limit
p d 2 dt dt T dt i
T n e T t
T n e T T n e T
2 ( 1 ) ( 1 ) n e T
1 (
) ) 2 (
K n e n e n m n m m d i p
) 1 ( ( n e n e n e t
( 2 ) ) 1 ( ) 1 ( ( )
) ) 2 (
T t e T dt t de K dt t dm
d
i p 2 2 ) ( ( 1 ) ) ( dt t e d
T T T K n m P s d s d s d i s dengan menulis : T T s d K K 1 1 P
T T i s
2 T d K 1 2
T s
T d K 3
T s Sehingga menjadi : Δm(n) K e ( n ) K e ( n 1 ) K e ( n 2 ) 1 2 3 yang lebih mudah diprogram
Karena output dari metoda ini adalah perubahan dari posisi kontrol maka algoritma ini secara otomatis
Saturasi dan Aksi Integral Wind-up
Kapasitas pemanasan ruang lingkupnya biasanya pada musim dingin yang biasa-biasa.
Angin Temperatur C
25
10 - Heat supply Integral term Building temperature Set point -100% Heat Output -- 0 Time
Teknik untuk mengatasi integral wind-up
1. Pembatasan pasti (fixed limit) pada nilai komponen integral Jika nilai komponen integral melewati batas maksimum/minimumnya yang diberikan maka nilai komponen integral ini diubah ke nilai maksimum/minimumnya.
Nilai maksimum dan minimum ini diambil dari nilai manipulated variable maksimum dan minimumnya. PROCEDURE PIDControl (en:REAl; Var mn:REAL); sn:=sn+en; (* integral summation) If sn>smax THEN sn:=smax ELSE If sn<smin THEN sn:=smin; END (*Else If*) END (*If*) mn:=Kp*en+Ki*sn+Kd*(en-enold); enold:=en;
END PIDControl;
Aktuator error Sumasi Integral
aktif
PROCEDURE PIDControl (en:REAL; Var mn:REAL);
StopSummation :=((mn>mnmax)AND(en>0.0) OR ((mn<mnmin) AND (en<0.0));IF NOT (StopSummation) THEN sn:=sn+en; END (*IF*) mn:=Kp*en+Ki*sn+Kd*(en-enOld); enOld:=en;