05 Jan
Print This Post
InTouch – PLC, Monitoring Komunikasi

:: Automation :: HMI/Scada :: Wonderware Add comments
icon

Ada dua cara untuk memonitor komunikasi antara InTouch dan PLC. Cara pertama yaitu dengan memanfaatkan item(bit) bawaan IO/DA Server yaitu $SYS$Status(DA Server) atau Status(IO Server) dan IOStatus. Cara kedua adalah dengan cara membuat PLC Heartbeat yang memanfaatkan scripting engine InTouch.

Saya selalu memakai kombinasi keduanya dengan cara kedua sebagai prioritas utama, sedang cara pertama sebagai pelengkap. Mengapa demikian ? Karena jika mengandalkan cara pertama saja, masih ada celah di mana cara ini tidak dapat memberikan informasi tengtang status PLC(STOP/RUN), untuk lebih jelasnya baca artikel ini. Cara kedua sebenarnya sudah cukup ampuh untuk memonitor komunikasi InTouch-PLC. Masalahnya jika tidak digabungkan dengan bit IOStatus dan Status kita sulit menentukan siapa sebenarnya penyebab eror komunikasi ini, apakah IO/DAserver, kabel koneksi atau malah PLC-nya yang STOP.
Ada dua cara untuk memonitor komunikasi antara InTouch dan PLC. Cara pertama yaitu dengan memanfaatkan item(bit) bawaan IO/DA Server yaitu $SYS$Status(DA Server) atau Status(IO Server) dan IOStatus. Cara kedua adalah dengan cara membuat PLC Heartbeat yang memanfaatkan scripting engine InTouch.

Saya selalu memakai kombinasi keduanya dengan cara kedua sebagai prioritas utama, sedang cara pertama sebagai pelengkap. Mengapa demikian ? Karena jika mengandalkan cara pertama saja, masih ada celah di mana cara ini tidak dapat memberikan informasi tengtang status PLC(STOP/RUN), untuk lebih jelasnya baca artikel ini. Cara kedua sebenarnya sudah cukup ampuh untuk memonitor komunikasi InTouch-PLC. Masalahnya jika tidak digabungkan dengan bit IOStatus dan Status kita sulit menentukan siapa sebenarnya penyebab eror komunikasi ini, apakah IO/DAserver, kabel koneksi atau malah PLC-nya yang STOP.

Bagaimana bit IOStatus, Status($SYS$Status) dan PLC Heartbeat memonitor status komunikasi antara InTouch, IO/DA Server dan PLC dapat digambarkan sebagai berikut :
graphics

  • Bit Status($SYS$Status) merupakan bawaan IO/DA Server, berfungsi untuk memonitor status komunikasi antara IO/DA Server dengan PLC.
  • Bit IOStatus yang juga bawaan IO/DA Server, berfungsi untuk memonitor status IO/DA Server itu sendiri. Bit ini juga dapat digunakan untuk memonitor komunikasi antar dua node InTouch atau InTouch dengan program yang suport DDE seperti Microsoft Excel.
  • PLC Heartbeat digunakan untuk memonitor komunikasi data antara InTouch dengan PLC.

Dalam contoh ini, PLC yang digunakan adalah Siemen S7 dan DA Server DASIDirect 1.5. Bagaimana cara membuat tag yang memanfaatkan IOStatus, $SYS$Status dan juga membuat Acces Name tidak dijalaskan di sini. Kalau kita instal InTouch di sana sudah buit-in manual yang cukup jelas membahas ini, masih kurang jelas bisa juga membaca artikel ini : Tech Node 118. Fokus kali ini hanya bagaimana membuat PLC Heartbeat dan mengkombinasikan dengan ke-dua bit bawaan IO/DA Server agar monitoring komuniksai InTouch – PLC lebih akurat.

Pilih Bit atau Interger ?
Bit(bolean) yang di InTouch lebih dikenal sebagai tag Discrete memang lebih sederhana dan sedikit memakai resource. Tapi memakai bit juga mengandung kekurangan terutama jika diterapkan pada PLC yang mempunyai akses data agak lambat contoh S7-300. Perhatikan gambar dibawah :
graphics
Kurva yang sebelah atas merupakan pulsa yang di-generate oleh PLC, sedangkan di bawahnya adalah update rate dari IO/DA Server. Nah pada posisi-posisi transisi yang ditandai oleh ‘dot’ itu sering-kali InTouch tidak dapat mendeteksinya. Semakin besar trafik data(semakin banyak IO Tag yang mengakses ke PLC) semakin sering lolos. Sebenarnya ada cara untuk meminimalisasi hal ini yaitu dengan membuat Topic khusus untuk deteksi komunikasi dan seting update-ratenya dengan angka unik, misalnya 1267ms.

Bagaimana kalau memakai nilai integer ? Perhatikan gambar di bawah :
graphics
Tag interger yang digunakan dibuat agar kontinyu berubah. Dengan cara ini menjamin nilai data selalu berubah setiap kali InTouch meng-update data. Dengan berubahnya nilai di tag ini, kita bisa yakin bahwa komunikasi berjalan baik. Jika data konstan untuk periode tertentu itu berarti terjadi masalah komunikasi antara InTouch dan PLC.

Prosedur
Buat empat tag seperti dalam tabel di bawah:
graphics
Hanya dua tag yang diperlukan untuk membuat PLC Heartbeat yaitu PLC01\iPulse dan PLC01\PulseCount, sisanya adalah tag PLC01\IOserver untuk memonitor status IO/DA Server dan terakhir PLC01\Comm untuk memonitor komunikasi IO/DA Server dengan PLC.

PLC01\PulseCount digunakan untuk membuat internal counter yang bertambah setiap detik. Buat Data Change Scripts seperti dibawah:
graphics

Counter tersebut akan direset setiap terjadi perubahan nilai pada tag PLC01\iPulse, buat Data Change Scripts seperti dibawah:
graphics

Komunikasi dianggap eror jika Counter melebihi nilai seting, nilai IOStatus false atau nilai $SYS$Status false. Satukan logika tersebut dan buat Condition Scripts seperti dibawah:
graphics
Skrip di atas dapat dijelaskan sebagai berikut: Jika Counter melebihi angka 20 atau nilai IOStatus = 0 atau nilai $SYS$Status = 0 maka komunikasi dianggab eror. Jika ini terjadi, setiap 5 detik status PLC (1 = RUN, 0 = STOP) di update dan memunculkan Pop-Up window “Common_Communiction” yang memuat semua status komunikasi.

Yang terakhir adalah melakukan update status PLC jika komunikasi sudah kembali normal (jika sebelumnya pernah eror). Masih di skrip yang sama buatlah skrip di bawah pada kondisi ‘While False’:
graphics

Pengujian
Jalankan PLC, aktivkan DA Server kemudian jalankan Window Viewer, jika komunikasi berjalan lancar maka pada window “Common_Communication” akan menampilkan IO Server, Cummunication dan PLC Status dalam kondisi normal:
graphics

Set PLC ke kondisi STOP mode, maka hasilnya seperti ini:
graphics
Set PLC ke posisi RUN tunggu sampai status kembali normal kemudian cabut kabel komunikasi (RJ45), hasilnya seperti ini:
graphics
Kondisi seperti di atas juga dapat terjadi jika salah konfigurasi di DA Server walaupun kabel koneksi sudah terhubung dengan benar.

Yang terakhir stop DA Server, hasil yang didapat adalah semuanya menjadi fail seperti di bawah:
graphics

32 Responses to “InTouch – PLC, Monitoring Komunikasi”

  1. elmauz says:

    ini bikinnya pake InTouch 10 ya

  2. wahyudin says:

    wow, keren analisanya, simplicity but usefully…
    keren mas iwan
    mas intouch kan ga bisa baca .jpg cuman bisa .bmp, tu file hasil create photoshop disave .bmp ato ada opsi lain? bmp berat kan..

    • Tonai says:

      khan beratnya saat inisialisasi awal aja dien
      pas udah jalan gak lagi
      cuma emang aplikasinya jadi gede

    • e.one says:

      pake JPG lebih ringan, tul kata ‘tonai’ itu ngak seluruhnya JPG hanya nempel2 … tapi emang file aplikasi jadi gede, cuman untuk spesifikasi PC sekarang itu mah kecil

  3. Juni says:

    jadi ingat masukin photo compressor 2 buah di project Caltex dulu (2002)…. emang besar sih bmpnya … berat di awal aja stlh itu baik2 aja …
    cuman makan waktu buat edit photo …. kalo punya banyak waktu buat development … silahkan bikin sebagus2nya ….
    tapi kalo kerja di system integrator …. yah mending pikir2 dulu … yang paling penting adalah fungsi kerja dari HMI tsb sudah memenuhi kontrak ….
    kalo mau bikin HMI yang keren … tentu ada bayarannya lagi …. (biar ndak rugi prshn yang mempekerjakan kita)

    btw, sampe sekarang masih penasaran dengan freeze nya komunikasi data antara Intouch dengan S7-300 pake Dassidirect di project doeloe …
    maklum .. ndak sempat utak-atik lagi …. tahu deh si tonai dan kawan-kawan laen sudah solve masalahnya atau belum …. (baru ingat lagi skrg :D )

    • Tonai says:

      klo dassidirect 1.1 emang ada masalah bug sering freeze setiap 40 hari, tapi sekarang alhamdulillah udah ada dassidirect 1.5 lebih stabil, tp tetep aja gw gak percaya ama $sys$status, jadinya ya baca heartbeat aja lebih aman hehehe

  4. didik says:

    klo pengalaman saya, disain HMI-wwIntouch dengan melakukan banyak import thp file JPG/Bitmp. memang berat waktu load awal. file appplikasinya jadi besar.
    selama ini scada/hmi yag saya krjakan selalu multi monitor. yaitu antara 2-3 monitor bahkan 4 monitor (bentar lagi)
    dalam kasus ini saya mendevelop serta test running pada hanya satu monitor dan yang tampak adalah hanya 1/multi-monitor. yaitu pada PC yg saya bawa.
    Nah saat di test Running hanya dengan satu monitor, memang tidak terasa berat. akan tetapi saat applikasi tsb di running dengan multi monitor akan memberikan dampak lebih berat. dan itu berlanjut terus saat running time. dan ini berlaku seiring dengan semakin banyak monitor yg digunakan.
    so, kayaknya klo pake multi monitor kayaknya perlu dipertimbangkan.
    ataw dari kawan2 ada komentar?

    • toekang says:

      Kalau membuat file gambar-nya(JPG) satu halaman penuh emang berat, di aplikasi toekang kan hanya bagian2 tertentu aja, misal title-bar, tool-bar. dan sebagian besar lagi itu hanya di window pop-up menu, so ngak akan memberatkan biarpun 4 monitor sekaligus. karena paling2 per monitor buka 1 window pop-up doank.
      Emang memakai multimonitor di InTouch itu lebih berat karena konsep Multimonitor di InTouch kan sebenarnya hanya mengakali resolusi besar di pecah menjadi kecil2(setidaknya sampai i9.5 konsepnya masih seperti ini).
      Beda kalau di beberapa HMI lain contoh ACS800xA(ini DCS), yang benar2 mengcloning aplikasi(disini tidak ada perbedaan mendevelop multi monitor ama single monitor).

  5. sidiq says:

    mas, perkenalkan saya sidiq. saya baru belajar wonderware. saya pengen nanya script buat bikin turun suatu nilai secara otomatis kalo di wonderware gimana ya? decrease otomatis lah..
    o iya, saya juga import file JPG ke aplikasi yang saya buat. sizenya jadi 1G lebih..normal ga sih??

    salam,
    sidiq hk

    • toekang says:

      salam kenal juga …
      sorry baru bisa online, ada perbaikan infrastruktur di tempat toekang cari duit.
      misal sebuah tag integer X akan di buat berkurang 1 setiap detik.
      buat skrip ini :
      IF X > 0 then
      X = X – 1;
      ENDIF;

      letakkan skrip ini di tempat yg di eksekusi tiap detik bisa di application script, Data Change Script dgn memanfaatkan tag $second, atau di Window Script.

  6. Rachmadi says:

    Kalo nama saya rachmadi, dan baru belajar wonderware juga ^_^. Pertanyaan saya soal mencari item untuk internal clock. Contoh diatas item MW10, trus library untuk memetakan item secara keseluruhan tuh liat dimana ya???

    Thanks a lot for your kind attention.
    Rachmadi

    • toekang says:

      Maksud internal clock ini apa ? apa system clock-nya PC ?
      klo itu ada banyak internal tag yang bisa dipake :
      $second, $date, $year, $hour, $minute, $sec -> interger
      atau bisa pake $DateTime yg mengandung nilai komplit Date-Time
      terhitung sejak 1 january 1970 dalam satuan milisecond.

      item MW10 ??? ini item ke controller(PLC)??

  7. vbadvisor says:

    I do it like this:
    a. Make a 1 sec Pulse in PLC such as N12:0/0 (PLC5,Rockwell) and create a MMI Tag called Clock_1HZ as type:I/O Discrete to connect PLC bit N12:0/0

    b.Write Condition Script:

    Clock_1HZ tag Type:I/O Discrete;Group:$System
    Clock_1HZ tag Comment:1HZ clock,Access Name:REFINER,Item:N12:0/0

    Clock_1HZ Condition Script Comment:Check if PLC in stop mode

    Condition Type:On False {Consider case if N12:0/0 is always 0}
    COUNTER2 = 0;

    Condition Type:On True {Consider case if N12:0/0 is always 1}
    COUNTER1 = 0;

    Condition Type: While False Every 1000 Msec
    COUNTER1=COUNTER1+1;
    IF COUNTER1 >= 10 THEN {if no response beyond 10 sec,assume PLC is in Stop mode or lose communication}
    PLC_STOP_MODE = 1;
    ELSE PLC_STOP_MODE = 0;
    ENDIF;

    Condition Type:While True Every 3000 MSec
    COUNTER2=COUNTER2+1;
    IF COUNTER2 >= 10 THEN
    PLC_STOP_MODE = 1;
    ELSE PLC_STOP_MODE = 0;
    ENDIF;

    COUNTER2 tag is Intoch Memory Integer
    PLC_STOP_MODE Tag is Intouch Memory Discrete

  8. argy says:

    Hello, salam kenal mas, saya argy, saya juga baru belajar Wonderware..
    Mo nanya nih, gimana ya cara mengkomunikasikan Wonderware Intouch 10.1 dengan PLC s7-300? mohon dijawab secara detail ya, hehehe

    Terimakasih banyak sebelumnya..

  9. LS says:

    Mas, mau tanya bagaimana cara mengirim data excel ( angka dan huruf) ke intouch wonderware di PC yang berbeda?
    Kalau di PC yang sama ( 1 PC saja ) sudah bisa, tapi kalau excelnya di PC A dan intouchnya di PC B kok susah ya ?
    mohon pencerahannya. Trims.

    • toekang says:

      Kalau toekang lebih suka pakai alur begini :
      InTouch SQL Server MS Excel

      Karena walau lebih sulit secara script, tapi lebih mudah
      secara management & komunkasi. Toekang sendiri sangat tidak
      suka dan tidak menyarankan transfer data langsung InTouch – Excel. Karena akan banyak kendala, baik dr segi protokol (DDE) maupun flexibilitasnya (Si Excel harus slalu open).

      Toekang lom pernah coba komunikasi Excel – InTouch beda PC. Kemungkinan akan terkendala dgn komunikasi yg dipakai yaitu DDE, beda PC maka sampeyan harus mengaktifkan service NETDDE dulu … cuman ngk yakin juga bisa berhasil ..:D

      Oh ya cek juga apakah port ini : UDP port 137 and TCP ports 135 and 139 ke blok di firewall.

  10. aly says:

    salam kenal mas toekang scada.
    saya mau tanya, menulis item naming di wonderware utk Tagname dictionary gimana ya?
    saya mau komunikasi dng RS LOgix 5000.
    monon di jelaskan dng contoh ya mas toekang scada.
    thanks.

  11. aly says:

    oiy, mau tanya lagi. kalo library factory nya tidak ada, bagaimana cara mendapatkannya.
    mas toekan scada punya gak?
    kalo punya, minta dong. :)
    dan mohon di jelaskan cara upload ke aplikasi wonderwarenya.
    mksh skali lagi.

  12. saktisaid says:

    Pak iwan, saya sakti, yang pernah mengambil kerja praktek di SPV. kebetulan sedang mengambil TA tentang Redundancy Server.. maw tanya pak, untuk heartbeat itu emang hitungannya tiap detik pak? atwkah kita bisa mendefinisikannya sendiri mw stiap berapa detik?

  13. aly says:

    Mas toekang, saya mau tanya cara membuat “Historical Data” yg bisa terecord ke “.CSV”.. caranya bagaimana ya mas?

    Mohon penjelasannya dong mas,
    Thanks ya. :)

  14. okki says:

    mas mas… sya jg mw tanya… cara dan langkah buat hearbeat antara dua wonderware gimana…. menggunakan OS apa aja.. apa hrus pke OS server kya windows server gtu..??? makasih mas..
    klo perlu email ke sini mas..

    okisukardi@rocketmail.com

    pting buat tugas akhir sya ni mas mhon bantuannya…

    • toekangscada says:

      heartbeat antar 2 intouch itu ngk ada hubungannya dgn OS, cukup di InTouch saja. Cara-nya bisa macem2, pake cara diatas bisa juga dgn mengganti tag PLC01\iPulse dengan tag yg memakai access ke remote node, item yg dipakai paling gampang pake saja internal tag $Second.

      Lebih detailnya japri saja ya ke e.one@toekangscada.com

  15. okki says:

    makasihh bgt mass…
    top abis dahh.. nnti sya tnya” lg yaa.. hehe

  16. danang says:

    assalamu’alaikum
    Mas toekang atau mas e.one.
    Salam kenal
    I ikut nyimak.
    Sekalian ikut belajar via japri, boleh kan mas.
    Wassalam
    Danang

  17. paul says:

    salam kenal mas…
    terimakasih mas buat informasinya…
    saya mau tanya tentang komunikasi microcontroler (atmel 8535) dengan intouchwonderware?
    mohon penjelasannya mas lg butuh buat TA saya…
    trmksh

    • toekang says:

      Komunikasi langsung dng si-micro kliatannya InTouch ngk ada. Tapi mungkin pertanyaanya dibalik saja … si Micro bisa ngk ditanam protokol standard komunikasi yg dapat dikenali InTouch misal OPC, DDE or Modbus, kalau bisa ya pake itu saja.

      Kalaupun mentok karena keburu dikejar TA, bikin aja ocx untuk komunikasi dgn micro, nah ocx-nya di tempel di InTouch …:)

      temen2 ada ide yg lebih ok?

  18. toekang says:

    yup ..itu Tag tipe memory descrete, thx koreksinya.
    Ngk perlu skrip tambahan, bikin aja tag PLC01\Status aja alarm propertiesnya di aktifin, klo 1 = OK & 0 = FAIL.

Leave a Reply