티스토리 뷰

[DAQmx] USB DAQ 장비 에러 발생시 다시 시작하는 방법


National Instruments의 USB DAQ 장비를 사용하여 테스트를 진행하다 보면 -50405 혹은 -50808에러가 발생하는 것을 종종 볼 수 있습니다. 50405나 50808 에러는 모두 USB Transaction과 관련된 에러입니다. 이 에러는 USB 장비의 에러이기 보다는, PC와 USB 장비간의 통신 문제로 발생하는 경우가 많습니다. 


DAQmx 버전에 따라서 에러 코드가 달라지는데, 어떤 경우인지 확인해 볼까요.


에러 -50405 : DAQmx 9.3.5 를 포함한 이전 버전에서 Transaction 문제가 발생한 경우 에러 발생

에러 -50808 : DAQmx 9.4 를 포함한 이후 버전에서 Transaction 문제가 발생한 경우 에러 발생


Transaction 에러가 발생을 하고 나서 다시 장비를 연결하여 측정을 해도 또다시 문제가 발생하는 경우가 많습니다.

NI는 이와 같은 에러의 해결책은 다음과 같이 제시를 합니다.


  1. DAQmx 9.8 이상의 버전 사용자는 Device Reset 호출할 수 있다.
  2. 윈도우 사용자는 장차관리자에서 USB 장비에 대한 사용, 사용안함을 설정할 수 있다.
  3. USB 장비를 빼고 다시 연결할 수 있다.


위의 3가지 방법 모두 50405, 50808 에러를 해결할 수 있는 방안입니다.

2, 3번 과 같은 경우는 장비를 사용하는 사용자가 직접 처리를 해야 하는 부분입니다. 


하지만 1번 같은 경우는 DAQmx의 Reset 함수를 이용하여 처리할 수 있습니다. 이 글에서는 그 부분에 대한 예제를 제공할려고 합니다.

에러가 발생하는 경우에 Reset을 통해서 다시 측정 혹은 신호 출력을 하는 프로그램은 아래와 같이 구성할 수 있습니다.


위의 코드를 간략히 설명드리겠습니다.

1) DAQ Assistant를 통해서 DO 신호를 출력하고, 에러나 Stop 컨트롤이 눌러지면  출력관련 While은 종료가 됩니다.

2) 에러가 발생한 경우라면 두번째 While문에서 장비를 리셋합니다.

3) Stop이 눌러진 경우라면 프로그램을 종료합니다.


에러가 발생한 경우에 사용되는 함수는 DAQmx Reset Device.vi 입니다. 이 VI의 설명을 간략히 살펴보겠습니다.



설명이 너무 길죠? 딴건 볼것없이 모든 활성 태스크를 강제 종료하고, 디바이스를 초기화 시키는 방법입니다. 위의 코드상에서 초기화 시킨 후에 DAQ Assistant에서 다시 출력을 시작하게끔 구현한것이죠. 


USB의 Transaction에러는 위의 코드처럼 생각보다 어렵지 않게 구현할 수 있습니다.

그럼 이만 줄이겠습니다.


[참고 링크]

Why Do I Receive Error -50405 or Error -50808 Using an NI USB DAQ Device When Inserting or Removing an Additional Device?: http://digital.ni.com/public.nsf/allkb/AE7F2281D910D0E286257950005C5131


이글이 도움이 되셨나요?

그렇다면 아래의 그림을 클릭해주세요.



댓글