Selasa, 07 Februari 2012

Ladder logic






Ladder logic is a programming language that represents a program by a graphical diagram based on the circuit diagrams of relay logic hardware. It is primarily used to develop software for programmable logic controllers (PLCs) used in industrial control applications. The name is based on the observation that programs in this language resemble ladders, with two vertical rails and a series of horizontal rungs between them.

Overview

An argument that aided the initial adoption of ladder logic was that a wide variety of engineers and technicians would be able to understand and use it without much additional training, because of the resemblance to familiar hardware systems. This argument has become less relevant given that most ladder logic programmers have a software background in more conventional programming languages, and in practice implementations of ladder logic have characteristics, such as sequential execution and support for control flow features, that make the analogy to hardware somewhat inaccurate.
Ladder logic is widely used to program PLCs, where sequential control of a process or manufacturing operation is required. Ladder logic is useful for simple but critical control systems or for reworking old hardwired relay circuits. As programmable logic controllers became more sophisticated it has also been used in very complex automation systems. Often the ladder logic program is used in conjunction with an HMI program operating on a computer workstation.
Manufacturers of programmable logic controllers generally also provide associated ladder logic programming systems. Typically the ladder logic languages from two manufacturers will not be completely compatible; ladder logic is better thought of as a set of closely related programming languages rather than one language. (The IEC 61131-3 standard has helped to reduce unnecessary differences, but translating programs between systems still requires significant work.) Even different models of programmable controllers within the same family may have different ladder notation such that programs cannot be seamlessly interchanged between models.
Ladder logic can be thought of as a rule-based language rather than a procedural language. A "rung" in the ladder represents a rule. When implemented with relays and other electromechanical devices, the various rules "execute" simultaneously and immediately. When implemented in a programmable logic controller, the rules are typically executed sequentially by software, in a continuous loop (scan). By executing the loop fast enough, typically many times per second, the effect of simultaneous and immediate execution is relatively achieved to within the tolerance of the time required to execute every rung in the "loop" (the "scan time"). It is somewhat similar to other rule-based languages, like spreadsheets or SQL. However, proper use of programmable controllers requires understanding the limitations of the execution order of rungs.

 

Example of a simple ladder logic program

The language itself can be seen as a set of connections between logical checkers (contacts) and actuators (coils). If a path can be traced between the left side of the rung and the output, through asserted (true or "closed") contacts, the rung is true and the output coil storage bit is asserted (1) or true. If no path can be traced, then the output is false (0) and the "coil" by analogy to electro-mechanical relays is considered "de-energized". The analogy between logical propositions and relay contact status is due to Claude Shannon.
Ladder logic has contacts that make or break circuits to control coils. Each coil or contact corresponds to the status of a single bit in the programmable controller's memory. Unlike electromechanical relays, a ladder program can refer any number of times to the status of a single bit, equivalent to a relay with an indefinitely large number of contacts.
So-called "contacts" may refer to physical ("hard") inputs to the programmable controller from physical devices such as pushbuttons and limit switches via an integrated or external input module, or may represent the status of internal storage bits which may be generated elsewhere in the program.
Each rung of ladder language typically has one coil at the far right. Some manufacturers may allow more than one output coil on a rung.
·        —( )— A regular coil, energized whenever its rung is closed.
·        —(\)— A "not" coil, energized whenever its rung is open.
·        —[ ]— A regular contact, closed whenever its corresponding coil or an input which controls it is energized.
·        —[\]— A "not" contact, open whenever its corresponding coil or an input which controls it is energized.
The "coil" (output of a rung) may represent a physical output which operates some device connected to the programmable controller, or may represent an internal storage bit for use elsewhere in the program.

 

Examples

Here is an example of what one rung in a ladder logic program might look like. In real world applications, there may be hundreds or thousands of rungs.
For example:
 
 1. ----[ ]---------|--[ ]--|------( )
         X          |   Y   |       S
                    |       |
                    |--[ ]--|
                        Z
The above realizes the function: S = X AND ( Y OR Z )
Typically, complex ladder logic is 'read' left to right and top to bottom. As each of the lines (or rungs) are evaluated the output coil of a rung may feed into the next stage of the ladder as an input. In a complex system there will be many "rungs" on a ladder, which are numbered in order of evaluation.
 
 1. ----[ ]-----------|---[ ]---|----( )
         X            |    Y    |     S
                      |         |
                      |---[ ]---|
                           Z
 2. ----[ ]----[ ]-------------------( )
         S      X                     T 
2. T = S AND X
This represents a slightly more complex system for rung 2. After the first line has been evaluated, the output coil (S) is fed into rung 2, which is then evaluated and the output coil T could be fed into an output device (buzzer, light etc..) or into rung 3 on the ladder. (Note that the contact X on the second rung serves no useful purpose, as X is already defined in the 'AND' function of S from the 1st rung.)
This system allows very complex logic designs to be broken down and evaluated.
For more practical examples see below:

 ------[ ]--------------[ ]----------------( )
  Key Switch 1      Key Switch 2       Door Motor
This circuit shows two key switches that security guards might use to activate an electric motor on a bank vault door. When the normally open contacts of both switches close, electricity is able to flow to the motor which opens the door. This is a logical AND.
                             +-------+    
 ----------------------------+       +----
                             +-------+      
                          Remote Receiver
 
 --|-------[ ]-------+-----------------( )
   |                 | 
   |-------[ ]-------|
      Interior Unlock
This circuit shows the two things that can trigger a car's power door locks. The remote receiver is always powered. The lock solenoid gets power when either set of contacts is closed. This is a logical OR.
Often we have a little green "start" button to turn on a motor, and we want to turn it off with a big red "stop" button. The stop button itself is wired as a normally closed switch. This means that when the stop button is in its normal state (not pushed), the PLC input will be true. When the stop button is pushed, the input will go false. This will make the rung false and stop the "run" output. A normally-open contact must be used in the ladder diagram, since this input is normally turned on through the normally closed pushbutton contact, and turns off when the button is pressed.
 --+----[ ]--+----[ ]----( )
   |   start |    stop   run   
   |         |                 
   +----[ ]--+                 
        run                    
                               
 -------[ ]--------------( )
        run             motor  
This latch configuration is a common idiom in ladder logic. In ladder logic it is referred to as seal-in logic. The key to understanding the latch is in recognizing that "start" switch is a momentary switch (once the user releases the button, the switch is open again). As soon as the "run" solenoid engages, it closes the "run" switch, which latches the solenoid on. The "start" switch opening up then has no effect.

 

Additional functionality

Additional functionality can be added to a ladder logic implementation by the PLC manufacturer as a special block. When the special block is powered, it executes code on predetermined arguments. These arguments may be displayed within the special block.
                             +-------+    
 -----[ ]--------------------+  A    +----
  Remote Unlock              +-------+      
                          Remote Counter  
                                          
                             +-------+    
 -----[ ]--------------------+  B    +----
  Interior Unlock            +-------+      
                         Interior Counter 
                                            
                     +--------+           
 --------------------+ A + B  +-----------
                     + into C +             
                     +--------+             
                        Adder              
In this example, the system will count the number of times that the interior and remote unlock buttons are pressed. This information will be stored in memory locations A and B. Memory location C will hold the total number of times that the door has been unlocked electronically.
PLCs have many types of special blocks. They include timers, arithmetic operators and comparisons, table lookups, text processing, PID control, and filtering functions. More powerful PLCs can operate on a group of internal memory locations and execute an operation on a range of addresses, for example,to simulate a physical sequential drum controller or a finite state machine. In some cases, users can define their own special blocks, which effectively are subroutines or macros. The large library of special blocks along with high speed execution has allowed use of PLCs to implement very complex automation systems.

Limitations and successor languages

Ladder notation is best suited to control problems where only binary variables are required and where interlocking and sequencing of binary is the primary control problem. Since execution of rungs is sequential within a program and may be undefined or obscure within a rung, some logic race conditions are possible which may produce unexpected results; complex rungs are best broken into several simpler steps to avoid this problem. Some manufacturers, e.g. Omron, avoid this problem by explicitly and completely defining the execution order of a rung, however programmers may still have problems fully grasping the resulting complex semantics.
Analog quantities and arithmetical operations are clumsy to express in ladder logic and each manufacturer has different ways of extending the notation for these problems. There is usually limited support for arrays and loops, often resulting in duplication of code to express cases which in other languages would call for use of indexed variables.
As microprocessors have become more powerful, notations such as sequential function charts and function block diagrams can replace ladder logic for some limited applications. Very large programmable controllers may have all or part of the programming carried out in a dialect that resembles BASIC or C or other programming language with bindings appropriate for a real-time application environment.

See also

·        Digital circuit
·        IEC 61131

Senin, 30 Januari 2012

Motor Stepper dan Rangkaian Interfacenya (Bagian 2)


Rangkaian kontrol untuk setiap tipe motor stepper mempunyai kemiripan yaitu dalam hal aktivasinya. Namun yang paling membedakan adalah dalam hal urutan pemberian data aktivasi setiap lilitan pada motor stepper.

Motor stepper merupakan motor listrik yang tidak mempunyai komutator, di mana semua lilitannya merupakan bagian dari stator. Dan pada rotornya hanya merupakan magnet permanen. Semua komutasi setiap lilitan harus di kontrol secara eksternal sehingga motor stepper ini dapat dikontrol sehingga dapat berhenti pada posisi yang diinginkan atau bahkan berputar ke arah yang berlawanan.

Pada bagaian ini akan dibahas mengenai bagaian terakhir dari rangkaian penggerak motor stepper. Rangkaian ini pada dasarnya hanya merupakan rangkaian switching arus yang mengaliri lilitan pada motor stepper. Urutan pemberian data pada motor stepper ini dapat mengontrol arah putaran dari motor stepper ini. Penambahan kecepatan pada motor stepper dapat dilakukan dengan cara meningkatkan frekuensi pemberian data pada rangkaian switching arus.

Rangkaian kontrol ini nantinya terhubung langsung dengan lilitan pada motor, rangkaian power supplai, dan rangkaian yang dikontrol secara digital yang pada akhirnya menentukan kapan lilitan yang diinginkan dalam kondisi off atau on. Selain hanya menggunakan transistor switching ar, saat ini sudah tersedia driver motor yang memang diperuntukkan bagi motor stepper, yang lebih dikenal dengan H-Bridge. Komponen ini biasanya digunakan pada motor stepper tipe bipolar, walaupun demikian tidak menutup kemungkinan digunakan pada motor stepper tipe yang lain.


Rangkaian Driver Variabel Reluctance Motor

terdapat sebuah 3 blok dimana masing-masing mengatur sebuah kumparan motor stepper. Blok tersebut terdiri dari saklar arus yang dikontrol secara digital. Blok ini berperan penting di dalam pengontrolan arus yang akan melewati kumparan motor tertentu. Pengontrollan blok ini dapat dilakukan oleh sebuah rangkaian digital sederhana atau bahkan sebuah komputer melalui printer port. Dengan menggunakan komputer maka diperlukan perangkat lunak yang nantinya akan mengatur pemberian data dengan suatu urut-urutan tertentu kepada komponen saklar di dalam blok.

Kumparan pada motor stepper mempunyai karakteristik yang sama dengan karakteristik beban induktif lainnya. Oleh sebab itu ketika terdapat arus yang melalui kumparan motor, tidak dapat dimatikan dengan seketika tanpa menghasilkan tegangan transien yang sangat tinggi. Kondisi ini biasanya nampak dengan timbulnya percikan bunga api (ketika menggunakan motor DC dengan daya yang besar). Hal ini sangat tidak diinginkan karena dapat merusak saklar sehingga perlu diberikan rangkaian tambahan untuk membatasi tegangan transien yang muncul. Sebaliknya ketika saklar tertutup maka terdapat arus yang mengalir ke kumparan motor dan akan menghasilkan kenaikan tegangan secara perlahan.

Untuk membatasi tegangan spike yang muncul maka ada dua alternatif penyelesaiannya yaitu dengan memparalel pada kumparan motor dengan dioda dan alternatif yang kedua adalah dengan menggunakan kapasitor yang dipasang paralel dengan kumparan motor stepper.

Diode yang yang terpasang paralel tersebut harus mampu melewatkan arus balik yang terjadi ketika saklar terbuka. Dioda yang digunakan dapat berupa dioda yang umum dipakai seperti 1N4001 atau 1N4002. Jika digunakan dioda yang mempunyai karakteristik ‘fast switch’ maka perlu diberikan penambahan kapasitor yang dipasang secara paralel pada dioda.

Pemasangan kapasitor paralel dengan kumparan motor dapat menyebabkan spike yang ditimbulkan akan menyebabkan kapasitor tersebut charge sehingga tegangan spike yang terjadi tidak akan keluar tetapi diredam oleh kapasitor ini. Tetapi yang paling penting adalah kapasitor ini harus mampu menahan surge current pada saat terjadi spike. Surge current adalah arus tiba-tiba yang sangat besar yang muncul bersamaan dengan tegangan spike. Nilai kapasitor harus dipilih pada kondisi dimana nilai induktansi dari kumparan motor stepper paling besar. Inilah karakteristik motor stepper dengan tipe variabel reluctance dimana nilai induktansinya berubah-ubah tergantung dari sudut putaran pada poros rotor. Penambahan kapasitor sehingga tepat akan membentuk sebuah rangkaian resonansi yang dapat menyebabkan peningkatan torsi pada motor dengan tipe ini.

Rangkaian Driver Unipolar Permanent Magnet and Hybrid Motor

Diode yang yang terpasang paralel tersebut harus mampu melewatkan arus balik yang terjadi ketika saklar terbuka. Dioda yang digunakan dapat berupa dioda yang umum dipakai seperti 1N4001 atau 1N4002. Jika digunakan dioda yang mempunyai karakteristik ‘fast switch’ maka perlu diberikan penambahan kapasitor yang dipasang secara paralel pada dioda.

Pemasangan kapasitor paralel dengan kumparan motor dapat menyebabkan spike yang ditimbulkan akan menyebabkan kapasitor tersebut charge sehingga tegangan spike yang terjadi tidak akan keluar tetapi diredam oleh kapasitor ini. Tetapi yang paling penting adalah kapasitor ini harus mampu menahan surge current pada saat terjadi spike. Surge current adalah arus tiba-tiba yang sangat besar yang muncul bersamaan dengan tegangan spike. Nilai kapasitor harus dipilih pada kondisi dimana nilai induktansi dari kumparan motor stepper paling besar. Inilah karakteristik motor stepper dengan tipe variabel reluctance dimana nilai induktansinya berubah-ubah tergantung dari sudut putaran pada poros rotor. Penambahan kapasitor sehingga tepat akan membentuk sebuah rangkaian resonansi yang dapat menyebabkan peningkatan torsi pada motor dengan tipe ini.

Rangkaian Driver Unipolar Permanent Magnet and Hybrid Motor

Rangkaian kontrol untuk mengendalikan motor stepper dengan tipe unipolar ini hampira sama dengan rangkaian kontrol pada motor tipe variabel reluctance. Perbedaanya hanya pada struktur kumparan motornya saja.

Walaupun demikian karena bebanya merupakan beban induktif maka selalu ada tegangan spike yang muncul ketika saklar terbuka. Oleh sebab itu perlu penambahan dioda yang terpasang paralel dengan kumparan motor stepper seperti terlihat pada gambar 4.

Dua buah dioda tambahan diperlukan karena kumparan motor bukanlah kumparan yang independen tetapi sebuah kumparan yang mempunyai tap di tengah-tengah kumparan seperti struktur pada autotransformer. Ketika salah satu saklar dibuka maka tegangan spike muncul di kedua ujung kumparan motor tersebut dan di clamp oleh dua buah dioda ke supplay motor. Tetapi jika salah satu ujung kumparan motor tersebut tidak floating terhadap supplai motor maka tegangan spike ini akan lebih negatif daripada referensi ground. Jika saklar yang digunakan berupa relay, kondisi ini bukan menjadi masalah. Kondisi ini baru menjadi masalah ketika saklar yang digunakan adalah saklar semikonduktor seperti transistor atau FET.

Untuk membatasi level tegangan spike dapat pula digunakan kapasitor yang terpasang


Rangkaian Praktis Pengendali Motor Stepper

Jika rangkaian kontrol yang mengendalikan rangakaian motor driver ini berupa mikrokontroller atau komponen digital maka ada baiknya agar setiap port yang mengontrol rangkaian driver motor stepper ini diberi buffer terlebih dahulu agar tidak membebani port mikrokontroller yang digunakan. Seperti pada gambar 3, pin control_0, control_1, control_2 dan control_3 ini dapat dikontrol secara digital dengan menggunakan mikrokontroller dengan memberi komponen yang berfungsi sebagai buffer

Ada dua alternatif yaitu dengan menggunakan buffer terlebuh dahulu atau menggunakan FET, yang mempunyai impedansi input yang sangat tinggi, sebagai komponen saklarnya. Tegangan Vmotor tidaklah harus selalu sama dengan tegangan VCC pada mikrokontroller. Oleh sebab itu digunakan sebuah komponen buffer yang mempunyai output open collector sehingga outputnya dapat di pull-up ke tegangan yang diinginkan.

Untuk dasar pemilihan transistornya adalah pada karakteristik IC (arus kolektor). Transistor ini harus merupakan transistor power yang mampu melewatkan arus sesuai dengan arus yang diperlukan oleh kumparan motor stepper ini. Jika arus yang ditarik oleh kumparan motor stepper ternyata lebih besar daripada kemampuan transistor maka transistor akan cepat panas dan dapat menyebabkan rusaknya transistor tersebut.

R pull-up sebesar 470 akan memberikan arus sebesar 10 mA ke basis transistor Q1. Jika Q1 mempunyai gain sebesar 1000 maka arus yang dapat diliewatkan adalah sekitar beberapa ampere, tergantung dari besar arus yang ditarik oleh kumparan motor stepper tersebut. Arus ini harus lebih kecil dari arus IC yang diperbolehkan.

Untuk komponen FET dapat digunakan komponen IRL540 yang dapat mengalirkan arus sampai 20 A dan mampu menahan tegangan balik sampai 100V. Hal ini disebabkan oleh karena FET ini mampu menyerap tegangan spike tanpa perlindungan dioda. Tetapi komponen ini memerlukan heat sink yang besar dan harus cukup baik dalam hal penyerapan panasnya. Ada baiknya jika digunakan kapasitor untuk menekan level tegangan spike yang ditimbulkan dari transisi saklar dari on ke off

Motor Stepper dan Rangkaian Interfacenya (Bagian 1)

Stepper motor bukanlah barang baru di dalam dunia komputer. Bahkan hampir sebagian besar disk drive atau CDROM menggunakan stepper motor untuk memutar disk. Penggunaannya juga cukup sederhana dan mudah digunakan untuk aplikasi-aplikasi tertentu yang tidak terlalu membutuhkan torsi yang besar.

Motor stepper banyak digunakan untuk aplikasi-aplikasi yang biasanya cukup menggunakan torsi yang kecil, seperti untuk penggerak piringan disket atau piringan CD. Dalam hal kecepatan, kecepatan motor stepper cukup cepat jika dibandingkan dengan motor DC. Motor stepper merupakan motor DC yang tidak memiliki komutator. Pada umumnya motor stepper hanya mempunyai kumparan pada statornya sedangkan pada bagian rotornya merupakan permanen magnet. Dengan model motor seperti ini maka motor stepper dapat diatur posisinya pada posisi tertentu dan/atau berputar ke arah yang diinginkan, csearah jarum jam atau sebaliknya.

Kecepatan motor stepper pada dasarnya ditentukan oleh kecepatan pemberian data pada komutatornya. Semakin cepat data yang diberikan maka motor stepper akan semakin cepat pula berputarnya. Pada kebanyakan motor stepper kecepatannya dapat diatur dalam daerah frekuensi audio dan akan menghasilkan putaran yang cukup cepat.

Tipe Motor Stepper

Motor stepper dibedakan menjadi dua macam berdasarkan magnet yang digunakan, yaitu tipe permanen magnet dan variabel reluktansi. Pada umumnya motor stepper saat ini yang digunakan adalah motor stepper yang mempunyai variabel relukatansi. Cara yang paling mudah untuk membedakan antara tip motor stepper di atas adalah dengan cara memutar rotor dengan tangan ketika tidak dihubungkan ke suplai.

Pada motor stepper yang mempunyai permanen magnet maka ketika diputar dengan tangan akan terasa lebih tersendat karena adanya gaya yang ditimbulkan oleh permanen magnet. Tetapi ketika menggunakan motor dengan variabel reluktansi maka ketika diputar akan lebih halus karena sisa reluktansinya cukup kecil.

Variabel Reluktansi Motor

Pada motor stepper yang mempunyai variabel reluktansi maka terdapat 3 buah lilitan yang pada ujungnya dijadikan satu pada sebuah pin common. Untuk dapat menggerakkan motor ini maka aktivasi tiap-tiap lilitan harus sesuai urutannya.

Gambar 1 merupakan gambar struktur dari motor dengan variabel reluktansi dimana tiap stepnya adalah 30°. Mempunyai 4 buah kutub pada rotor dan 6 buah kutub pada statornya yang terletak saling berseberangan.

Jika lilitan 1 dilewati oleh arus, lilitan 2 mati dan lilitan 3 juga mati maka kumparan 1 akan menghasilkan gaya tolakan kepada rotor dan rotor akan berputar sejauh 30° searah jarum jam sehingga kutub rotor dengan label Y sejajar dengan kutub dengan label 2.

Jika kondisi seperti ini berulang terus menerus secara berurutan, lilitan 2 dilewati arus kemudian lilitan 3 maka motor akan berputar secara terus menerus. Maka agar dapat berputar sebanyak 21 step maka perlu diberikan data dengan urutan seperti pada gambar 2.

Unipolar Motor Stepper

Motor stepper dengan tipe unipolar adalah motor stepper yang mempunyai 2 buah lilitan yang masing-masing lilitan ditengah-tengahnya diberikan sebuah tap seperti tampak pada gambar 3.

Motor ini mempunyai step tiap 30° dan mempunyai dua buah liliatan yang didistribusikan berseberangan 180° di antara kutub pada stator. Sedangkan pada rotonya menggunakan magnet permanen yang berbentuk silinder dengan mempunyai 6 buah kutub, 3 kutub selatan dan 3 buah kutub utara. Sehingga dengan konstrusi seperti ini maka jika dibutuhkan ke presisian dari motor stepper yang lebih tinggi dibutuhkan pula kutub-kutub pada stator dan rotor yang semakin banyak pula. Pada gambar 3, motor tersebut akan bergerak setiap step sebesar 30° dengan 4 bit urutan data (terdapat dua buah lilitan dengan tap, total lilitan menjadi 4 lilitan).

Ketelitian dari magnet permanen di rotor dapat sampai 1.8° untuk tiap stepnya. Ketika arus mengalir melalui tap tengah pada lilitan pertama akan menyebabkan kutub pada stator bagian atas menjadi kutub utara sedangkan kutub stator pada bagian bawah menjadi kutub selatan. Kondisi akan menyebabkan rotor mendapat gaya tarik menuju kutub-kutub ini. Dan ketika arus yang melalui lilitan 1 dihentikan dan lilitan 2 diberi arus maka rotor akan mengerak lagi menuju kutub-kutub ini. Sampai di sini rotor sudah berputar sampai 30° atau 1 step.

Untuk meningkatkan torsi yang tidak terlalu besar maka dapat digunakan urutan pemberian data seperti pada gambar 5. Dimana terdapat dua buah lilitan yang di beri arus pada suatu waktu. Dengan pemberian urutan data seperti ini akan menghasilkan torsi yang lebih besar dan tentunya membutuhkan daya yang lebih besar.

Dengan urutan data baik pada gambar 4 atau gambar 5 akan menyebabkan motor berputar sebanyak 24 step atau 4 putaran.

Bipolar Motor Stepper

Motor dengan tipe bipolar ini mempunyai konstruksi yang hampir sama dengan motor stepper tipe unipolar namun tidak terdapat tap pada lilitannya, seperti tampak pada gambar 6.

Penggunaan motor dengan tipe bipolar ini membutuhkan rangkaian yang sedikit lebih rumit untuk mengatur agar motor ini dapat berputar dalam dua arah. Biasanya untuk menggerakkan motor stepper jenis ini membutuhkan sebuah driver motor yang sering dikenal sebagai H Bridge. Rangkaian ini akan menontrol tiap-tiap lilitan secara independen termasuk dengan polaritasnya untuk tiap-tiap lilitan.

Untuk mengontrol agar motor ini dapat berputar satu step maka perlu diberikan arus untuk tiap-tiap lilitan dengan polaritas tertentu pula. Urutan datanya dapat dilihat pada gambar 7.

Paradigma Pemrograman


Paradigma adalah sudut pandang tertentu yang digunakan terhadap suatu problem, realitas, keadaan dan sebagainya. Paradigma membatasi dan mengkondisikan jalan berpikir seseorang, mengarahkannya terhadap beberapa atribut dan mengabaikan atribut lain, sehingga paradigma hanya memberikan pandangan yang terbatas terhadap sebuah realitas.

Dalam pemrograman dikenal beberapa paradigma, yaitu:

1. Paradigma Pemrograman Prosedural atau Imperatif

Paradigma ini didasari oleh konsep mesin Von Newman (stored program concept) sekelompok tempat penyimpanan (memori), yang dibedakan menjadi memori instruksi dan memori data, masing-masing memori tersebut dapat diberi nama dan nilai, selanjutnya instruksi akan dieksekusi satu persatu secara sekuensial oleh sebuah proses tunggal.

Program dalam paradigma ini berdasarkan pada struktur informasi di dalam memori dan manipulasi dari informasi yang disimpan tersebut. Kata kunci yang sering digunakan dalam paradigma ini adalah:

Algoritma + Struktur Data = Program

Kelebihan dari paradigma ini adalah efisiensi eksekusi karena lebih dekat dengan konsep mesin, kekurangannya adalah batasan yang sangat mengikat sehingga terkadang menyulitkan programmer yang tidak terbiasa.

Contoh bahasa pemrogaman yang menggunakan paradigma prosedural atau imperatif adalah: Algol, Pascal, Fortran, Basic, Cobol, C, dsb…

2. Paradigma Pemrograman Fungsional

Paradigma ini didasari oleh konsep pemetaan dan fungsi pada matematika, fungsi dapat berupa fungsi ”primitif”, atau komposisi dari fungsi-fungsi lain yang telah terdefinisi. Dalam paradigma ini, diasumsikan bahwa akan selalu ada fungsi-fungsi dasar yang dapat digunakan, sehingga penyelesaian masalah berdasarkan pada fungsi-fungsi yang telah tersedia tersebut. Jadi dasar pemecahan masalah adalah transformasional, semua kelakuan program adalah suatu rantai transformasi dari sebuah keadaan awal menuju ke suatu rantai keadaan akhir, yang mungkin melalui keadaan antara, melalui aplikasi fungsi.

Paradigma fungsional tidak mempermasalahkan memorisasi dan struktur data, tidak ada pemilahan antara data dan program, tidak ada lagi pengertian tentang ”variabel”. Programmer tidak perlu tahu bagaimana mesin mengeksekusi atau bagaimana informasi disimpan dalam memori, setiap fungsi seperti ”kotak hitam”, yang perlu diperhatikan hanya keadaan awal dan akhir, sebuah program besar dihasilkan dengan menggabungkan fungsi-fungsi yang telah tersedia. Program yang dihasilkan dengan bahasa pemrograman yang menggunakan paradigma ini biasanya membutuhkan waktu pemrosesan yang lebih lama dibandingkan dengan yang menggunakan paradigma prosedural karena dibutuhkan waktu lebih untuk memproses fungsi-fungsi yang digunakan dalam membuat program.

Contoh bahasa pemrograman yang menggunakan paradigma fungsional adalah LOGO, APL dan LISP.

3. Paradigma Pemrograman Deklaratif, Predikatif atau Lojik

Paradigma ini didasari atas pendefinisian relasi antar individu yang dinyatakan sebagai predikat. Sebuah program lojik adalah kumpulan aksioma (Fakta dan aturan deduksi.

Dalam paradigma ini, programmer menguraikan sekumpulan fakta dan aturan-aturan (inference rules). Ketika program dieksekusi, pemakai akan mengajukan pertanyaan, selanjutnya program akan menggunakan aturan deduksi dan mencocokkan pertanyaan dengan fakta-fakta yang ada untuk menjawab pertanyaan.

Contoh bahasa pemrograman yang menggunakan paradigma ini adalah: Prolog.

4. Paradigma Berorientasi Object (Object Oriented)

Paradigma ini menggunakan konsep class dan object, object adalah instansiasi dari class, setiap object akan mempunyai attribute dan method, masing-masing object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.

mempunyai hirarki artinya sebuah class dapat diturunkan menjadi sebuah class baru yang juga memiliki attribut dan method class diatasnya. Dengan begitu dalam paradigma ini dikenal konsep modularitas, penggunaan kembali (reuse) serta kemudahan modifikasi.

Contoh bahasa pemrograman yang menggunakan paradigma ini adalah: Smalltalk, Eifel, Delphi, Java.

5. Paradigma Konkuren

Paradigma ini didasari oleah kenyataan bahwa dalam keadaan nyata, sebuah sistem komputer harus menangani beberapa program (task) yang harus dieksekusi secara bersamaan dalam sebuah lingkungan baik mono ataupun multi processor. Dalam paradigma ini programmer tidak lagi berpikir sekuensial, melainkan harus menangani komunikasi dan sikronisasi antar task.

Masing-masing paradigma tersebut mempunyai strategi analisa yang khusus untuk memecahkan persoalan. Setiap paradigma mempunyai kekurangan dan kelebihan sehingga tidak semua persoalan dapat dipecahkan dengan satu jenis paradigma, sehingga diperlukan analisis secara menyeluruh terhadap persoalan yang akan diselesaikan sebelum menentukan paradigma pemrograman seperti apa yang akan digunakan untuk menyelesaikan persoalan tersebut.

Komponen PLC,

Komponen PLC, PLC

Selain komponen dasar yang telah dibahas pada topik sebelumnya, PLC juga memiliki komponen tambahan yang dapat membuat fungsi maupun kinerjanya menjadi semakin optimal. Hal tersebut karena sebuah PLC tersusun dari ratusan bahkan ribuan relay, counter, timer dan juga memori.


Berikut komponen-komponen tambahan pada PLC:

1. Input relay atau kontaktor

Komponen ini dihubungkan ke dunia luar (antarmuka) PLC, dan secara fisik komponen ini ada serta menerima sinyal dari source, sensor dan lain sebagainya.

2. Internal, utility relay

Internal Relay tidak dapat diakses secara langsung untuk digunakan sebagai input maupun output. Komponen ini merupakan relay semu yang merupakan bit digital (0/1) yang disimpan pada internal image register. Dilihat dari sudut pandang pemrograman, semua internal relay mempunyai satu coil dan mempunyai sebanyak contact sesuai yang diinginkan oleh programer. Semua Iternal relay dimiliki oleh semua jenis maupun merk PLC, namun cara penomeran dan jumlah maksimum yang diperbolehkan masing-masing berbeda. Bagi kebanyakan programer, Internal Relay memberikan kebebasan untuk melaksanakan operasi internal yang lebih rumit tanpa memerlukan penggunaan biaya mahal untuk beberapa output relay. Dalam contoh pemrograman Internal Relay dapat disimbolkan dengan IR.

3. Counters

Counter sama dengan input relay yang secara fisik tidak ada. Komponen ini merupakan simulasi counter dan dapat diprogram untuk menghitung banyak pulsa, dapat menghitung naik atau turun atau keduanya naik dan turun. Selama waktu simulasi dapat dibatasi kecepatan hitungnya. Beberapa perusahaan membuat counter berkecepatan tinggi dengan bantuan tambahan hardware.

4. Timers

Timer juga merupakan komponen maya yang secara fisik tidak dapat ditemui. Komponen ini dibuat dengan banyak ragam dan yang paling umum adalah tipe tunda saat ON (on delay) dan tunda saat OFF (off delay) dan dua tipe yang dapat menyimpan data atau tidak dapat menyimpan data (retentive dan nen-retentive type), variasi jenaikan 1 ms sampai dengan 1s.

5. Output relays (Kumparan)

Output relay merupakan komponen tambahan yang dihubungkan dengan dunia luar, memiliki bentuk fisik dan melaksanakan tugas mengirimkan sinyal ON/OFF ke solenoid, lampu dan komponen keluaran lain. Wujud dari output relay ini dapat berupa transistor, relay atau triac tergantung pada model yang dipilih pengguna.

6. Data storage

Data storage merupakan suatu register untuk menyederhanakan penyimpanan. Biasanya difungsikan sebagai alat penyimpanan data.

PLC SIMULATOR


PLC SIMULATOR V1.0

Program simulator sederhana PLC Omron seri CPM atau Sysmac. Nama program tersebut adalah PLC Simulator versi 1.0 karya Tang Tung Yan, sebagaimana ditunjukkan pada gambar V.27 dan dengan spesifikasi:
• Model PLC yang didukung: seri CPM;
• Hanya menerima masukan kode-kode tangga atau mnemonik saja
• Kode-kode tangga yang didukung: LD, NOT, AND, OR, BLK, TIM, CNT, DIFU dan SIFT;
• Jangkauan masukan: 00 hingga 15 (16 masukan);
• Jangkauan keluaran: 1000 hingga 1015 (16 keluaran);
• Jumlah dan Jangkauan timer 00 hingga 07 (0,1 detik hingga 60 menit);
• Jumlah dan Jangkauan pencacah: 00 hingga 07 (0 hingga 9999);
• Relai internal: 0000 hingga 2000
Perangkat lunak PLC Simulator ini memiliki kelemahan tidak adanya pembuatan atau penyurtingan diagram tangga sebagaimana dijumpai paca Syswin. Dengan demikian, jika kita ingin melakukan simulasi dari diagram tangga yang dibuat menggunakan Software Syswin, maka harus kita lihat kode mnemonik-nya (statement list) dengan cara memilih jaringan atau blok yang terkait dan menekan Ctrl+F8, sehingga akan ditampilkan jendela seperti ditunjukkan pada gambar V.27.

Jangan lupa juga mengakhiri programnya dengan perintah END. PLC Simulator v1.0 ini akan digunakan dalam pembahasan contoh-contoh aplikasi, berkas simulator juga disediakan dalam CDROM sehingga Anda tidak perlu mengetikkan lagi. PLC Simulator ini mendukung beberapa kode tangga seperti: LD, OR, AND,
CNT, TIM, BLK, DIFU dan SIFT, dengan demikian kombinasi kode tangga yang dimungkinkan antara lain:
• LD, LD NOT;
• LD TIM, LD NOT TIM;
• LD CNT, LD NOT CNT;
• OR, OR BLK, OR TIM, OR CNT;
• OR NOT, OR NOT BLK, OR NOT TIM, OR NOT CNT;
• AND, AND BLK, AND TIM, AND CNT;
• AND NOT, AND BLK, AND NOT TIM, AND NOT CNT;
• OUT, OUT NOT, DIFU dan SFT;
Beberapa perintah, seperti DIFD, sama sekali tidak dikenal, sehingga beberapa aplikasi yang dibahas harus dilakukan modifikasi agar dapat dijalankan dengan PLC Simulator ini. Selain itu perintah BLK hanya khusus pada PLC Simulator, digunakan untuk antisipasi blok yang menggunakan bit TR (lihat kembali pembahasan
pada pasal 111.1.8). Perintah SIFT perilakunya agak berbeda dengan SIFT pada PLC yang sesungguhnya (akan dibahas lebih lanjut pada Bab VII). Berikut ini keterangan singkat tentang DIFU dan SIFT pada perangkat lunak PLC Simulator: DIFU digunakan jika diinginkan bentuk pulsa (ON hanya sesaat), misalnya:
LD 00000
OUT 01000
Pada potongan program tersebut, jika masukan 000.00 diaktifkan, maka keluaran 010.00 akan diaktifkan selama masukan 000.00 aktif. Bandingkan dengan potongan program berikut:
LD 00000 DIFU 01000


Potongan program kedua ini memiliki perilaku berbeda, jika masukan 000.00 diaktifkan, maka keluaran 010.00 akan aktif untuk satu waktu scan saja, kemudian setelah itu akan non-aktif (OFF) walaupun masukan 000.00 tetap aktif.
Perintah SFT digunakan untuk melakukan penggeseran logika. SFT membutuhkan tiga masukan: masukan data logika, sinyal detak dan reset, perhatikan contoh berikut:
LD 00000 ; masukan sinyal detak DIFU 2000
LD 00001 ; masukan data logik fungsi SFT LD 02000
LD 00002 ; masukan RESET
SFT 01008 01005 ; geser dari 01008 hingga 01005
Catatan: pemrogram bertanggung-jawab untuk memastikan bahwa sinyal detak hanya mengandung satu pulsa saja. Jika masukannya berupa ON kontinyu, maka proses penggeseran akan berlangsung terus menerus. Berbeda dengan PLC Sysmac yang hanya tepicu saat transisi OFF ke ON saja, selama ON tidak dilakukan penggeseran bit.
Saat proses penggeseran terjadi, maka logika pada 010.00 akan digeser ke 010.01, sedangkan yang ada di 010.01 akan digeser ke 010.02, demikian seterusnya. Program tersebut akan melakukan penggeseran bit dari kid ke kanan, jika diinginkan sebaliknya tuliskan kebalikannya, misalnya SFT 01005 01000. Aplikasi PLC CPM1A/CPM2A (Sysmac) Dasar.
Berikut ini akan diberikan contoh-contoh aplikasi PLC Omron seri CPM1 A atau CPM2A dasar berikut dengan pembahasannya. Aplikasi dasar yang dimaksudhkan disini adalah aplikasi-aplikasi contoh penggunaan beberapa fungsi yang dimiliki PLC CPM1 atau CPM2.
Sedangkan aplikasi nyata-nya akan dibahas pada pasal VI1.2. Diagram tangga atau aplikasi-aplikasi yang akan dibahas berikut ini sudah diuji-coba menggunakan seri CPM2A dan PLC Simulator v1.0.
ON OFF Dua Tombol atau Saklar (Interlock)

DESKRIPSI APLIKASI
PLC Omron akan digunakan untuk membuat sebuah aplikasi sangat scderhana, yaitu menghidupkan dan mematikan suatu alat dengan dua tombol, satu tombol picuan untuk START dan satu lagi untuk STOP. Rangkaian ini juga mengandung sifat interlockatau penguncian internal.

DIAGRAM TANGGA
Berkas: onoff . swp
KETERANGAN DIAGRAM TANGGA
Keluaran harus tetap ON hanya dengan sekali picuan dari tombol START (000.00), sehingga harus ada cara menyimpan status ON tersebut, yaitu dengan meng- OR-kan dengan status keluaran 010.00 itu sendiri (baris-1 dan 2), kemudiar. di-AND NOT-kan dengan tombol STOP, agar saat tombol STOP ON (walau hanya sesaat), akan memutuskan status keluaran maupun tombol START (baris-3 dan 4).
Untuk simulasinya digunakan berkas onoff .plc, buka dengan PLC Simulator versi 1.0, sebagaimana ditunjukkan pada gambar VI1.2. Lakukan percobaan dengan mengklik masukan 000.00 (START) kemudian amati keluaran (010.00) dan klik pada masukan 000.01 (STOP) dan amati keluarannya (010.00).
Penundaan ON Keluaran (ON Delay) DESKRIPSI


APLIKASI
PLC Omron akan digunakan untuk membuat sebuah aplikasi sangat sederhana lainnya, yaitu menghidupkan suatu alat setelah 5 detik tombol START ditekan dan akan menahan status keluaran tetap ON selama tombol START juga ON.
Untuk lebih jelasnya silahkan download PLC Simulatornya disini
Atau bila anda ingin simulasi ladder diagram dan contoh kasus, download disini
Semua file dalam bentuk WinRar, apabila dikomputer anda belum terinstall aplikasi WinRar silahkan download aplikasi WinRar disini
Selamat Mencoba......

Kekurangan PLC


Menyambung pada artikel sebelumnya, PLC tak hanya memiliki kelebihan. Sebagai hasil ciptaan manusia, tentunya PLC masih mempunyai kelemahan yang pada setiap generasinya dilakukan koreksi dan penyempurnaan. PLC pada perannya sebagai sistem kendali memiliki kelemahan yang cukup mendasar dan masih terus ditekan agar dapat diperoleh hasil yang mendekati kesempurnaan dan harapan yang ada, baik oleh vendor maupun oleh pengguna tentunya. Adapun kelemahan yang terdapat pada PLC dapat dijelaskan sebagai berikut:

1. Teknologi Masih Baru

Pengubahan sistem lama yang mempergunakan relay ke dalam konsep komputer PLC masih dianggap baru bagi sebagian orang. Tentunya hal ini menjadikan suatu tantangan besar bagi vendor PLC untuk meningkatkan pengenalan PLC ke dalam masyarakat umum maupun masyarakat teknologi (khususnya). Sementara ini, PLC banyak digunakan pada level industri saja, belum banyak merambah dunia yang lebih luas yaitu masyarakat. Meskipun tak terlalu mempengaruhi pasar industri, dengan mengenal sistem PLC orang akan dapat memiliki ketertarikan tersendiri untuk mengasah ilmu khususnya dalam bidang kendali dengan PLC dan membuat implementasinya dalam kehidupan sehari-hari.

2. Aplikasi Program PLC Buruk untuk Aplikasi Statis (Tetap)

Aplikasi-aplikasi PLC dapat mencakup beberapa fungsi sekaligus. Di lain sisi, beberapa aplikasi merupakan aplikasu dengan satu fungsi. Jarang sekali dilakukan perubahan bahkan tidak sama sekali atau statis. Hal tersebut membuat penggunaan PLC pada aplikasi dengan satu fungsi dinilai tidak efektif bahkan dapat menghabiskan biaya yang besar alias boros. Oleh sebab itu, penggunaan PLC pada aplikasi kecil tidak direkomendasikan oleh para ahli sistem kendali.

3. Operasi dengan Ragkaian yang Statis (Tetap)

Kinerja PLC menjadi tidak optimal dan efektif bahkan memboroskan biaya jika rangkaian pada sebuah operasi tidak dilakukan perubahan secara menyeluruh. Proses justru akan menjadi lambat dan membuat sistem terganggu, mempengaruhi pada hasil produksi dan keluaran.

4. PLC Rentan terhadap Perubahan Suhu dan Keadaan Lingkungan

Menjadikan sebuah pertimbangan ketika suatu perangkat yang akan dipergunakan memiliki kelemahan yang cukup mengkhawatirkan. Dalam suatu kalang proses industri, lingkungan akan memiliki perubahan suhu dan keadaan yang tidak dapat diduga, seringkali pemanasan yang sangat luar biasa terjadi, vibrasi yang berhubungan langsung dengan alat-alat elektronik di dalam PLC dan keadaan lingkungan maupun lapangan yang tidak dapat dipungkiri dapat menyebabkan debu yang mengotori perangkat PLC. Apabila hal-hal tersebut terjadi secara terus menerus, kinerja pada sistem PLC akan terganggu dan tidak dapat berjalan secara maksimal. Hal-hal tersebut banyak terjadi khususnya pada PLC generasi lama. Untuk PLC generasi baru kekeurangan ini mulai dapat dikendalikan dan dikurangi secara perlahan oleh vendor.