Thursday, 25 April 2019

Excel SCADA : Membuat SCADA di Microsoft Excel


Membuat SCADA di Microsoft Excel

Apakah Excel bisa digunakan untuk menampilkan data-data SCADA/HMI ?
mari kita coba bersama.. langkah-langkahnya seperti ini:
1. membuat aplikasi EXE,
untuk membaca data-data dari alat/device. Pada percobaan kali ini kita akan membuat projek WinForm VB, dan koneksinya adalah ke Modbus TCP server (simulator). Hasil pembacaan data akan ditulis ke File Text.
2. membuat file Excel,
untuk menampilkan SCADA nya.
3. membuat script VBA di Excel,
untuk memanggil aplikasi EXE yang sudah dibuat dan secara periodik membaca file Text outputnya lalu mem-plot data-data ke Sheet Excel.

Baiklah mari kita mulai..

Untuk point 1 kita bisa pake library EasyModbus.. contoh projeknya seperti ini:
http://hadiscada.blogspot.com/2019/02/modbus-tcp-client-and-logger-csv.html

tapi untuk praktek kali ini kita tidak akan membuat Logger tapi Realtime data, jadi ada perbedaan di file outputnya, kalau Logger datanya Growing (bertambah terus) sedangkan untuk praktek kali ini datanya tetap, hanya Value-nya saja yang berubah-ubah sesuai pembacaan saat itu (Realtime data).

aplikasi yang akan kita buat harus bisa dipanggil oleh aplikasi dari luar, misal dari Command Prompt (DOS), artinya aplikasi harus punya parameter-parameter yang bisa disesuaikan.. misalnya seperti ini:
kita ingin membaca Modbus TCP di IP 127.0.0.1, dengan list address pada file "D:\addressku.txt" dan output file ada di "D:\dataku.txt"

maka aplikasi harus bisa dipanggil dengan paramater misal seperti ini :
D:\Mod2File.exe 127.0.0.1 "D:\addressku.txt" "D:\dataku.txt"

jadi jika suatu saat kita ingin menambah item yang ingin dibaca maka tinggal tambah di file Text saja.

Membuat aplikasi VB
oke, kita mulai buat aplikasinya.. saya kasih nama Mod2File.exe
kita pake Visual Studio 2010 Express saja, dengan bahasa VB.
di Form-nya cukup tambah objek Timer saja.


di Properties projek nya, bagian Debug, saya isi parameter spt ini, itu maksudnya adalah untuk konek ke Modbus TCP yg ada di localhost (IP: 127.0.0.1) dengan file "addressku.txt" berisi list alamat register yang akan dibaca, dan file "dataku.txt" sebagai output untuk menyimpan nilai/data. angka "5" adalah interval pembacaan data, dalam detik.


Parameter diatas sebetulnya tidak perlu ditulis juga tidak apa-apa.. nanti parameter tersebut akan dikasih dari pemanggilnya (CMD / Excel).

.... skip bagian programming ...

oke, aplikasi sudah selesai.
*pagi pembaca silahkan download file projeknya (link ada di akhir artikel ini), lalu buka.

Test aplikasi
Sekarang mari kita isi file address, seperti ini:


selanjutnya jalankan aplikasi Modbus Simulator, saya pakai Mod_RSsim.
lalu kita tulis nilai di register-register yang akan kita baca,


jalankan projek VB nya
setelah aplikasi dijalankan maka file output ("dataku.txt") akan otomatis dibuat, dan isinya adalah value dari setiap address, seperti ini:


Test dari CMD 
Sekarang mari kita coba panggil Mod2File.exe dari Command prompt..
tutup dulu Visual Studio nya, lalu copy file "Mod2File.exe" dari folder Debug projek. copy juga file DLL "EasyModbus.dll", paste di D: saja biar simple.


sekarang buka Command prompt atau CMD, dan ketik seperti ini:
D:\Mod2File.exe 127.0.0.1 "D:\addressku.txt" "D:\dataku.txt" 5

maka aplikasi Mod2File akan dijalankan dan mulai membaca register Modbus dan meng-update file output secara periodik.

Membuat file Excel
oke. sekarang lanjut ke Excel.
Buka Microsoft Excel, saya pake yang versi 2007. buat blank workbook.


Buatlah tampilan HMI nya, seperti ini saja:


nanti nilai-nilai nya akan tampil di masing-masing kotak Register.
untuk membuat kotak-kotak diatas bisa pake teknik Merge cell, atau tidak pake juga tidak apa-apa, yang penting nanti adalah "Name" nya.
Untuk semua kotak yang akan diisi data, klik kanan lalu "Name a Range.."


beri nama "_REG1" dan seterusnya sesuai urutan


tambahkan sebuah tombol Start untuk triger Start/Stop pembacaan data..
*cara menambahkan tombol silahkan cari tahu sendiri ya..


Membuat VB Script di Excel
buka jendela VB/Macro editor.
*cara membuka jendela macro editor silahkan cari sendiri ya..

buat script di bagian "ThisWorkbook"


klik kanan di VBAProject lalu tambahkan Module, dan isi script berikut



Save file sebagai .XLSM
lokasi filenya simpan saja di D: agar gampang.


Test dari Excel
oke, pastikan aplikasi Modbus Simulator masih berjalan.
sekarang buka Sheet1 dan coba klik tombol Start

jika data tampil pada kotak-kotak register dan nilainya sama dengan nilai pada Modbus Server berarti kita berhasil..


Horee..!



Tambahan:
untuk contoh menampilkan data Bit / Boolean, tambah address Digital Input Register di file addressku,

<gambar>

di Sheet2, gambar HMI yg diinginkan.. lalu edit sedikit script di VBA Excel nya.
contoh hasilnya seperti ini,


kotaknya sebenarnya nilainya cuma 1 dan 0, perubahan warna kotak/cell tersebut memakai fitur Conditional Formatting bawaan Excel.


VB project, DLL library, dan file Excel silahkan download disini:

Semoga bermanfaat.. Terima kasih.

4 komentar:

  1. Halo..Saya mau tanya, kalau saya mau baca data Holding Register dari PLC saya, tapi alamatnya HR 400001 kenapa tidak bisa yah? Saya sudah coba input di fileaddressku.txt dengan 400001 400002 400003 400004 400005, lalu saya coba juga dengan HR 400001 HR 400002 HR 400003 HR 400004 HR 400005 tapi return datanya FALSE, mohon petunjuknya ya

    ReplyDelete
    Replies
    1. kelebihan itu addressnya, utk Holding Register kan alamatnya dari 40001 dan seterusnya, itu nol nya kebanyakan.

      Delete
    2. Iya justru itu, PLC (merk IDEC) saya alamat Holding Registernya itu mulai dari 400001 dan ketika saya coba masukkan di file Addressku, dia return 0 semua, padahal di PLC nya suda saya masukkan data di Holding Register nya. Apa ada saran?

      Delete
    3. saran saya coba pake address 40001. dan coba akses pake aplikasi Modscan.

      Delete

 
Copyright © . HadiSCADA - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger