LabVIEW Team Indonesia

cancel
Showing results for 
Search instead for 
Did you mean: 

null offset menggunakan cRIO

izin bertanya, master's

jadi, saya diharuskan membuat program akuisisi data internal balance. namun, karena menggunakan cRIO, saya masih agak bingung. untuk permasalahan pertama yaitu null offset. saya membuat 2 program kasus yang ingin saya tanyakan berkaitan dengan null offset.

yang pertama :

Untitled[1].png

kalau yang kayak gini, channel dari cRIO kan berbeda sama blok fungsi DAQmx Create Channel. apa sebenarnya bisa disambungkan? dengan menggunakan blok apa?

yang kedua:

Untitled1[1].png

kalau misalkan program-nya seperti ini (masih program percobaan untuk memastikan bahwa program bisa membaca data dari channel cRIO), bagaimana cara null offset-nya?

sekian yang saya tanyakan. jika pertanyaan saya masih kurang jelas, mohon maaf dan bisa ditanyakan kembali detail yang kurang jelasnya.

Terima kasih.

0 Kudos
Message 1 of 23
(9,101 Views)

Sesimpel cek nilai offset untuk pertama kali di iterasi pertama, lalu gunakan nilai tersebut sebagai reference untuk output di iterasi2 selanjutnya atau jika ingin melakukan nilai offset null di tengah proses, maka tinggal bermain arsitektur code nya saja, bisa state machine atau lainnya

SR

0 Kudos
Message 2 of 23
(7,523 Views)

hmmm...

tapi bagusnya pake program kasus yang pertama atau kedua ya, om? saya kebayang sih sama penjelasannya. hanya, entah eksekusinya. masih harus eksplorasi...

0 Kudos
Message 3 of 23
(7,523 Views)

itu error di gambar pertama, karena DAQmx sama NI-RIO berbeda arsitektur, driver dan cara pemrogramannya. Jadi lupakan DAQmx kalau pakai cRIO.

Untuk menyempurnakan yang disebut oleh Suryo, nilai untuk dioffset jangan dibaca satu kali, tapi dibaca beberapa kali. Kenapa? Karena biasanya ada system-noise yang terjadi direntang waktu yang berbeda. Dengan membaca, contoh, 10 kali, saya kalkulasi nilai "mean"nya lalu nilai ini dijadikan offset untuk pengukuran berikutnya.

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
0 Kudos
Message 4 of 23
(7,523 Views)

OK, mas krisna. kasus pertama gugur...

saya agak kurang mengerti dengan "pembacaan nilai" beberapa kali/iterasi. apa ada example VI-nya, mas? kalau text based program sih, bisa aja langsung ditambahin ke listing programnya. karena ini block based program, masih belum kebayang  blok apa saja yang dipakai...

0 Kudos
Message 5 of 23
(7,523 Views)

secara konsep text-based dan LabVIEW-based sama. Bedanya metode saja. Sudah selesai baca tutorial yang saya kasih?

kalau dalam LabVIEW, data bisa ditumpuk menggunakan array. Misalnya data-nya berupa scalar (single sample data) ditumpuk menjadi 1D array. Kalau datanya berupa 1D array (finite/continuous sample) maka data ditumpuk menjadi 1D array.

Ini contoh pertama:

contoh1.png

Ini contoh kedua:

contoh2.png

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
0 Kudos
Message 6 of 23
(7,523 Views)

hmmm...

agar nilai pertama jadi reference untuk null offset, tinggal ditambahin blok diagram yang sama seperti contoh yang mas krisna buat, ya?

terima kasih banyak sudah mau bersusah payah untuk mengerti ya, mas. mohon maaf karena saya tidak mampu membahasakan masalah program yang saya hadapi dengan baik...

0 Kudos
Message 7 of 23
(7,523 Views)

mungkin pertanyaan utama saya juga kurang jelas.

Jadi, saya sebenarnya ingin membuat pembacaan dari setiap channel input (ada 😎 di-set ke nilai 0. kan kalau pembacaan pertama saat akuisisi data biasanya menampilkan angka pengukuran awal (tidak bernilai 0). menurut pengalaman saya saat TA, saya melakukan penge-set-an ke nilai 0 secara manual. maksudnya, nilai yang tertera saat pembacaan awal saya masukkan ulang untuk nanti dikurangkan dengan nilai pembacaan sehingga saat pengukuran, nilai pengukuran awal adalah 0. sedangkan saat ini, saya ingin membuat hal itu menjadi otomatis. hanya memang saya belum dapat gambaran harus seperti apa diagram blok-nya...

0 Kudos
Message 8 of 23
(7,523 Views)

bantu dikit mas ridho.

algoritmanya mungkin gini..

value_offset = 0, #inisiasi awal nilai offset

#looping misalnya pake diagram looping while

while (stop != TRUE) {

if iterasi = 0 then {

value_offset = nilai pengukuran;

nilai pengukuran = nilai pengukuran - value_offset;

}

else {

value_offset = value offset;

nilai pengukuran = nilai pengukuran - value_offset;

}

end

kalau diagram blok untuk while loop di labview tahu kan yang mana?

nah untuk nilai offset diinisiasi dulu pake nilai nol.

setelah while looping pertama kali (index loop dimulai dari 0) makan nilai offset diganti menjadi nilai pengukuran saat itu.

untuk iterasi selanjutnya, nilai offset tidak berubah.

- bagaimana tau index iterasi di labview, lihat kotak biru kecil yg didalamnya ada huruf i disudut kiri bawah diagram while.

atau bisa juga menggunakan block bolean "first call?"

- bagaimana menjaga nilai offset selalu tetap untuk iterasi selanjutnya, bisa menggunakan shift register. nilai inisiasi shift register ini bisa diinisiasi menjadi 0.

semoga nyambung dengan pertanyaan mas ridho


asumsi saya, mas ridho cuma mengambil nilai pengukuran pertama sebagai nilai offset. bukan rerata beberapa nilai pengukuran di awal.


0 Kudos
Message 9 of 23
(7,523 Views)

wah, kang chandra...

waktu TA dulu, terima kasih banyak atas bantuannya...

ya. untuk algoritma memang seperti itu. dan asumsi akang hampir benar...

saya coba dulu saran akang. memang ada beberapa yang saya kurang mengerti, namun saya coba cari sendiri...

terima kasih, kang...

ohya, kang. mungkin kalau yang ada nilai offset-nya itu blok Timed Loop, ya?

0 Kudos
Message 10 of 23
(7,523 Views)