Dalam artikel ini, kita akan mengetengahkan bagaimana Visual Basic digunakan mengakses data yang terdapat dalam memori sebuah PLC. Bahasa yang kita gunakan ialah Visual Basic 4.0 dan PLC-nya dari keluarga Omron. Komunikasi dilakukan melalui port serial. Aplikasi ini dibangun sebagai implementasi konsep dasar pertukaran data antara PLC dengan PC, dan membuka jalan bagi eksplorasi permasalahan komunikasi data lebih jauh dalam sistem kontrol industri. Pengesetan nilai setpoint parameter proses merupakan contoh utama penerapan program ini.
Rancangan Aplikasi
Pada aplikasi ini, kita mengisikan sebuah data diskret ke PLC. Masukan yang kita berikan dari antarmuka Visual Basic ini akan ditunjukkan dalam bit indicator pada card I/O PLC . Apabila data adalah bit 1, maka indicator akan menyala. Apabila data nol indicator-nya tidak menyala.
RS 232
----Host Link Unit---- Omron Sysmac C200HS + I/O card
PC
Persiapan Setting Sistem
- Pengesetan Host Link Units
Panjang data = 7 bits
Event (vertical) parity = 1 bits
Nomor stop bits = 2
- Pengesetan PC/Komputer
Alokasi Data dan Memori CPU PLC
Sebelum melangkah ke pemrograman kita harus mengetahui alokasi data di dalam CPU PLC ini, yang mempunyai nama seri Omron Sysmac C200HS. Di sini alokasi data diatur dalam bagian-bagian dengan nama yang relevan dengan kegunaan data. Misalnya data untuk timer dan pencacah, disimpan dalam Timer Counter Area, atau disingkat TC. Detailnya dapat dilihat pada tabel 1.Area | Kapasitas | Jangkau | Keterangan | ||
I/O Area | 480 bits | IR 000 s.d. IR 029 | Word I/O dialokasikan untuk rak CPU berdasarkan posisi slot.1 | ||
Group-2 High-density I/O Unit Area | 320 bits | IR 030 s.d. IR 049 | Dialokasikan untuk Group-2 High-density I/O unit 0 s.d. 9.1 | ||
SYSMAC BUS Area | 800 bits | IR 050 s.d. IR 099 | Dialokasikan untuk Remote I/O Slave Racks 0 s.d. 4.1 | ||
Special I/O Unit Area | 1,600 bits | IR 100 s.d. IR 199 | Dialokasikan untuk Special I/O Unit 0 s.d. 9.1 | ||
Optical Unit Area | 512 bits | IR 200 s.d. IR 231 | Dialokasikan untuk Unit I/O Optis.1 | ||
Work Area 1 | 64 bits | IR 232 s.d. IR 235 | Untuk penggunaan bit-bit pada program (work bit). | ||
Special Relay Area 1 | 312 bits | SR 23600 s.d. SR 25507 | Mengandung jam sistem, flag, bit kontrol, dan informasi status | ||
Special Relay Area 2 | 704 bits | SR 256 s.d. SR 299 (298 s.d. 299 reserved by system) | Mengandung flag, bit kontrol,dan informasi status | ||
Macro Area | 64 bits | SR 290 s.d. SR 293 | Input | ||
64 bits | SR 294 s.d. SR 299 | Output | |||
Work Area 2 | 3,392 bits | IR 300 s.d. IR 511 | Sebagai work bit dalam program. | ||
Temporary Relay Area | 8 bits | TR 00 s.d. TR 07 | Digunakan untuk menyimpan dan mengambil kondisi eksekusi ketika memprogram tipe tertentu dari diagran ladder. | ||
Holding Relay Area | 1,600 bits | HR 00 s.d. HR 99 | Digunakan untuk menyimpan data dan menjaga nilai data ketika catu daya PLC off. | ||
Auxiliary Relay Area | 448 bits | AR 00 s.d. AR 27 | Mengandung flag dan bit untuk fungsi khusus, dan menjaga status selama catu daya gagal. | ||
Link Relay Area | 1,024 bits | LR 00 s.d. LR 63 | Digunakan untuk link data pada Sistem Link PLC.1 | ||
Timer / Counter Area | 512 counters / timers | TC 000 s.d. TC 511 | Digunakan untuk menentukan timer, dan pencacah, serta flag selesai, PV dan SV. Timer interval timer 0 sampai 2 and pencacah kecepatan tinggi 0 sampai 2 diberikan di area terpisah. TIM 000 s.d. TIM 015 dapat di-refresh refreshed via proses interrupt sebagai timer kecepatan tinggi.. | ||
Data Memory Area | 6,144 word | DM 000 s.d. DM 6143 | Baca/Tulis | ||
Holding Relay Area | 1,000 word | DM 000 s.d. DM 0999 | Normal DM. | ||
1,000 word | DM 1000 s.d. DM 1999 | Special I/O Unit Area.2 | |||
4,000 word | DM 2000 s.d. DM 5999 | Normal DM | |||
31 word | DM 6000 s.d. DM 6030 | History log | |||
(44) word | DM 6100 s.d. DM 6143 | Link test area (reserved) | |||
Fixed DM Area | 512 word | DM 6144 s.d. DM 6599 | Fixed DM Area (read only) | ||
56 word | DM 6600 s.d. DM 6655 | PLC Setup | |||
Expansion DM Area | 3,000 word max. | DM 7000 s.d. DM 9999 | Read only |
Note 1. Dapat digunakan sebagai work word dan work bit ketika tidak digunakan untuk tujuan alokasi mereka.
2. Setup PC dapat diset untuk penggunaan DM 7000 sampai DM 7999 sebagai Area I/O Spesial.
Pemaketan Data
Agar dapat membaca ataupun menulis, satu rangkaian data harus dikirim dengan bentuk paket terstruktur yang disebut frame. Masing-masing lokasi data atau memori data mempunyai bentuk frame yang berbeda. Dalam contoh disini kita menuliskan data pada lokasi data IR (Internal Relay). Frame penulisannya:Pemrograman Visual Basic
Berdasarkan data resource dan rancangan sistem kita, maka kita bisa memulai pembuatan program yang kita butuhkan. Dalam aplikasi ini window yang kita buat sebagai antarmuka aplikasi merupakan window sederhana dengan jumlah objek minimum yang mencukupi. Objek ini kita butuhkan sebagai bagian dari perangkat komunikasi serial dalam perangkat lunak. Untuk ini kita buat ambil sebuah objek komunikasi dengan nama default Comm1, dan tiga buah text box dan label yang sesuai. Algoritma program meliputi pengaktifan port, pembacaan isi port, pembuatan frame data yang memenuhi syarat bisa dibaca PLC, yakni dengan frame yang telah kita sebutkan di atas, pengiriman data, dan pembacaan respon dari PLC. Pengecekan isi buffer merupakan opsional (tambahan saja).Kode Program
Pengaktifan PortComm1.CommPort = 2
Comm1.Settings = "9600,E,7,2"
Comm1.PortOpen = True
End Sub
Properti PortOpen bertugas men-set keadaan COM 2, terbuka atau tertutup. Karena kelompok kode di atas dieksekusi pada saat awal program komunikasi di run, maka isinya Comm1.PortOpen = True.
Perhitungan FCS dan Pengiriman data.
FCS (Frame Check Sequence) adalah hasil konversi 8-bit data ke 2 digit karakter ASCII. Ke 8-bit data merupakan hasil dari exclusive OR secara berurut (sequence) karakter pertama hingga karakter terakhir pada sebuah frame. Perhitungan FCS ini kita letakkan dalam event kotak perintah (command box).
Private Sub Command1_Click()Paket data akan yang dikirim diletakan dalam variabel DatTX$. Pengambilan Respons PLC dari Buffer
Dat$ = Text1.Text
L = Len(Dat$)
A = 0
For I = 1 Sd L
Opo$ = Mid$(Dat$, I, 1)
A = Asc(Opo$) Xor A
Next I
FCS$ = Hex$(A)
If Len(FCS$) = 1 Then
FCS$ = "0" + FCS$
End If
DatTX$ = Dat$ + FCS$ + "*" + Chr$(13)
Comm1.Output = DatTX$
End Sub
Setiap kejadian pembacaan data ataupun penulisan harus melibatkan 2 perintah, yaitu kirim data dan terima respon. Perintah terima respon bertujuan agar buffer tetap bersih/kosong pada saat awal dan akhir kejadian, sehingga data yang terbaca tidak tercampur oleh sisa data (respon) dari kejadian sebelumnya.
Text2.Text = Comm1.Input
End Sub
Text3.Text = Comm1.InBufferCount
End Sub
Sebelum program dijalankan, kita pastikan dulu bahwa semua peralatan telah dihubungkan secara benar, dan masing-masing telah di-set sesuai dengan ketentuan di atas. CPU dan I/O Card kita tempatkan pada panelnya dan koneksi kabel Host Link pada port serial dihubungkan dengan benar. Setelah dipastikan siap, barulah program kita jalankan. Dalam hal ini kita bisa melakukannya melalui lingkungan dalam Visual Basic, maupun program kompilasi .EXE.
Tampak bahwa isiannya ialah @00WR0110FFFF, yang berarti:
Data: FFFF dalam heksa
Dengan proses di atas kita telah berhasil membuat sebuah antarmuka komunikasi dasar antara komputer dengan mesin PLC kita. Dengan kemudahan pemrograman visual, aplikasi ini tentu amat potensial dikembangkan agar semakin baik dan memudahkan pengguna. Fasilitas penulisan data dalam desimal (misalnya setpoin suhu pada boiler), atau pengesetan alamat secara otomatis dari database yang memuat alokasi memori PLC merupakan contoh pengembangan dalam hal ini.
Tidak ada komentar:
Posting Komentar