MEMACU KREATIFITAS

BERSAMA EM@12 TUBAN

MEMACU KREATIFITAS

BERSAMA EM@12 TUBAN

MEMACU KREATIFITAS

BERSAMA EM@12 TUBAN

MEMACU KREATIFITAS

BERSAMA EM@12 TUBAN

MEMACU KREATIFITAS

BERSAMA EM@12 TUBAN

Pintu Geser Otomatis Dengan Sensor PIR

Saat kita jalan-jalan dan memasuki pusat-pusat perbelanjaan, kita akan disambut oleh sebuah pintu otomatis yang akan dengan segera membuka saat kita mendekatinya. Dahulu, saya berfikir kalau sistem ini melibatkan sensor tekanan yang diletakan di bawah lantai dekat pintu yang akan segera merespon (membuka pintu) saat kita menginjaknya . Namun, ternyata sebagian besar pintu geser ini menggunakan sensor PIR (Passive Infra Red) yang mendeteksi panas tubuh kita.
Pintu geser otomatis dengan sensor PIR merupakan suatu perangkat yang dapat mendeteksi kehadiran manusia atau objek hidup lainnya melalui suhu tubuh yang dihasilkan. Pintu geser ini akan membuka secara otomatis saat ada objek hidup yang mendekat dan akan menutup setelah objek itu menjauh atau saat tidak ada objek yang mendekatinya.

Cara kerja
Ketika manusia berada di depan sensor PIR dalam kondisi diam, maka sensor PIR akan menghitung panjang gelombang yang dihasilkan oleh tubuh manusia tersebut. Panjang gelombang yang konstan ini menyebabkan energi panas yang dihasilkan digambarkan hampir sama dengan kondisi lingkungan di sekitarnya. Ketika manusia itu melakukan gerakan, maka tubuh manusia itu akan menghasilkam pancaran sinar inframerah pasif dengan panjang gelombang yang bervariasi sehingga menghasilkan panas yang berbeda. Panas yang dihasilkan ini akan dideteksi sensor Pyroelectric dan diubah dalam bentuk arus yang berbeda-beda.
Arus yang dihasilkan diteruskan menuju ADC (Analog to Digital Converter) untuk dilanjutkan ke microcontroller. Microcontroller memproses sinyal dari ADC kemudian menentukan tindakan yang harus dilakukan, yaitu membuka atau menutup pintu. Keputusan ini dikirimkan dalam bentuk sinyal digital sehingga harus diubah oleh DAC (Digital to Analog Converter) agar dapat dimengerti sistem aktuator.
Pada sistem pintu geser otomatis ini digunakan motor DC sebagai aktuator untuk menggerakan pintu geser. Tegangan yang dihasilkan DAC umumnya hanya 0 sampai 5 Volt sehingga diperlukan catu daya tambahan sebesar 12 VDC untuk dapat menggerakan motor DC.
Proses kerja pintu geser ini dapat dilihat dari diagram di bawah ini :

Sistem kontrol
Pintu Geser Otomatis menggunakan sensor infra merah ini terdiri atas beberapa komponen yaitu :
1. Rangkaian Sensor, berfungsi sebagai indikator ada atau tidak adanya objek yang dideteksi. Sensor ini terdiri dari : Fresnel Lens, IR Filter, Pyroelectric sensor, amplifier, dan comparator.


2. Microcontroller, berisi program aplikasi yang berfungsi untuk mengendalikan kinerja keseluruhan sistem.
3. Rangkaian Driver Motor, berfungsi sebagai pengendali polaritas motor DC (sehingga motor dapat digerakkan dengan dua arah untuk membuka dan menutup pintu).
4. Rangkaian catu daya, berfungsi untuk mengubah arus 220 VAC menjadi tegangan 5 Volt DC yang digunakan sebagai sumber tegangan pada rangkaian sistem kontroler dan sistem sensor serta tegangan 12Volt DC pada rangkaian sistem aktuator / motor.
5. ADC (Analog to Digital Converter), berfungsi agar sinyal input dapat diolah oleh microcontroller, dan DAC (Digital to Analog Converter) agar sinyal output microcontroller dapat dimengerti oleh sistem aktuator

Rangkaian & Layout PCB Catu Daya DC 5V dan 12V

 
 
 
 
 
 
8 Votes

Bereksperimen elektronika digital TTL membutuhkan adanya catu daya DC 5V. Tak jarang pula kita membutuhkan catu daya DC 12V untuk keperluan lain, misalnya: menggerakkan relay 12VDC, motor DC 12V, opamp, atau sekedar untuk memutar bor PCB kita.
Untuk memenuhi kebutuhan tersebut, kita dapat membeli catu daya tegangan DC dengan beberapa variasi tegangan (multi-voltage regulated DC power supply). Atau dapat juga kita gunakan wall-adaptor 500mA-1A yang dapat kita beli di toko peralatan elektronik. Atau dapat juga kita merakit sendiri rangkaian catu daya yang kita butuhkan.
Nah, bagi Anda yang ingin merakit sendiri catu daya tegangan DC 5V dan 12V, Anda dapat menggunakan layout PCB berikut ini. Foto di atas adalah komponen komplit dari papan praktikum yang terdiri dari rangkaian catu daya dan project-board.

Adapun skematik dari rangkaian tersebut adalah:

Sebagai masukan tegangan AC dapat digunakan trafo 2A jenis CT dengan tegangan maksimum keluaran 15-18 VAC. Sebagai regulator digunakan IC 7812 dan 7805 dengan maksimum arus keluaran ±1A.
Sebagai terminal konektor kabel masukan dan keluaran, digunakan PCB Mount Terminal Block dengan model seperti yang ditunjukkan oleh gambar berikut ini.
Rangkaian ini sangat mudah dirakit. Jika Anda berminat, silakan meninggalkan komentar dan saya akan mengirimkan file layout PCB dalam format PDF siap cetak. Foto di bawah adalah catu daya 12V dan 5V yang digabungkan dengan sebuah project-board yang sangat fleksibel untuk bereksperimen. Bagus kan? Hihihi… :D
Foto Papan Eksperimen Elektronika

Jika Anda membutuhkan catu daya seperti foto di atas yang siap-pakai, Anda dapat memesan melalui email berikut ini: info@teknikelektrolinks.com.
UPDATE
Catu daya DC 5V dan 12V kini memiliki layout PCB yang baru, berikut adalah gambar layout PCB terbaru dari rangkaian catu daya DC 5V dan 12V. Silakan menulis komentar Anda dan silakan mengunduh file layout PCB-nya melalui link berikut ini:
Semoga bermanfaat dan selamat berkarya!

:)

Aplikasi PLC – Solusi ON-OFF Satu Tombol

Perhatikan diagram ladder berikut ini.
selfmaintainKetika Tombol START ditekan, maka MOTOR akan ON. MOTOR akan tetap ON meskipun Tombol START dilepas. Untuk mematikan MOTOR, maka ditekan Tombol STOP. Rangkaian tersebut disebut Rangkaian ON-OFF dengan Self-Maintaining Output.
Selanjutnya, perhatikan diagram ladder berikut.
1btnonoff
Ketika Tombol ON-OFF ditekan, maka instruksi DIFU(13) akan membangkitkan pulsa HIGH sesaat (1 siklus) pada alamat IR200.00. Jika MOTOR dalam kondisi OFF, maka pulsa PULSE akan mengeset instruksi KEEP(11) dan menghidupkan MOTOR pada Output 010.00. Sebaliknya, jika MOTOR dalam kondisi ON, maka pulsa PULSE akan mereset instruksi KEEP(11) dan mematikan MOTOR.
Dengan mengkombinasikan instruksi DIFU(13) dan KEEP(11) dapat disusun diagram untuk Solusi ON-OFF Satu Tombol.
Selamat belajar!

 

Aplikasi PLC – Mesin Pengering Sederhana

Anggap saja ini mesin pengering cucian yang punya pilihan untuk mengeringkan cucian selama 1 menit, 2 menit, dan 3 menit yang dapat dipilih menggunakan tombol kuning, merah, dan biru. Teknik pengeringan adalah dengan cara memutar cucian dalam tabung berlubang-lubang dengan kecepatan tinggi selama 1, 2, atau 3 menit.
pengering1
Skenario
  1. Jika Tombol 1_Menit ditekan, maka Motor akan berputar selama 1 menit, dan kemudian OFF.
  2. Jika Tombol 2_Menit ditekan, maka Motor akan berputar selama 2 menit, dan kemudian OFF.
  3. Jika Tombol 3_Menit ditekan, maka Motor akan berputar selama 3 menit, dan kemudian OFF.
Diagram laddernya adalah sebagai berikut.
pengering2
Rung 1. Jika Tombol 1_Menit ditekan, maka SV (Setting Value) Timer TIM001 akan diisi dengan nilai 600 hex (60 detik). Kenapa gak pake MOV(21) aja? Karena tidak bisa, instruksi MOV(21) tidak dapat mengakses memori area TC. Oleh karena itu digunakan instruksi BSET(71). Lihat Instruksi BSET(71).
pengering3
Rung 2. Jika Tombol 2_Menit yang ditekan, maka SV TIM001 akan diisi dengan 1200 hex (120 detik).
pengering4
Rung 3. Jika Tombol 3_Menit yang ditekan, maka SV TIM001 akan diisi dengan 1800 hex (180 detik).
pengering5
Rung 4. Jika Tombol 1_Menit ditekan ATAU Tombol 2_Menit ditekan ATAU Tombol 3_Menit ditekan, maka bit flag RUN yang ada di alamat IR200.00 akan diset oleh instruksi KEEP(11). Bit flag RUN akan direset oleh Completion-Flag dari TIM001.
pengering62
Rung 5. Selama bit flag RUN berada dalam kondisi ON, maka TIM001 akan menghitung dan MOTOR akan berputar. Sementara itu, LAMPU indikator akan berkedip-kedip dengan frekuensi 1 detik. Setelah SV samadengan nol, maka Completion-Flag TIM001 akan ON. Pada siklus berikutnya, bit flag RUN akan direset sehingga MOTOR dan LAMPU akan OFF.
Dan jangan lupa memberi END(01) di akhir program.
Selamat belajar!

Free-Running Timer


Rate This

freerunningtimer
Selama START berada dalam kondisi ON, maka Timer TIM001 akan aktif dan menghitung selama ±5 detik. Setelah 5 detik, Completion Flag-nya akan aktif. Berubahnya kondisi Completion Flag dari OFF ke ON akan mengaktifkan INT_TO_MCU (Output 010.00) dan mematikan TIM001. Pada siklus berikutnya, TIM001 akan kembali aktif dan menghitung selama ±5 detik. Sementara itu INT_TO_MCU kembali menjadi OFF. Proses tersebut akan terjadi berulang-ulang sampai kondisi START menjadi OFF.
Timer pada rangkaian di atas sebagai Free-Running Timer karena Timer aktif kembali setelah hitungan selesai secara berulang-ulang dengan memanfaatkan Completion Flag-nya. Rangkaian ini disebut juga Flicker karena berfungsi memberi efek flickering (berkedip-kedip) pada Output 010.00.
Pada contoh di atas, PLC akan mengirimkan sinyal interupsi ke MCU setiap 5 detik. Sinyal interupsi tersebut berfungsi sebagai penanda bahwa MCU (Microcontroller Unit) harus membaca data masukan dari 8 buah sensor suhu dan meng-update tampilan pada layar LCD.
Selamat belajar!

Instruksi TIMER – TIM


Rate This

Instruksi TIM berfungsi sebagai ON-Delay dengan penghitungan waktu mundur. Ketika kondisi eksekusinya terpenuhi, maka TIMER akan melakukan penghitungan waktu dari nilai SV (Setting Value) menuju nol dengan resolusi waktu 0,1 detik. Jika kondisi eksekusinya ON dalam waktu yang cukup lama sehingga waktunya mencapai 0000, maka Completion Flag-nya akan ON. Kondisi ON ini akan dipertahankan sampai TIMER direset.
Instruksi TIM memiliki 2 operand. Operand pertama adalah TC Number yang pada PLC OMRON CPM2A dapat diisi dengan nilai 0-255 (0-127 untuk CPM1A). Jadi dalam program PLC CPM2A dapat didefinisikan sebanyak 256 Timer.

Perlu diperhatikan!

TC Number berlaku untuk instruksi TIMER dan COUNTER. Dalam sebuah program, masing-masing Timer dan Counter harus didefinisikan dengan TC Number yang berbeda.
Operand kedua adalah Setting Value. Operand ini bertipe word, BCD. Nilainya mulai 0000 hingga 9999. Setting Value dapat berupa konstanta atau salah satu dari register IR, AR, SR, HR, LR, DM.

Contoh Program

timer
Ketika Input 000.01 OFF, maka TIM000 akan ON dan melakukan penghitungan. Kurang-lebih setengah detik kemudian, Completion Flag TIM000 akan ON dan menyalakan Lampu. Lampu akan tetap menyala hingga TIM000 direset (Input 000.01 ON).
Penjelasan singkat ini belum mencakup segala aspek tentang TIMER. Semoga tulisan-tulisan yang lain dapat melengkapinya.

Instruksi COUNTER – CNT


1 Votes

Instruksi CNT berfungsi sebagai penghitung/pencacah mundur. Apa yang dihitung? Yang dihitung adalah perubahan kondisi masukan CP (Count Pulse) dari OFF ke ON.
Ketika kondisi eksekusinya ON, maka setiap kali ada perubahan kondisi masukan CP dari ON ke OFF, maka instruksi CNT akan mengurangi nilai PV-nya (Present Value) dengan satu. Perubahan CP selain dari kondisi OFF ke ON tidak berpengaruh terhadap nilai PV.
Jika PV telah mencapai nol, maka Completion Flag Counter akan ON. Kondisi tersebut akan dipertahankan sampai Counter direset.
Counter direset melalui kaki masukan R. Jika kondisi R berubah dari OFF ke ON, maka nilai PV akan direset menjadi samadengan SV. Pada saat Counter dalam kondisi direset (R=ON), perubahan kondisi pada CP tidak akan berpengaruh pada PV.
Seperti halnya TIMER, instruksi CNT memiliki 2 operand yakni TC Number dan SV (Setting Value). TC Number dapat bernilai 0-255 untuk CPM2A dan 0-127 untuk CPM1A. Sedangkan SV dapat berupa konstanta (BCD) atau salah satu dari register IR, AR, SR, HR, LR, dan DM.
Perlu diperhatikan!
  • Jika instruksi CNT berada dalam interlock section, nilai PV-nya tidak direset ketika kondisi eksekusi Interlock tidak terpenuhi.
  • Counter tidak direset meskipun PLC dimatikan.
  • SV Counter adalah bilangan BCD. Jadi hati-hati jika menggunakan SV selain konstanta.
Contoh Program
cnt1
Rung 1. Pada siklus pertama, DM0100 akan diisi dengan nilai 100 hex.
cnt2
CNT001 memiliki SV=100 BCD, sedangkan CNT002 memiliki SV=DM0100=100 hex.
CP dan R masing-masing Counter sama-sama terhubung ke Input 000.00 dan Input 000.01, sehingga kedua Counter akan menghitung atau direset bersama-sama.
Pada contoh program di atas, Completion Flag CNT001 akan ON setelah 100 hitungan. Demikian juga halnya dengan CNT002. Lain halnya jika kita memasukkan konstanta #100 D yang berarti 100 desimal pada instruksi MOV(21) di atas. Nilai 100 desimal akan disimpan sebagai 64 hexa. Jika dieksekusi, maka CNT002 akan selesai pada hitungan ke 64 bukannya 100 seperti yang kita harapkan.
Selamat belajar!

Aplikasi PLC – Eskalator Otomatis


2 Votes

Eskalator otomatis adalah eskalator yang secara otomatis akan ON ketika ada orang yang akan menaikinya. Dan akan secara otomatis OFF jika dalam periode waktu tertentu eskalator tidak mendeteksi adanya orang yang akan menaikinya.
eska1
Keterangan:
  • S1 - Sensor kedatangan penumpang
  • S2 - Sensor kepergian penumpang
  • MOTOR - Motor penggerak eskalator

Skenario

  • Jika S1 ON, maka MOTOR ON dan TIMER1 OFF
  • Jika S2 ON, maka TIMER1 ON
  • Jika TIMER1 ON, maka MOTOR OFF

Program

eska2
Rung 1. Jika S1 ON dan TIMER1 OFF, maka MOTOR ON. Nilai bit Output 010.00 (MOTOR) digunakan sebagai pengunci (bit-locking).
eska3
Rung 2. Jika S2 ON, maka selama S1 OFF, kondisi Timer1_ON akan ON. Penggunaan instruksi DIFU(13) berfungsi untuk menyatakan bahwa prioritas S1 lebih tinggi dibandingkan S2. Dan bahwa TIMER1 harus OFF ketika S1 ON. Hal ini untuk mengantisipasi adanya kemungkinan S2 ON lebih lama dibandingkan dengan S1.
eska4
Rung 3. Selama nilai Timer1_ON = ON, maka TIMER1 ON. Jika nilai TIMER1 terpenuhi maka TIMER1 akan memutus rangkaian MOTOR sehingga eskalator akan berhenti berjalan.


Aplikasi PLC – Parkir Mobil Sederhana


1 Votes

Belajar PLC tanpa contoh aplikasi pasti tidak afdhol. Berikut adalah sebuah contoh aplikasi PLC pada pengontrolan jumlah mobil dalam area parkir.
carpark
Skenario
  • Adanya mobil yang masuk ke area parkir dideteksi oleh sensor S1.
  • Adanya mobil yang keluar dari area parkir dideteksi oleh sensor S2.
  • Kapasitas area parkir adalah 100 mobil.
  • Jika area parkir telah penuh, maka portal akan menutup pintu masuk dan tanda ‘Parkir Penuh’ dinyalakan.
  • Portal memiliki sensor pembatas untuk menyatakan kondisi portal terbuka (S3) dan portal tertutup (S4). (S3 dan S4 tidak tergambar, maaf).
  • Tombol Reset digunakan untuk mereset nilai hitungan mobil dalam area parkir menjadi Nol.
Program Ladder
carpark1
Rung Pertama. Jika Tombol Reset ditekan, maka DM0000 direset menjadi 0000 dengan menggunakan instruksi MOVE – MOV(21). DM0000 adalah alamat data memori yang digunakan untuk menyimpan jumlah mobil yang terdapat dalam area parkir.
carpark2
Rung Kedua. Jika S1 (Sensor_IN) mendeteksi adanya mobil yang masuk, maka program akan mengecek terlebih dahulu apakah area parkir penuh atau tidak. Hal ini dilakukan dengan membandingkan nilai DM0000 dengan #0010 (seharusnya #0100, yakni jumlah kapasitas area parkir, akan tetapi dalam program digunakan nilai #0010 untuk mempercepat proses simulasi). Komparasi tersebut dilakukan menggunakan fungsi COMPARE – CMP(20).
Jika DM0000 kurang dari #0010, maka program akan memicu bit 200.00 dengan instruksi DIFU(13). Kondisi bit 200.00 ini kemudian digunakan sebagai pemicu fungsi INCREMENT – INC(38) untuk menambah nilai DM0000 dengan satu (DM0000 = DM0000 + 1). Sedangkan Output 010.01 berfungsi sebagai penanda visual adanya mobil masuk.
carpark3
Rung Ketiga. Jika S2 (Sensor_OUT) mendeteksi adanya mobil yang keluar dari area parkir, maka program akan mengecek apakah nilai counter DM0000 samadengan nol. Jika nilai DM0000 lebih dari nol, maka program akan memicu kondisi bit 200.01 dengan instruksi DIFU(13). Kondisi bit 200.01 ini kemudian digunakan untuk memicu fungsi DECREMENT – DEC(39) untuk mengurangi nilai DM0000 dengan satu (DM0000 = DM0000 – 1). Output 010.02 berfungsi sebagai penanda visual adanya mobil keluar.

Rung Keempat. Jika nilai DM0000 = #0010, maka berarti area parkir telah penuh –> Nyalakan tanda ‘Parkir Penuh’.
carpark5
Rung Kelima. Jika area parkir penuh, maka tutup portal pintu masuk.
carpark6
Rung Keenam. Jika area parkir tidak penuh, pastikan portal pintu masuk dalam keadaan terbuka.
Selamat belajar!

Instruksi DIFU dan DIFD


Rate This

Instruksi Differentiate Up – DIFU(13) dan Differentiate Down – DIFD(14) digunakan untuk mengubah kondisi bit operand menjadi ON selama 1 siklus saja. Ketika dieksekusi, DIFU(13) akan membandingkan kondisi eksekusi sekarang dengan kondisi eksekusi sebelumnya. Jika kondisi eksekusi sebelumnya adalah OFF dan kondisi eksekusi sekarang adalah ON, maka DIFU(13) akan mengaktifkan bit operand menjadi ON selama 1 siklus saja.
Kebalikan dari instruksi DIFU(13) yang mengaktifkan bit operand selama 1 siklus ketika kondisi eksekusi berubah dari OFF ke ON, maka instruksi DIFD(14) akan mengaktifkan bit operand selama 1 siklus ketika kondisi eksekusi berubah dari ON ke OFF. Contoh berikut akan menjelaskan prinsip kerja dari DIFU(13) dan DIFD(14).
Contoh Program
difudifd
Ketika kondisi eksekusi (Input 000.00) berubah dari OFF ke ON, instruksi DIFU(13) akan mengaktifkan bit Output 010.00 selama 1 siklus. Proses tersebut dapat dilihat pada LED indikator pada badan PLC yang akan terlihat berkedip. Selanjutnya, ketika kondisi eksekusi berubah dari ON ke OFF, maka instruksi DIFD(14) akan mengaktifkan bit Output 010.01 selama 1 siklus.
DIFU(13) dan DIFD(14) dalam INTERLOCK dan JUMP
Jika instruksi DIFU(13) dan DIFD(14) berada dalam interlock section, maka instruksi-instruksi tersebut hanya akan dieksekusi jika kondisi eksekusi instruksi Interlock terpenuhi. Ketika kondisi eksekusi Interlock tidak terpenuhi (OFF), maka DIFU(13) dan DIFD(14) tidak akan dieksekusi, dan kondisi bit operand-nya akan direset.
difudifd2
Jika instruksi DIFU(13) dan DIFD(14) berada dalam jump section, maka DIFU(13) dan DIFD(14) hanya akan dieksekusi jika kondisi eksekusi instruksi JMP(04) terpenuhi. Akan tetapi perlu diperhatikan bahwa ketika kondisi bit operand DIFU(13) atau DIFD(14) sedang dalam kondisi ON, kemudian pada siklus berikutnya, kondisi eksekusi JMP(04) sudah tidak terpenuhi lagi (OFF), maka kondisi bit operand DIFU(13) dan DIFD(14) akan dipertahankan hingga kondisi eksekusi JMP(04) terpenuhi lagi. Jadi mesti hati-hati!
Selamat belajar!

Instruksi KEEP

 
 
 
 
 
 
2 Votes

Instruksi ini digunakan untuk mempertahankan kondisi bit operand berdasarkan dua kondisi eksekusi, yakni Set dan Reset. Oleh sebab itu, instruksi KEEP ini terhubung ke dua baris instruksi pengkondisi eksekusi. Jika kondisi eksekusi instruksi pada baris pertama ON (Set), maka kondisi bit operand instruksi KEEP akan ON. Dan jika kondisi eksekusi instruksi pada baris kedua ON (Reset), maka kondisi bit operand instruksi KEEP akan OFF. Jadi instruksi KEEP ini seperti instruksi SET dan RSET yang dijadikan satu paket.
Kondisi bit operand yang digunakan instruksi KEEP tidak direset dalam instruksi INTERLOCK. Contoh program berikut akan menjelaskan fungsi KEEP dan penggunaannya dalam program.
Contoh Program
keep
KEEP-1
Ketika kondisi eksekusi S ON, maka kondisi Output 010.00 akan ON. Kondisi ini tetap dipertahankan meskipun S berubah menjadi OFF. Untuk mematikan Output 010.00 maka digunakan kondisi eksekusi R. Ketika kondisi eksekusi R ON, maka Output 010.00 akan OFF.
KEEP-2
KEEP-2 berada dalam interlock section. Ketika kondisi eksekusi IL(02) ON dan kondisi eksekusi S ON, maka Output 010.02 akan ON. Kondisi ini akan tetap dipertahankan meskipun kondisi eksekusi IL(02) berubah menjadi OFF, karena IL(02) tidak mereset instruksi KEEP(11). Berbeda dengan kondisi Output 010.01 yang kondisinya akan ON jika kondisi eksekusi IL(02) ON dan kondisi Output 010.00 ON. Kondisi Output 010.01 akan OFF jika kondisi eksekusi IL(02) OFF meskipun kondisi Output 010.00 ON.
Selamat belajar!

Instruksi SET dan RSET

 
 
 
 
 
 
Rate This

Instruksi SET dan RESET mirip sekali dengan instruksi OUTPUT dan OUTPUT NOT. Instruksi SET dan RESET mengubah kondisi bit operand-nya ketika kondisi eksekusinya ON. Ketika kondisi eksekusinya OFF, kondisi bit operand-nya tidak akan terpengaruh.
Berbeda dengan instruksi OUTPUT dan OUTPUT NOT yang akan mempengaruhi kondisi bit operand-nya, baik ketika kondisi eksekusinya ON maupun OFF. Mari kita memahaminya dengan contoh.
Contoh Program
setrset
Instruksi OUTPUT pada Net1 akan mengaktifkan Output 010.00 ketika kondisi Input 000.00 ON, dan akan mematikan Output 010.00 ketika kondisi Input 000.00 OFF. Demikian pula halnya dengan instruksi OUTPUT NOT pada Net2. Ketika kondisi Input 000.01 ON, maka kondisi Output 010.01 akan OFF, dan ketika kondisi Input 000.01 ON, maka kondisi Output 101.01 akan ON.
Instruksi SET pada Net3 akan mengaktifkan bit 200.00 ketika Input 000.02 ON. Kondisi ini akan tetap dipertahankan meskipun Input 000.02 berubah kondisi dari ON menjadi OFF.
Instruksi RSET pada Net4 akan menonaktifkan bit 200.00 ketika Input 000.03 ON. Kondisi ini akan tetap dipertahankan meskipun Input 000.03 berubah kondisi dari ON menjadi OFF.
Selamat belajar!

Instruksi JMP

 
 
 
 
 
 
Rate This

Instruksi Jump – JMP(04) selalu berpasangan dengan instruksi Jump End – JME(05). JMP digunakan untuk melewati bagian program tertentu dalam program, yakni bagian program yang terletak di antara instruksi JMP(04) dan JME(05). Kita sebut saja bagian program tersebut sebagai jump section.
Jika kondisi eksekusi JMP(04) ON, maka program akan berjalan ‘lurus’ seperti jika tidak ada instruksi JMP(04). Dengan kata lain, instruksi-instruksi dalam jump section akan dieksekusi. Tapi jika kondisi eksekusi JMP(04) OFF, maka eksekusi program akan melompat menuju instruksi tepat di bawah instruksi JME(05), tanpa mengubah nilai status apapun yang ada di dalam jump section.
Terdapat dua tipe Instruksi JMP(04) dan JME(05), yakni instruksi dengan nomor 01-99, dan instruksi dengan nomor 00. Instruksi dengan nomor 01-99 hanya dapat digunakan satu kali dalam program. Pada kondisi eksekusi OFF, instruksi JMP(04) dengan nomor 01 (JMP(04)@01) akan melompatkan eksekusi program ke JME(05) dengan nomor 01 (JME(05)@01), seolah-olah instruksi-instruksi yang ada di antara keduanya tidak ada.
Intsruksi JMP(04)@00 dapat digunakan berulang-ulang dalam program. Bahkan bisa juga instruksi ini digunakan secara berurutan dengan hanya satu instruksi JME(04) saja. Dalam eksekusinya, program akan mencari pasangan JMP(04)@00 terdekat pada instruksi-instruksi selanjutnya meskipun tanpa mengubah nilai status apapun. Akan tetapi hal tersebut menyebabkan proses eksekusi program menjadi sedikit lebih lama dibandingkan ketika menggunakan instruksi JMP(04) dan JME(05) dengan nomor 01-99.
Instruksi JMP(04) dan JME(05) dengan nomor 00 dapat dianggap sebagai instruksi interlock IL(02) dan ILC(03) dengan catatan bahwa instruksi JMP(04) dan JME(05) tidak mengubah nilai status apapun dalam jump section-nya.
Contoh Program
jmpjme
Pada saat Kondisi1 OFF, eksekusi program akan langsung melompat ke instruksi tepat di bawah JME(05) yakni Net5. Perubahan nilai Input 000.01 hanya akan mengubah kondisi Output 010.01 saja, sedangkan kondisi Output 010.00 tetap.
Jika Kondisi1 ON, maka program akan mengeksekusi Net2 hingga Net5. Timer0 akan bekerja, dan perubahan nilai pada Input 000.01 akan mengubah kondisi Output 010.00 dan Output 010.01.
Untuk membuktikan bahwa instruksi JMP(04) tidak mengubah nilai status apapun dalam jump section, lakukan praktek sbb:
1. Aktifkan Kondisi1 (Input 000.00 ON)
2. Aktifkan Input 000.01 untuk menyalakan Output 010.00 dan Output 010.01.
3. Matikan Kondisi1 ketika Input 000.01 masih ON.
4. Matikan Input 000.01
Hasil yang akan didapat adalah kondisi Output 010.00 tetap ON, meskipun nilai Input 000.01 berubah-ubah. Perhatikan juga bahwa Output Timer0 dan Output 010.02 juga tetap. Hal ini membuktikan bahwa instruksi JMP(04) dan JME(05) tidak mengubah nilai status apapun di dalam jump section-nya. Demikian pula halnya dengan nilai Timer0. Ketika Kondisi1 berubah dari ON ke OFF sementara nilai Timer0 belum mencapai nol, maka nilai Timer0 tersebut akan dilanjutkan ketika kondisi eksekusi instruksi JMP(04) atau nilai Kondisi1 kembali ON.
Selamat belajar!

Instruksi INTERLOCK

 
 
 
 
 
 
1 Votes

Instruksi Interlock – IL(02) digunakan bersama dengan instruksi Interlock Clear – ILC(03). Instruksi ini digunakan untuk menjalankan bagian program tertentu, yakni bagian program yang berada di antara IL(02) dan ILC(03), dengan syarat kondisi eksekusi untuk IL(02) terpenuhi (ON). Bagian program yang terletak di antara IL(02) dan ILC(03) disebut sebagai interlock section.
Jika kondisi eksekusi IL(02) OFF, maka interlock section akan diperlakukan sbb:
  • Bit-bit untuk instruksi OUT dan OUT NOT akan dimatikan (OFF)
  • TIM dan TIMH(15) akan direset
  • Nilai Process Value (PV) pada CNT dan CNTR(12) akan dipertahankan
  • Bit status untuk instruksi KEEP(11) akan dipertahankan
  • Instruksi DIFU(13) dan DIFD(14) tidak akan dieksekusi
  • Instruksi lain tidak akan dieksekusi dan nilai-nilai IR, AR, LR, HR dan SR yang digunakan sebagai output akan dimatikan/direset (OFF)
IL(02) dan ILC(03) tidak harus berpasangan satu-satu. IL(02) dapat digunakan berkali-kali dengan satu ILC(03) penutup. Setiap IL(02) membentuk bagian interlock-nya masing-masing hingga bertemu dengan ILC(03). Akan tetapi tidak memungkinkan untuk membuat interlock bersarang (nested interlock).
Contoh Program
ililc1
Ketika Kondisi1 OFF, maka interlock section tidak akan dieksekusi. Timer0 dan Output 010.03 akan direset, dan nilai Counter1 akan dipertahankan. Program akan melompat menuju Net7, dan Output 010.04 akan berkedap-kedip. Nilai Kondisi2 tidak berpengaruh selama nilai Kondisi1 OFF.
Ketika Kondisi1 ON, maka Timer0 akan aktif, dan ketika waktunya terpenuhi Output Timer0 akan menurunkan nilai Counter1. Timer0 akan otomatis direset oleh keluarannya sendiri. Setelah nilai Counter0 tercapai (10 kali hitungan), maka Kondisi2 akan ON sehingga interlock section kedua (Net5) akan dieksekusi sampai Counter0 direset menggunakan CNT1RST.
Instruksi Interlock tidak cocok digunakan untuk mengontrol output yang membutuhkan nilai tetap (sustained output), misalnya aktuator pneumatik dan hidrolik, karena kondisi output akan direset ketika kondisi interlock tidak terpenuhi. Instruksi ini lebih cocok digunakan untuk mengontrol output yang tidak membutuhkan nilai tetap. Untuk aplikasi yang membutuhkan pengontrolan sustained output, maka instruksi Jump lebih cocok digunakan.
Selamat belajar!

Instruksi END dan NOP

 
 
 
 
 
 
Rate This

Instruksi END – END(01)
Instruksi ini digunakan sebagai penutup program. Instruksi-instruksi yang terletak di bawah instruksi END(01) tidak akan dieksekusi oleh PLC. Instruksi END(01) dapat diletakkan dimana saja di dalam program. Karenanya, instruksi ini dapat digunakan untuk men-debug program. Dengan menyelipkan instruksi END(01) pada baris tertentu di dalam program, maka berarti kita membatasi eksekusi program sampai baris tersebut. Setelah yakin bahwa program berjalan benar hingga baris tersebut, kita dapat menghapus instruksi END(01) tersebut dan memindahkannya ke bagian lain. Perlu diingat bahwa setelah selesai melakukan debugging, maka instruksi END(01) yang digunakan untuk tujuan debugging tersebut harus dihapus agar program berjalan normal secara keseluruhan.
Jika dalam sebuah program PLC belum terdapat instruksi END(01), maka program tidak akan dieksekusi dan pesan kesalahan akan ditampilkan. Instruksi END(01) mereset flag ER, CY, GR, EQ dan LE.
Instruksi NOP(00)
Instruksi ini tidak diperlukan dalam pemrograman dan tidak ada simbol ladder khusus untuk instruksi ini. Ketika instruksi ini ditemukan dalam program, maka PLC tidak melakukan apapun dan program akan melanjutkan eksekusi ke instruksi selanjutnya. Ketika memori PLC dihapus, maka semua alamat akan berisi NOP(00).

Instruksi STEP DEFINE dan STEP START

 
 
 
 
 
 
Rate This

Instruksi STEP DEFINE – STEP(08) dan STEP START – SNXT(09) digunakan berpasangan untuk membentuk breakpoint antara satu bagian program dengan bagian program yang lain dalam sebuah program yang besar. Masing-masing bagian tersebut dapat dieksekusi sebagai suatu unit program dan akan direset setelah eksekusi selesai dilakukan. Bagian program yang didefinisikan menggunakan STEP(08) disebut section.
Instruksi STEP(08) digunakan untuk mendefinisikan awal dari sebuah section. Instruksi ini menggunakan bit kontrol dalam register IR, LR, atau HR. Eksekusi STEP(08) dikontrol menggunakan bit kontrol, sehingga tidak memerlukan kondisi eksekusi. Untuk mengeksekusi sebuah STEP(08) digunakan instruksi SNXT(09) dengan alamat bit kontrol yang sama dengan STEP(08). Dalam sebuah section tidak boleh ada instruksi-instruksi END(01), IL(02)/ILC(03), JMP(04)/JME(05), dan SBN(92).
Ketika kondisi eksekusi SNXT(09) terpenuhi (ON), maka STEP(08) dengan alamat bit kontrol yang sama akan dieksekusi. Sekali dieksekusi, STEP(08) akan terus dieksekusi hingga kondisi bit kontrol OFF atau terjadi eksekusi SNXT(09) selanjutnya dengan STEP(08) tanpa bit kontrol.
Instruksi SNXT(09) harus diletakkan sebelum instruksi STEP(08), sehingga instruksi SNXT(09) akan dieksekusi terlebih dahulu sebelum eksekusi program mencapai instruksi STEP(08) dengan alamat bit kontrol yang sama. Hal ini disebabkan karena dalam setiap siklusnya PLC mengeksekusi instruksi-instruksi secara berurutan dari atas ke bawah.
Ketika sebuah STEP(08) selesai dijalankan, maka semua bit IR dan HR akan direset. Timer juga akan direset. Sedangkan nilai Counter, Keep, dan Shift Register dipertahankan.
Contoh Program
step1
Ketika kondisi Step-1 ON OFF, maka section dalam Step-1 tidak akan dijalankan. Program akan mengeksekusi instruksi di Net7 dan menghasilkan Output 010.02 berkedip-kedip tiap detik.
Ketika kondisi SNXT(09) Step-1 terpenuhi (Step-1 ON = ON), maka section akan dieksekusi. Eksekusi berlangsung terus-menerus hinga kondisi Step-1 OFF terpenuhi. Eksekusi section dalam Step-1 juga dapat dihentikan dengan mereset nilai bit kontrolnya. Oleh karena itu, eksekusi section dalam contoh program di atas akan dihentikan jika kondisi Stop Reset terpenuhi.
STEP(08) dapat diprogram secara berurutan. Tergantung dari kondisi eksekusi dan penampatan instruksi SNXT(09), maka STEP(08) dan SNXT(09) dapat dieksekusi sebagai sekuensial, pencabangan, atau paralel.
Selamat belajar!

Differentiated Instructions

 
 
 
 
 
 
1 Votes

Sebagian besar instruksi PLC dapat diperlakukan sebagai instruksi yang didiferensiasi (differentiated) dan sebagai instruksi yang tidak didiferensiasi (non-differentiated). Instruksi yang didiferensiasi dibedakan dengan adanya karakter @ di awal nama instruksinya.
Apa bedanya?
  • Instruksi yang didiferensiasi hanya dieksekusi satu kali saja ketika kondisi eksekusinya berubah dari OFF ke ON. Jika kondisi eksekusinya tidak berubah, atau berubah dari ON ke OFF, sejak terakhir kalinya ia di-scan, maka instruksi tersebut tidak akan dieksekusi lagi.
  • Instruksi yang tidak didiferensiasi akan dieksekusi dalam setiap siklus.
Instruksi apa saja yang dapat didiferensiasi dapat dilihat dalam Quick Reference.
Selamat belajar!

Instruksi MOVE – MOV(21)

 
 
 
 
 
 
Rate This

Instruksi MOVE - MOV(21) digunakan untuk meng-copy nilai dari Source ke Destination. Source dapat berupa konstanta (#), ataupun data yang ada di alamat tertentu dalam register IR, SR, AR, DM, HR, TC, dan LR. Sedangkan Destination adalah alamat register IR, SR, AR, DM, HR, LR. Jika kondisi eksekusi MOV(21) ON, maka data di Source (Sumber) akan di-copy ke Destination (Tujuan).
Perhatian!
  • Instruksi MOV(21) tidak dapat digunakan untuk mengubah nilai PV (Process Value) pada Timer/Counter.
  • Instruksi MOV(21) tidak dapat digunakan untuk mengubah nilai DM6144 sampai DM6655.
Contoh Program
move
Ketika kondisi Input 000.00 ON, maka konstanta #0100 akan di-copy ke DM0000, dan selanjutnya nilai dalam DM0000 akan di-copy ke HR05.
Instruksi MOV(21) dapat diperlakukan sebagai instruksi yang didiferensiasi atau tidak. (Lihat Differentiated Instructions).
Selamat belajar!

Instruksi INCREMENT – INC(38)

 
 
 
 
 
 
Rate This

Instruksi ini berfungsi untuk menambah satu nilai pada operand bertipe word. Operand dalam hal ini bisa salah satu dari register IR, SR, AR, DM, HR, dan LR.
Jika kondisi eksekusi instruksi INC(38) terpenuhi, maka nilai operand akan ditambah satu tanpa mempengaruhi bit flag Carry (CY).
Instruksi ini termasuk salah satu instruksi yang dapat didiferensiasi. Jika INC(38) tidak didiferensiasi, maka selama kondisi eksekusi terpenuhi, nilai operand akan bertambah satu setiap siklusnya. Jika dibutuhkan untuk memicu instruksi INC(38) sekali saja selama kondisi eksekusi terpenuhi, maka gunakan instruksi INC(38) yang didiferensiasi atau dengan menggabungkan instruksi INC(38) dengan instruksi DIFU(13) dan DIFD(14) .
Contoh Program
inc
Ketika PLC di-running, maka DM0100 akan direset nilainya oleh instruksi MOV(21) yang kondisi eksekusinya diaktifkan sekali saja yakni pada siklus pertama. Hal itu dapat dilakukan dengan memanfaatkan bit First Cycle Flag pada alamat SR 253.15.
Selanjutnya, jika Input 000.01 ON, maka nilai DM0100 akan bertambah satu dengan aman dan tenteram. Lain halnya dengan ketika Input 000.00 ON. Ketika hal itu terjadi, maka nilai DM0100 akan bertambah lebih dari satu dengan sangat cepat. Hal ini disebabkan karena meskipun sekejap saja kita mengubah kondisi Input 000.00 dari OFF ke ON dan kemudian ke OFF lagi, PLC telah memprosesnya berulang-ulang karena siklus waktu PLC yang cepat.
Selamat belajar!

Instruksi DECREMENT – DEC(39)

 
 
 
 
 
 
Rate This

Instruksi ini berfungsi untuk mengurangi satu nilai pada operand bertipe word. Operand dalam hal ini bisa salah satu dari register IR, SR, AR, DM, HR, dan LR.
Jika kondisi eksekusi instruksi DEC(39) terpenuhi, maka nilai operand akan dikurangi satu tanpa mempengaruhi bit flag Carry (CY).
Instruksi ini termasuk salah satu instruksi yang dapat didiferensiasi. Jika DEC(38) tidak didiferensiasi, maka selama kondisi eksekusinya terpenuhi, nilai operand akan bertambah satu setiap siklusnya. Jika dibutuhkan untuk memicu instruksi DEC(39) sekali saja selama kondisi eksekusi terpenuhi, maka gunakan instruksi DEC(38) yang didiferensiasi atau dengan menggabungkan instruksi DEC(38) dengan instruksi DIFU(13) atau DIFD(14).
Contoh Program
dec
Ketika PLC di-running, maka DM0100 akan diisi nilainya 1000 oleh instruksi MOV(21) yang kondisi eksekusinya diaktifkan sekali saja yakni pada siklus pertama. Hal ini dapat dilakukan dengan memanfaatkan First Cycle Flag dengan alamat SR 253.15.
Selanjutnya, jika Input 000.01 ON, maka nilai DM0100 akan berkurang satu dengan aman dan tenteram. Lain halnya dengan ketika Input 000.00 ON. Ketika hal itu terjadi, maka nilai DM0100 akan berkurang dengan sangat cepat. Hal ini disebabkan karena meskipun sekejap saja kita mengubah kondisi Input 000.00 dari OFF ke ON dan kemudian ke OFF lagi, PLC telah memprosesnya berulang-ulang karena siklus waktu PLC yang lebih cepat.
Selamat belajar!

Instruksi BINARY-TO-BCD – BCD(24)

 
 
 
 
 
 
1 Votes

Instruksi BCD(24) berfungsi untuk mengkonversi bilangan binary (hexadecimal) menjadi BCD ekuivalennya. Nilai bilangan yang dikonversi tidak boleh melebihi 270F hexa karena hasil konversinya akan melebihi angka 9999. Jika hal ini terjadi maka instruksi BCD(24) tersebut tidak akan dieksekusi.
Instruksi ini membutuhkan dua operand yakni Source dan Destination. Source adalah alamat memori bilangan binary yang akan dikonversi dan Destination adalah alamat memori bilangan BCD hasil konversi. Source dan Destination bisa saja salah satu dari IR, SR, AR, DM, HR, atau LR. Source dan Destination tidak dapat diisi konstanta.

Bilangan BCD – Binary-Coded-Decimal

BCD adalah teknik pengkodean bilangan desimal, dimana masing-masing digit bilangan desimal tersebut direpresentasikan dengan bilangan biner. Dalam dunia elektronik dan komputer, pengkodean ini bertujuan untuk memudahkan pengkonversian data bilangan desimal ketika akan ditampilkan pada suatu display (seven-segment misalnya). Selain itu, BCD juga digunakan untuk mempercepat suatu proses kalkulasi. Dengan teknik pengkodean BCD ini, maka akan dapat dihindari kerumitan baik dari sisi hardware maupun software.
Dalam sistem bilangan BCD, sebuah digit bilangan desimal diwakili oleh 4 bit bilangan binernya. Dasar pengkodean bilangan desimal menjadi bilangan BCD adalah dengan mengganti setiap digit bilangan desimal dengan bilangan biner 4 bit sebagai berikut:

Desimal:    0    1    2    3    4    5    6    7    8    9
Biner  : 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Jadi bilangan 236 desimal akan dikodekan menjadi 0010 0011 0110 = BCD 236.
Agar lebih mudah memahami, mari kita simak hasil simulasi pada program SYSWIN 3.4 dan PLC CPM2A berikut ini:
bcd1
Pada baris pertama, instruksi MOV(21) mengisi memori DM0100 dengan angka 00EC hex atau 0236 desimal. Pada baris berikutnya, instruksi BCD mengkonversi bilangan 00EC hex menjadi 0236 bcd. Sekarang mari kita lihat tampilan data memorinya.
bcd2
Tampilan di atas menunjukkan isi memori DM0100 dan DM0101 dalam bilangan hexa. Nilai dalam DM0100 adalah 0236 desimal yang ditampilkan sebagai 00EC hexa. Hasil konversi bilangan 0236 desimal menjadi BCD adalah 0236 bcd, yang tersimpan dalam bentuk hexa sebagai 0236 hexa.
bcd31
Jika ditampilkan dalam bentuk bilangan desimal, maka DM0100 = 00236, dan hasil konversi BCD DM0101 = 00566.
Jadi dapat dikatakan bahwa 0236 hexa adalah versi BCD dari bilangan 0236 desimal. Pengertian ini untuk memudahkan kita dalam proses pembuatan program yang melibatkan bilangan BCD.
Selamat belajar!

Instruksi COMPARE – CMP(20)

 
 
 
 
 
 
Rate This

Instruksi CMP(20) berfungsi membandingkan dua buah operand bertipe word. Ketika kondisi eksekusi instruksi ini terpenuhi, maka CMP(20) akan membandingkan nilai operand1 dengan nilai operand2. Hasil perbandingan tersebut disimpan dalam bit flag EQ (EQuals), LE (LEss-than), dan GR (GReater-than) yang menyatakan operand1 = operand2, operand1 < operand2, dan operand1 > operand2.

Perlu diperhatikan!

  • Jika membandingkan nilai PV (Process Value) pada Timer atau Counter, maka perlu diingat bahwa nilai PV pada Timer dan Counter adalah bilangan BCD. Jadi nilai pembandingnya sebaiknya juga BCD agar tidak bingung.
  • Sebaiknya langsung memproses hasil perbandingan instruksi CMP(20) sebelum instruksi lain dijalankan karena mungkin saja bit flag EQ, LE, dan GR mengalami perubahan nilai.
Contoh Program
cmp
Rung 1. Ketika pertama kali dihidupkan, nilai DM0100 akan direset menjadi 0000 dengan menggunakan instruksi MOV(21) yang dieksekusi oleh bit flag First_Scan (SR253.15).
Rung 2. Jika Input 000.00 ON, maka instruksi @INC(38) akan menaikkan nilai DM0100 sebesar 1. Adanya tambahan karakter ‘@’ di depan menunjukkan bahwa instruksi ini didiferensiasi.
Rung 3. Secara kontinyu, program membandingkan nilai DM0100 dengan 5. Jika nilainya kurang dari 5, maka Output 010.01 akan ON. Jika nilainya samadengan 5, maka Output 010.00 akan ON. Dan jika nilainya lebih dari 5, maka Output 010.02 akan ON.
Selamat belajar!

One-Shot Timer

 
 
 
 
 
 
Rate This

oneshottimer
Ketika Tombol START (Input 000.00) ON, maka LAMPU (Output 1000) akan ON. LAMPU akan tetap ON meskipun START berubah menjadi OFF. Bersamaan dengan LAMPU, Timer TIM001 juga ikut ON, dan menghitung selama ±5 detik. Setelah 5 detik, Completion Flag TIM000 akan ON sehingga 5sec_ON akan terbuka dan mematikan LAMPU.
Rangkaian Timer di atas disebut juga One-Shot Timer. Fungsinya adalah mengaktifkan keluaran selama periode waktu tertentu sesaat setelah kondisi eksekusinya terpenuhi (ON). Misal: Keran air panas pada mesin pembuat kopi otomatis membuka selama 3 detik ketika operator menekan Tombol START. Selanjutnya, mesin akan memasukkan campuran gula+kopi dan mengaduknya. Lho? Apa gak kopi+gula dulu baru air panas? Ya, namanya juga misal, hahaha…
Selamat belajar!

Aplikasi PLC – Timer Berbasis Menit

 
 
 
 
 
 
1 Votes

Dengan memanfaatkan bit 1-Minute Clock Pulse yang berada di alamat SR254.00, dapat dibuat rangkaian Timer berbasis menit sebagai berikut.
timmnt1
Rung 1. Jika Tombol START ditekan, maka alamat IR200 akan diisi dengan nilai 45 hex. Kenapa hexa dan bukannya desimal akan terjawab di rung berikutnya. Selain mengisi alamat IR200 dengan 45 hex, bit TimeIsRunning pada alamat 201.00 akan diset dan bit TimeIsUp pada alamat 201.01 akan direset. Alamat IR200 digunakan untuk menyimpan sebagai SV (Setting Value).
timmnt21
Rung 2. Apabila TimeIsRunning ON, maka setiap 1 menit sekali, nilai pada IR200 akan dikurangi 1. Perhatikan bahwa di sini digunakan instruksi DEC(39) dengan tipe operand BCD. Inilah sebabnya pada Rung 1 di atas, SV pada alamat IR200 diisi menggunakan instruksi MOV(21) dengan nilai hexa sebagaimana diketahui bahwa nilai hexa merupakan representasi nilai desimal dalam format BCD. Jadi dalam contoh aplikasi ini timer akan menghitung selama 45 menit.
Setiap 1 menit juga, nilai SV pada alamat IR200 akan dibandingkan dengan nol. Jika sama atau lebih besar, maka bit TimeIsUp yang merupakan Completion-Flag dari timer berbasis menit ini akan diset dan bit TimeIsRunning akan direset untuk menghentikan timer ini.
timmnt3
Rung 3. Selama Completion-Flag (TimeIsUp) OFF, maka POMPA1 akan ON. Jika TimeIsUp, maka POMPA1 akan OFF dan POMPA2 akan ON.

Catatan

Dalam contoh ini SV disimpan dalam area memori IR (Internal Relay) yang tidak mempertahankan nilainya ketika PLC dimatikan. Jika diinginkan nilai SV yang bertahan nilainya ketika PLC dimatikan, maka dapat digunakan area lain seperti HR atau DM.
Demikian juga halnya dengan bit TimeIsRunning dan bit TimeIsUp, dapat digunakan area HR.
Selamat belajar!