06 May
Print This Post
Kolaborasi ActiveX Control dengan InTouch

:: Automation :: Component :: HMI/Scada :: Wonderware Add comments
Toekang bukanlah seorang IT-man itu sudah jelas. Jadi kalau muncul tutorial semacam ini, bukan maksud toekang untuk lancang memasuki wilayah tersebut. Artikel ini hanya untuk konsumsi insan-insan Automation yang sering tertatih-tatih dipaksa melek IT(begitu pula halnya yang dialami toekang). Dan bagi yang sudah melek IT, silahkan memberikan koreksi dan masukan jika tulisan ini mengandung kesalahan.

Kapan kita membutuhkan ActiveX Control di aplikasi HMI kita(khususnya InTouch) ?

  • Pertama, jika aplikasi kita memerlukan fitur yang belum disediakan InTouch, misal : akses ke LPT port, akses ke equipment(protokol) yang tidak disediakan Wonderware maupun 3rd Party-nya(penulis pernah membuat protokol sendiri untuk mengakses firealarm NF5 buatan Nitan)
  • Kedua, jika dengan ActiveX Control itu mempermudah proses develepment. Misal : Untuk akses ke data dalam Database yang cukup komplek akan lebih mudah jika dibungkus kedalam ActiveX Control, Membuat report dimana diketahui InTouch sendiri tidak mempunyai fasilitas report sering lebih simple dan powerfull jika dibuatkan ActiveX Control daripada membuat sendiri di InTouch.

Dalam artikel kali ini toekang akan memberikan tutorial singkat membuat sebuah ActiveX Control sederhana dan cara mengintegrasikan ke InTouch.

Anatomi
ActiveX Control nama resminya adalah OLE Control yang merupakan bagian dari sistem COM(Component Object Model), bentuk konkritnya adalah file dengan extensi .ocx. Dari luar anatomi ActiveX Control ini terdiri dari atribut-atribut yang lebih dikenal dengan Property, apa yang bisa dilakukan ActiveX Control ini yang disebut Method dan kejadian-kejadian apa saja yang menimpanya disebut juga dengan Event.

Sebuah ActiveX Control tidaklah selalu mengandung ketiga komponen diatas yaitu Property, Method dan Event. Kadang hanya mengandung Method dan Event saja tanpa Property, bisa juga Property dan Method saja tanpa Event.

Contoh yang absurd
Contoh ActiveX Control yang akan toekang berikan kali ini mungkin sangat absurd karena dalam kenyataannya sangatlah mubazir jika kita membuat hal seperti ini, tapi cukup lengkap untuk sekadar memberi gambaran apa itu ActiveX Control karena mengandung tiga komponen penting diatas. ActiveX Control yang akan kita buat mengandung dua property ValFromHMI dan ValToHMI keduanya bertipe single(Real di HMI), sebuah Event OnValChange dan Method ShowMsg() seperti gambar dibawah ini :
graphics
Dari gambar di atas ActiveX Control - InTouch diharapkan mampu melakukan hal berikut :

  • Menerima nilai ValOutput dari InTouch yang diumpankan ke property ValFromHMI.
  • Mengirim nilai ValToHMI ke ValInput di InTouch melalui sebuah event OnValChange.
  • Menampilkan sebuah Pop-Up message melalui method ShowAlert().

User Interface
Di contoh ini Toekang akan menggunakan bahasa sejuta umat ‘Visual Basic’ untuk membuat ActiveX Control, tentunya C++ atau Delphi lebih powerfull dalam hal ini karena dua bahasa itu lebih pure OOP. Tapi untuk pemula akan lebih mudah berhadapan dengan VB dibanding dua bahasa tersebut, apalagi skrip-skrip InTouch sendiri kental dengan aroma ‘Basic’.

Buka program Visual Basic dan pilih ActiveX Control :
graphics

Isikan atribut-atribut project ActiveX Control kita seperti ini:
graphics

Selanjutnya buatlah User Control layout seperti dibawah:
graphics
Buat satu label, satu textbox dengan nama txtFromHMI, dan satu tombol untuk mengirim value ka HMI.

Property
Property sendiri sejatinya hanyalah sebuah variabel dengan akses global atau public agar bisa diakses dari luar ActiveX Control. Sangat simpel kita bisa membuatnya seperti ini :
graphics
Tapi menurut kaidah OOP yang benar, pantang memberikan akses langsung ke variable. Sangat dianjurkan untuk memberikan akses ke variabel melalui sebuah fungsi, yaitu fungsi Get dan Let (Get dan Set di C++ dan turunannya). Keuntungan memakai cara ini adalah adanya kontrol akses terhadap property. Misal agar property itu hanya ingin bisa dibaca saja(Read Only) kita harus memodifikasinya menjadi :
graphics
Variabel konkrit dari property ValFromHMI sendiri adalah m_ValFromHMI yang private(dim) sehingga hanya bisa diakses dari dalam ActiveX Control. Fungsi Get disini menyalin nilai m_ValFromHMI ke property ValFromHMI.

Sementara untuk membuat property yang hanya bisa ditulis(write only) kode programnya adalah:
graphics
Dengan fungsi Let nilai dari luar Activex Control(NewVal) akan disalin ke variabel m_ValFromHMI, sedangkan statement ‘PropertyChanged’ memberi tahu kalau telah terjadi perubahan nilai property ValFromHMI. Akhirnya untuk membuat property yang read/write cukup dengan menggabungkan kedua fungsi tadi :
graphics

Dalam contoh ini, property ValFromHMI hanya berfungsi untuk menerima data(write) dari HMI yang selanjutnya akan diupdate ke textbox txtFromHMI, maka hanya diperlukan fungsi Let untuk itu:
graphics
Ada tambahan statemen pada fungsi itu yaitu : ‘txtFromHMI.Text = CStr(m_ValFromHMI)’, perintah ini akan selalu menampilkan data terbaru dari property ValFromHMI ke texbox txtFromHMI. Ini juga merupakan keunggulan pemakaian fungsi Let/Get. Bandingkan jika memakai cara akses langsung ke variabel, untuk menampilkan data terupdate akan memerlukan fungsi tambahan mungkin juga sebuah timer diperlukan untuk itu.

Sedangkan property ValToHMI, HMI hanya perlu membaca saja(read only) maka kodenya sebagai berikut:
graphics

Event
Untuk mendeklarasikan event OnValChange caranya sangat simple, buat kode berikut sebelum property(atau sebelum procedure apapun ditulis).
graphics
Semudah mendeklarasi-nya semudah itu pula cara men-trigernya, perhatikan kode berikut:
graphics
Event itu ditriger saat user menekan tombol ‘cmdSend’ atau tombol ‘Send back to HMI’, namun sebelumnya nilai dalam textbox ‘txtToHMI’ harus disalin dulu ke property ValToHMI. Fungsi ‘Csng’ sendiri tugasnya menggubah nilai string ke data bertipe single.

Method
Method sendiri adalah sebuah public prosedure atau public function, tergantung pada ada atau tidak nilai kembalian(return value). Selanjutnya di contoh ini, toekang akan membuat method ShowAlert yang hanya menampilkan message saja, seperti ini:
graphics

Compile, Register dan Unregister
Komponen ActiveX Control ini haruslah dicompile dulu agar menghasilkan file dengan ekstensi .ocx, caranya dari menu File -> Make AxTest.ocx kemudian tentukan lokasi dimana file ini akan disimpan.
graphics
Agar komponen ActiveX Control yang telah dibuat dapat digunakan oleh aplikasi maka komponen ini perlu diregister dengan perintah :
graphics
Perintah diatas untuk meregister komponen ActiveX Control dengan file AxTest.ocx yang diletakkan di drive D. Jika proses register berhasil akan tampil pesan berikut:
graphics

Seandainya komponen tersebut sudah tidak diperlukan lagi dan ingin dibuang dari sistem, maka perintah untuk Unregister-nya adalah:
graphics

Jika cara diatas sangat merepotkan, ada cara yang lebih praktis untuk meregister/unregister ActiveX. Yaitu dengan memasukan perintah-perintah itu dalam windows registry, selengkapnya dapat dibaca di sini. Dengan cara ini kita cukup klik kanan pada file komponen tersebut, selanjutnya tinggal pilih option Register/UnRegister.

Integrasi dengan InTouch
Jalankan Window Maker, pilih menu Special > Configure > Wizard/ActiveX Installation …, pada tab ‘ActiveX Control Installation’ cari komponen AxTest.Test seperti gambar berikut:
graphics
Kemudian klik Install.

Kemudian klik icon Wizard :
graphics
Selanjutnya ke ActiveX Controls dan pilih komponen ‘Test’ :
graphics
Tempel di project kita, atur ukurannya lalu dobel klik komponen tersebut :
graphics
Beri nama ‘TEST’ kemudian klik OK.
Selanjutnya lengkapi project itu seperti ini :
graphics
Buat terlebih dulu dua tag ‘ValOutput’ dan ‘ValInput’ bertipe real selanjutnya buat link ke box seperti diatas.

Langkah pertama adalah membuat script untuk tombol ‘Send to Ax’ seperti ini:
graphics
Nah ActiveX Control itu yang pake embel-embel #, maka untuk ActiveX Control ‘TEST’ dengan property ‘ValFromHMI’ ditulis ‘#TEST.ValFromHMI’. Dengan script ini kita telah mengirim nilai ke ActiveX Control.

Selanjutnya bagaimana cara ambil data ActiveX Control, di sini toekang akan memanfaatkan event OnValChange dari komponen #TEST. Dobel klik komponen #TEST, pilih tab ‘Events’ lalu ketik ‘TESTOnValChange’ sebagai nama skrip ActiveX Event di project ini.
graphics
Selanjutnya buat script ini :
graphics
Skript ini akan dieksekusi setiap ada event OnValChange dari #TEST, yang dari programnya diketahui digenerate saat tombol ‘Send back to HMI’ diklik.

Yang terakhir adalah bagaimana menampilkan message via method ‘ShowMessage’, buat script berikut pada tombol ‘Test Method’ :
graphics

Uji Coba
Jalankan Viewer masukkan nilai ValOut (kotak kuning) kemudian klik tombol ‘Send to Ax’ hasilnya seperti ini :
graphics
Sekarang tekan tombol ‘Send Back to HMI’ di ActiveX Control itu, hasilnya seperti ini :
graphics
Yang terakhir klik tombol ‘Test Method’ hasilnya ini:
graphics
Selesai ! biarpun sangat sederhana mudah-mudahan memberi sedikit gambaran akan apa ActiveX Control, cara buatnya akhirnya bagaimana menggunakannya.

File-file dalam artikel ini dapat didownload di sini :
1. HMI project (InTouch ver 9.5) di sini.
2. ActiveX Control di sini.
3. VB Source Code di sini.

RSS feed | Trackback URI

19 Comments »

Comment by fathoni
2008-05-06 12:21:53

heheheh

thanks ya pak
aku bisa coba nie
dari dulu penasaran bisa bikin OCX

 
Comment by ardneh
2008-05-26 16:57:25

coming soon

Comment by toekang
2008-05-27 08:12:19

????? apanya yang comming soon ?

 
 
Comment by ardneh
2008-05-27 15:58:44

hehe blajar tutorial ni

 
Comment by Stenly
2008-11-17 05:44:34

Lam knal ….
Pengen nanya… untuk setting node number PLC Omron CPM2A gmna ya???

Comment by toekang
2008-11-17 15:29:09

Salam kenal Juga,
Waduh seumur-umur toekang belum pernah latih tanding ama Omron,
mungkin mas Stenly bisa nanyak ke toekangplc.com disana klo
ngak salah ada beberapa artikel Omron (mudah-mudahan belum di hapus)

 
 
Comment by Miftah
2009-02-02 13:07:07

Ae ?
ae kak thoni, gmana kbarny ^^

Kak, Please Help Me… !

Qu k susahan pas d excel ny ma di data base ny & klo bisa tambahan ny g’mana carany flash (swf) dan scada wonderware intouch saling terkoneksi.

Kendala :
1. d excel kn aq dah nyoba pake wwwpoke (), ma wwwrequest ().
aq coba2x berhasil tuh.
tpi yg jdi kndala ny sini, file excel harus di buka dulu.
aq pengen ny langsung tanpa di buka applikasi terlebih dahulu ?
2. Trus d database ny aq pengen melihat count record d database ?
3. Trus, bisa g klo di scada wonderware mencari file data terus
mengupdate ny, tanpa di bantu oleh ActiveX, VB taw pun DELPHI
jadi langsung di script wonderware ny ?
4. Trus, g’mana cara ny TREND bisa aq Print Screen
(ambil grafik gambarnya), buat di PRINT ?
5. Trus g’mana cara ny, pengen sisipin flash swf, di scada intouch
& klo bisa var d flash bisa saling terkoneksi ama scada
intouch ?
6. Trus g’mana tutorial ny ngegunakan alarm configuration ?

Aq tunggu jawaban ny y kak, cz ntar lgi mo di running pkerjaan ny.
Please ya kak.
Klo bisa sample ny ma doc
kirim ja ke
mif_puzzle@yahoo.co.id

PLEASE…. !
Sukses trus, buat kak thoni…
& Sukses trus, buat automation industry.

Comment by toekang
2009-02-02 13:48:40

udah di jawab .. di artikel yg lain ..:)

 
 
Comment by badoz
2009-06-10 12:54:10

Pak, saya mau tanya, untuk aplikasi reporting data plant melalui SMS (Short Message Service) menggunakan InTouch apakah juga harus melalui ActiveX control yang dibuat di software programming (VB/Delphi)?

Bisa nggak tanpa menggunakan VB/Delphi?

Contoh aplikasi nyata:
Client ingin tahu data temperatur boiler A di pabrik tempat dia bekerja. Client tersebut tinggal mengetikkan format sms tertentu, misal “TEMP BOILER A” lalu mendapat balasan, misalnya, “TEMP BOILER A = 75 C”.

Konsep aliran data akuisisinya untuk contoh aplikasi di atas seperti apa, ya, Pak? lalu, software/hardware yang dibutuhkan untuk penerapannya apa saja? selain InTouch, I/O server, dan GSM/GPRS modem?

Maaf kalau merepotkan, minta tolong penjelasannya, ya, Pak..
Terima kasih..

 
Comment by zigan
2009-11-01 07:17:55

Salam kenal,

setelah membaca artikel diatas, berarti bisa dunk kita menggunakan microcontroller sebagai pengganti PLC dalam aplikasi wonderware?

masalahnya:
1. data protocol yang di pakai di wonderware? (modbus-rtu ato yang lain) soalnya dari contoh diatas kayaknya tidak memakai protocol khusus..

2. rencanya saya mau akse lewat port comm/serial. itu kan dah ada activex MSCOMM32.dll punyanya VB, apa bisa kita pake di wonderware?

maaf klo pertanyaanya banyak yang noob… masih bingung soal OPC

terimakasiih

 
Comment by toekang
2009-11-03 13:18:22

Salam kenal juga,
Microcontroller sgb penggati PLC dlm app WW? kayaknya agak aneh juga pertanyaannya ya? WW sendiri kan tugasnya hanya akuisisi data, ke mana? ya alat apa aja yg mempunyai protokol yg bisa di kenali WW. Bisa PLC, DCS (contoh Bailey INFI-90), Flowmeter dll.
Perkara Microcontroller menggantikan PLC, itu lain soal. Yg itu tergantung kebutuhan saat mendesain sistem kontrol.

Bisa ngak WW konek ke Microcontroller? ya bisa, tinggal si perancang app Microcontroller itu membuat protokol yg di support WW.

Untuk yg pertanyaan no. 2, bisa. Toekang pernah buat app seperti ini untuk konek ke FireAlarm yg hanya punya protokol buatan dia sendiri. Cuman klo udah bisa VB/VB.net/C# dll napa ngak sekalian buat aja SCADA-nya dr VB? lebih murah toh walau ngak sesimple pake WW.

OPC, itu simple-nya untuk menjembatani banyak aliran (baca protocol) dr vendor2 yg ada. Dgn adanya standar OPC diharapkan kesulitan app akuisisi data dgn si kontoler bukan menjadi issue yg besar lagi.
Kalau membaca manual standard object OPC sih rumit, karena musti paham bahasa programan (terutama C). Kalau mau simple ambil aja dari OPC server yg ada di pasaran, trus pelajari contoh aplikasinya.

 
Comment by zigan
2009-11-06 15:40:50

Mantabbbb…..jawaban2 nya oke punya…

ak pengen bikin ya PLC2an dari mikro.. murah2aja yg penting bisa dibikin blajar SCADA.. he3..^_^
pengen bikin miniPLANT gitu,,,

taun kemaren ada temen yg TA ne berbau SCADA..sotware pake iFIX..karena pas ditanya ak lum bisa SCADA, ak e bilang ke mereka.. wes karena dah kepepet ujian,SCADAnya dariVB.. jadi sich,,, tapi tampilan grafisnya gak sebagus software SCADA..

beda iFIX, CITECT ama WW tuh apa.. ak pernah nyoba utak atik vijeo citect,, kok puyeng… konek ke PLC aja ak gak bisa… dlu ak mau konek ke PLC THINGET-XC3.. akhirnya kepaksa bikin dari VB.. coding2…

nah taon ini, adek2 junior ada yg tanya lagi tentang iFIX… aih2 lagi2 ak bilang blum bisa.. makanya ngebet banget belajar WW.. buat gantiin iFIX…

ak dah install WW, dah buka book n example project nya tapi masih rada bingung..terutama cara conect ke hardware..
setauku tiap PLC ada register2nya.. klo mau baca ya di baca register tersebut.. masalahnya klo di WW masukinnya dimana tuh alamt register.. n ngatur protocol yg kita pilih??

kalau Toekang gk keberatan mohon tutorial bikin APP. dari WW yang super basic aja.. misal baca input digital n analog dari PLC.
trus ada diplay panel meternya gitu..

mohon pencerahannya BOSS…
terimakasih..

 
Comment by toekang
2009-11-07 13:49:58

nurut toekang iFIX, Citect dan WW bdnya dimana? ya beda yg buat ..:)
itu hanya soal selera aja, masing2 punya kelebihan & kekurangan-nya.
6 taon lalu malah toekang berpendapat Intellution(skr namanya iFix) & WinCC lebih mudah dr WW lho ..:) itu krn kebanyakan yg toekang maintance Intellution smua, skr lebih byk WW-nya ..mlah kebalik opininya ..:)

di WW itu penjelasan detail item2nya (bisa register bisa pula langsung ke contact(I/O)) itu ada di manual masing2 I/O Server & DAServer setelah kita install, bukan di InTouch-nya.

untuk contoh coba baca blog ini http://www.hydrogen-fc.com/, sepertinya ada beberapa artikle untuk membuat koneksi SCADA-Controller/PLC …

 
Comment by zigan
2009-11-08 08:29:46

boss…. ak dah mulai buat2 appp… tapi ada pertanyaan lagi, kok di wonderware ku dak ada ARCHESTRA IDE nya??? setelah ak baca2 lagi kayaknya installnya harus sendiri?? gak satu paket ama Intouch??downloadnya dimana nech IDE??
dah GOoLING muter2.. lum nemu jawaban nya…

thanx…
{sori pertanyaannya noob lagi}

 
Comment by toekang
2009-11-12 18:28:52

Achestra IDE tuh kalau kita mo bikin aplikasi berbasis System Platform or dulunya dikenal dgn IAS.
Emang InTouch dan System platform adalah product yg beda kok.
Sederhanayan IAS/System Platform tuh Object Server-nya dan InTouch bisa dijadiin Viewer client-nya.

Toekang biasanya dpt langsung dr Timaxindo, klo di Internet coba kunjungi http://plc.net.ru

 
Comment by mustangin
2009-11-13 14:36:44

Mas, saya mau nanya. Saya pake HMI wonderware, bagusnya pake PLC siemens atau omron. Kelebihan kekurangan masing2 apa, atau email ke mst_lpp@yahoo.com. Thanks…..

 
Comment by toekang
2009-11-14 18:05:00

Toekang ngk bisa jawab pertanyaan begini,
seandainya mas mustangin pake WinCC, toekang pasti jawab PLC Siemens. Mau pake PLC apa mah sesuai kebutuhan mas, Wonderware sendiri sama bagus-nya men-support ke-2 PLC tadi.
Secara subjektif toekang memilih Siemens PLC krn toekang lebih familiar dgn PLC itu, tapi akan ada byk Engineer PLC diluar sono yg mungkin lebih prefer ke Omron.

 
Comment by Sairin S.
2010-05-19 21:41:53

Saya sedang belajar program VB6
saya menemui kesulitan untuk meng create file tek yang hanya bisa di baca saja (read only) caranya gimana yah…?, kalau boleh kasih contohnya… programnya, terima kasih

Comment by toekang
2010-05-21 05:12:12

he he klo soal coding salah klo nyari solusi disini mas, mending ke blog yg khusus ke soal coding. tapi clue-nya gini. Create dulu filenya, trus manipulasi atribute file itu …coba referensi ini http://www.freevbcode.com/ShowCode.asp?ID=806

 
 
Name (required)
E-mail (required - never shown publicly)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> in your comment.