Indonesia Australia Partnership for Skills Development · Web viewPenulisan program untuk...

92
Catatan bebas mengenai : Memperbaiki Kerusakan pada Sistem PLC Model Tertentu By : Budic Utom Jika anda suka dengan catatan bebas versi NISG ini jangan lupa kunjungi kami di : http://nisguru.blogspot.com

Transcript of Indonesia Australia Partnership for Skills Development · Web viewPenulisan program untuk...

Catatan bebas mengenai :

Memperbaiki Kerusakan pada Sistem PLC Model Tertentu

By : Budic Utom

Jika anda suka dengan catatan bebas versi NISG ini jangan lupa kunjungi kami di :

http://nisguru.blogspot.com

1. Perangkat keras pada PLC

1.1 Panduan dasar pembuatan suatu sistem PLC dan aplikasinya.

Ada banyak metoda dalam merancang suatu sistem PLC. Dibawah ini diberikan beberapa panduan yang dapat digunakan dalam merancang berbagai sistem. Tentu saja anda harus mengikuti prosedur yang ada pada perusahaan saudara dan juga Prosedur Kerja Standar yang ada pada perusahaan saudara.

Langkah dibawah ini hanya merupakan salah satu contoh praktis

1. Bagilah proses-proses yang terlibat dalam sistem yang anda rancang

Bagilah proses anda menjadi bagian-bagian yang mempunyai tingkat ketergantungan yang berbeda-beda. Pembagian ini menjadi batasan diantra kontroler dan pengaruh dari fungsi-fungsi lainya sesuai dengan spesifikasi dan sumber yang ada.

2. Buatlah spesifikasi dari fungsi-fungsi setiap bagian pada sistem.

Tulislah gambaran dari operasi tiap bagian pada keseluruhan proses yang mencakup

· Input/Output

· Gambaran fungsi dari tiap operasi

· Status yang diijinkan (menunjukan apa yang harus dicapai sebelum ada tindakan lebih lanjut) untuk aktuator, solenoid, motor dsb.

· Gambaran dari antarmuka (“interface”) operator

· Antarmuka dengan bagian proses lainnya

3. Rancanglah fasilitas keselamatan/proteksi pada sistem yang anda rancang

Identifikasi peralatan-peralatan yang memerlukan proteksi secara “Hardwire” untuk keselamatan baik peralatan maupun operator. Komponen-komponen dapat gagal melakukan fungsinya dan menyebabkan kondisi yang berbahaya. Kondisi berbahaya ini dapat menyebabkan kecelakaan pada orang atau barang dilokasi, hal yang penting disini adalah membuat suatu sistem safety dengan menggunakan komponen elektro mekanikal pengganti/safety yang akan bekerja diluar dari sistem CPU untuk mencegah kondisi yang tidak diinginkan.

Hal berikut ini harus diperhatikan dalam merancang sistem keselamatan :

· Identifikasi operasi yang tidak benar dan berbahaya dari aktuator.

· Identifikasi kondisi yang dapat memastkan bahwa operasi tersebut tidak lagi berbahaya, dan tentukan bagaimana untuk mendeteksi kondisi tersebut tanpa melalui CPU.

· Identifikasi bagaimana CPU dan I/O mempengaruhi proses pada waktu terdapat power, tidak terdapat power, dan kesalahan yang dapat dideteksi. Informasi ini hanya digunkan untuk merancang operasi normal dan tidak normal dan tidak bisa diandalkan untuk tujuan safety.

· Rancanglah komponen manual atau elektro mekanikal yang dapat mengambil alih kontrol dari blok yang berbahaya dari CPU.

· Buatlah informasi status dari rangkaian independen tersebut agar diketahui oleh CPU sehingga program dan antarmuka operator dapat mengetahui informasi yang diperlukan.

· Identifikasi kebutuhan safety yang lain untuk keselamatan dari keseluruhan proses.

4. Tentukanlah lokasi-lokasi dari operator

Berdasarkan keperluan dari fungsi yang dibutuhkan, gambarlah lokasi operator temasuk hal berikut ini :

· Gambaran dasar yang menunjukan lokasi dari tiap operator dalam hubungannya dengan proses mesin.

· Lay out mekanikal dari komponen-komponen( display, sakelar, lampu dsb) untuk lokasi operator

· Gambar elektrikal dari hubungan I/O dan CPU atau Modul tambahan.

5. Buatlah gambar dari konfigurasi PLC

Berdasarkan kebutuhan spesifikasi fungsional, gambarlah konfigurasi dari komponen pengendali yang termasuk hal dibawah ini:

· Gambar yang menunjukan lokasi tiap CPU dalam hubungannya dengan proses mesin

· Lay out mekanikal dari CPU dan modul I/O tambahan (ternasuk lemari, box,dan peralatan lainnya)

· Gambar elektrikal untuk CPU dan modul I/O tambahan (termasuk model dari komponen, alamat komunikasi, dan alamat I/O.

6. Buatlah daftar dari simbol-simbol dari sinyal yang digunakan sebagai referensi.

Jika anda menggunakan simbol-simbol untuk menunjukan alamat-alamat, maka buatlah simbol untuk alamat absolut. Sertakanlah sinyal I/O dan elemen-elemen lain yang digunakan dalam program anda.

Gambar berikut menunjukan contoh dari diagram yang menggambarkan hubungan program aplikasi dengan input dan output

Gambar 1.1 : Hubungan program aplikasi dengan input dan output

1.2 Metoda Program Pengendalian

1.2.1 Sistem Pengendalian secara umumSuatu proses pengendalian membutuhkan adanya input dan output. Dalam hal ini fungsi Input adalah suatu besaran yang akan menjadi dasar/masukan bagi suatu proses lebih lanjut yang akan menganalisa input tersebut dan membandingkannya dengan suatu kriteria yang sudah dibuat sesuai dengan spesifikasi dari proses terebut. Kemudian setelah input tersebut diproses maka akan ada suatu hasil akhir yang akan dikeluarkan. Hasil akhir ini disebut Output.

Dalam suatu proses pengendalian dikenal dua macam sistem dasar yang disebut Pengendalian Ikal Terbuka (Open Loop Control) dan Pengendalian Ikal Tertutup (Closed Loop Control). Pada Pengendalian Ikal Terbuka (Open Loop Control )ini hasil akhir yang dikeluarkan hanya bergantung kepada masukannya dan hasil akhir itu sendiri tidak mempunyai pengaruh apapun terhadap proses ini. Contohnya : seorang guru menyuruh murid mengerjakan sesuatu (input) kemudian meninggalakan ruangan (output).

Sistem Ikal Terbuka ini dapat digambarkan dalam blok diagram sebagai berikut :

Y = Gco · Gp · R Y/R = Geo · Gp

Suatu proses otomatis akan merupakan jenis pengendalian ikal tertutup, karena proses yang dijalan kan akan bergantung kepada hasil akhirnya juga. Contoh : dalam kelas yang sama guru menyuruh murid mengerjakan sesuatu, kemudian mengawasi hasil pekerjaan mereka untuk memastikan perkerjaan tersebut diselesaikan dengan baik. Jika murid tersebut berhenti mengerjakan dan bertindak yang tidak seharusnya, maka guru akan mengambil aksi. Dalam hal ini guru mengadakan pengamatan, mendapatkan umpan balik (feedback) dan mengambil aksi yang sesuai jika target tidak tercapai. Jadi dalam sistem pengendalian ikal tertutup akan melibatkan umpan balik untuk memastikan kondisi yang diinginkan tercapai.

Sistem Ikal tertutup ini dapat digambarkan dalam blok diagram sebagai berikut :

Y = E · Gcc · Gp E = R · HY Y/R = (Gcc · Gp)/( 1 + Gcc · Gp · H)

Gco(s) Gp(s) R(s) Y(s)

_+

Feedback

Gcc(s) Gp(s)

R(s)

H(s)

E

YH Y

Suatu proses otomatis akan merupakan jenis pengendalian ikal tertutup, karena proses yang dijalankan akan bergantung kepada hasil akhirnya juga. Contoh : dalam kelas yang sama guru menyuruh murid mengerjakan sesuatu, kemudian mengawasi hasil pekerjaan mereka untuk memastikan perkerjaan tersebut diselesaikan dengan baik. Jika murid tersebut berhenti mengerjakan dan bertindak yang tidak seharusnya, maka guru akan mengambil aksi. Dalam hal ini guru mengadakan pengamatan, mendapatkan umpan balik (feedback) dan mengambil aksi yang sesuai jika target tidak tercapai. Jadi dalam sistem pengendalian ikal tertutup akan melibatkan umpan balik untuk memastikan kondisi yang diinginkan tercapai.

Y = E · Gcc · Gp E = R · HY Y/R = (Gcc · Gp)/( 1 + Gcc · Gp · H)

Contoh contoh lain dari sistem pengendalian ikal terbuka:

- Sebuah microwawe yang diset untuk menjalankan proses defrost selama 2 menit. Piringan akan berputar selama 2 menit tanpa memperdulikan apakah makanan sudah ter”defrost” secara keseluruhan atau belum.

- Sebuah robot mainan yang diprogram untuk berjalan lurus. Robot akan berjalan lurus tanpa memperdulikan apakan ada halangan didepannya atau tidak.

- Sistem penyiraman taman yang diset untuk memancarkan air pada waktu tertentu. Sistem ini akan memancarkan air pada waktu yang sudah ditetapkan tanpa memperdulikan apakah hari sedang hujan atau tidak.

Contoh contoh lain dari sistem pengendalian ikal tertutup:

Ingatlah bahwa sistem ini selalu melibatkan umpan balik. Umpan balik berarti sensor akan mengambil data secara konstan dan mengirimkan data tersebut keprosesor untuk mengambil keputusan akan proses selanjutnya.

Setiap sistem yang berusaha untuk menjaga suhu pada temperatur yang tetap akan melibatkan umpan balik. Contohnya

- Sistem pemanas sentral

- Oven

- Tanki pemeliharan ikan tropis

Semua sistem diatas mempunyai sensor untuk mengukur temperature dan memberikan hasil pengukuran pada prosesor. Pengambilan keputusan diambil secara teratur untuk menambahkan panas atau tidak.

1.2.2 Sistem Pengendalian dengan PLCUntuk membuat sistem pengendalian dengan PLC membutuhkan beberapa langkah sistematis yang dapat disimpulkan sebagai berikut :

(a) Menentukan urutan proses-proses yang terjadi dalam sistem pengendalian tersebut dengan menyebutkan bagian input (sensor, sakelar dsb) yang memonitor kondisi keluaran dari proses yang dikendalikan, proses (pada CPU PLC) kriteria/tujuan yang akan diterapkan pada porses yang dikendalikan, dan output (relay, solenoid, motor dsb) yang akan menendalikan pergerakan atau aktivitas dari proses yang dikendalikan. Blok diagram atau diagram alir dapat digunakan sebagai alat bantu.

(b) Menentukan jenis dan spesifikasi dari komponen input dan output. Penentuan komponen input dan output ini berhubungan dengan spesifikasi dari input dan output terminal pada PLC sehingga dapat ditentukan jenis PLC yang diperlukan untuk aplikasi tersebut. Pada tahap ini penomoran input dan output harus ditentukan sebagai referensi/acuan dalam pembuatan program pada PLC.

(c) Penulisan program untuk mewujudkan sistem pengendalian seperti yang disebutkan pada bagian (a). Untuk instruksi SIMATIC dari Siemens Penulisan program ini dapat dilaksanakan dalam Statement List Editor (STL), Ladder logic (LAD), atau function Block Diagram (FBD).

(d) Memasukan program dalam memory. Dalam langkah ini program yang telah kita tulis dimasukan kedalam memory PLC dengan menggunakan bantuan komputer atau “hand held programmer” yang tersedia. Untuk beberapa jenis PLC tertentu, anda harus melakukan deklarasi nomor-nomor input dan output yang tersedia pada PLC tersebut sebelum digunakan. Setelah program dimasukan kedalam memori kemudian dilakukan pengecekan untuk memastikan program yang dibuat tidak mengandung kesalahan kode. Pengecekan ini bisa dilakukan melalui fungsi diagnosa atau dengan proses simulasi.

Menjalankan sistem. Sebelum sistem dijalankan, lakukan pengecekan terhadap semua pengabelan dari komponen-komponen input dan output sesuai dengan konfigurasi dari I/O yang telah ditentukan sebelumnya pada bagian (b).

Sebagai contoh dibawah ini adalah rancangan sistem pengendalian stepper motor dengan PLC.

Gambar 1.2 : Sistem pengendalian Stepper motor dengan PLC

Struktur Program dari proses pengendalian yang dirancang.

1.3 Metoda pemrosesan I/OPLC berhubungan dengan bagian /komponen lain melalui terminal I/O. Input akan memonitor sinyal dari komponen-komponen seperti sensor dan sakelar (switch). Output akan mengendalikan operasi dari pompa, motor, relay dll. Spesifikasi dari I/O ini sangat penting dan bervariasi bergantung kepada jenis PLC yang digunakan. Pemahaman tentang karakteristik dan spesifikasi I/O ini sangat penting didalam merancang dan menganalisa suatu sistem rangkaian PLC.

Spesifikasi I/O ini dapat dibaca detailnya pada manual dari PLC itu sendiri. Biasanya manual PLC akan memberikan contoh dari pemakaian I/O tersebut berserta cara pemakaian/ hal-hal penting yang harus diingat dalam menggunakan I/O tersebut.

Dalam unit ini akan dibahas beberapa hal penting yang perlu diketahui tentang I/O dari PLC secara umum, PLC Siemens S7-200 CPU dan PLC Omron C200HX pada khususnya.

1.3.1 Local I/O dan Expansion I/OInput dan Output adalah titik-titik dimana sinyal-sinyal yang diperlukan untuk proses pengendalian didapatkan. Pada sistem PLC umum jumlah I/O dapat ditambah dengan menambahkan suatu modul I/O tambahan (expansion I/O module).

S7-200 CPU mempunyai jumlah digital I/O yang dapat dilihat pada bagian spesifikasi pada appendix A pada manual S7-200 Programmable Controller.

S7-200 CPU 222, CPU 224 dan CPU 226 dapat menerima tambahan module digital dan analog I/O. Lihat spesifikasi pada appendix A.

Alamat dari modul I/O lokal dan tambahanI/O lokal yang diberikan oleh CPU mempunyai alamat (address) yang tetap. Anda dapat menambah jumlah I/O dengan menghubungkan module tambahan kearah kanan dari CPU sehingga membentuk rantai I/O. Alamat dari I/O tambahan tersebut ditentukan oleh tipe/jenis I/O dan posisi dari modul dalam rantai tadi dengan urutan sesuai dengan input atau jenis modul sebelumnya yang sama. Sebagai contoh sebuah modul output tidak mempengaruhi alamat dari modul input, dan sebaliknya. Demikian juga alamat modul analog tidak akan mempengaruhi alamat modul digital dan sebaliknya.

Module tambahan digital selalu menyediakan “prosses image register” yang merupakan “increment” dari 8 bit (1 byte). Jika sebuah module tidak mempunyai cukup I/O untuk setiap Byte yang disediakan tersebut, maka bit yang tidak terpakai didak dapat dialokasikan untuk modul I/O berikutnya didalam rantai tadi. Untuk modul input, bit yang tidak terpakai di set ke nol pada tiap siklus perubahan input.

Modul analog selalu dialokasikan dalam increment dari dua titik (2 bit). Jika sebuah module tidak mempunyai I/O untuk titik tersebut, titik I/O tersebut akan hilang dan tidak dapat digunakan untuk module selanjutnya.

Lihat Gambar dibawah sebagai contoh dari pemakaian konfigurasi perangkat keras yang berbeda mengakibatkan penomoran alamat yang berbeda.

Gambar 1.3: Penomoran I/O untuk CPU 221 dan CPU 224 dengan modul tambahan.

1.3.2 Menggunakan Input Filter untuk menghilangkan derau (noise)Pada input digital sering terjadi gangguan sinyal digital yang masuk yang disebabkan karena adanya noise (sinyal tidak ideal karena terdapat noise frekwensi tinggi, tegangan transient, loncatan tegangan (voltages spike)dsb. Untuk mengatasi hal tersebut CPU S7-200 mempunyai kemampuan untuk memfilter masukan pada terminal input sesuai dengan beberapa pilihan yang tersedia. Lihat gambar berikut

Gambar : Mengatur konfigurasi Input Filters untuk menghilangkan derau (noise)

1.3.3 Menggunakan Pendeteksi pulsa (Pulse Catch) (pada Siemens S7-200) Pada suatu saat diperlukan input yang dapat mendeteksi pulsa digital yang mempunyai durasi sangat pendek atau lebih kecil dari waktu telusuran (scan cycle) dari CPU. Untuk itu diperlukan suatu fungsi khusus yang dapat mendeteksi transisi naik (positive going) atau transisi turun (negative going) dan mempertahankan nilai akhirnya sampai input yang bersangkutan dibaca oleh CPU. Fungsi ini disebut “pulse catch” dan dapat diaktifkan secara individual untuk tiap digital input.

Perbandingan proses pengambilan input dengan dan tanpa fungsi pendeteksi pulsa ini dapat dilihat pada gambar berikut.

Gambar 1.4 : Kondisi kerja dengan dan tanpa pendeteksi pulsa (pulse catch).

Sebagai catatan anda harus memperhatikan fungsi filter pada input yang sama. Pengaturan input filter ini tidak boleh menghilangkan pulsa yang akan dideteksi atau dengan kata lain pengaturan waktu input filter harus lebih kecil dari lebar pulsa minimum yang akan dideteksi.

Dalam blok diagram dibawah terlihat bahwa input filter akan memproses sinyal digital sebelum pendeteksi pulsa. Contoh praktis dari pemakaian pendeteksi pulsa ini dapat dilihat pada gambar berikut

Gambar 1.5 : Contoh pemakaian pendeteksi pulsa.

Gambar 1.6 : Menu konfigurasi dari pendeteksi pulsa

Untuk mengaktifkan fungsi pendeteksi pulsa ini dapat dilakukan pada menu command View > System Block dan klik pada menu “Pulse Catch Bits”. Lihat gambar berikut.

1.3.4 Menggunakan tabel output untuk mengatur konfigurasi status dari output.Siemens S7-200 mempunyai kemampuan untuk mengatur status dari digital output setelah transisi CPU dari Run ke Stop. Status dari digital output akan tetap setelah CPU berhenti sesuai dengan konfigurasi yang ditentukan pada “output table”. Status output ini dapat dipilih untuk mengikuti status sebelumnya atau mengikuti tabel output (lihat gambar berikut).

Gambar 1.7 : Menu konfigurasi status output

1.3.5 Menggunakan filter sinyal analog inputSiemens S7-200 CPU 222, CPU 224 dan CPU 226 mempunyai kemampuan untuk memfilter sinyal analog pada analog input. Nilai setelah proses penapisan (filtering) akan merupakan nilai rata-rata dari sejumlah cuplikan (sampling) pada sinyal analog tersebut. Jumlah cuplikan ini dapat diatur dari 16 – 4080 cuplikan. Nilai cuplikan atau sampling ini disebut Deadband. Deadband ini sering juga disebut perubahan dari nilai rata-rata yang terjadi setelah cuplikan nilai analog yang terakhir diambil. Deadband ini akan berpengaruh terhadap tanggapan (response) dari sinyal analog tersebut. Semakin besar deadband maka tanggapan sinyal akan semakin lambat. Untuk mengaktifkan konfigurasi analog filter ini, perhatikan gambar berikut.

Gambar 1.8 : Menu konfigurasi dari analog input filter

1.3.6 Menggunakan High Speed I/OPencacah Kecepatan Tinggi (High Speed Counter)

Siemens S7-200 CPU mempunyai pencacah berkecepatan tinggi yang dapat mencacah kejadian (events) yang terjadi pada input sampai dengan frekwensi 20kHz tanpa mengurangi unjuk kerja CPU.

CPU S7-200 mempunyai lima pencacah kecepatan tinggi yang dinamai HSC0, HSC1, HSC2, HSC3, HSC4, dan HSC5. Kelima pencacah tersebut mempunyai karakteristik yang berbeda dan masing-masing terhubung pada Input yang sudah ditentukan.

Input yang sama tidak dapat digunakan untuk dua macam pencacah yang berbeda, tetapi jika ada input yang tidak dipakai oleh pencacah kecapatan tinggi ini, input tersebut bisa digunakan untuk tujuan yang lain.

Karakteristik dari pencacah kecepatan tinggi ini diberikan pada tabel berikut. Untuk penjelasan yang lebih mendetail dapat dilihat pada manual CPU PLC itu sendiri.

Tabel 1.1 karakteristik dari pencacah kecepatan tinggi HSC0, HSC3, HSC4, dan HSC5

Tabel 1.2 karakteristik dari pencacah kecepatan tinggi HSC1 dan HSC2

Setiap pencacah mempunyai input yang dialokasikan untuk clok, direction control, reset dan startPulsa Output Kecepatan Tinggi (High Speed Pulse Output)

CPU S7-200 mempunyai fasilitas untuk mengeluarkan pulsa kecepatan tinggi pada output Q0.0 dan Q0.1 yang dapat menghasilkan keluaran PWM atau Deretan pulsa PTO (Pulse Train Output). PTO akan mengeluarkan pulsa sejumlah yang diinginkan dengan duty cycle 50% dan perioda dari 2ms – 65535ms. PWM akan mengeluarkan pulsa dengan dutycycle yang dapat diatur dari 0% sampai 100%. Untuk spesifikasi lebih detail lihat manual dari CPU.

1.3.7 Menggunakan Pengaturan Analog (Analog Adjustment)

Fasilitas pengaturan analog ini berupa dua buah potensiometer yang dapat diatur harganya sesuai dengan kebutuhan. Perubahan resistansi potensiometer ini akan merubah isi dari Special Memori (SMB28 dan SMB29). Isi dari SMB28 dan SMB29 hanya dapat dirubah melalui analog adjustment 1 dan analog adjustment 2. Nilai dari perubahan ini berkisar dari 0 – 255 dengan repeatability = 2 . Pengaturan analog ini sangat berguna untuk mengganti nilai timer,counter atau memasukan nilai setting yang baru.

Gambar dibawah menunjukan contoh dari penggunaan analog adjustment ini.

Gambar 1.9 : Contoh penggunaan analog adjustment.

1.4 Konsep Pemrograman, Bahasa Pemrograman dan Editor

1.4.1 Instruksi Simatic dan IEC 1131-3 pada CPU S7-200S7-200 CPU mempunyai kemampuan untuk menjalankan program dalam dua format instruksi yaitu instruksi Simatec dan instruksi IEC 1131-3.

Instruksi Simatec dibuat secara khusus untuk dijalankan pada CPU PLC jenis Siemens S7-200. Instruksi Simatec ini tidak dapat dijalankan pada CPU dari jenis lain misalnya C200HX dari Omron

Instruksi IEC merupakan instruksi yang dikembangkan oleh International Electrotechnical Commission dan instruksi ini mempunyai format standar yang dikenal oleh beragam jenis PLC.

Kedua instruksi tersebut masing masing mempunyai keunggulan. Pilihan yang dibuat mutlak tergantung kepada pembuat program. Meskipun demikian, dibawah ini disebutkan hal-hal yang patut dijadikan pertimbangan untuk memilih jenis instruksi diatas.

Simatic

Instruksi Simatic biasanya mempunyai waktu eksekusi yang tersingkat

Ada tiga jenis editor yang bisa digunakan dalam instruksi Simatec yaitu (LAD, STL,dan FBD)

IEC 1131-3

Biasanya lebih mudah belajar membuat program untuk berbagai jenis PLC.

Instruksi yang dipakai lebih sedikit sehingga lebih mudah mempelajarinya.

Beberapa instruksi bekerja berlainan dengan instruksi yang sama pada Simatec.

Instruksinya kemungkinan mempunyai waktu eksekusi yang lebih lama.

Instruksi ini hanya bisa digunakan dengan editor LAD dan FBD

IEC 1131-3 memberikan spesifikasi bahwa variabel-variabel harus dideklarasikan dengan jenis dan sistem pengecekan dari tipe datanya.

1.4.2 Tipe Data Variabel pada Simatic dan IEC 1131-3Setiap instruksi Simatic dan IEC 1131-3 atau parameter subrutin diidentifikasi oleh definisi yang baku yang disebut “signature”. Untuk semua instruksi standar, jenis data yang diijinkan untuk setiap operand instruksi diambil dari “signature”. Untuk parameter subrutin, subrutin signature-nya dibuat oleh pemakai melalui tabel variabel lokal. Lihat contoh tipe data “elementary” dan “complex” pada tabel : berikut ini.

Tabel 1.3 : Tipe data elementary

Tabel 1.4 : Tipe data complexStep 7-Micro/Win32 yang merupakan editor bagi CPU S7-200 melakukan pengecekan data yang disebut “simple data checking” dan “no data cheking” untuk instruksi simatic, dan menerapkan “strong data cheking” untuk instruksi IEC 1131-3

Keunggulan dari “data type checking” adalah ia akan mengihindarkan terjadinya kesalahan tipe data pada waktu pembuatan program. Sebagai contoh hubungan matematis perbandingan < 1 adalah suatu instruksi bertanda (“signed”). –1 adalah lebih kecil dari 0

untuk tipe data bertanda. Tetapi jika instruksi <1 digunakan dalam tipe data tak-bertanda (“unsigned”) maka 40000 bisa menjadi lebih kecil dari 0 untuk sebuah instruksi a < 1. Kita

harus memastikan penggunaan nomor unsigned untuk instruksi signed tidak melebihi batasan positif

tif adau negatif. Kesalahan penggunaan tipe data ini bisa berakitbat terjadinya hasil yang tdak diharapkan pada sistem kerja PLC atau mengakibatkan terjadinya kecelakaan kerja. Sistem kerja dari PLC yang tidak dapat diperkirkarakan dapat menimbulkan kematian atau luka yang serius pada operator, dan/atau kerusakan peralatan yang berat.Kesimpulannya, dalam mode editor untuk instruksi IEC 1131-3, “strong data checking” menolong anda untuk mengidentifikasi kesalahan-kesalahan tersebut selama proses kompilasi, yaitu dengan menghasilkan kode-kode kesalahan untuk tipe-tipe data yang tidak diijinkan untuk instruksi tersebut. Kemampuan untuk melakukan pendeteksian atau pemeriksaan kesalahan jenis ini tidak terdapat pada editor untuk instruksi SIMATIC.

Karena mode pemrograman IEC 1131-3 adalah “strongly data type” dan SIMATIC adalah bukan “strongly data type”, maka tidak diijinkan untuk melakukan pemindahan pogram antar kedua bahasa ini.

1.4.3 Instruksi “Overloaded”Instruksi-instruksi “overloaded” dapat digunakan untuk berberapa tipe data. “strong data type” masih berlaku disini karena semua operand harus sesuai sebelum semua instruksi dapat dikompilasi dengan sempurna. Tabel dibawah ini menunjukan contoh dari instuksi IEC “overloaded” ADD

Tabel 1.5 : Contoh dari instruksi “overloaded” ADD

Semua operand harus mempunyai tipe data yang sama. Misalnya :

ADD IN1 = INT, IN2 = WORD, IN3 = INT

Pada mode pemeriksaan “strong data type” proses kompilasi akan menghasilkan kode kesalahan karena penggunaan tipe data yang tidak sama pada IN1 (integer 16 bit) dan IN2 (word 16 bit). Proses kompilasi akan menghasilkan : ADD_I (Add Integer).

Pada mode pemeriksaan “simple data type” proses kompilasi tidak menghasilkan kesalahan, sehingga instruksi ADD 40000,1 akan menghasilkan angka negatif bukannya 40001.

1.4.4 Penggunaan pengalamatan langsung (“Direct Addressing”) pada instruksi “overloaded” IECPemrograman pada mode IEC 1131-3 mengijinkan anda untuk menggunakan lokasi memori secara langsung sebagai bagian dari instruksi tersebut. Kedua variabel memori dan lokasi memori dapat digunakan dalam parameter ini. Tipe data dari parameter-parameter ini didapat dari pemeriksaan prameter lain yang tertulis pada instruksi tersebut. Jika sebuah parameter instruksi dikonfigurasikan untuk menggunakan variabel data jenis tertentu, maka

parameter-parameter yang lain secara otomatis mengikuti. Berikut ini contoh dari penggunaan model pengalamatan langsung pada instruksi overloaded.

Tabel 1.6 : Contoh tipe data untuk pengalamatan langsung

Tabel 1.7 : Contoh penggunaan instruksi IEC overloaded

1.4.5 Penggunaan instruksi konversi tipe dataInstruksi konversi tipe data ini digunakan untuk merubah suatu tipe data tertentu kedalam bentuk tipa data yang lain. Lihat tabel berikut untuk mendapatkan informasi yang lebih jelas tentang instruksi ini

Tabel 1.8 : Instruksi-instruksi konversi

Pada mode editor untuk IEC 1131-3, anda dapat menggunakan instruksi overloaded MOVE untuk mengkonversikan diantara tipe INT dan WORD, dan DINT dan DWORD. Instruksi ini dapat mengkonversi tipe-tipe data yang besarnya sama (INT dan WORD sama-sama 16 bit). Tabel berikut menunjukan contoh penggunaan instruksi MOVE pada mode IEC 1131-3

Tabel 1.9 : penggunaan instruksi MOVE

1.4.6 Elemen-elemen dasar pemrograman dengan instruksi-instruksi SIMATIC dan IECCPU akan secara terus menerus mengeksekusi program untuk menjalankan proses yang dikehendaki. Program ini dapat anda buat dengan menggunakan program STEP-7Micro/Win32 dari Siemens yang mampu untuk membuat program dalam bentuk instruksi SIMATIC atau IEC. Dalam suatu program sebaiknya dibuat suatu organisasi yang terdiri dari tiga bagian pokok berikut : Program utama: Bagian ini merupakan inti dari program dimana anda menempatkan

instruksi-instruksi yang mengendalikan aplikasi/sistem anda. Instruksi-instruksi ini akan ditelusuri dan dijalankan satu persatu secara berurut sebanyak satu kali setiap 1 siklus telusuran (“scan cycle”).

Rutin Interupt : Elemen ini bisa digunakan dan bisa tidak. Jika digunakan elemen ini akan dijalankan jika terjadi suatu kejadian(event) untuk suatu interupt.

Subrutin: bagian ini juga merupakan elemen yang dapat dipilih untuk digunakan atau tidak, tergantung kepada pembuat program. Elemen subrutin ini hanya akan dieksekusi jika dipanggil dari bagian program utama.

Berikut ini adalah contoh dari penggunaan interupt dan subrutin dalam suatu program yang akan membaca nilai analog dari input dengan kecepatan pencuplikan sebesar 100ms per data.

Gambar 1.9 : Contoh pembuatan program dengan elemen-elemen dasarnya.

1.5 Siklus Telusuran “Scan Cycle” dan Waktu EksekusiCPU dirancang untuk mengeksekusi sederetan instruksi yang terkandung dalam program secara berulang ulang. Proses eksekusi program yang berulang ini disebut siklus telusuran atau “scan cycle”. Selama proses siklus telusuran tersebut CPU melaksanakan beberapa tugas berikut :

Membaca input

Mengeksekusi program

Memproses jika ada permintaan komunikasi

Mengeksekusi “self diagnostic” CPU

Menulis pada terminal output

Berikut ini adalah gambar dari satu siklus telusuran pada CPU

Gambar 1.10 : satu siklus telusuran CPU

Tugas-tugas yang akan dilaksanakan CPU bergantung pada mode dari CPU tersebut. Pada mode RUN , CPU akan mengeksekusi program anda dan pada mode STOP program anda tidak dieksekusi.

Membaca Input Digital

Setiap silklus telusuran dimulai dengan membaca nilai yang ada pada input digital dan kemudian menuliskan nilai tersebut pada lokasi meori yang dinamai dengan “process image-input register”

CPU akan menyediakan memori untuk process image register ini dalam format delapan bit (satu byte) per lokasi. Jika CPU tersebut tidak mengalokasikan memori untuk input tertentu, maka lokasi memori tersebut tidak dapat digunakan lagi untuk modul CPU tambahan. Untuk Input yang tidak digunakan CPU akan mereset ke nol pada tiap proses siklus telusuran.

Untuk penjelasan lebih lanjut tentang proses pengambilan nilai input analog bisa dibaca pada CPU manual.

Mengeksekusi Program

Selama fasa eksekusi dari proses telusuran, CPU menjalankan program anda yang dimulai dari instruksi pertama dan berlanjut ke instruksi-instruksi selanjutnya sampai instruksi terakhir. Instruksi I/O “immediate” akan mengakses input dan output pada waktu eksekusi program atau rutin interupt.

Jika anda menggunakan interupt pada program anda, interupt rutin yang berhubungan dengan terjadinya interupt tidak dijalankan pada siklus telusuran normal, tetapi akan dieksekusi sewaktu interupt terjadi.

Menjalankan permintaan komunikasi

Selama masa pemrosesan permintaan komunikasi dalam siklus telusuran, CPU memproses semua pesan yang diterima dari terminal komunikasi.

Menjalankan proses CPU diagnostic

Selama fasa ini, CPU memeriksa kondisi dan kesiapannya serta memeriksa memori program. Ia juga memeriksa status dari tiap modul I/O

Menulis pada digital output

Pada setiap akhir siklus telusuran, CPU akan menulis nilai yang tersimpan dalam “process-image output register” ke digital output

CPU akan menyediakan memori untuk process image output register dalam format delapan bit (satu byte) per lokasi. Jika CPU tersebut tidak mengalokasikan memori untuk output tertentu, maka lokasi memori tersebut tidak dapat digunakan lagi untuk modul CPU tambahan.

Pada waktu mode operasi CPU diubah dari mode RUN ke STOP, digital output akan ter”set” sesuai dengan kondisi pada “output table” atau tetap pada kondisi sebelumnya. Defaultnya adalah digital output akan dimatikan. Nilai analog output akan tetap seperti sebelumnya.

Process image Input dan Process image Output Register

Ada beberapa keuntungan untuk menggunakan process image register dibandingkan dengan mengakses input dan output secara langsung sebagai berikut:

Pencuplikan nilai input pada permulaan siklus telusuran akan tersinkronisasi dan nilainya akan tetap selama eksekusi program dijalankan. Output akan diperbaharui nilainya pada akhir siklus telusuran yaitu setelah proses eksekusi program selesai. Kedua hal ini akan membuat sistem menjadi lebih stabil.

Program anda dapat mengakses image register secara lebih cepat dari pada mengakses titik I/O secara langsung sehingga proses eksekusi program menjadi lebih cepat.

titik I/O merupakan besaran bit yang harus diakses sebagai bit, tetapi anda dapat mengakses image register sebagai bit, byte, word, atau double word. Hal ini menyebabkan image register lebih fleksibel.

Immediate I/O

Instruksi immediate I/O mengijinkan anda untuk mengakses secara langsung pada titik-titik I/O tersebut, meskipun biasanya image register lebih banyak digunakan. Pricess image input register tidak berubah pada waktu anda menggunakan sebuah instruksi immediare untuk mengakses input. Proses image output register akan berubah isinya secara berbarengan pada waktu anda membuat suatu instruksi immediate untuk mengakses output.

1.6 Memori, tipe data dan model pengalamatanCPU menyimpan informasi pada berbagai lokasi pada jangkauan memori dari sistem. Tiap lokasi memori ini mempunyai alamat yang unik sesuai dengan fungsinya. Anda dapat mengakses memori secara langsung dengan memberikan alamat memori tersebut pada instruksi. Untuk itu didalam format data yang akan diakses terkandung informasi dari jenis register yang digunakan dan besar dari register tersebut misalnya IB, QB, LB, DW dsb. Jenis-jenis data tersebut dibahas dalam bagian 1.6 ini. Sistem pengalamatan bisa digolongkan dalam “Absolute Addressing” dan “Symbolic Addressing”. Sistem “absolute addressing” akan mengacu pada memori map dari CPU yang bersangkutan dan pemakaianya bergantung pada panjang/besar instruksi-instruksi yang dijelaskan. Sistem “Symbolic Addressing” menggunakan symbol-simbol untuk menggambarkan fungsi dan “absolute address” dari lokasi memori. Sistem “Symbolic Addressing” ini banyak dipakai oleh manufaktur PLC karena mudah dalam penggunaan dan analisa pemrograman. Dalam unit ini akan dijelaskan pemakaian symbolic addressing pada CPU S7-200 dari Siemens yang akan dibagi menjadi system Direct Addressing dan system Indirect Addressing.

1.6.1 Menggunakan alamat memori untuk mengakses barbagai macam data.Untuk mengakses sebuah bit pada daerah memori, anda harus mempunyai alamat yang mengandung identitas daerah memori, alamat byte dan nomor bit. Sebagai contoh gambar dibawah menunjukan proses mengakses sebuah bit pada memori dengan pengalamatan yang disebut “byte bit addressing”. Dalam hal ini identitas memory = I (input), byte = 3 dan diikuti dengan titik (.) sebagai pemisah dengan alamat bit (bit 4)

Gambar 1.11 : mengakses sebuah bit data pada momori CPU

Ada berbagai macam data pada memori CPU yang dapat diakses. CPU area ini antara lain disebut V, I, Q ,M, S, L dan SM. Untuk mengakses sebuah byte, word atau double word pada memori CPU, anda harus mengetahui alamat spesifik dari memori tersebut. Alamat spesifik ini mengandung informasi indentifikasi daerah, ukuran data, dan alamat awal dari data tersebut lihat gambar berikut sebagai contoh :

Membandingkan pengaksesan Byte, Word, dan double Word pada alamat yang sama.

1.6.2 Jangkauan dari nilai integerTabel dibawah ini menunjukan nilai integer dari beberapa tipe data.

Tabel 1.10 : Jangkauan nilai Integer

1.6.3 Pemberian alamat pada Process Image Input RegisterSeperti telah dijelaskan sebelumnya CPU akan mencuplik dari dari titik input pada permulaan dari siklus telusuran, dan menuliskan nilainya psda process image input register. Untuk mengakses process image input register ini dalam bit, byte, word atau double word ikuti format berikut :

Bit I [byte adress].[bit adress] I0.1

Byte, Word, Double Word I [size].[starting byte address] IB.4

1.6.4 Pemberian alamat pada Process Image Output RegisterSeperti telah dijelaskan sebelumnya pada akhir dari siklus telusuran CPU akan mengkopi nilai yang ada dalam process image output register kepada titik-titik output yang berhubungan. Untuk mengakses menuliskan isi process image output register ini dalam bit, byte, word atau double word ikuti format berikut :

Bit Q [byte adress].[bit adress] Q0.1

Byte, Word, Double Word Q [size].[starting byte address] QB.4

1.6.5 Pemberian alamat pada daerah memori Variabel (V)Anda dapat menggunakan memori V untuk menyimpan hasil sementara dari operasi yang sedang dijalankan oleh kontorl logika pada program anda. Memory V juga dapat digunakan untuk menyimpan data-data lain yang diperlukan dalam proses. Untuk mengakses memori V ini dalam bit, byte, word atau double word ikuti format berikut :

Bit V [byte adress].[bit adress] V0.1

Byte, Word, Double Word V [size].[starting byte address] VB.4

1.6.6 Pemberian alamat pada daerah memori Bit (M)Anda dapat menggunakan memori M sebagai “control relay” untuk menyimpan hasil sementara dari operasi yang sedang dijalankan atau informasi kontrol lainnya. Meskipun namanya “bit memory area” yang menunjukan bahwa informasi yang disimpan adalah berbentuk bit, tetapi anda dapat mengakses memori bit ini dalam byte, word atau double word ikuti format berikut :

Bit M [byte adress].[bit adress] M0.1

Byte, Word, Double Word M [size].[starting byte address] MB.4

1.6.7 Pemberian alamat pada daerah memori Sequence Control Relay (S)Sequence Control Relay Bit digunakan untuk mengorganisasikan operasi atau langkah dari mesin kedalam suatu segmen program yang setara. SCR mengijinkan penggunaan logical segmentation pada program kontrol. anda dapat mengakses memori bit ini dalam byte, word atau double word ikuti format berikut :

Bit S [byte adress].[bit adress] S0.1

Byte, Word, Double Word S [size].[starting byte address] SB.4

1.6.8 Pemberian alamat pada daerah Special Memory (SM)Bit Bit SM ini digunakan sebagai media komunikasi atau pertukaran informasi diantara CPU dan program. Bit ini dapat digunakan untuk memilih dan mengendalikan beberapa fungsi khusus dari CPU S7-200 seperti :

Bit yang dapat digunakan untuk menjalankan siklus telusuran yang pertama

Bit yang akan togel pada kecepatan tertentu

Bit yang akan menunjukan status dari instruksi operasi matematika

Untuk keterngan lebih lanjut tentang SM bit ini dapat dilihat pada lampiran C manual S7-200. Akses ke lokasi SM ini dapat dilakukan dalam Bit, Byte, Word atau Double Word.

Format :

Bit SM [byte adress].[bit adress] SM0.1

Byte, Word, Double Word SM [size].[starting byte address] SMB.86

1.6.9 Pemberian alamat pada daerah memori lokal (L)CPU S7-200 mempunyai 64 byte lokal memori (L) yang dapat digunakan sebagai memori pencatat atau untuk menyampaikan parameter-parameter pada subrutin. Jika anda menggunakan LAD atau FBD, maka Step-7Micro/Win32 akan menyisakan 4 byte memory dari 64 byte yang tersedia untuk kepentingannya sendiri. Jika anda menggunakan STL maka 64 byte seluruhnya dapat digunakan, meskipun tetap dianjurkan untuk menyisakan 4 byte memori tersebut.

L memori ini hampir sama dengan V memori dengan satu perkecualian, yaitu V memori mempunyai lingkup Global dan L memori mempunyai lingkup lokal. Global disini berarti dapat dikenal atau diakses dari semua bagian program (program utama, subrutin, dan interupt rutin). Lokal disini berarti hanya bisa diakses dari satu bagian program saja dan nilai pada memori ini tidak dapat diakses oleh bagian program yang lain. L memori yang dialokasikan untuk program utama tidak dapat diakses oleh subrutin atau interupt rutin dan sebaliknya.

Pengalokasian L memori ini dilakukan oleh CPU berdasarkan keperluan. Ini berarti pada saat program utama dijalankan L memori untuk subrutin dan interupt rutin belum dialokasikan. Pada waktu subrutin atau interupt rutin tersebut dijalankan, L memori yang diperlukan baru dialokasikan sesuai kebutuhan. Alamat L memori yang baru dapat menggunakan alamat L memori dari subrutin atau interup rutin yang berlainan atau dengan kata lain program utama, subrutin, dan interupt rutin dapat menggunakan alamat L memori yang sama.

L memori ini tidak diinisialisasi pada waktu dialokasikan dan bisa berisi nilai apa saja. Pada waktu suatu subrutin dijalankan dan nilai parameter disimpan maka nilai ini akan disimpan pada L memori. L memori yang tidak menerima nilai apapun dapat berisi data apapun.

L memori dapat diakses sebagai Bit, Byte, Word atau Double Word. L memori dapat digunakan untuk menyimpan pointer bagi sistem pengalamatan tidak langsung “indirect addressing”, tetapi L memori ini tidak dapat dilamati dengan sistem “indirect addressing”.

Format :

Bit L [byte adress].[bit adress] L0.0

Byte, Word, Double Word L [size].[starting byte address] LB.33

1.6.10 Pemberian alamat pada daerah Timer memori (T)CPU S7-200 mempunyai timer yang berfungsi untuk menghitung pertambahan waktu. Resolusi dari timer ini adalah : 1ms, 10ms atau 100ms. Dalam timer ini ada 2 variabel sebagai berikut :

Current Value : yaitu suatu 16 bit signed integer yang berisi informasi banyaknya waktu yang dihitung oleh timer

Timer bit : bit ini dapat di set atau clear sebagai hasil dari perbandingan nilai dari Current value dan preset value. Preset value dimasukan sebagai bagian dari instruksi timer.

Kedua variabel diatas dapat diakses dengan menggunakan alamat (T + nomor timer). Akses terhadap timer bit atau current value akan bergantung pada instruksi yang digunakan. Instruksi dengan Bit operand akan mengakses timer bit, dan instruksi dengan word operand akan mengakses current value. Lihat gambar berikut untuk lebih jelasnya.

Gambar 1.12 : akses dari instruksi timer

1.6.11 Pemberian alamat pada daerah Counter memori (C)CPU S7-200 mempunyai counter yang berfungsi untuk menghitung transisi dari Lo ke Hi pada input counter. CPU mempunyai tiga macam counter yang menghitung naik, menghitung turun, dan menghitung naik turun. Ada dua buah variabel yang berhubungan dengan counter ini:

Counter Value : yaitu suatu 16 bit signed integer yang berisi informasi banyaknya transisi yang dihitung oleh counter

Counter bit : bit ini dapat di set atau clear sebagai hasil dari perbandingan nilai dari Current value dan preset value. Preset value dimasukan sebagai bagian dari instruksi counter.

Kedua variabel diatas dapat diakses dengan menggunakan alamat (C + nomor counter). Akses terhadap counter bit atau counter value akan bergantung pada instruksi yang digunakan. Instruksi dengan Bit operand akan mengakses counter bit, dan instruksi dengan word operand akan mengakses counter value. Lihat gambar berikut untuk lebih jelasnya.

Gambar 1.13 : Akses dari counter memori

1.6.12 Pemberian alamat pada Analog Input (AI)CPU S7-200 akan mengkonversikan nilai analog (seperti suhu atau tegangan) kedalam suatu nilai digital 16 bit. Pengakasesan nilai ini dilakukan dengan memberikan identifikasi area (AI), ukuran data (W), dan alamat byte permulaan. Karena nilai analog ini tersimpan dalam Word dan selalu dimulai dengan bye genap (seperti 0, 2, 4 dst), maka pengaksesannya juga dilakukan pada byte genap (seperti AIW0, AIW2, atau AIW4).

Gambar dibawah ini menunjukan cara mengakses analog input.

Gambar 1.14 : Pengaksesan Analog Input

1.6.13 Pemberian alamat pada Analog Output (AQ)CPU S7-200 akan mengkonversikan nilai digital 16 bit kedalam suatu tegangan atau arus yang sebanding dengan nilai digital tadi. Penulisan nilai digital ini dilakukan dengan memberikan identifikasi area (AQ), ukuran data (W), dan alamat byte permulaan. Karena nilai analog output ini tersimpan dalam Word dan selalu dimulai dengan bye genap (seperti 0, 2, 4 dst), maka pengaksesannya juga dilakukan pada byte genap (seperti AQW0, AQW2, atau AQW4). Analog output ini merupakan nilai yang hanya dapat ditulis dan tidak dapat dibaca (“Write only”)

Gambar 1.15 :mengakses Analog Output

1.6.14 Pemberian alamat pada Accumulator (AC)

Accumulator merupakan suatu piranti yang dapat digunakan seperti memori. Sebagai contoh anda dapat menggunakan accumulator untuk menyampaikan parameter-parameter ke / dari subrutin dan untuk menyimpan nilai sementara yang digunakan dalam perhitungan. CPU menyediakan 4 buah accumulator 32 bit (AC0, AC1, AC2, dan AC3) yang dapat diakses sebagai byte, word atau double word. Untuk mengakses accumulator sebagai byte atau word gunakanlah 8 atau 16 bit LSB dari nilai yang tersimpan pada accumulator.

Gambar 1.16 : instuksi-instruksi untuk mengakses accumulator

1.6.15 Pemberian alamat pada High Speed Counter (HC)

Pencacah kecepatan tinggi atau High Speed Counter ini dirancang untuk mencacah kejadian yang sangat cepat tanpa tergantung pada siklus telusuran CPU. High Speed Counter ini mempunyai current value dalam signed integer 32bit. Untuk mengakses nilai current value ini digunakan alamat dari memori jenis (HC) dan nomor counter (misalnya HC0). Nilai pada memori HC ini bersifat “read only” dan hanya dapat diakses sebagai double word.

Gambar 1.17 : Pengaksesan High Speed Counter

1.6.16 Penggunaan Nilai KonstantaS7-200 CPU mengijinkan penggunaan berbagai tipe konstanta dalam instruksi program. Konstanta ini bisa berupa byte, word, atau double word. CPU akan menyimpan semua konstanta tersebut dalam bentuk biner yang kemudian dapat ditampilkan dalam bentuk desimal, heksa desimal, ASCII, atau format “floating point”

Desimal format: [nilai desimal]

Heksa desimal format: 16#[nilai heksadesimal]

ASCII format: ‘[ASCII text]’

Real atau Floating point: ANSI/IEEE 754-1985

Binary 2#1010_0101_1010_0101

Pada konstanta ini CPU tidak melakukan data checking sehingga bisa terjadi perbedaan interpretasi untuk tiap instruksi, misalnya instruksi Add akan mengambil nilai pada VW100 sebagai signed integer sedangkan instruksi Or menganggap nilai yang sama sebagai nilai biner unsigned.

1.6.17 Sistem pengalamatan tidak langsung pada instruksi SIMATICSistem pengalamatan tidak langsung atau “indirect addressing” ini menggunakan “pointer” sebagai penunjuk lokasi memori yang akan diakses. Tipe memori yang dapat diakses dengan pointer pada CPU S7-200 adalah : I, Q, V, M, S, (hanya current value)T dan C (hanya current value).

Untuk sistem pengalamatan tidak langsung ini sebuah pointer harus dibuat terlebih dahulu. Pointer ini sebenarnya adalah memori yang berisi data dalam double word. Memori yang dapat digunakan sebagai pointer adalah V, L dan Accumulator. Untuk membuat pointer ini digunakan instruksi MOVD untuk memindahkan alamat dari memori kelokasi pointer.

Operand dari instruksi MOVD ini harus didahului oleh tanda & untuk menandakan bahwa nilai tersebut merupakan alamat memori.

Contoh : MOVD &VB100 , VD204

MOVD &MB4 , AC2

MOVD &C4 , LD6

Gambar 1.18 : Penggunaan pointer untuk mengakses data

Dalam gambar diatas ditunjukan bagaimana pointer digunakan untuk memindahkan data pada alamat dari VB200 ke ACO. Penggunaan tanda asterisk * untuk menunjukan bahwa operand tersebut adalah suatu pointer.

Nilai dari suatu pointer dapat dirubah dengan instruksi double word (32 bit) dengan instruksi matematika sederhana seperti ADD atau INC.

Untuk mengakses byte nilai pointer ditambah dengan 1

Untuk mengakses word nilai pointer ditambah dengan 2

Untuk mengakses doubel word nilai pointer ditambah dengan 4

Gambar 1.19 : Mengubah nilai pointer untuk mengakses sebuah data tipe word

1.7 Perangkat keras untuk komunikasi dan jaringanJenis Komunikasi

S7-200 CPU dapat dikonfigurasikan untuk bekerja dalam komunikasi jaringan. Sebuah personal komputer dengan program Step7-Micro/Win32 atau sebuah piranti pemrogram SIMATIC PG740 dapat digunakan sebagai “master device”. Jenis-jenis komunikasi jaringan yang dapat dilaksananakan adalah sebagai berikut :

Single Master : Sebuah piranti “master” tunggal dihubungkan pada satu atau beberapa piranti “slave” seperti yang ditunjukan pada gambar dibawah.

Multiple Master : Sebuah piranti master tunggal dihubungkan pada satu atau lebih piranti slave atau piranti master yang lain seperti yang ditunjukan gambar berikut.

Menggunakan modem 10 bit: Sebuah piranti master tunggal dihubungkan pada satu atau lebih piranti slave atau piranti master yang lain dengan menggunakan modem 10 bit. Contoh 10 bit modem ini adalah Hayes-compatible. Hanya satu hubungan dengan

CPU S7-200 yang dapat dibuat dengan menggunakan modem 10 bit ini. Untuk itu diperlukan beberapa komponen berikut :

o Satu CPU S7-200 yang kompatibel dengan modem 10 bit yaitu model : CPU221, CPU222, CPU224 dan CPU226. CPU lainnya tidak mendukung penggunaan format 10 bit.

o Kabel RS232 standar untuk menghubungakan Personal Computer ke modem lokal full-duplex 10 bit

o Kabel PC/PPI (5-switch) untuk menghubungkan remote modem ke CPU.

o Adapto 9 pin ke 25 pin jika diperlukan.

Gambar berikut menunjukan penggunaan modem 10 bit dalam jaringan dengan kabel PPI 5-switch (Kabel PPI 4-switch tidak dapat digunakan dalam format 10 bit)

Gambar 1.20 : Penggunaan 10 Bit modem dalam jaringan komunikasi

Menggunakan modem 11 bit: Sebuah piranti master tunggal dihubungkan pada satu atau lebih piranti slave atau piranti master yang lain dengan menggunakan modem 11 bit. Modem yang banyak dipasaran kebanyakan tidak mendukung penggunaan format 11 Bit. Bergantung kepada hubungan dari personal komputer ke satu atau lebih CPU S7-200 dan atau hubungan ke jaringan maka diperlukan beberapa komponen berikut :

o Kabel RS232 standar untuk menghubungakan Personal Computer ke Modem full-duplex 11 bit

o Kabel PC/PPI (4 atau 5-switch) untuk menghubungkan remote modem ke CPU. Jika digunakan PC/PPI kabel 4-switch maka dibutuhkan null modem adaptor.

o Jika diperlukan hubungan dengan beberapa CPU dalam jaringan maka diperlukan network adaptor (PROFIBUS dari siemens)

Gambar berikut menunjukan penggunaan modem 11 bit dalam jaringan dengan kabel PPI 4-switch

Gambar 1.21 : Penggunaan Modem 11 Bit dalam jaringan

Jaringan Master

Gambar berikut menunjukan suatu konfigurasi dari personal computer yang dihubungkan pada beberapa CPU S7-200. Step7-Micro/Win32 dirancang untuk berkomunikasi dengan satu CPU pada waktu tertentu, tetapi komputer dapat mengakses CPU yang mana saja pada jaringan secara bergantian. Dalam gambari ini CPU dapat menjadi master atau slave sedangkan TD200 adalah sebuah master.

Gambar 1.22 : Penggunaan kabel PC/PPI untuk berkomunikasi dengan beberapa CPU pada konfigurasi “Multiple Master Option Enabled”.

Repeater Jaringan

Repeater jaringan ini diperlukan jika jarak antar CPU saling berjauhan, jika diinginkan penambahan CPU, atau untuk mengisolasi suatu jaringan dari jaringan yang lain. PROFIBUS bisa menghubungkan 32 komponen dalam network dalam jarak sampai 1200m. Sebuah repeater akan mengijinkan penambahan 32 komponen lagi dan penambahan jarak 1200m pada rate 9600 Baud. Dalam jaringan dapat digunakan 9 buah repeater dengan panjan jaringan tidak lebih dari 9600m. Setiap repeater akan memberikan Bias dan Terminasi untuk tiap segmen jaringan.

Gambar 1,.23 : Penggunaan repeater dalam jaringan.

2.0 Pengenalan perangkat lunak dan kumpulan instruksi pada PLC jenis tertentu.

2.1 Editor dan Bahasa PemrogramanBahasa pemrograman pada berbagai jenis PLC sangat beragam, oleh karena itu seperti telah disinggung sebelumnya telah dibentuk suatu standar pemrograman yang disebut IEC 1131-3. Bahasa pemrograman ini sudah diikuti oleh menufaktur dari berbagai jenis PLC.

Pada bagian ini kita akan membahas bahasa pemrograman yang dapat digunakan pada PLC Siemens khususnya jenis S7-200 CPU. Pada CPU S7-200 ini pemrograman yang dibahas dilakukan dengan program Step 7 Micro/win32 yang merupakan bahasa pemrograman berbasis Window. Dalam Step 7 Micro/win32 ini dapat dilakukan pemrograman dalam 2 macam set instruksi yaitu instruksi SIMATIC (dari Siemens) dan Instruksi IEC 1131-3 (berlaku umum).

Pada penggunaan Instruksi SIMATIC terdapat 3 macam editor pemrograman yang dapat digunakan yaitu : LAD (Ladder ladder), STL (statement list editor), dan FBD (Function Block Diagram editor)

Untuk penggunaan instruksi IEC 1131-3 hanya terdapat 2 macam editor yang dapat digunakan dengan program Step 7 Micro/win32 ini yaitu: LAD (Ladder ladder) dan FBD (Function Block Diagram editor).

2.1.1 Statement List Editor.Statement List Editor memungkinkan anda untuk memasukan program dalam bentuk instruksi mnemonic. Secara umum STL ini lebih cocok digunakan oleh progamer yang berpengalaman dalam penggunaan PLC dan Logic programming. Penggunaan STL ini memungkinkan untuk menjalankan suatu instruksi yang tidak mungkin dilaksanakan pada editor LAD atau FBD. Hal ini disebabakan karena pemrograman dilakukan pada bahasa dasar dari CPU tersebut sedangkan pada LAD dan FBD ada aturan-aturan khusus yang harus diikuti sehubungan dengan penggunaan grafik dalam editor tersebut sehingga diagram akhirnya tidak mengandung kesalahan.

Gambar 2.1 : contoh penggunaan STL editor

Seperti anda lihat pada gambar diatas instruksi yang digunakan oleh STL hampir menyerupai instruksi pada pemrograman dengan Assembly Language. CPU akan mengeksekusi instruksi dari atas ke bawah dan kemudian mulai kembali dari atas.

S7-200 CPU menggunakan sebuah logic stack untuk menyelesaikan persamaan logika (lihat gambar berikut). Dalam editor LAD dan FBD secara otomatis akan dihasilkan instruksi-

instruksi yang diperlukan untuk mengendalikan pekerjaan/operasi pada stack, akan tetapi pada editor STL instruksi-instruksi tersebut harus dimasukan untuk mengendalikan pekerjaan/operasi pada stack

Gambar 2.2 : Stack Logika pada CPU S7-200

Secara umum ada hal-hal yang harus diperhatikan jika anda memilih untuk menggunakan editor STL sebagai berikut :

STL merupakan editor yang paling sesuai bagi programer yang sudah berpengalaman.

STL kadang-kadang mampu melaksanakan fungsi-fungsi yang tidak dapat dilakukan pada LAD dan FBD.

Anda hanya dapat menggunakan editor STL untuk instuksi dari SIMATIC

Anda selalu dapat menggunakan STL editor untuk melihat atau mengedit program-program yang dibuat dengan menggunakan LAD atau FBD. Tetapi sebaliknya anda tidak selalu dapat melihat atau merubah program yang dibuat dengan STL pada editor LAD atau FBD.

2.1.2 Ladder Editor.Pemrograman dengan menggunakan editor Ladder ini mengijinkan anda untuk membuat program yang menyerupai diagram pengabelan kelistrikan (“electrical wiring diagram“). Diagram Ladder ini mungkin merupakan pilihan yang paling banyak dipakai dan disukai oleh banyak progamer PLC dan bagian perawatan karena menamplikan program dalam bentuk yang sudah dikenal dan mudah dianalisa. Diagram Ladder ini secara umum akan menggambarkan aliran daya dari arus listrik yang melalui sederetan kondisi logika input yang pada akhirnya akan mengaktifkan suatu output. Kumpulan Logika ini biasanya dibagi-bagi dalam beberapa baigian yang disebut “rung” atau “network” untuk lebih memudahkan pemahaman dan analisa. CPU akan mengeksekusi rung atau network ini satu demi satu dimulai dengan dari kiri-ke-kanan dan kemudian dari atas-ke-bawah. Setelah CPU mengeksekusi network yang terakhir ia akan kembali kenetwork yang pertama. Gambar berikut menunjukan suatu contoh penggunaan diagram ladder.

Gambar 2.3 : Diagram Ladder

Ada tiga bentuk utama dalam diagram Ladder sebagai berikut :

Kontak : gambar simbol kontak ini menggambarkan kondisi logika pada input yang dapat dianalogikan dengan sakelar togel, kondisi internal, sakelar tekan dsb.

Koil : gambar simbol koil ini mewakili output yang dianalogikan pada lampu, motor, starter, solenoid, relay, kondisi output internal dsb

Kotak : gambar simbol kotak ini mewakili instruksi-instruksi tambahan seperti instruksi timer, counter atau instruksi matematika.

Hal-hal yang perlu diperhatikan dalam memilih editor Ladder ini adalah :

Ladder ini mudah digunakan untuk programer pemula yang belum berpengalaman.

Gambar grafik yang ada sangat mudah dimengerti dan dikenal penggunaannya diseluruh dunia.

Editor Ladder ini dapat digunakan untuk kedua set intruksi SIMATIC dan IEC 1311-3

Anda selalu dapat menggunakan editor STL untuk melihat program-program yang dibuat dengan editor Ladder ini

2.1.2 Function Block Diagram (FBD) Editor.Function Block Diagram editor ini juga menggunakan bantuan grafik untuk menggambarkan alur pemorgraman. Didalam editor FBD ini tidak ditemukan kontak atau koil, tetapi digantikan oleh kotak kotak yang mewakili fungsi-fungsi logika dan instruksi-instruksi lainnya. Kotak instruksi ini dilengkapi dengan input dan output serta parameter-parameter yang terlibat pada instruksi tersebut. Aliran atau logika program ditentukan oleh hubungan antar kotak-kotak instruksi tersebut. Jenis pemrograman ini mengijinkan anda untuk menyelesaiakan jenis-jenis aliran program yang sangat bervariasi. Gambar dibawah menunjukan contoh penggunaan editor FBD ini

Gambar 2.4 : Digram FBD

Berikut ini adalah hal-hal penting yang harus diperhatikan jika anda memilih menggunakan editor FBD :

Representasi grafiknya sangat cocok untuk digunakan untuk mengikuti aliran program

Editor FBD ini dapat digunakan pada instruksi SIMATIC dan IEC 1131-3

Anda selalu dapat menggunakan STL editor untuk melihat dan mengedit program yang dibuat dengan editor FBD ini

2.1.3 Contoh instruksi dan program dalam editor STL, LAD dan FBDSebagai contoh dari instruksi SIMATIC mari kita bahas instruksi logika Bit dasar berikut :

Kontak Standar

Kontak Normally Open akan tertutup (on) jika Bit sama dengan 1

Kontak Normally Closed akan tertutup (on) jika Bit sama dengan 0

Tiap jenis PLC mempunyai kekhususan tersendiri pada instruksi-instruksi yang digunakan. Untuk mempelajari instruksi ini anda dapat melihat manual dari PLC itu sendiri yang akan menerangkan secara mendetail tentang fungsi dan cara menjalankan instruksi tersebut pada PLC yang bersangkutan. Pada unit kompetensi ini tidak dibahas fungsi dan cara kerja dari tiap instruksi dengan asumsi bahwa siswa telah dapat menggunakan pengetahuan yang telah didapat sebelumnya sebagai dasar pengetahuan dalam mempelajari buku manual PLC dan mengambil hal-hal yang dibutuhkan saja.

Kontak Not akan merubah status dari aliran daya pada input. Jika aliran daya mencapai kontak Not maka aliran daya akan terputus. Jika aliran daya tidak mencapai kontak Not maka aliran daya tetap ada.

Kontak transisi positif akan mengijinkan aliran daya untuk satu siklus telusuran untuk setiap transisi dari OFF ke ON

Kontak transisi negatif akan mengijinkan aliran daya untuk satu siklus telusuran untuk setiap transisi dari ON ke OFF

:

Gambar berikut menunjukan pembuatan program dalam bentuk Statement List, Ladder Diagram dan Function Block Diagram

2.1.4 Contoh program aplikasi dan cara pembuatan programnya.Mengendalikan kuat cahaya lampu dengan keluaran pulsa DC pada PLC

Contoh aplikasi ini akan menunjukan bagaimana mengontrol kuat cahaya dari sebuah lampu (24V/ 1W) dengan operasi output dari CPU S7-200. Analog adjustment potentiometer akan digunakan untuk merubah lebar pulsa dari gelombang kotak pada output Q 0.0 sehingga akan mempengaruhi kuat cahaya pada lampu.

//***PROGRAM DESCRIPTION***

//

// During each execution cycle, the program uses special memory byte

// SMB28 to copy the value of analog potentiometer 0 into the least

// significant byte (MB1) of memory word MW0. Dividing the value of the

// POT by 8 yields the pulse width, which, when compared as a ratio

// to the pulse period, gives an approximation of the brightness of

// the bulb relative to its maximum brightness. This division provides

// the additional benefit of throwing out the three least significant

// bits of SMB28, allowing for greater stability in the program. If

// the value changes, the pulse width modulation is reinitialized at

// output Q0.0, and the new value is transferred as a pulse width in

// milliseconds.

//

// Example: SMB28 = 80 (value for POT0)

// 80 / 8 = 10

// 10 / 25 (=pulse width / period) -> 40% (voltage time ratio)

// -> 40% of maximum brightness

//

// The S7-200 System Manual provides additional information about pulse

// sequences and more detailed data about the use of the analog

// potentiometers (analog adjustments).

//

//***MAIN PROGRAM***

//

NETWORK 1 // Clear Memory Word MW0

// Load special memory bit SM0.1 to process this network in the first

// scan cycle only.

// Move the constant 0 to memory word MW0 to clear MW0 (set value to 0).

LD First_Scan_On // First Scan Bit

MOVW +0, Store_POT0 // clear flag word MW0

NETWORK 2 // Save Old POT Value, Store New Value and Divide by 8

// To save the current value of the potentiometer (stored in memory

// word MW0), move it to memory word MW2 before adjusting the POT and

// changing the value. Special memory byte SMB28 stores the value

// entered with analog adjustment 0 (POT0). This value is updated

// once per scan cycle. After adjusting POT0, move the value stored in

// SMB28 to the least significant byte (MB1) of memory word MW0.

// Divide that value by 8 to determine the pulse width, which, when

// compared as a ratio to the pulse period, gives an approximation

// of the brightness of the bulb relative to its maximum brightness.

// This division provides the additional benefit of throwing out the

// three least significant bits of SMB28, allowing for greater stability

// in the program.

// Load special memory bit SM0.0 to process this network every scan

// cycle.

// Move the value in memory word MW0 to memory word MW2.

// Move the value in special memory byte SMB28 (POT0 value) to memory

// byte MB1.

// Shift memory word MW0 right by 3 bits to divide the POT0 value by

// 8 and remove the three least significant bits of SMB28.

LD Always_On // Load SM0.0.

MOVW Store_POT0, Old_POT0 // Move memory word MW0 to

// memory word MW2.

MOVB POT0_Value, MB1 // Move special memory byte SMB28

// to memory byte MB1.

SRW Store_POT0, 3 // Shift memory word MW0 right

// by 3 (divide value by 8).

NETWORK 3 // Set Up PWM and Set PTO/PWM Control for Output Q0.0.

// If the value at analog adjustment 0 (POT0) changes, change the

// pulse width modulation at output Q0.0.

// Specal memory byte SMB67 initializes the pulse width modulation of

// output Q0.0. The individual bits are:

// SM67.0: This bit indicates whether to update the cycle time value of output Q0.0.

// Set to 1 = write new cycle time.

// SM67.1: This bit indicates whether to update the pulse width value of output Q0.0.

// Set to 1 = write new pulse width.

// SM67.3: This bit enables you to set the time base for output Q0.0.

// Set to 1 = time base is 1 ms/tick (0 = time base 1 µs/tick).

// SM67.6: This bit enables you to select the PTO or PWM function for output Q0.0.

// Set to 1 = select PWM mode (0 = PTO mode).

// SM67.7: You can use this bit to enable output Q0.0. Set to 1 = enable.

// Compare the values in special memory words MW0 and MW2.

// If the values in memory words MW0 and MW2 are not equal, the

// lack of power flow from the compare enables the power flow for the network.

// To set the PTO/PWM control for output Q0.0, move the hexadecimal

// value CB (binary 11001011) to special memory byte SMB67. These

// bit settings enable the update of the cycle time and the update of

// the pulse width value, set the time base to 1 ms/tick, select PWM

// mode, and enable output Q0.0.

// Move the constant 25 to special memory word SMW68 to specify a

// cycle time at output Q0.0 of 25 ms.

// Move the value in memory word MW0 to special memory word SMW70

// to specify the value at POT0 as the starting pulse width.

// Examine the special memory bits for pulse output Q0.0 and enable

// the pulse function as defined by those bits.

LDW = Store_POT0, Old_POT0 // Compare MW0 and MW2.

NOT // If MW0 and MW2 are not equal,

MOVB 16#CB, PLS0_Ctrl // load control bits for pulse

// width modulation at output

// Q0.0.

MOVW +25, PLS0_Cycle // Specify cycle time of 25 ms.

MOVW Store_POT0, PWM0_PW // Set starting pulse width to

// value at POT0.

PLS 0 // Enable pulse function at output

// Q0.0.

NETWORK 4 // Main Program End

// MEND // End main program.

3.1 Pemrograman PLC Jenis TertentuDalam penggunaannya PLC memerlukan pemrograman yang sangat bervariasi yang bergantung pada aplikasi yang dijalankan. Beberapa jenis program-program yang sering digunakan tersebut dapat digolongkan sebagai berikut: Pemrograman Timer Pemrograman pencacah (Counter) Instruksi program pengendalian Instruksi pemrosesan data Instruksi matematis

Cara penulisan program tersebut akan sangat bergantung kepada sipembuat program. Sebuah program akan berjalan dengan baik dan tepat jika digunakan instruksi-instruksi yang tepat pula. Untuk itu penulis program sangat disarankan untuk membaca buku manual dari PLC tersebut khususnya yang berisi tentang informasi instruksi-instruksi yang bisa dijalankan oleh PLC tersebut. Pada unit ini digunakan contoh pemrograman pada CPU Siemens S7-200. Pada manual CPU S7-200 ini dijelaskan dengan mendetail tentang fungsi dan pemakaian instruksi-instruksi yang tersedia. Unit kompetensi ini akan membahas penggunaan sebagian instruksi-instruksi tersebut sebagai pengenalan akan jenis-jenis instruksi seperti yang telah disebutkan diatas.

3.1.1 Pemrograman TimerInstruksi “On-Delay Timer” dan “Retentive On-Delay Timer” akan menghitung waktu pada waktu input enabelnya ON. Jika nilai sekarang “current value” (Txxx) lebih besar atau samadengan preset time (PT), makan “timer bit” akan ON. Nilai sekarang dari On-Delay timer ini di-nol-kan kembali dengan memberi sinyal OFF pada input enable-nya.

Sementara itu nilai sekarang (“current value”) dari Retentive On-Delay Timer akan tetap selama inputnya OFF. Anda dapat menggunakan Retentive On-Delay Timer untuk mengakumulasikan waktu untuk berbagai perioda selama kondisi input ON. Sebuah instruksi Reset (R) dgunakan untuk mengenolkan nilai sekarang dari Retentive On-Delay Timer. Kedua timer On-Delay Timer dan the Retentive On-Delay Timer melanjutkan hitungannya sampai nilai preset tercapai dan timer tersebut akan berhentimenghitung pada hitungan 32767.

Off-Delay Timer digunakan untuk menunda kondisi OFF pada output untuk suatu perioda waktu tertentu setelah inputnya berada dalam kondisi OFF. Pada waktu input menjadi ON kembali, timer Bit segera ON dan dan nilai sekarang tereset ke 0. Pada waktu input berubah kekondisi OFF maka timer tetap menghitung sampai hitungan timer mencapai nilai waktu preset. Pada waktu nilai preset tercapai, timer bit berubah kondisi ke OFF dan nilai sekarang akan berhenti menghitung. Jika masukan input berada pada kondisi OFF untuk waktu yang lebih lama dari untuk waktu yang terdapat pada preset value, timer bit akan tetap ON. Instruksi TOF harus mendapat perubahan transisi dari ON ke OFF agar penghitungan waktu dapat dimulai.

Resolusi instruksi Timer mempunyai tiga resolusi yaitu 1ms, 10ms, dn 100ms. Pemilihan ketiga jenis timer ini akan bergantung pada alamat atau address dari timer tersebut. Lihat tabel berikut untuk lebih jelasnya :

Berikut adalah ini contoh-contoh penggunaan instruksi-instruksi Timer :

Gambar 3.1 : Penggunaan instruksi On-Delay Timer dalam bentuk LAD,FBD dan STL

Terlihat bahwa timer akan ON setelah current valuenya (T33current) mencapai nilai preset (3) dan kondisi input (I2.0) juga dalam kondisi ON. Lamanya Bit T33 dalam kondisi ON ditentukan oleh nilai PT dan input I2.0.

Gambar 3.2 : Penggunaan instruksi Retentive On-Delay Timer dalam bentuk LAD,FBD dan STL

Terlihat bahwa timer akan ON (Bit T2) setelah current valuenya mencapai nilai preset (10) dan kondisi input (I2.0) juga dalam kondisi ON. Nilai T2 current akan bertambah selama kondisi input I2.1 ON dan nilainya akan tetap selama kondisi I2.1 OFF. Instruksi ini sangat berguna untuk menghitung akumulasi waktu yang telah digunakan dalam suatu proses.

Gambar 3.3 : Penggunaan instruksi Off-Delay Timer dalam bentuk LAD,FBD dan STL

Terlihat bahwa timer akan OFF (Bit T33) setelah current valuenya mencapai nilai preset (PT=3) dan kondisi input (I0.0) juga dalam kondisi OFF.

3.1.2 Pemrograman Pencacah (“Counter”)Instruksi Count Up akan mencacah naik sampai pada nilai maksimum untuk setiap transisi dari OFF ke ON pada input “Count Up”. Nilai counter bit (Cxxx) akan On pada waktu nilai current value (Cxxx) lebih besar atau samadengan nilai Preset Value (PV). Counter akan direset jika input (R) dalam kondisi ON. Counter akan berhenti mencacah jika nilai current value mencapai nilai PV.

Instruksi Count Up/Down akan mencacah naik untuk setiap transisi dari OFF ke ON pada input “Count Up” dan mencacah turun untuk setiap transisi OFF ke ON pada input Count Down (CD). Nilai counter bit (Cxxx) akan On pada waktu nilai current value (Cxxx) lebih besar atau sama dengan nilai Preset Value (PV). Counter akan direset jika input (R) dalam kondisi ON.

Instruksi Count Down akan mencacah turun dari nilai PV untuk setiap transisi OFF ke ON pada input “Count Down”. Nilai counter bit (Cxxx) akan On pada waktu nilai current value (Cxxx) sama dengan nol. Counter akan direset dan mengisi nilai current value dengan nilai preset value (PV) jika input (LD) dalam kondisi ON. Down Counter ini akan berhenti menghitung jika nilai current valuenya mencapai nol.

Pada editor STL, untuk instruksi CTU, nilai pada stack teratas adalah nilai Reset Input dan nilai pada lokasi stack kedua adalah merupakan nilai pada input Count Up.

Pada editor STL, untuk instruksi CTUD, nilai pada stack teratas adalah nilai Reset Input, nilai pada lokasi stack kedua adalah merupakan nilai pada input Count Down dan nilai pada stack ketiga adalah nilai Count Up.

Pada editor STL, untuk instruksi CTD, nilai pada stack teratas adalah nilai Reset Input dan nilai pada lokasi stack kedua adalah merupakan nilai pada input Count Down.

Berikut ini adalah contoh penggunaan Down Counter yang ditulis dengan editor LAD, FBD dan STL. Terlihat dalam gambar tersebut nilai PV = 3 dan Input CD dikendalikan oleh I3.0 dan input LD oleh I1.0.

Timing diagram menunjukan bahwa Down Counter ini akan mencacah turun dari nilai PV setiap terjadi perubahan OFF ke ON pada input CD. Counter ini akan berhenti menghitung jika telah mencapai nilai 0, pada saat itu kondisi Bit dari counter C50 akan menjadi ON sampai input LD menjadi ON. Pada saat ini nilai PV dipindahkan menjadi nilai Current dari C50. Counter ini akan menghitung kembali apabila kondisi input LD sudah kembali ke OFF dan input CD mendapatkan perubahan kondisi OFF ke ON.

Gambar 3.4 : Contoh penggunaan Down Counter.

Berikut ini adalah contoh penggunaan Up/Down Counter yang ditulis dengan editor LAD, FBD dan STL. Terlihat dalam gambar tersebut nilai PV = 4 dan Input CU dikendalikan oleh I4.0 , input CD oleh input I3.0, dan input R oleh I2.0.

Dalam timing diagram tersebut terlihat Up/Down counter akan mencacah naik jika pada input CU mendapatkan transisi OFF ke ON yang dikendalikan oleh kondisi input I4.0. Counter akan mencacah turun jika pada input CD mendapatkan transisi OFF ke ON yang dikendalikan oleh kondisi input I3.0. Pada timing diagram terlihat counter mencacah naik dari 0 sampai ke 5 kemudian mencacah turun sampai nilai current = 3, dan mencacah naik kembali sampai ke nilai 5 dan akhirnya tereset ke nilai 0. Kondisi Reset ini dikendalikan oleh kondisi input R, yaitu nilai current akan kembali ke 0 apabila input R mendapatkan suatu transisi OFF ke ON. Pada timing diagram juga terlihat bahwa nilai Bit C48 tersebut akan ON untuk nilai current C48 yang lebih besar atau sama dengan nilai PVnya.

Gambar 3.5 : contoh penggunaan Up/Down Counter

3.1.3 Instruksi Pengendalian Program (Program Control Instruction)STOP , END , dan WDR Instruksi-instruksi pengendalian program digunakan untuk mengatur alur atau jalannya program yang menentukan bagaimana urutan atau step dari pengeksekusian kolompok instruksi tertentu. Instruksi-instruksi yang termasuka dalam kelompok pengendalian program (“Program Control Instruction”) ini antara lain adalah : STOP, END, WDR, JMP, LBL, SBR, RET, FOR, NEXT, SCR dsb. Untuk penjelasan detail tentang instruksi tersebut dapat melihat manual CPU S7-200 sebagai referensi.

Gambar dibawah ini merupakan contoh penggunaan instruksi STOP, END, dan WDR pada suatu program.

Pada network 1, instruksi STOP akan dieksekusi jika terdapat I/O Error

Pada network 2 atau rung 2, timer Watchdog akan direset jika kondisi M5.6 adalah ON

Pada network 3, program utama akan selesai jika kondisi I0.0 adalh ON

Gambar 3.6 : Penggunaan instruksi STOP, END, dan WDR

JMP dan LBL Gambar dibawah ini merupakan contoh penggunaan instruksi JMP dan LBL pada suatu program.

Pada network 14, instruksi JMP akan dieksekusi jika retentive data masih tersimpan yang akan dilihat dari kondisi pada special memory SM0.2. Instruksi JMP to LBL 4 ini akan membuat program meloncat ke LBL 4 (terdapat pada network 33). Penggunaan instruksi JMP to LBL ini harus dilakukan pada suatu bagian program yang sama misalnya berada dalam : Program utama, dalam Subrutin atau dalam Interupt Rutin.

Gambar 3.7 : Penggunaan instruksi JMP to LBL

SBR dan RET Berikut ini adalah contoh pemakaian instruksi SBR dan RET. Instruksi SBR ini akan menyebabkan program meloncat kelokasi subrutin yang dituju. Pada instruksi ini akan terjadi penggunaan parameter-parameter tertentu. Parameter tersebut harus dideklarasikan terlebih dahulu tipenya sebelum dapat digunakan pada subrutin. Penggunaan parameter ini dalam subrutin dilaksanakan dengan instruksi CALL yang didahului dengan nama subrutin kemudian diikuti dengan parameter-parameter lainnya. Lihat manual sebagai referensi.

Pada gambar dibawah instruksi SBR akan dilaksanakan pada scan yang pertama (dikendalikan oleh kondisi pada SM0.1). Setelan program meloncat ke subrutin 10, maka instruksi conditional return (RET) dapat diberikan untuk keluar dari program subrutin. Dalam gambar dibawah instruksi RET ini akan dilaksanakan jika kondisi M14.3 adalah ON.

Gambar 3.8 : Penggunaan Instruksi SBR dan RET

Instruksi FOR dan NEXT digunakan untuk melakukan looping atau pengulangan suatu instruksi yang terletak diantara instruksi FOR dan NEXT beberapa kali yang ditentukan oleh nilai input INDX, INIT dan FINAL.

Dalam gambar dibawah pada waktu I2,0 dalam kondisi ON maka instruksi dari Network 1 sampai network 20 (ditunjukan oleh anak panah 1) dieksekusi sebanyak 100 kali. Nilai seratus ini didapat dari nilai : (FINAL – INIT) + 1, Setiap kali pengulangan maka nilai pada INDX akan bertambah 1. Jika nilai pada INDX lebih besar dari nilai FINAL maka proses pengulangan ini berakhir.

Pada pengulangan yang ditunjukan oleh anak panah 2 dapat dilihat jumlah pengulangan adalah (2-1)+1 = 2 kali. Akan tetapi pengulangan pada network 10 – network 15 hanya akan dilaksanankan jika kondisi I2.1 adalah ON.

Gambar 3.9 : Contoh penggunaan instruksi FOR dan NEXT pada editor LAD dan STL

Instruksi Sequence Control Relay (SCR) ini digunakan untuk mengorganisasi operasi dari mesin atau membagi kedalam segmen-segmen yang serupa. Instruksi SCR ini mengijinkan pembagaian control program dalam segmen-segmen yang logis.

Instruksi LSCR akan memanggil SCR dan mengisi stack dengan logika yang terdapat pada Bit S. Segmen SCR ini akan diaktifkan dan dinonaktifkan oleh kondisi logika SCR pada stack memory. Bagian teratas dari stack diisi oleh nilai yang ada pada S bit sehingga output box dan coil dapat dihubungkan pada garis power tanpa melalui kontak penghubung. Instruksi SCRE akan mengakhiri segmen SCR.

Semua logika diantara instruksi LSCR dan SCRE akan membentuk segmen SCR dan tidak bergantung nilainya pada nilai S dalam stack untuk proses eksekusinya. Demikian juga dengan logika diantra SCRE dan instruksi LSCR berikutnya tidak bergantung pada nilai dari S pada stack memory.

Instruksi SCRT akan menset S bit untuk mengaktifkan SCR berikutnya dan juga mereset S bit yang sudah terlebih dahulu dipanggil untuk mengaktifkan segmen SCR yang sekarang.Berikut ini contoh pemakaian instruksi LSCR, SCRT dan SCRE

Gambar 3.10 : Contoh penggunaan instruksi SCR untuk membagi program dalam segmen-segmen logic.

Pada contoh diatas, bit SM0.1 pada scan pertama digunakan untuk men-set S0.1, yang akan menjadi bit “aktif”(True) dan segmen SCR yang pertama dijalankan.Setelah delay selama 2 detik yang disebabkan oleh T37, instruksi SCRT akan menonaktifkan SCR(S0.1) dan mengaktifkan SCR(S0.2).Instruksi SCRE pada Network 5 akan mengakhiri segmen SCR(S0.1 ini)

Network 6 sampai network 9 yang merupakan segmen SCR(S0.2) dijalankan.

Instruksi SCRE pada Network 9 akan mengakhiri segmen SCR(S0.2 ini)

3.1.4 Instruksi Pemrosesan DataInstruksi data ini digunakan untuk memproses data-data dengan tujuan untuk mendapatkan hasil yang sesuai dengan kebutuhan. Dalam memproses data ini berbagai instruksi dapat dilakukan untuk menghasilkan perubahan atau hasil akhir yang diinginkan. Instruksi-instruksi dibawah ini adalah instruksi yang umum digunakan untuk “data processing”:

Instruksi “Data Comparison”

Instruksi “Data Movement”

Instruksi “Data Shifting and Rotate”

Instruksi “Data Convertion”

Data CompareInstruksi ini akan membandingkan nilai kedua operand dari instruksi tersebut. Tipe data yang dibandingkan bisa berupa : Byte, Integer, Double Word, dan real. Sedangkan jenis operasi perbandingannya bisa berupa : IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1 > IN2, IN1 < IN2, atau IN1 <> IN2.Berikut ini adalah contoh dari penggunaan instruksi compare ini :Nilai pada lokasi VW4 dibandingkan dengan nilai pada lokasi VW8, jika VW4>=VW8 maka kondisi keluaran Q0.3 akan ON

Gambar 3.11 : contoh penggunaan instruksi Compare.

Data MovementData movement ini bisa dilaksanakan dengan berbagai cara sesuai dengan tipe data dan kebutuhan. Instruksi yang digunakan untuk memindahkan data ini adalah MOVE. Instruksi MOVE yang digunakan untuk memindahkan data dari satu lokasi kelokasi yang lain adalah :

Move Byte, Move Word, Move Double Word, Move RealInstruksi MOVE yang digunakan untuk memindahkan satu blok data dari satu lokasi kelokasi yang lain adalah :

Block Move Byte, Block Move Word, Block Move Double WordInstruksi yang digunakan untuk menukar byte data MSB ke Byte LSB pada suatu data Word adalah :

Swap BytesBerikut ini adalah contoh dari penggunaan instruksi Block Move untuk melakukan pemindahan suatu blok data. Dalam contoh tersebut kondisi pada I2.1 akan memicu pemindahan data dari lokasi VB20 s/d VB23 ke lokasi VB100 s/d VB103. Terminal N menunjukan banyaknya Byte data yang akan dipidahkan (dalam contoh ini 1blok = 4 byte):

Gambar 3.12 : Contoh penggunaan instruksi Block Move dalam LAD, FBD dan STL

Berikut ini adalah contoh dari penggunaan instruksi Move dan Swap untuk melakukan pemindahan dan penukaran byte data. Dalam contoh tersebut kondisi pada I2.1 akan memicu pemindahan data dari lokasi VB50 ke lokasi AC0 dan menukar MSB byte ke LSB byte pada Word di - AC0.

Gambar 3.13: Contoh penggunaan instruksi Move dan Swap

Data Shifting and RotateJenis Instruksi ini akan menggeser dan memutar bit-bit data kekiri dan kekanan sesuai dengan instruksinya.

Instruksi yang digunakan untuk mengeser data adalah Shift Right dan Shift Left serta tipe data yang dapat digeser adalah :

Byte dengan jumlah pergesaran maksimum 8 kali.

Word dengan jumlah pergeseran maksimum 16 kali

Double Word dengan jumlah pergeseran maksimum 32 kali

Instruksi yang digunakan untuk memutar data adalah Rotate Right dan Rotate LeftTipe data yang dapat diputar adalah :

Byte dengan jumlah perputaran maksimum 8 kali.

Word dengan jumlah pergeseran maksimum 16 kali

Double Word dengan jumlah pergeseran maksimum 32 kali

Berikut ini adalah contoh pemakaian instruksi Shift dan Rotate. Dapat dilihat bahwa program ini akan menggeser data kekanan pada AC0 sebanyak 2 kali dan memutar data kekiri pada VW200 sebanyak tiga kali

Gambar 3.14 : Contoh pemakaian instruksi Shift dan Rotate

Data ConversionJenis Instruksi ini akan mengkonversi data dari satu tipe data ke tipe data lainnya. Jenis instruksi konversi data yang umum adalah BCD to Integer. Integer to BCD Double Integer to Real Round Truncate Double Integer to Integer Integer to Double Integer Byte to Integer Integer to Byte

.

Berikut ini adalah contoh dari instruksi Convert dalam LAD , STL dan FBD

3.1.5 Instruksi matematisInstruksi matematis ini digunakan untuk melaksanakan fungsi matematis seperti penambahan, pengurangan, pembagian, dan perkalian.

Tipe data yang dapat digunakan pada instruksi matematis ini adalah : Integer, Double Integer, Real

Instruksi Increment dan Decrement merupakan instruksi yang digunakan untuk penambahan dan pengurangan secara bertahap pada suatu data Byte, Word atau Doube Word

Gambar 3.15 : Contoh dari pengguaan instruksi matematis

Selain matematis instruksi instruksi diatas, biasanya suatu PLC mempunyai instruksi numeris yang khusus seperti : Square Root, Logarithmic, Exponential, Sine, Cosine, Tangent dan PID function. Penggunaan instruksi-instruksi tersebut dapat dilihat pada manual CPU S7-200 dari Siemens. Khususnya topik mengenai PID tidak dibahas disini karena menyangkut aspek lain yang berada diluar jangkauan dari criteria untuk unit kompetensi ini.

4.1 Menganalisa program aplikasi dan mencari kerusakan pada sistem aplikasi Ada beberapa metoda dalam mencari kerusakan pada suatu sistem. Sistem disini bisa berupa rangkaian elektronika, hubungan antar komponen, dan program yang menjalankan sistem tersebut. Cara/metoda ini dapat digunakan bergantung pada situasi yang dihadapi. Kata situasi disini dapat berarti instrumentasi yang tesedia, lokasi kerja, dan kemampuan dari teknisi sendiri.

Dibawah ini adalah langkah-langkah umum yang biasanya digunakan dalam pencarian kerusakan pada suatu sistem .

(a) Analisa gejala kerusakan dan temukan letak permasalahannya.

(b) Lokalisasi bagian yang bermasalah pada komponen tertentu.

(c) Pisahkanlah bagian yang bermasalah pada satu tingkat.

(d) Temukan lokasi terjadinya kerusakan.

Untuk melaksanakan proses (a) diatas, seorang troubleshooter harus dapat menganalisa cara kerja sistem tersebut dan mengetahui hasil atau output yang diharapkan. Dalam suatu sistem aplikasi PLC, analisa ini akan menyangkut banyak hal yang mencakup sensor/transducer, rangkaian signal conditioning, CPU itu sendiri, program yang dijalankan, komponen output seperti relay , solenoid, motor dsb.

Untuk itu didalam mencari sumber kerusakan yang paling utama adalah mengetahui cara kerja program pada CPU sehingga dapat memastikan urutan-urutan logis dari cara kerja tiap komponen.

Pembahasan disini akan dibatasi pada pemahaman program pada CPU dan mendeteksi kondisi-kondisi input dan output yang sesuai. Pemahaman tentang komponen-komponen lain seperti transducer, sensor, rangkaian signal conditioning, motor, actuator dsb akan dibahas pada unit yang lain.

Pada kebanyakan situasi dan kondisi yang sering terjadi, dilokasi kerusakan tidak selalu tersedia referensi dari system yang rusak. Untuk itu hal-hal praktis yang harus dilakukan dalam melakukan pengujian terhadap sistem PLC adalah :

1. Mendapatkan laporan tentang kerusakan yang terjadi. (lisan maupun tertulis). Buat dokumentasi yang jelas sebagai referensi pada waktu anda melakukan pengujian terhadap system tersebut.

2. Mencari referensi/spesifikasi komponen sebanyak mungkin. Tiap komponen pasti mempunyai spesifikasi dari manufakturnya. Jika spesifikasi tersebut tidak bisa didapatkan dilokasi, usakan mendapatkannya dari sumber lain mis: Internet, Hubungi manufakturnya, Buku-buku lain yang berhubungan. Dokumentasikan semua referensi tersebut dengan baik sebagai sumbar informasi anda didalam menganalisa gejala kerusakan dan cara kerja sistem tersebut. Referensi ini akan berguna pada kesempatan lain jika anda menemukan kerusakan pada system yang menggunakan komponen yang sama.

3. Mempelajari spesifikasi tersebut terutama yang berhubungan dengan gejala-gejala kerusakan. Perhatikan spesifikasi terutama mengenai Input dan Output, dan bandingkan spesifikasi tersebut dengan spesifikasi komponen-komponen yang berhubungan dengan terminal Input dan Output tersebut.

4. Mempelajari jalannya program dari printout atau flowchart. Jika source atau sumber program tersebut tidak tersedia, anda dapat mengusahakan untuk meload program pada CPU tersebut ke-komputer dan mencetak program tersebut sebagai referensi. Berdasarkan hasil cetakan program tersebut anda dapat membuat flowchart dari cara kerja system tersebut untuk memudahkan analisa dilapangan. Untuk itu dalam unit ini disertakan software yang digunakan oleh CPU S7-200 yang berisi Step 7 Micro/Win32, beberapa hardware manual dan contoh-contoh program. Siswa diharapkan dapat menggunakan software yang tersedia ini sebagai sumber informasi utama dalam menganalisa suatu system PLC. Didalam menganalisa program ini sangat dibutuhkan pengetahuan tentang instruksi-instruksi umum yang digunakan pada PLC dan CPU manual dari PLC jenis tersebut sangat diperlukan untuk membantu pemahaman program tersebut. Apabila system tersebut telah bekerja dengan baik sebelumnya dan kemudian terjadi kerusakan, sangat mungkin kerusakan tersebut tidak disebabkan oleh program yang salah. Pemahaman tentang cara kerja ini lebih dimaksudkan untuk logika pencarian kerusakan yang akan dilakukan.

5. Mencoba sistem tersebut dengan terlebih dahulu mengisolasi bagian-bagian yang membahayakan (terutama yang berhubungan dengan bagian output yang berhubungan dengan komponen terakhir, mis motor, actuator dsb.). Setelah anda memahami cara kerja system, anda harus mencoba system tersebut untuk membandingkan gejala kerusakan yang anda dapatkan dengan data kerusakan sebelumnya. Dengan berbekal pemahaman tentang cara kerja system tersebut, buatlah suatu hipotesa/kesimpulan sementara tentang bagian-bagian yang dicurigai menimbulkan masalah. Apabila tersedia peralatan yang cukup, ada baiknya anda mensimulasikan proses tersebut dengan menggunakan sakelar atau logic data sebagai simulasi input dan logic indicator sebagai simulasi output. Proses simulasi ini akan memastikan apakah masalah/kerusakan terletak pada CPU itu sendiri atau pada komponen-komponen diluar CPU.

6. Pada kebanyakan PLC tidak direkomendasikan untuk membuka/memperbaiki rangkaian elektronik yang terdapat didalamnya. Masalah/kerusakan yang diijinkan untuk diperbaiki biasanya hanya yang berhubungan dengan pengabelan, rangkaian power supply, beban maksimum yang diijinkan, jenis input yang tidak sesuai, gangguan pada sinyal input, dan kesalahan programming. Jika semua hal diatas berfungsi dengan baik berarti kerusakan terdapat pada CPU dan solusinya adalah mengganti dengan backup CPU (jika ada) dan mengirimkan CPU tersebut ke service center yang terdekat. Jika keadaan sangat mendesak dan anda mempunyai pengetahuan yang cukup tentang komponen-komponen elektronik terutama system microcontroller dan interfacenya maka anda dapat membuka PLC tersebut dan mengadakan pemeriksaan terhadap komponen-komponen tertentu saja seperti transistor, relay, optocoupler, resistor, kapasitor, rangkaian power supply dan fuse, varistor (voltage spike protection). Jangan lakukan pengujian pada IC control dan microcontroller terutama dalam kondisi power ON kecuali anda mempunyai service manual dari CPU tersebut yang menjelaskan “checking prosedures”. Jika anda dapat melokalisasi kerusakan pada komponen tertentu anda dapat mencoba untuk mengganti komponen tersebut dengan komponen yang sama atau persamaannya. Sekali lagi hal ini tidak dianjurkan kecuali telah disetujui oleh pihak yang berwewenang.

7. Jika sampai langkah ke 6 ini semua masih berfungsi dengan normal kemungkinan besar system tersebut tidak bekerja karena kerusakan pada satu atau lebih komponen-komponen eksternal yang terhubung pada CPU tersebut. Jika anda mengetahui spesifikasi dan cara kerja komponen-komponen tersebut, periksalah kondisi komponen tersebut berdasarkan spesifikasinya. Jika komponen tersebut terbukti masih bekerja dengan baik maka komponen tersebut dapat dihubungkan kembali ke CPU.