1
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)
Pendahuluan
• Persamaan variabel manipulasi dalam domain waktu yang dihasilkan oleh pengontrol PID :
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
dengan Gc(s) adalah fungsi transfer dari pengontrol
3
Diagram untuk sistem kontrol
• Bentuk kontinu• Bentuk Diskrit
Gc(s) Gp(s) C(s) M(s)
E(s) R(s) +
-Gc(z) Gp(s) C(s) M(s)
E(s) R(s) +
• Menggunakan metoda first-order finite difference dengan hubungan :
maka persamaan domain waktu yang kontinu dapat didiskritkan menjadi :
• Dengan memperkenalkan
Ki = Kp(Ts/Ti) dan Kd = Kp(Td/Ts) dengan Ts = t = perioda sampling serta s(n) = sumasi error dari 0 sampai nTs
5
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
• 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;
7
• BEGIN (*Main Program*) sn:=0.0;
kp:=KpValue; ki:=KiValue; kd:=KdValue; enold:=ADC(); REPEAT
en:=ADC()
PIDControl(en,mn); DAC(mn);
• 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
9
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
• MODULE RealTimeControl; (*Declaration)
BEGIN
(*Initialisation) LOOP
(*synchronisation*) (*get plant data*)
(*control calculation*) (*EXIT condition check*)
(*put control data to plant*) END(*Loop);
11
• 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*); END (*Loop*);
Ballast Code (Hine and Burbridge, 1979)
• Ide dari Ballast coding adalah membuat waktuloop 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
13
• 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
Ilustrasi Ballast code
A
A1 A2
A1.1
Ballast A1.1
A1.2
Ballast A1.2
Ballast A2
15
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
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
17
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:
Jika error nol maka m(n) sama dengan Kis(n)
• 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
19
• 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
Metoda 1 – Preset Change-over Value
• 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.
21
Metoda 2 – Tracking of Operator Setting
• Selama operasi dilakukan operator, nilaimanipulated 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
• 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 :
23
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.
25 dengan
3
Karena output dari metoda ini adalah perubahan dari posisi kontrol maka algoritma ini secara otomatis
Saturasi dan Aksi Integral Wind-up
• 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. Kapasitas pemanasan ruang lingkupnya biasanya pada musim dingin yang biasa-biasa.
• 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
27
• Pada kondisi ini akan terjadi standing error yang besar pada temperatur
Angin
melemah Temperatur C
25 -20
-10
-Heat supply
Integral
term Building temperature Set point
-100% Heat Output
• 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
29
• 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
Teknik untuk mengatasi integral wind-up
1. Pembatasan pasti (fixed limit) pada nilaikomponen 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
31
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;
2. Pemberhentian Sumasi
• 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
33
• 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
Aktuator error Sumasi Integral
upper limit + stop
upper limit - aktif
normal + aktif
normal - aktif
lower limit + aktif lower limit - stop
PROCEDURE PIDControl (en:REAL; Var mn:REAL); StopSummation :=((mn>mnmax)AND(en>0.0)
OR ((mn<mnmin) AND (en<0.0));