LabVIEW Team Indonesia

cancel
Showing results for 
Search instead for 
Did you mean: 

[bertanya]bluee screen dan data error komunikasi labview dan atmega8535 via serial rs232

selamat siang Master master Labview

saya ingin bertanya,

saya sedang mngerjakan sebuah interface antara atmega 8535 dengan labview via serial rs232

saya mngirim 3 variabel yang masing-masing variabel bernilai 8 bit(1 byte).

tapi saya mengalami stuck. permasalahan saya adalah seringnya data error yang muncul dan bluee screen pada komputer.

saya ingin bertanya penyebab terjadinya bluee screen tersebut pak, dan bagaimana mengatasinya.

saya sertakan juga program mikro dan labviewnya .

semoga master-master sekalian berkenan membantu.

terima kasih.

program pada mikrokontroller atmega 8535

x=x+1; 
if (x==255)
{x=0;};
     
y=y+1; 
if (y==125)
{y=0;};
     
z=z+1; 
if (z==50)
{z=0;};
    
lcd_clear(); 
lcd_gotoxy(0,0);
sprintf(buf,"nilai x=%d y=%d",x,y);
lcd_puts(buf);
lcd_gotoxy(0,1);
sprintf(buf,"nilai z=%d",z);
lcd_puts(buf);
     
putchar(x);      
putchar(y); 
putchar(z);
delay_ms(100);

0 Kudos
Message 1 of 12
(9,585 Views)

saya melihat pada program LabVIEW yang disertakan, nilai miliseconds to wait diisi 0. Apakah hasilnya tetap sama apabila nilai miliseconds to wait tersebut diganti menjadi 100?

0 Kudos
Message 2 of 12
(6,199 Views)

tidak sama mas, jika milisecond to wait nya diisi 0 maka akan terjadi kekosongan data yang di terima oleh labview, karena mikrokontroller hanya mengirimkan data setiap 100 ms.

Untitledoo.jpg

jika di lihat dari gambar block diagram diatas(perhatikan yang saya lingkari merah), saya sudah memberikan structure case, jika nilai byte at port tidak sama dengan 3, maka saya akan mengambil nilai string pada shift register(nilai pada looping sebelumnya), tapi knapa di data yang di baca setelah unsigned byte array terkadang masih terbaca hanya 1 atau 2 array, padahal harusnya yang terbaca hanya 3 array saja(3 byte data string), kira kira apa ya pak permasalahannya?ada solusi pak?

terima kasih banyak.

0 Kudos
Message 3 of 12
(6,199 Views)

masalahnya ada 2 kan:

1. blue screen

2. data yg diterima tidak konsisten (kadang ada kadang tidak)

betul?

Kalau sepengertian saya, penyebab blue screen itu berarti kita sudah violate peraturan windows, entah itu memory atau corruption di program. Sementara itu data yang diterima tidak konsisten, bisa banyak penyebab.

Salah satunya, LabVIEW bacanya jangan lebih cepat dari 100ms, coba baca-nya setiap 250ms. Kenapa? Jangan kuatir data akan hilang, karena serial port punya buffer (saya kurang yakin besarnya berapa). Contoh begini kalau diilustrasikan:

MIKRO: kirim A

LabVIEW: belum baca, A akan ada di buffer Serial

MIKRO: kirim B

LabVIEW: belum baca, B akan ada di buffer Serial. Total buffer jadi ada A,B

MIKRO: kirim C

LabVIEW: belum baca, C akan ada di buffer Serial. Total buffer jadi ada A,B,C

MIKRO kirim D

LabVIEW: D sudah sampai di buffer Serial, dan saya gunakan fungsi Bytes At Port, maka akan keluar 4 bytes, dan saya gunakan fungsi VISA Read dengan byte count 4, maka di output VISA Read akan keluar string, ABCD.

Semoga membantu.

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
Message 4 of 12
(6,199 Views)

terima kasih pak atas perhatiannya

pak wisnu, ketika saya gunakan fungsi VISA Read dengan byte count 4, maka di output VISA Read akan keluar string, ABCD

pernyataan bapak itu benar sekali pak, saya maunya seperti itu, tapi selalu terjadi bluee screnn jika saya memakai cara itu.

sekarang saya hanya memanipulasi error saja pak, seperti ini kira-kira block diagram saya sekarang.Untitledll.jpg

tapi kelemahan dari block diagram saya di atas adalah ketika mikrokontroller di matikan, data yang di tampilkan adalah data dari perulangan while sebelumnya, jadi tidak bernilai 0, ada solusi pak agar jika mikro di matikan data yang di tampilkan bisa bernilai 0 atau terdeteksi tidak ada input dari serial?

terima kasih banyak pak atas perhatiannya

0 Kudos
Message 5 of 12
(6,199 Views)

sebentar, satu2 dulu. Itu pas bluescreen, anda pakai fungsi Wait Until Next Ms Multiple atau Wait tidak? Terus kalau pakai, dikasih input berapa ms? Coba kasih delay besar, 500ms, apakah masih bluescreen?

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

saya coba pak pake 2-2 nya (Wait Until Next Ms Multiple atau Wait milisecond). saya coba dari 0ms sampai 1000 ms. data masih suka error. dan sering sekali terjadi bluuscreen. jadi sekarang saya menghindari blue screen tersebut pak.mungkin laptop saya gak kuat, saya pakai vista, padahal prosesor laptop saya bagus, intel core to duo.

sekarang data yang error saya manipulasi saja seperti diagram block yang saya upload di atas.

tapi kelemahan dari block diagram saya di atas adalah ketika mikrokontroller di matikan, data yang di tampilkan adalah data dari perulangan while sebelumnya, jadi tidak bernilai 0, ada solusi pak agar jika mikro di matikan data yang di tampilkan bisa bernilai 0 atau terdeteksi tidak ada input dari serial?

terima kasih banyak pak atas perhatiannya

0 Kudos
Message 7 of 12
(6,199 Views)

Halo mas Danang, saya sudah mencoba program serial_1.vi yang telah mas Danang lampirkan di atas, ternyata di komputer saya tidak ada masalah, dan bisa membaca dengan baik 3 byte data yang saya kirimkan dari mikro saya, seperti terlihat dalam gambar berikut ini:

tampilan program serial_1.jpg

Jadi saya rasa bukan programnya yang salah,

oya, sebagai informasi, saya mencobanya dengan membuat mikro saya (Arduino) mengirimkan 3 nilai; nilai pertama bertambah 1 angka, nilai kedua bertambah 2 angka dan nilai ketiga bertambah 4 angka, jelasnya seperti berikut:

int a=0;

int b=0;

int c=0;

void setup(){

  Serial.begin(9600);}

void loop(){

a=a+1;

b=b+2;

c=c+4;

if(a>200){a=0;}

if(b>200){b=0;}

if(c>200){c=0;}

Serial.write(a);

Serial.write(b);

Serial.write(c);

delay(100);}

Sedangkan untuk blok diagramnya, saya ubah sedikit, yaitu membuat waktunya tidak dimasukkan user, tetapi langsung saya tentukan 100 milidetik, dan untuk kaki Enable Termination Char nya di fungsi VISA Configure saya buat False, hanya itu, jelasnya seperti gambar berikut ini:

program serial 1.png

Jadi, apa yang salah ya?

salam hangat

dian

Message 8 of 12
(6,199 Views)

Oya, menambahkan lagi, untuk Enable Termination Char secara default adalah True. Apabila nilai ini tidak diganti menjadi False, maka akan membuat setiap ada karakter 10 diterima, maka itu dianggap sebagai karakter terakhir, sehingga karakter berikutnya akan diabaikan. Itulah sebabnya mengapa pada postingan mas Danang yang kedua menyebutkan, bahwa seharusnya ada 3 karakter yang diterima, ternyata hanya 2 karakter saja yang ditampilkan, mengapa? Karena karakter yang kedua adalah 10, maka karakter ketiga diabaikan. Dengan membuat nilainya menjadi False, maka persoalan ini dapat diatasi. Ok, semoga paham, sip..

salam hangat

dian

Message 9 of 12
(6,199 Views)

mantap pak Dian analisa-nya. Salut.

BTW pak Dian, sebaiknya di Mikronya setiap send data sebaiknya paka termination character kan? Lebih mudah di LabVIEW nya untuk mengetahui bahwa data transfer telah selesai?

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
0 Kudos
Message 10 of 12
(6,199 Views)