Simple PID S7-300/400

sharing cara membuat PID sederhana di S7-300/400 dengan software Simatic Manager

Banyak sekali permintaan di email untuk membuat artikel tentang PID di S7-300/400 dengan menggunakan software Simatic Manager. Akhir tahun lalu saya mengerjakan project untuk Evaporator System dengan banyak sekali menggunakan control loop PID. Berikut salah satu bagiannya :

Prinsip kerja dari sistem diatas adalah apabila pressure transmitter (PT) terbaca dibawah setpoint maka control valve (CV) akan membuka/increase, sedangkan sebaliknya jika PT terbaca diatas setpoint maka CV akan menutup/decrease.

Langkah pertama yaitu mengidentifikasi object input dalam hal ini yaitu PT dan object output yaitu CV. Data untuk kedua obyek tersebut adalah :

1. Pressure Transmitter (PT)
– Sinyal Transmitter : 4 – 20 mA
– Range : 0 – 10 bar
– Address : PIW100 (channel 0 dari module analog input)

2. Control Valve (CV)
– Sinyal Transmitter : 4 – 20 mA
– Range : 0 – 100 % Normally Close
– Address : PQW200 (channel 0 dari module analog output)

Tahap selanjutnya yaitu mulai programming untuk analog input, PID Blocks dan analog ouput.

a. Bit Always TRUE dan Always False
Kedua bit ini akan sangat diperlukan di program, jadi saran dari saya sempatkan untuk bikin program untuk kedua bit ini di awal program. Jika menggunakan TIA Portal, kedua bit ini sudah otomatis disediakan tinggal dipake aja.

b. Scaling Analog Input
Tugas dari fungsi ini adalah mengconvert bilangan decimal menjadi besaran fisik sesuai instrument.

IN kita isi dengan PIW100 sesuai address di hardware configuration
Karena range dari analog input adalah 0-10 bar, maka LO_LIM kita isi 0.0 dan HI_LIM kita isi 10.0
Hasil dari scaling akan kita gunakan sebagai inputan untuk PID Block, dalam kasus ini menggunakan address MD20 (real)

c. PID Block
Menggunakan standard library bawaan Siemens yaitu FB41.

Sebelum masuk ke penjelasan parameter PID, ada baiknya kita mengetahui konsep dari PID itu, lihat bagan dibawah ini

PID adalah kontroler untuk menentukan presisi suatu sistem instrumentasi dengan karakteristik adanya umpan balik pada sistem tesebut, fungsi control tersebut tujuannya adalah minimize/mengendalikan error dengan tiga cara yaitu proportional, integral, derivative, bisa dipake hanya satu aja atau semuanya berbarengan sesuai respont dari plant.

Kontrol Proporsional
Kontrol P jika G(s) = kp, dengan k adalah konstanta. Jika u = G(s) • e maka u = Kp • e dengan Kp adalah Konstanta Proporsional. Kp berlaku sebagai Gain (penguat) saja tanpa memberikan efek dinamik kepada kinerja kontroler. Penggunaan kontrol P memiliki berbagai keterbatasan karena sifat kontrol yang tidak dinamik ini. Walaupun demikian dalam aplikasi-aplikasi dasar yang sederhana kontrol P ini cukup mampu untuk memperbaiki respon transien khususnya rise time dan settling time.

Kontrol Integratif
Jika G(s) adalah kontrol I maka u dapat dinyatakan sebagai u(t)=[integrale(t)dT]Ki dengan Ki adalah konstanta Integral, dan dari persamaan di atas, G(s) dapat dinyatakan sebagai u=Kd.[deltae/deltat] Jika e(T) mendekati konstan (bukan nol) maka u(t) akan menjadi sangat besar sehingga diharapkan dapat memperbaiki error. Jika e(T) mendekati nol maka efek kontrol I ini semakin kecil. Kontrol I dapat memperbaiki sekaligus menghilangkan respon steady-state, namun pemilihan Ki yang tidak tepat dapat menyebabkan respon transien yang tinggi sehingga dapat menyebabkan ketidakstabilan sistem. Pemilihan Ki yang sangat tinggi justru dapat menyebabkan output berosilasi karena menambah orde sistem

Kontrol Derivatif
Sinyal kontrol u yang dihasilkan oleh kontrol D dapat dinyatakan sebagai G(s)=s.Kd Dari persamaan di atas, nampak bahwa sifat dari kontrol D ini dalam konteks “kecepatan” atau rate dari error. Dengan sifat ini ia dapat digunakan untuk memperbaiki respon transien dengan memprediksi error yang akan terjadi. Kontrol Derivative hanya berubah saat ada perubahan error sehingga saat error statis kontrol ini tidak akan bereaksi, hal ini pula yang menyebabkan kontroler Derivative tidak dapat dipakai sendiri

Selanjutnya kita masuk ke penjelasan general dari masing-masing parameter PID Block FB41 :

Bit M1.0 dalam kasus ini saya gunakan jika system kita running untuk enable PID block tersebut
PVPER_ON tidak saya aktifkan karena saya tidak menggunakan langsung pheriperal value
P_SEL adalah penggunaan Proportional untuk mengontrol error –> aktifkan
I_SEL adalah penggunaan Integral untuk mengontrol error –> aktifkan

LMN adalah output value untuk CV 0-100%

D_SEL adalah penggunaan Derivatif untuk mengontrol error –> aktifkan
CYCLE , scan cycle dari fungsi FB41 berikut, biasanya saya menggunakan selang waktu 1 detik
SP_INT adalah setpoint dari PID system, untuk contoh ini saya menggunakan MD24 (real)
PV_IN adalah process value feedback dari PT yang sebelumnya kita scaling di rung sebelumnya
MAN adalah manual value saat kondisi manual mode
GAIN : settingan Kp sekedar saran untuk setingan awal gunakan gain yang kecil dalam hal ini yaitu 0.01
TI : settingan Ki biasanya saya menggunakan T#10s
TD : settingan Kd biasanya saya menggunakan T#30s

untuk contoh ini cara menentukan parameter Kp Ki dan Kd menggunakan cara trial dan error, dari parameter diatas jika error yang terjadi masih besar, diadjust dengan merubah Kp terlebih dahulu.

untuk settingan yang terakhir ;
LMN_HLM : batas atas dari manipulated value atau nilai yang akan ditransfer ke CV dalam hal ini yaitu 100.0
LMN_LLM : batas bawah dari manipulated value 0.0
PV_FAC dan LMN_FAC isi dengan nilai 1.0 (faktor pengali)

c. UnScaling Analog Output
Tugas dari fungsi ini adalah kebalikan dari scaling AI yaitu mengconvert dari besaran fisik CV menjadi bilangan decimal.

OUT kita isi dengan PQW200 sesuai address di hardware configuration
Karena range dari analog output adalah 0-100 % , maka LO_LIM kita isi 0.0 dan HI_LIM kita isi 100.0
Keluaran dari PID Block (LMN) kita gunakan sebagai inputan unscaling, dalam kasus ini menggunakan address MD28 (real)

d. Simulasikan di Variabel Tabel

Saat PV lebih kecil dari setpoint, maka CV akan increase

Saat PV lebih besar dari setpoint, maka CV akan decrease

Untuk source code programnya bisa didownload disini

30 thoughts on “Simple PID S7-300/400”

  1. pak saya sedang berencana membuat tugas akhir berupa simulasi plc dengan tia portal,permasalahannya adalah saya utak atik tia portal tsb belum bisa monitoring offline (tanpa plc), mohon tutorial urutan2 membentuk simulasi plc dari pemilihan perangkat sampai compile berjalan.
    dan saya mau tanya apakah hmi pada tia portal dapat digunakan sebagai simulasi,kalo boleh saya minta tutorialnya pak, sebelumnya terimakasih pak

  2. – untuk simulasi di TIA Portal hanya bisa menggunakan S7300/400/1500 , S71200 gak bisa
    – HMI TIA portal juga bisa dengan link ke PLCSim
    – Untuk tutorial saya belum buat 🙂

  3. maaf pak fathoni plcsim yang dimaksud disini adalah bagian symantic managernya kan pak??
    berarti untuk simulasi offline di TIA PORTAL hanya bisa menggunakan database S7300/400/1500 ya pak?

  4. Pak, saya sedang simulasi program ladder dengan TIA Portal. yang jadi kendala pada proses running programnya koq tidak kelihatan (tidak seperti di simatic manager). Mohon pencerahannya Pak, Terimakasih

  5. Pak fathoni, program tersebut udah saya simulasikan. saya setting pressure 4.3, SP 5.0. Tapi kok CV ngitung terus dari 0.0 sampai 100.0? dan mentok di 100.0. Mohon pencerahannya pak

  6. iya bener mas karena Process Value 4.3 lebih kecil dibanding SetPoint 5 , maka CV akan ngejar/increase terus sampai max value (100%).

    salah satu parameter PID adalah P (Proportional) atau disebut juga gain, yaitu pengali dari error.

    just saran, sebelum mengaplikasikan function diatas sebaiknya baca-baca dulu konsep PID.

  7. mas, ternyata harus Run-P untuk bisa setting Set Valuenya. Sekarang sudah bisa. Mas bisa minta tolong jelasin konsep PIDnya ga, misal kalo konstanta K (gain) yang dirubah itu gimana, kalo di rumus tuh yang mana aja variabel di function blocknya. Saya sudah banyak baca konsep PID tapi bahasanya sangat teoritis, ketemu tulisan mas saya mikir ini aplikatif dan mudah dipahami. Saya juga sambil nyoba nyoba mas. Makasih banyak ya mas fathoni.

  8. mas, saya sudah lakukan percobaan nih, dengan utak-atik sana-sini, konstanta atau set value dibesarin dan dikecilkan, sehingga saya mengetahui perbedaannya.

    Kalo P itu hanya memberikan output control valve sesuai error yang ada. Dengan rumus Kp * error. Dimana error adalah set Point (SP)- present Value (PV)

    Kalo I itu akan continue terus terbukanya (increase) atau tertutupnya (decrease) sampai value sekarang sama dengan set value, semakin kecil konstanta Integral semakin cepat pergerakan valve.

    Kalo D tidak bisa berdiri sendiri, control valve tidak memberika reaksi apapun.

    Untuk PI, perbedaan hanya ada saat mendekati set value, pergerakan control valve menjadi kecil pula.

    Untuk PD, saya perhatikan kok tidak ada bedanya dengan P saja ya, bedanya mungkin hanya ada semacam running proses saat perubahan control valve.

    Untuk PID, saya belum tau mas bedanya dimana. Mohon penjelasannya. Terimakasih.

  9. mau tanyak konfigurasi dgn plc redundent.downloadnya di cpu mana?dan langkahnya gmn jika pakai simatic meneger 7

  10. saya mengalami kendala untuk plc s7 300 pada pemberian nilai pada timer TV saya isi tetap eror, minta pendapatnya cara isi TV Pak

  11. pak fatoni,saya masih bingung penentuan MD dan MW yang digunakan dalam scaling dan unscaling values serta menentukan mana input yg bipolar.Saya mohon penjelasannya.Terima Kasih.

  12. mas luthfi…
    MD untuk real/floating point
    MW untuk integer
    gunakan MD dan MW yang free lihat di assignment list
    hampir semua instrument menggunakan tipe unipolar

  13. maaf pak fatoni,karena saya pemula,mungkin kalau dari contoh di atas bagaimana menentukan MD dan MW.Kebetulan saya menggunakan s7-300 bukan via portal mungkin tidak bisa mensimulasikan contoh program pak fatoni.

  14. Muhammad Arifin

    Mass saya mau tanya, bagaimana caranya untuk memastikan digital output keluar tegangan ? tipe nya 6ES7322-1HH01-0AA0 .. dan itu keluarannya AC apa DC kak ? mohon sharing yaa

  15. itu DO Relay, bisa menggunakan tegangan 24-120 VDC atau 24 – 230 VAC
    cara ceknya misal :
    channel 0, antara pin 2 dan 1 harus closed contact
    channel 1, antara pin 3 dan 1 harus closed contact

    begitu seterusnya, lebih jelasnya baca wiring manualnya
    nanti saya email deh

  16. mas saya mau tanya tentang PLC siemens, kalau beli module siemens untuk test and error itu di butuhkan module miemens apa aja?
    terima kasih.

Leave a Comment

Your email address will not be published. Required fields are marked *