SCPI + Keithley

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
mardu
Posty: 5
Rejestracja: 04 sty 2007 00:00

SCPI + Keithley

Post autor: mardu »

Witam

Pisząc oprogramowanie obsługujące elektrometr Keihley w LabView przez SCPI mam następujący problem:
zbudowałem bloczki obsługujące poszczególne funkcje programujące (Zakres, Trigger, Filtr itd). Kiedy każdy z tych bloczków testuję pojedynczo wszystko działa dobrze. Ale kiedy połączyłem wszystko w jeden dłuższy łańcuch wtedy pojawiają się problemy (w losowych momentach).
Urządzenie sygnalizuje następujący błąd (wraz z opisem z manuala):

+807 "RS-232 OFLO; Characters lost" — A character
was received but discarded due to a lack of input
buffer space. Each line-feed character (<LF>) closes
a buffer and opens another. Thus, if too many
line-feeds are sent in succession, then all buffers
will fill before they have a chance to be read.

Nie wiem jak ugryźć ten problem.
Może powinienem sprawdzać *OPC? czy polecenie zostało wykonane?
Może jakieś opóźnienia wystarczą? Czy też może problem leży raczej zupełnie gdzie indziej?

Proszę o jakieś wskazówki.

pozdrawiam
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Re: SCPI + Keithley

Post autor: bogdani »

Witaj

Trochę trudno tu prognozować bez kodu, który jest wykonywany, ale spróbuj dodać nieduże opóźnienia między kolejne wysłanie komendy.
Podany przez ciebie opis sugeruje, iż miernik nie jest w stanie odebrać wszystkich komend z powodu braku miejsca w buforze.

Jeśli dalej błąd będzie się pojawiał zacznij sprawdzać wykonywanie komend.

Znacznie więcej będzie można powiedzieć jak pokażesz swój kod programu.

bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
mardu
Posty: 5
Rejestracja: 04 sty 2007 00:00

Re: SCPI + Keithley

Post autor: mardu »

Dziękuję za odpowiedź.

Wczoraj udało mi się rozwiązać problem, działem podobnie do Twoich sugestii.
Najpierw kombinowałem z opóźnieniami w różnych punktach programu, ale to nic nie pomogło. W którymś momencie zastanowiło mnie, że:
1) Błędy pojawiają się w różnych miejscach - losowo
2) Kiedy włączyłem tryb debugowania (z graficznym pokazaniem przepływu sygnałów) okazało się że wszystko dobrze działa.

Na podstawie wszystkich prób zmniejszyłem prędkość transmisji z 9600bps na 4800bps i wszystko zaczęło działać dobrze. Podejrzewam, że mimo że elektrometr teoretycznie może działać przy 19200bps to przy większej ilości komunikatów z rzędu nie wyrabia się z ich przetwarzaniem i zapycha mu się bufor.
Niestety nie mogę znaleźć informacji o wielkości tego bufora komunikatów, a przydałaby się.

Pozdrawiam
ODPOWIEDZ