25 Apr
Print This Post
InTouch, SQL untuk Single dan Multi Table

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

Ada dua tipe data dalam dunia database kalau dilihat dari jumlah tabel yaitu data yang diambil dari single table dan data dari multi table. Single table biasanya hanya menyediakan informasi sederhana, untuk data yang komplek umumnya dipecah-pecah ke dalam beberapa tabel atau lebih dikenal dengan proses normalisasi. InTouch mensupport keduanya, tentunya ada sedikit perbedaan dalam menangani kedua tipe data tersebut.

Singel Tabel
Ambil contoh tabel dibawah :
graphics

Langkah pertama untuk ambil data dari tabel itu ya harus buat dulu BindList seperti ini :
graphics
Itulah fungsi BindList, yaitu memetakan antara variable di InTouch yang lebih dikenal sebagai Tag dengan kolom tabel di database.

Kemudian script untuk mengambil data adalah seperti ini :
graphics
Ngak perlu pusing dengan banyaknya kode di situ, perhatikan saja pada script yang telah toekang beri tanda(box). Untuk mengambil data dari single table cukup memakai sintak SQLSelect. Argument pertama SQLSrv\ID itu Connection ID, kedua adalah nama tabel di database, berikutnya nama BindList, dua argument lainnya adalah Where Expression dan Order Expression dikosongi karena data diambil semua dan ngak diurutkan.
Data-data itu akan ditampilkan ke dalam dua buah listbox yaitu ‘lbxName’ untuk menampilkan Nama device dan ‘lbxDesc’ untuk menampilkan deskripsi device. Hasil akhirnya adalah seperti ini :
graphics
Apakah hanya itu caranya ? tidak kita juga bisa memakai kombinasi ‘SQLSetStatement()’ dan ‘SQLExecute()’ seperti ini :
graphics
Meskipun lebih komplek tapi cara ini menawarkan fleksibelitas, karena sudah tidak lagi tergantung pada nama fisik table dan kolom di database lagi. Tabel dan kolom yang digunakan adalah tabel/kolom virtual hasil dari SQL Query.

Bingung ?? mari lihat sintak yang berbeda untuk menampilkan tabel diatas:
graphics
Hasil akhir sama, tetapi nama kolom berbeda kan? Nantinya nama kolom ini yang dipakai BindList di InTouch seperti ini:
graphics
Jika skript untuk ambil data seperti ini :
graphics
Selanjutnya untuk menangani multi teble, metode ini yang akan dipakai.

Multi Table
Terkadang untuk alasan fleksibelitas dan efisiensi tabel akhir tidak hanya dibentuk dari sebuah tabel, ia dibuat oleh beberapa tabel. Coba perhatikan tabel log berikut :
Tabel A : Data yang dibentuk dari beberapa tabel.
graphics
Perhatikan dibagian sintak SQL-nya, dari sini diketahui bahwa tabel itu dibentuk dari empat buah tabel yaitu : Tabel TDevice yang dipakai sebagai contoh untuk sigle table sebelumnya, tabel TType dan TEU :
graphics
dan tabel Log(data) itu sendiri :
graphics

Untuk mengambil data seperti yang ada dalam tabel A, seperti biasa buat dulu BindList seperti ini:
graphics

Dan ini untuk script InTouch-nya :
graphics
Ada sintak baru disitu yaitu SQLAppendStatement() untuk apa, untuk menambah perintah SQL terhadap perintah sebelumnya. Lho kenapa ngak dibuat simple aja, buatkan variabel dan masukkan semua perintah ke variabel itu. Justru itu, message variabel di InTouch kan hanya bisa menampung maksimal 131 karakter selebihnya akan diabaikan dan sintak SQL di InTouch juga harus patuh pada aturan itu, makanya perlu dipecah-pecah pakai SQLAppendStatement() ini.

Stored Procedure
Toekang sendiri kurang menyukai style diatas dimana semua kode di jejalkan ke dalam InTouch. Untuk perintah-perintah SQL yang komplek, toekang lebih memilih membuat stored procedure (sp) langsung di SQL seperti ini :
graphics
dengan ‘spGetData’ sebagai nama Stored Procedure-nya, nantinya di InTouch tinggal di eksekusi aja Stored Procedure ini dengan perintah ‘EXEC spGetData’ :
graphics
Simpel kan ? Di samping itu manfaat lain jika dibuatkan di sp ini kita dapat langsung tau hasil dari sintak-sintak SQL yang kita buat, mudah memaintenannya, lebih cepat karena langsung di proses di server. Btw ..terserah anda, nyaman pake yang mana.

Sekedar Tip !
Selalu pantau Wonderware Logger ! Seringkali kita sibuk mencari dimana letak kesalahan kode kita tanpa menengok ke fasilitas standard yang telah diberikan oleh Wonderware ini, padahal disitu sering masalah kita telah dijelaskan dengan detil.
graphics

79 Responses to “InTouch, SQL untuk Single dan Multi Table”

  1. elmauz says:

    Tnx..good article..
    Menambah wawasan bangets..

  2. fathoni says:

    hehehehe
    keren banget pak

    cuma kayaknya nie levelnya buat midle to high
    klo buat pemula pasti pusing hehehe

  3. fathoni says:

    ya tetep aja pak

    kayak alarm analog input aja ada HHH, HH, H, L, LL, LLL

    inget gak? hehehehehe

    • toekang says:

      Ha ya yang itu … wah aku babak belur di protes operator ..napa makin banyak sih kategorinya, padahal tipikal orang Viscose kan ngak mau ribet …, lha sampe sekarang pun yg namanya alarm itu ya yang kelap-kelip merah haha

  4. andy says:

    Gimana koneksi wonderware kalo pake database yang gratisan kayak MySql misalnya..? Kan lumaya ngirit, daripada “lumanyun”….’He..he..he……!

    • toekang says:

      Kalau tujuannya hanya gratis MSDE(SQL Server 2000 versi gratis), SQL Server 2005 Express Edition, Oracle 10g Express Edition itu semua gratis.
      Tapi kalau udah familier MySQL dan pingin coba konek ke InTouch satu2nya cara sampe saat ini ya via ODBC bisa pake MyODBC download disini http://www.mysql.com/products/connector/odbc/.
      Dulu toekang pernah buat aplikasi InTouch-MySQL-PHP untuk intranet, agak lambat insert data ke MySQL kalau jumlah datanya banyak … ini mungkin karena pake ODBC itu.

  5. dimas says:

    Saya menggunakan InTouch 9.0 dan PLC ABB Masterpiece 200/1. Saya ingin menampung semua deskripsi alarm ‘OK’/'Fault’ pada SQL Server 2000. Alarm dari field dikirim oleh PLC dengan DAT type Integer.
    Contoh: 1:1:I105 (Port1:PLC1:DAT(I)105) berisi 16 bit. Saya ingin membuat script untuk membaca setiap perubahan tiap bit I105.
    Selama ini saya membuat tag untuk masing-masing bit, wah sangat boros tag (puluhan DAT x 16). Barangkali toekang berkenan memberikan solusi untuk masalah saya ini. Trims

    • toekang says:

      Kalo tujuannya untuk menghemat tag bisa saja, yang di akses dari PLC hanya nilai Integer(16bit) atau Integer(32bit-> yg ini hanya bisa kalau pake OPC). Tetapi akan banyak effort di script. Buatlah pasangan Nilai Integer tadi misal tag A01 yg IO Integer, A01in memory integer. Nah buatlah skrip DataChange untuk setiap tag Alarm, di skrip itu nanti A01 dipecah misal A01.00 untuk bit pertama compare dgn bit A01in.00 kalo berbeda tulis alarm ke SQL server diakhir script transfer nilai A01 ke A01in sebagai pengingat status terakhir.
      Tips-nya pake QuickFunction untuk skrip ini plus manfaatin Indirect Tag + Superscript agar lebih effisien.
      Satu hal lagi karena alarm ini terpisah dari alarm built-in, ya harus konsisten semuanya harus dibuat model gini.

  6. dimas says:

    makasih, Pak. membantu sekali

  7. suryana says:

    sekedar nimbrung..
    untuk check error connection:
    ResultCode =SQLSelect(ConnectionID,”",”",”",”");
    if ResultCode 0 then
    ErrorMsg=SQLErrorMsg(ResultCode);
    endif;

    • toekang says:

      yup betul sekali …
      dulu toekang sering pake scrip ini, tapi belakangan ngak pernah
      soalnya nambah banyak skripnya, trus analisanya kadang kurang lengkap (ErrorMsg itu kan message tag yg panjangnya max 131 char),
      toekang lebih suka mlototin langsung di logger-nnya ..lebih komplit.

  8. ardneh says:

    saya buat table dimana akan dilakukan insert melalui intouch serta di panggil lewat intouch seperti tutorial di atas.
    kalo insert sudah berhasil tapi kalo manggil kok tidak muncul??

    tutorial yg dipake
    -OLEDB(http://toekangscada.web.id/2008/04/22/di-intouch-oledb-menjadikan-hidup-lebih-mudah/)
    -Singel Tabel(http://toekangscada.web.id/2008/04/25/intouch-sql-untuk-single-dan-multi-table/)

    • toekang says:

      Maksudnya manggil itu Select ?
      Data itu mau ditampilkan ke mana, di contoh ini kan ke ‘Listbox’ ya
      harus dibuatin object ‘Listbox’-nya dulu.
      Adda pessan error ngak ? klo sintak SQL-nya ngak jlimet bisa pake cara mas Suryana itu ..ato klo males bisa liat di loggernya

  9. ardneh says:

    Pak Toekang, nanya lagi donk!!!
    Kalo di access tuh ada properties “required” dimana waktu tabel tersebut g diisi maka ada notification nya. Nah kalo di sql yg mana yach???

    • toekang says:

      nah kan udah jelas di help-nya (tekan F1)
      property required itu jika diisi dgn yes brarti setiap kita masukin record field ini harus diisi tidak boleh kosong atau null.
      nah padanannya di SQL Server ya tentu saja ‘allow null’

  10. Fathoni says:

    ardneh jgn dijawab mulu pak

    biar suruh mikir dulu, klo gak gitu gak bisa bisa nanti hahahaha :)

  11. ardneh says:

    yach tega nich bang Fathoni…..
    btw kalo q munculin $operator kok g mo muncul yach tp kalo $datestring ma $timestring bisa muncul

  12. ardneh says:

    eh iya bisa, maaf ada lalai di tagname…
    makasih bang…

  13. elmauz says:

    Bos,
    Procedure diatas itu untuk keperluan Intouch membaca dari SQL ato sebaliknya SQL ambil data dari Intouch?
    Untuk cara SQL ambil data dari Intouch apakah bisa diterapkan pake Stored Procedure tersebut?
    Thanx

    • toekang says:

      Toekang belum pernah tau ada cara agar SQL bisa baca data dari InTouch…
      Mungkin bisa kali ya pake fasilitas triger di SQL Server … btw untuk semua tutorial di sini adalah dari aplikasi klien (InTouch) menulis/membaca data ke SQL Server

  14. Budhi says:

    Pak,
    Saya ingin menanyakan yg mungkin aga melenceng, maklum pemula he he he.. Kalau di intouch tersebut jika kita sudah mengambil data dari database tersebut lalu ingin membuat/menconvert table tersebut dalam format excel, bagaimana caranya ya pak?
    Mohon bantuannya pak, Thanks…

    • toekang says:

      Pake DDE juga bisa walau agak ribet …
      klo toekang sih lebih suka langsung di EXCEL-nya pake macro ..
      klo urusan bikin laporan or nampilin data ke Excel

  15. vbadvisor says:

    Have you ever tried to use OLE to manipulate database such as Access?

    OLE_CreateObject(%pCnn,”ADODB.Connection”);
    pCnn.Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + InfoInTouchAppDir() + “\Test.mdb”);
    OLE_CreateObject(%m_RS,”ADODB.Recordset”);
    %m_RS.Open( “Customers”, %pCnn, 3

    %m_RS.AbsolutePosition = 2; {Move to 2nd record}
    %m_RS.Fields(“Name”).Value = “toekang”;
    %m_RS.Update();

    But Intouch reported error at %m_RS.Fields(“Name”).Value.
    Intouch seemed not support this ADODB recordset property.

    Email me: magnaforemost@gmail.com

    • toekang says:

      Are You Sure used Wonderware InTouch ?
      As I know InTouch doesn’t have function like OLE_Create() and
      InTouch doesn’t support OOP like pCnn.Open() except You create
      this in ActiveX object

      • vbadvisor says:

        Sure.
        Intouch support OLE very good,but the limitation is that Intouch only support 4 type of data such as String(Message 0 then
        Test1=%obj1.ShowOpenDialog(“Refiner”,”wav File|*.wav”,1,”Open a Sound File”,”C:\AlarmSound”,sFilename);
        PlaySound(Test1,16);
        EndIf;

  16. vbadvisor says:

    OLE_CreateObject(%pCnn,”ADODB.Connection”);
    %pCnn.Open(”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + InfoInTouchAppDir() + “\Test.mdb”);
    OLE_CreateObject(%m_RS,”ADODB.Recordset”);
    %m_RS.Open( “Customers”, %pCnn, 3

    %m_RS.AbsolutePosition = 2; {Move to 2nd record}
    %m_RS.Fields(”Name”).Value = “toekang”; {Problem,Problem!!!}
    %m_RS.Update();

  17. vbadvisor says:

    OLE_CreateObject(%pCnn,”ADODB.Connection”);
    %pCnn.Open(”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + InfoInTouchAppDir() + “\Test.mdb”);
    OLE_CreateObject(%m_RS,”ADODB.Recordset”);
    %m_RS.Open( “Customers”, %pCnn, 3);

    %m_RS.AbsolutePosition = 2; {Move to 2nd record}
    %m_RS.Fields(”Name”).Value = “toekang”; {Problem,Problem!!! Intouch is expecting a semicolon after %m_RS.Fields(”Name”) instead of Value of Field’s member.}
    %m_RS.Update();

  18. vbadvisor says:

    Intouch doesn’t support Variant Data type,that’s the reason why Intouch report errors %m_RS.Fields(”Name”).Value = “toekang”; since %m_RS.Fields(”Name”).Value is a variant.

  19. vbadvisor says:

    You didn’t show how to put data from Intouch into dbo.Tdata and dbo.TDevice,dbo.TType,dbo.TEU.Please write another tutorial.

    Thx.

  20. Miftah says:

    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.

    • toekang says:

      maaf mas (or mbak) ..
      Fathoni bngak disini … dia di toekangplc.com

      toekang coba jawab ya (sori Ton ..ini mestinya kerjaan ente) :
      1. Tujuan wwwpoke() & wwwrequest() ini buat apa ya?
      klo hanya untuk menguji validasi data ..lebih akurat wwclient
      bawaan InTouch(untuk ver 8.0 ke atas di install terpisah)
      2. ngak ngerti mksud pertanyaannya …:(
      3. Bisa, Intouch kan nyediain script2 siap pake untuk akses ke
      database. Coba aja pake fungsi SQLSelect() di kombinasi dengan
      SQLInsert(), klo kurang mantap buat aja stored procedure dan
      akses pake SQLExecute().
      4. Bisa pake fungsi PrintWindow()
      5. Flash kayaknya sampe InTouch 9.5 belum bisa (kecuali kalau
      pake ActiveX.
      6. belum sempat bahas alarm .. :)

      moga-moga membantu

  21. joephi says:

    Mas toekang…
    mau nanya nich..kalau untuk mengkoneksi SQL server 2005 dengan WinCC gimana ya? maksudnya untuk manggil tag yang ada di project.mcp bagaimana caranya? diatas disebut bindlist…apa softwarenya kita buat sendiri atau memang bawaan InTouch? Bisa diaplikasikan ke WinCC nggak?

    Mohon pencerahannya.

    Sukses selalu

    • toekang says:

      Toekang sedikit sekali elmu WinCC-nya.
      Klo di WinCC kan sudah ada paket database server-nya, tergantung
      versinya. Dulu tukang pake yg versi 6 SP2 itu di bundle ama SQL Server 2000. Yg lebih baru kayaknya sudah SQL 2005.
      Nah klo pake versi native-nya kan bisa langsung pake user archive.

      Klo mo maksain (cuman benepit-nya apa ya?) bisa saja WinCC 6 SP2 yg di bundle dgn SQL 2000, konek ke SQL 2005 .. tinggal obrak-abrik saja VBS-nya ..:) bikin aja object2 untuk konek ke SQL 2005 pake OLEDB.

      bindlist itu bikinan InTouch aja, jadi ngak bisa diterapkan general. kasarnya itu cara InTouch untuk memudahkan keluar-masuk data ke dan dari DB.

  22. vbadvisor says:

    Finally self-solve my question:
    OLE_CreateObject(%pCnn,”ADODB.Connection”);
    %pCnn.Open(”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + InfoInTouchAppDir() + “\Test.mdb”);
    OLE_CreateObject(%m_RS,”ADODB.Recordset”);
    %m_RS.Open( “Customers”, %pCnn, 3);
    %m_RS.AbsolutePosition = 2; {Move to 2nd record}
    %Field=%m_RS.Fields.Item(1) {Add an OLE Object Field for Field “Name”}
    %Field.Value = “toekang”;
    %m_RS.Update();

  23. vbadvisor says:

    Supposed to be %m_RS.Open(“Customers”, %pCnn, 1,3); {adOpenKeyset, adLockOptimistic}

  24. irawan says:

    terima kasih banyak nih
    sangat membantu banget penyusunan tugas saya..
    ^_^
    sukses selalu

  25. irawan nurhas says:

    permisi mas, numpang nanya gimana caranya database yang dibuka lewat intouch jadi triger ke PLC ??
    terima kasih sebelumnya..
    ^_^

    • toekang says:

      Via tagname yang telah didefinisikan di bindlist, kan tag tersebut dapat nilai dr database. Emang kasusnya seperti apa kok sampe memerlukan triger PLC dr Database?

  26. irawan n says:

    kasusnya identifikasi benda dengan webcam, hasil identifikasinya disimpan dalam database, hasil identifikasi ini yang dipakai buat ngegerakin aktuatornya mas,,
    ^_^
    oke mas saya coba pake bindlist, terima kasih sarannya

    • toekang says:

      apa ngk bisa potong kompas Sensor benda ke PLC –> actuator, parelel dgn itu PLC –> Wonderware –> Database. Lain cerita klo Sensor + Database udah jadi satu paket.

  27. inky danindra says:

    permisi mau numpang berguru disini,,,
    pak “toekangSCADA”, saya inky adik kelas “”toekangPLC” di kampus,,,kebetulan tugas akhir saya menggunakan IAS.

    nah inti permasalahannya itu mengenai database yang ada di SCADA-nya,,ketika SCADA client saya edit di archestra dan saya runtime di node server…databasenya berjalan dengan lancar,,,

    tapi begitu saya deploy database hanya bisa connect tapi tidak bisa mengupdate value di setiap variabelnya,,,lalu saya cek dengan bantuan “ErrorMsg” di intouch…kemudian muncul statement bahwa bindlistnya tidak ada,,,sudah saya cek di foldernya ada Sqldef,,,

    itu permasalahannya dimana ya??intouch yang saya pakai versi 10.1

    maaf kalau bahsa yang dipakai agak membingungkan,,,thx b4

    • toekang says:

      sqldef itu hanya mengindikasikan bahwa sudah ada bindlist di situ, bukan mengidikasikan bahwa apakah bidlist name masing2 table sudah benar. Bisa saja file-nya ada tapi nama bindlist yg di minta InTouch client tidak ada, coba priksa apakah nama bindlist-nya sudah ada. Or klo masih bingung kirim aja aplikasinya ke e.one@toekangscada.com ntar toekang pelajari dulu.
      Btw ..kan udah peke IAS, knapa databasenya ngk di diploy di IAS sehingga ngk perlu lg di run di Client? Jadi si client murni hanya ambil value dr client, sedang transaksi ke DB dilakukan oleh IAS.

  28. inky danindra says:

    ho gitu ya,,maksud “transaksi ke DB dilakukan oleh IAS” itu bagaimana ya??

    kalo sistem yang saya buat semua database disortir ke sql yang ada di komputer server,,

    coba saya kirim ke email toekang scada dulu,,mohon bantuannya,,

    • toekang says:

      hi inky,
      terus terang rada bingung jg dgn konsep SCADA yg inky buat. Katanya pake IAS tapi satu2nya akses ke galaxy kok cuman PLCConnection? Yg di app Server malah akses ke empat remote note?
      Dan masalah database memang inky belum mambuat satu-pun bindlist baik di InTouch server maupun InTouch client, cara buatnya buka SQL Access Manager -> Bind List -> New.
      Kalau Inky memang mo men-deploy via IAS, seharusnya di sisi client(InTouch) diusahakan hanya sebagai client aja(view) dgn mereduce semua script/proses agar di run di IAS. Dan ngk perlu lagi ada InTouch Server ama InTouch Client, di server deploy aja AOS (WinPlatForm+Engine), trus di client hanya WinPlatForm aja. Maka semua yg di run di AOS otomatis akan terapdate ke client.
      OK, untuk pertanyaan lebih lanjut via japri aja ..:)

  29. felix says:

    salam kenal mas, saya ingin tanya untuk bind list itu sudah bawaan intouch ya? kalo misal ya dari intouch ya tidak ada bind list,bagaimanakah agar database dapat terkoneksi,karena dari yang saya baca-baca,kita harus masuk ke bind list dahulu untuk settingannya.

  30. fathoni says:

    kemana nie yang punya blog ? kebanyakan freelance kayaknya wkwkwkwk

  31. nugie says:

    saya mau tanya nih ….
    saya mau manyimpan data wonderware ke sql server,nah kenapa pada bindlist nya hanya mengijinkan 1 tag untuk 1 column ??
    kalo saya lihat postingan di atasn tag “SQLData\Name” dan “SQLData\desc” kok bisa berisi semua tag??

    jumlah tag yang saya kelola adalah 687 tag, kalau 1 tag = 1 coloumn, panjang banget dong …
    biar 1 tag = 1 row gimana ya??
    makasih, mohon bantuan secepaatnya pak ???

    • toekang says:

      Iya di bindlist memang itu memetakan tag/variable vs kolom. jadi kalau jumlah kolom(aktual or hasil query)-nya 5 maka agar bisa tertransfer ke InTouch ya kudu dibindlist kepada 5 buah tag.

      Nah tag ini kan tidak harus riil tag yg dipakai, tag ini hanya yg dipakai untuk melewati data ke DB.
      Untuk menyimpan data tag riil kan bisa pakai cara ini:
      Sebelum disimpan, copy data ke tag bindlist
      Misal untuk tag FI100 :
      btag\name = FI100.Name
      btag\desc = FI100.Comment
      btag\val = FI100
      trus lakukan perintah SQL.

      Untuk tag LI102 :
      btag\name = LI102.Name
      btag\desc = LI102.Comment
      btag\val = LI102
      dst, jadi hanya perlu 3 tag dan 3 kolom , tetapi data tag yg akan dimasukkan terserah.

  32. nugie says:

    madsud saya biar di sql server, dari:

    tag1 | tag2 | tag3 | ….
    ——————————-
    0 | 0 | 0 | …

    menjadi :

    tagname | value |
    —————————
    tag1 | 0 |
    tag2 | 0 |
    tag3 | 0 |
    .
    .

    cara nya gimana????

    • toekang says:

      bTag\Tag = tag1.name
      bTag\Value = tag1
      –> lakukan query

      bTag\Tag = tag2.name
      bTag\Value = tag2
      –> lakukan query

      bTag\Tag = tag3.name
      bTag\Value = tag3
      –> lakukan query

      dst

  33. nugie says:

    kalo kayak gitu ribet banget dong (tagname yg saya kelola berjumlah 687 tagname, setiap tag haya menghsilkan 1 hasil saja

    bisa di screenshoot g (yang mas contohkan di atas) setingan bindlist nya??

  34. nugie says:

    agar semua tagname ada pada 1 kolom “tagname”
    dan hasil semua tagname ada pada 1 kolom “value”
    nah, gimana tuh??? udah 2hari puyeng neh saya . . .

    • toekang says:

      Sudah dijawab diatas, intinya begini :
      1. Gunakan indirect tag
      2. Gunakan nama tag yg terstuktur misal Tag1 … Tag1000
      sehingga ini bisa di-loop misal untuk 1000 tag menjadi :
      for i=1 to 1000
      iTag.Name = “Tag” + StringFromInt(i,10)

      bTag\Name = iTag.Name
      bTag\Value = iTag

      {lakukan query insert/update data disini}
      Next;

      dimana iTag = indirect tag, bTag adalah bindlist tag

  35. pray says:

    hallo mas toekang

    contoh diatas itu untuk ambil data dari sql database ke intouch ya? itu lokal kan ya? kalo untuk remote gimana ya untuk ngambil datanya?
    maksudnya kita mau ambil data dari sql database di lokasi A biar bisa di tampilkan pada HMI Intouch di lokasi B. saya newbie nih mohon bantuannya. thanks

  36. joe says:

    hello mas,
    permisi saya mau nanya,
    bwt script update data kayak gmana mas?
    kebetulan saya lg bkin program, bwt record awal dan akhir proses..
    data inputannya tanggal dan waktu semua ..
    mohon bantuannya mas

    • toekang says:

      hampirsama dengan diatas cuman pakai fungsi SQLUpdate() untuk update, SQLInsert() untuk record baru.
      Kecuali kalau pakai SQLSetStatement() maka scriptnya ya pakai TSQL-nya Microsoft SQL Server seperti contoh bagian akhir diatas.

  37. ARTHA says:

    Kang,

    Mau nanya, seringkali kita pakai bindlist tapi seringnya ilang itu bindlistnya kira kira masalahnya dimana ya?
    kalo di sql.def nya sih masih ada, nama bindlist dan item2nya cuma kl lihat di SQL Access Manager>Bindlist ketika di klik tidak ada bindlist dan maunya membuat bindlist baru.

    dan seriiiiiiiiing banget.

    atas commentnya saya ucapkan terima kasih banyakk

    artha

    • toekang says:

      haa? di sql.def ada tapi di bindlist ilang?
      baru kali ini toekang denger, soalnya toekang malah lebih sering edit/tambah bindlist langsung dari sql.def.

      bisa kirim itu sql.def via japri ke e.one@toekangscada.com?

      • ARTHA says:

        sudah saya kirimkan sql.def nya ya kang, maaf baru buka. terima kasih sebelumnya atas share ilmunya

        • toekang says:

          toekang asumsikan Artha ini pindah2 developmentnya ya? BindList file sendiri (slq.def) tidak hilang . cuman tidak terbaca oleh InTouch karena ada perbedaan Regional Setting. Untuk menjamin SQL.DEF terbaca, pastikan di regional seting colom separator-nya diset pada charakter yang sama. Jika saat bikin memakai “,” sebagai penanda kolom maka sesuaikan juga dikomputer lainnya. Biasanya ketuker2 antara “,” dengan “,” ….

  38. rias says:

    pak salam kenal nih, saya pemula sedang belajar intouch ..saya mau tanya kalau koneksi ke mysql gimana yah , makasih

  39. Shaquile says:

    Salam pak. Saya mau nanya tentang komunikasi wonderware ke website Pak. Saya sudah membaca artikel-artikel bapak tentang wonderware. Untuk InTouch-MySQL-PHP itu gimana yah pak komunikasinya? Saya menggunakan MySQL dari xampp dan saya mau mengontrol mesin dengan menyambungkan InTouch ke website. Jadi pengontrolan mesinnya tidak melalui InTouch lagi, tapi langsung dari website. Mohon bantuannya Pak, terima kasih.

    • toekang says:

      saya kurang paham maksudnya “komunikasi wonderware ke website” tetapi pengontrolannya tidak pake InTouch lagi?
      Klo pengontrollanya mau tidak pake InTouch ya jgn pake Wonderware, bikin saja PLC – MiddleWare – Data (database,xml dst) – web engine

  40. candra adi W says:

    Salam pak.
    Saya mau tanya, kalau PC mati / power off bindlist kadang hilang itu masalahnya apa ya?

    • toekang says:

      coba check sql.def masih ada atau tidak?
      kalau ada buka via Excel, jika data ditampilkan dalam 2 kolom seharusnya tidak masalah.
      Jika data ditampilkan hanya 1 kolom dimana masing2 baris datanya ada tanda koma (,) maka regional setting PC berubah. Kalau yg ini, set agar penandaan kolom yg dipakai , bukan ;

  41. Feri says:

    Pak toekang,

    step by step untuk koneksi intouch ke sql server melalui ODBC itu baiamana caranya?
    Maaf pemula.

  42. nugraha says:

    haii toekang
    saya ada projek memakai wonderware,
    projek 1, sukses ….komunikasi pake lan
    projek ke 2, bisa dibilang setengah2 sukses hanya karena komunikasi (wifi)

    dari opc ke wonderware knp lama banget ya kalo pake wifi? mungkin ada pencerahan …thanks toekang

    • toekang says:

      seharusnya ngak pengaruh sih. kecepatan Wifi sekarang dah bagus … dirumah 130mbps, komunikasi ke PLC itu hitungannya sgt kecil dgn speed 10mbps saja sudah bagus.
      coba check ping kontinyu ke PLC ada time-out?, tranfer file … lambat tidak.

Leave a Reply