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
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.
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.
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’.
Rung Kelima. Jika area parkir penuh, maka tutup portal pintu masuk.
Rung Keenam. Jika area parkir tidak penuh, pastikan portal pintu masuk dalam keadaan
terbuka.
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.
Keterangan:
Skenario
Program
Rung 1. Jika S1 ON dan TIMER1 OFF, maka MOTOR ON. Nilai bit Output 010.00
(MOTOR) digunakan sebagai pengunci (bit-locking).
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.
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.
Dengan mengkombinasikan instruksi DIFU(13) dan KEEP(11) dapat disusun diagram untuk
Solusi ON-OFF Satu Tombol.
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.
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.
Rung 2. Jika Tombol 2_Menit yang ditekan, maka SV TIM001 akan diisi dengan 1200 hex
(120 detik).
Rung 3. Jika Tombol 3_Menit yang ditekan, maka SV TIM001 akan diisi dengan 1800 hex
(180 detik).
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.
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.
Dengan memanfaatkan bit 1-Minute Clock Pulse yang berada di alamat SR254.00, dapat dibuat
rangkaian Timer berbasis menit sebagai berikut.
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).
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.
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.