
:: 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 :
Langkah pertama untuk ambil data dari tabel itu ya harus buat dulu BindList seperti ini :
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 :
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 :
Apakah hanya itu caranya ? tidak kita juga bisa memakai kombinasi ‘SQLSetStatement()’ dan ‘SQLExecute()’ seperti ini :
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:
Hasil akhir sama, tetapi nama kolom berbeda kan? Nantinya nama kolom ini yang dipakai BindList di InTouch seperti ini:
Jika skript untuk ambil data seperti ini :
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.
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 :
dan tabel Log(data) itu sendiri :
Untuk mengambil data seperti yang ada dalam tabel A, seperti biasa buat dulu BindList seperti ini:
Dan ini untuk script InTouch-nya :
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 :
dengan ‘spGetData’ sebagai nama Stored Procedure-nya, nantinya di InTouch tinggal di eksekusi aja Stored Procedure ini dengan perintah ‘EXEC spGetData’ :
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.
Tnx..good article..
Menambah wawasan bangets..
hehehehe
keren banget pak
cuma kayaknya nie levelnya buat midle to high
klo buat pemula pasti pusing hehehe
Ah ngak juga ..low, midle, high ..ingusan, pakar ..itu kan kamu aja yang membuat area spt itu
ya tetep aja pak
kayak alarm analog input aja ada HHH, HH, H, L, LL, LLL
inget gak? hehehehehe
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
Gimana koneksi wonderware kalo pake database yang gratisan kayak MySql misalnya..? Kan lumaya ngirit, daripada “lumanyun”….’He..he..he……!
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.
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
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.
makasih, Pak. membantu sekali
sama – sama
sekedar nimbrung..
untuk check error connection:
ResultCode =SQLSelect(ConnectionID,”",”",”",”");
if ResultCode 0 then
ErrorMsg=SQLErrorMsg(ResultCode);
endif;
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.
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/)
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
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???
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’
ardneh jgn dijawab mulu pak
biar suruh mikir dulu, klo gak gitu gak bisa bisa nanti hahahaha
yach tega nich bang Fathoni…..
btw kalo q munculin $operator kok g mo muncul yach tp kalo $datestring ma $timestring bisa muncul
masak seh ???
di tempatku kok muncul … itu variable (message/string) default
aja (tanpa ada yg login) kan sudah berisi ‘none’
eh iya bisa, maaf ada lalai di tagname…
makasih bang…
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 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
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…
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
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
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
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;
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();
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();
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.
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.
Yes You right..
This is only simple sample to show different between single and multiple table ..
You can use function SQLInsert() to put data from InTouch to database
My reply was was truncating.
Please drop me an email at:
magnaforemost@gmail.com
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.
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
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 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.
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();
Supposed to be %m_RS.Open(“Customers”, %pCnn, 1,3); {adOpenKeyset, adLockOptimistic}
terima kasih banyak nih
sangat membantu banget penyusunan tugas saya..
^_^
sukses selalu
permisi mas, numpang nanya gimana caranya database yang dibuka lewat intouch jadi triger ke PLC ??
terima kasih sebelumnya..
^_^
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?
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
…
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.
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
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.
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,,
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 ..:)
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.
bindlistnya ada di intouch mas.
kemana nie yang punya blog ? kebanyakan freelance kayaknya wkwkwkwk
… yg punya masih khilaf, tergiur dgn harta & jabatan ..:D
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 ???
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.
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????
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
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??
lho itu kan contoh saja, untuk program yg melibatkan ratusan or ribuan tag kan bisa dimanipulasi dengan Loop & Indirect, coba baca artikel toekang sebelumnya : http://toekangscada.com/2009/09/25/indirect-tagmane-loop-simple/
Untuk kasus nugie, toekang pernah bahas juga disini :
http://toekangscada.com/2008/04/23/script-yang-tidak-efektif/
moga2 jelas.
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 . . .
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
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
yang diatas tidak membahas koneksi, jadi tidak ada hubungannya dengan lokal atau remote. local atau remote dimanage di connection string atau pada saat SQLConnect(), coba baca artikel ini http://toekangscada.com/2008/04/22/di-intouch-oledb-menjadikan-hidup-lebih-mudah/
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
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.
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
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?
sudah saya kirimkan sql.def nya ya kang, maaf baru buka. terima kasih sebelumnya atas share ilmunya
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 “,” ….
pak salam kenal nih, saya pemula sedang belajar intouch ..saya mau tanya kalau koneksi ke mysql gimana yah , makasih
penjelasan yg ini http://toekangscada.com/2015/06/30/project-intouch-mysql/, kurang?
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.
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
Salam pak.
Saya mau tanya, kalau PC mati / power off bindlist kadang hilang itu masalahnya apa ya?
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 ;
Pak toekang,
step by step untuk koneksi intouch ke sql server melalui ODBC itu baiamana caranya?
Maaf pemula.
dari dua artikel ini kan jelas :
http://toekangscada.com/2008/04/22/mengapa-masih-odbc/
http://toekangscada.com/2008/04/22/di-intouch-oledb-menjadikan-hidup-lebih-mudah/
perbedaan pake ODBC & OLEDB hanya pada cara mendapatkan conection id atau di koneksi saja, sisanya sama saja
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
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.
Pak mau tanya, untuk coding/script untuk insert data ke database melalui list box itu seperti apa ya pak, misalnya saya kan membuat history status sebuah mesin pertama diinsertkan ke dalam sebuah list box, terus ketika historynya sudah dirasa cukup baru disimpan ke database, nah kira-kira script untuk penyimpanan ke databasenya seperti apa ya pak ? terima kasih.
apa ngk terlalu ribet klo masuk ke listbox trus dicopy ke db? lebih baik setiap ada event baru langsung insert/update ke DB.
Tapi klo masih pingin spt diatas harus bikin looping, baca content listbox total. kemudian buat loop sejumlah isi listbox, di setiap loop-nya lakukan insert ke DB
halo toekang, saya mau nanya script sql update dan execute di intouche seperti apa ya pak
ini contoh script yang saya buat di intouch
resultSQL = SQLUpdate (ConnectionID , “CTRL1″, “CONTROLDATA”, “DATA2=1 OR DATA2=0″);
resultSQL = SQLUpdate (ConnectionID , “Report”, “REPORT1″, “ID=1″);