Showing posts with label PI. Show all posts
Showing posts with label PI. Show all posts

Friday, October 7, 2011

PI Merge

Lama nggak posting tentang PI, kali ini aku mau bahas proyek merge PI server yang kami lakukan awal tahun ini.

Langkah² yang dilakukan diantaranya adalah:
  1. Konfigurasi tag di server baru
  2. Merge Archive
  3. Installasi dan konfigurasi PI API (PI Interface)
  4. Installasi dan konfigurasi FXBais
Konversi tag di server baru:
  • Membuat ID konversinya dengan script di bawah aplikasi piconfig:
@table pipoint
@ostr pointid,recno,tag
@select tag=*
@output the_tag.txt
@ends
@exit
  • Update digital state di server baru, disamakan dengan digital state di server lama
  • Semua tag di export ke excel, di review kemudian tag dibuat dengan menggunakan PI SMT
  • Membuat konversi binary ID dari file yang dibuat di step sebelumnya
#piarchss.exe -idci "C:\the_tag.txt" -idco "C:\the_output.bin"
Merge Archive:
Merupakan proses merge archive di server lama, berdasarkan tag-tag yang sudah dibuat di step sebelumnya
#piarchss -id C:\the_output.bin -if C:\input\piarch.001 -of C:\output\piarch.001 -ost "1-jan-2010" -oet "1-feb-2010"
dengan:
id - PI tag ID list
if - input file, archive dari server lama
of - output file, archive untuk server baru
ost - start time, start time dari archive baru
oet - end time, end time dari archive baru

Installasi dan konfigurasi PI API (PI Interface):
  • buat direktori untuk PI di folder /opt/pi
  • definisikan PIHOME di file .login, .profile, .cshrc di folder root
setenv LD_LIBRARY_PATH /opt/pi/lib
setenv PIHOME /opt/pi
setenv FOXAISHOME /opt/fox/ais/bin
  • copi installer ke folder /opt/pi dan jalankan script:
zcat piapi_tar.Z | tar xf -

  • masuk ke /opt/pi/build, jalankan script pi.install
  • buat file untuk IO Rates di /opt/pi/dat/iorates.dat, dan buat tag ***-IN untuk tag input dan ***-OUT untuk tag output.
AW0101-IN,11
AW0102-OUT,12
Installasi dan konfigurasi FXBais:
  • extract installer
zcat FXBAIS.tar.Z | tar xf -
  • copy fxbais.sh.new menjadi fxbais.sh di /opt/pi/interfaces/fxbais dan edit sebagai berikut:
$PROG_NAME -ps=F -id=8 -host=PISERVER:5450 -stopstat -q -write -f=5 -f=10 -f=30 -f=00:05:00 -f=10:00 -f=1:00:00 -f=24:00:00,00:10:00 -ec=11 -ecout=12 \
dengan ID adalah ID yang merupakan referensi location 1 untuk tag tipe F (foxboro).
  • update /etc/fox/user_apps.dat, tambahkan /opt/pi/bin/go_pistart di baris paling bawah agar PI bisa start up otomatis setiap kali workstation di reboot.
  • tambahkan fxbais start dan stop di PI-API start-stop
# more /opt/pi/interfaces/fxbais/add2start >> /opt/pi/bin/sitestart

# more /opt/pi/interfaces/fxbais/add2stop >> /opt/pi/bin/sitestop
POST MERGE PROBLEM
snapshot terupdate, tetapi archive tidak terupdate
setelah merge selesai, ada masalah yang menyebabkan launching server baru di cancel, karena data snapshot terupdate, tetapi data tidak masuk ke archive. jadi tidak ada historian untuk data-data setelah server di online kan. hal ini disebabkan karena ada antrian event yang corrupt. setelah berkomunikasi dengan tech support dari OSIsoft, terselesaikanlah problem tersebut dengan langkah² di bawah:
  • lewat command prompt di PI server, di folder \PI\adm, ketik "piartool -qs"
  • dalam keadaan normal, total event write dan total event reads harusnya sama
  • jika event yang terbaca 0, coba restart piarchss subsystem dari servis list
  • jika tidak ada perubahan yang terjadi, stop PI Snapshot Subsystem dan PI Archive Subsystem
  • backup primary archive
  • copi PIMAPEVQ.DAT atau PIMQ000*.DAT dari PI\DAT ke PI\EVQ
  • retstart PI Snapshot Subsystem, maka sistem akan membuat event queue kosong PIMAPEVQ.DAT
  • masukkan file yang corrupt, yang dicopi ke folder \PI\EVQ ke archive yang sesuai
C:\Program Files\PI\bin\piarchss -if "c:\program files\pi\EVQ\pimq003.dat" -of d:\PIArc\piarch.001 -evq -ost "1-jan-2010 10:41:00" -oet "21-jan-2010 15:00:00" -evq > d:\output.txt
  • script di atas akan memproses event yang korup dan dimasukkan ke archive piarch.001
  • restart PI Archive Subsystem dan cek aliran data
  • cek Total Event Write dan Total Event Reads dengan "piartool -qs". hasilnya seharusnya sama
  • proses data² yang lain berdasarkan timestamp² yang sesuai dengan archive² yang sudah dibuat
  • jika tidak ada parameter -ost dan -oet, maka timestamp yang dipakai adalah timestamp dari file event queue yang korup.

masalah calculation tags
pastikan konfigurasi di \PI\bin\pipeschd.bat di server baru sama dengan konfigurasi di server lama

selain konfigurasi² di atas, masih ada konfigurasi untuk PI trust. tapi karena tidak semua user menggunakan PI security yang sama, topik tersebut nggak aku bahas di sini.

Thursday, October 28, 2010

Konfigurasi PI OPC Tag

Jika kita ingin merubah point source suatu tag dari rslinx ke OPC, kita tidak membutuhkan konfigurasi di exdesc, instumenttag dan location3 lagi. untuk OPC tag, gabungan ke-3 konfigurasi tersebut diletakkan di instrumenttag.

Contoh:
sebuah tag dengan konfigurasi:

exdesc: 14;$N50:0,50,4
instrumenttag: -
location3: 8
location2: 1 - berarti location3 adalah 2x lokasi offset, maka lokasi offset adalah 8/2 : 4

jika tag tersebut dirubah menjadi OPC tag, instrumenttag diedit menjadi [ABPLC4]N50:4
yang berarti tag tersebut mengambil data dari ABPLC4, N50:4

jika konfigurasi tag sebelumnya menggunakan instrumenttag berikut:

exdesc: 1;$B112:0,50,1
intrumenttag: bm=10000
location3: 24
location2: 5, berarti location3 adalah 4x lokasi offset, maka lokasi offset adalah 24/4 : 6

maka jika tag dirubah source nya ke OPC, instrumenttag nya menjadi [ABPLC1]B112:6/0 konfigurasi yang lain:

location2
0 : proses normal
1 : membaca string dan menulis sebagai string. tipe digital bisa menggunakan konfigurasi ini jika nilai yang diambil sama dengan nilai yang ditampilkan, misalnya tag dengan tipe DIG-STA (nilai 0-1)
2 : untuk tag digital dengan hanya 2 nilai. nilai akan dibaca sebagai Boolean, dan ditampilkan sesuai dengan digital set yang kita tentukan (mis. RUN-STA, ON-OFF)
3 : dibaca sebagai 4byte integer. pembacaan digital tag secara normal
4 : untuk tag real (float)

location3: 1 untuk tag normal, 2 untuk output tag

location4: untuk tipe scanning data

Jika tidak butuh perhitungan, maka Exdesc dikosongkan, tetapi jika nilai dari OPC masih butuh perhitungan di PI, maka:

TotalCode:1
Convers, Zero dan Span : diisi
Exdesc: DZero=0

dengan formula perhitungan:

(value-DZero)/Convers * span + zero

Jika
TotalCode:0 - formula: value = value
TotalCode:1 - formula: value = (value - DZero) / Convers * Span + Zero
TotalCode:2 - formula: value = value * convers
TotalCode:3 - formula: value = value/ convers - DZero
TotalCode: 4 - formula: value = (value - DZero)/ Convers
TotalCode: 5 - formula: value = value + convers

post tentang tag rslinx: PI Tag dari PLC lewat PI RsLinx

Tuesday, March 16, 2010

Settingan Buffer di PI Interface

Dari dua tahun lalu, terjadi hal aneh bin ajaib di PI-NORTH-P.
Tag baru hanya akan terupdate jika location2 diisi angka 0. Jika tetap ngotot kita isi, maka interface akan mogok atau data yang masuk bukan data seharusnya.
*location2 ini adalah setingan untuk buffering. jika location2 tidak diisi angka, maka tag tidak akan di buffer oleh interface.

Setelah tahun ini ada kesempatan buat research and destroy PI, sepertinya ada titik terang untuk permasalahan tersebut.
Ukuran MAXFILESIZE kurang besar untuk PI-NORTH-P.
Ukuran tersebut bisa dilihat di /opt/pi/dat/piclient.ini berikut:

AW201C# more piclient.ini
[PISERVER]
PIHOMENODE=pi-north-p
DSTMISMATCH=0
[TCP/IP]
PORT=5450
[APIBUFFER]
BUFFERING=1
MAXFILESIZE=70000
RETRYRATE=120
PAUSERATE=1
MAXTRASFEROBJS=1000

Untuk PI-OREFLOW-P max file size nya 70000, tetapi tag nya 2ribuan, PISRV01 150000 untuk 6ribuan tag. Sementara PI-NORTH-P 70000 untuk 2ribuan tag.
Mungkin itu adalah permasalahan kenapa interface sering mogok jika menambah tag baru yang di buffer. Pemogokan ini tidak terjadi jika kita memindah tag dari 1 data table ke data table yang lain.

Perubahan lain yang dilakukan di interface PI-NORTH-P adalah settingan di /opt/fox/ais/bin/foxapi.cfg berikut:

AW201C# more foxapi.cfg
maxobj = 10000 –> tadinya 6000, jumlah maksimum point yang diambil dari interface
maxqo = 1
maxch = 1
maxds = 150 –> maksimal jumlah tag dalam 1 data set (location2)

Banyaknya data set ini juga mempengaruhi lama proses start up interface. Jadi lebih baik jika dimaksimalkan penggunaan 1 nomor data set sehingga di PI server tidak memiliki terlalu banyak data set

Sunday, August 30, 2009

PI Tag dari PLC lewat PI RsLinx

Hal-hal yang perlu diperhatikan dalam pembuatan PLC tag:

* exdesc, mengacu ke lokasi data di PLC. contoh format: 15;$N111:0,24,5

15 menunjukkan lokasi data tabel (DT) yang kita tentukan sendiri. 1 DT untuk maksimum 99 poin. DT ini sebaiknya berbeda-beda untuk setiap type byte dalam 1 PLC server
$N111:0,24 menunjukkan banyak elemen dalam hal ini elemen 0-24 yang akan dibaca dalam 1 type byte PLC
5 menunjukkan PLC ID dari data yang akan dibaca. ID ini ditentukan oleh penomoran PLC server di file pirslinx.ini di server PI RsLinx
[PLC]PLC1=AB:LOCAL,0,PLC5,mahaka ID = 1PLC2=AB:LOCAL,1,PLC5,mahaka ID = 2

* instrumenttag diisi jika data merupakan data digital. formula untuk instrument tag ini adalah: bm = ending bit + (100*starting bit) + 10000

misal instrument tag bm=10101 menunjukkan data yang dibaca adalah bit ke 1

* location1 menunjukkan ID server yang diletakkan di file pirslinx.bat di server RsLinx

* location2 menunjukkan tipe data. yang paling banyak dipakai adalah 5 untuk float, 1 untuk word

*location3 menunjukkan lokasi offset dari data dimaksud dengan angka yang dikalikan 2

misalkan ingin membaca N7:9, maka location3 diisi dengan angka 18
Berikut contoh jika ingin mengambil data N103:2 (nilai 150)



exdesc akan diisi *;$N103:0,24,*
location3 diisi angka 4 yang merupakan perkalian 2 dari lokasi offset 2
Berikut contoh jika ingin mengambil data B104:1 bit 8 (nilai yang di blok)


instrumenttag akan diisi bm=10808 yang menandakan pembacaan dari bit 8
location3 diisi angka 2 yang merupakan perkalian 2 dari angka 1 (B104:1)

jika tag yang ingin dibuat ada formula perkaliannya, maka kita harus memperhatikan nilai di span, zero, convers dan location5.

Location5 diisi 1 jika ada formula untuk tag tersebut, dan 0 jika data yang ingin ditampilkan adalah murni data output dari PLC.

Jika location5 diisi, maka nilai yang akan muncul adalah:

value = (value(input dari PLC) * span / convers) + zero

untuk nilai span dan convers, kita harus mengacu pada point yang mengolah data tersebut (misalnya di wonderware)

Friday, October 3, 2008

ramadhan yang penuh trobel

kenapa aku bilang penuh trobel? karena selama bulan ramadhan kemarin, aku sering banget pulang telat. sekali mpe jam 12 malem, sekali jam 2 pagi, dan berkali-kali pulang jam setengah 9. mulai dari gagal upgrade mesh network yang mengakibatkan network musti di balikin lagi ke tipe semula, nungguin mas herrin sama mas alfian ngerjain proyek doz1 di underground, sampai pi-oreflow-p yang crash tiba².
yang paling bikin pusing yang terakhir itu. tanggal 23 september pukul 2.30 siang, tiba² koneksi ke pi-oreflow-p putus. di restart berkali-kali tetep gabisa jg masuk windows. msti restart trs... analisa kita harddisk failure, so kita rebuild server cadangan pake pc yang ada.
aku sama mas herrin lembur mpe jam 2 untuk rebuild server. ngambil data backup dari mis. malangnya data yg dikirim mis adalah data pisrv01. yo ga nyambung tooo.... salah server pak.... berhubung untuk rebuild server kita musti punya konfigurasi server sebelumnya, so kita pulang tanpa hasil. server udah jalan, cuman data masi nihil.
paginya, kita ke mis di 68 dan ternyata harddisknya nggak rusak euy, cuman nvram nya yg error. jadi masi bisa di load dari server lain. setelah berhasil rebuild server baru, ternyata primary archive error bow... notifikasinya
"Failed to retrieve events from server. [-11001] Record Header Version Mismatch"
archive nya corrupt... dan sampai sekarang belum sembuh hohoho...
jadi inget dulu jaman database crash dulu di kantor lama... mana yg crash database pusat lagi... prosedur, triger, data ilang kabeh. musti upload dari semua cabang. 2 minggu blm pulih tu... capeh deg...
jadi trauma niy, secara kita maintenance server banyak banget. berdasar pengalaman gabisa bergantung ke mis mulu, sekarang aku backup semua server ke kompiku. alhasil, space tinggal 200mb *_* tapi aku nyimpen 4 pilem jg si di dalemnya huehehe... besok musti clean up niy...

Tuesday, August 14, 2007

Plant Information System

plant information system, ato istilah kerennya PI....
mesti pada bingung apaan tu... begitu juga denganku waktu pertama denger. kirain "pie" ternyata PI...
sama kayak database, tapi dia ga kenal yang namanya tabel. adanya cuman nama data yaitu tag, dan data² untuk tag tersebut yang terdiri dari timestamp sama value.
dan disini nggak bisa pake query ato statement SQL, tapi nge-link datanya lewat Excel. so.. bingung juga pas coding, mo ngambil datane pie iki...
ga da kodok lagi tiap pagi, tapi mainnya lewat Excel apa PI ProcessBook. terus programming nya pake VB application.

kedua gambar itu adalah contoh tampilan ProsesBook. yang satu tampilan data, yang satu lagi tampilan truck yang antri mo dumping ke crusher.
kedua tampilan tersebut adalah karya pertamaku programming dengan PI. bukan sepenuhnya karyaku si... soale cuman ngembangin aja :D
seperti biasa, edit, copi, paste hehehe...
btw kemarin sempet ada masalah dengan server gara² upgrade versi server. sempet bikin geger, tapi untungnya masalah masih bisa dikendalikan... heran deh.. tiap aku dateng, baru beberapa bulan jalan, pasti ada masalah dengan server hehehe