Thursday, August 30, 2007

Heartbeat antara 2 InTouch

Contoh kasus:
Misalkan ada 2 InTouch, sebut saja PC 1 dan PC 2. PC 1 sebagai client, PC 2 merupakan server.
Kita ingin memonitor dari PC 1, apakah koneksi antara InTouch PC 1 dan PC 2 dalam keadan online.

Langkah-langkah:
  1. Pada PC 1 (client), bikin tag dengan nama counter (memory integer) dan set initial valuenya = 0.
  2. Masih pada PC 1, bikin tag dengan name heartbeat dan link ke:
    1. Application name: \\node2\view -> node2 = nama pc 2
    2. Topic: tagname
    3. Item: $second
  3. Bikin datachange script untuk heartbeat. Pada script, set nilai counter = 0. counter = 0;
  4. Bikin datachange script untuk $second. Pada script, increment nilai counter. counter = counter + 1;
Ketika komunikasi antara PC 1 dan PC 2 putus, nilai tag heartbeat tidak berubah (karena nilainya mengambil dari PC 2), maka script datachange heartbeat tidak akan jalan. Nilai tag counter tidak akan tereset, dan akan terus naik karena increment pada script "$second".

Kemudian, bikin animasi, bisa pakai rectangle, atau light dari wizard. Pada expression, masukkan counter >= 10. Pada fill color, True = merah, False = Hijau.
Maka pada saat koneksi putus ( counter >10 ), akan berwarna merah.


*from wonderware KBCD


Selain itu, bisa juga menggunakan IOStatus.
Jika kita menggunakan remote reference pada PC 1, maka pasti sudah ada access name untuk remote tag. Misalkan aja namanya "remote".
Jika belum ada, bikin access name untuk memantau tag secara remote, tanpa bikin tag di client.
Setingannya:
Name: remote
Node Name: (nama PC 2 - server)
Application Name: view
Topic Name: tagname
Protocol: Suitelink

Setelah itu, pada PC 1 (client) kita bikin access name baru dengan nama iostatus.
Setingannya:
Name: iostatus
Node name: (nama PC 1 - client, karena lokal, bisa saja tidak diisi)
Application name: view
Topic Name: iostatus
protocol: DDE

Kemudian, bikin value display - discrete. Pada expression, isi dengan iostatus:remote.
Ini artinya, bahwa access name iostatus memonitor koneksi remote, apakah connect atau tidak. Jika connect, maka nilainya satu. Jika tidak, nilainya nol.