프로그램적으로 DAQmx 디바이스 리셋 또는 셀프 테스트

업데이트 됨 Jan 17, 2024

환경

소프트웨어

  • LabVIEW NXG
  • LabVIEW
  • LabWindows/CVI

드라이버

  • NI-DAQmx

프로그래밍 언어

  • C# .NET
  • Visual Basic .NET

Measurement & Automation Explorer (MAX)에서 사용 가능한 것처럼 프로그래밍 방식으로 디바이스 셀프 테스트 또는 리셋을 수행하고 싶지만 해당 기능을 찾을 수 없습니다.
이러한 기능은 어디에서 찾을 수 있습니까? 프로그램에서 리셋 또는 셀프 테스트를 어떻게 구현해야합니까?

함수 위치

NI-DAQmx 8.9 및 이후 버전에서는 LabVIEW에서 DAQmx 셀프 테스트 장치 기능 또는 DAQmx 리셋 기능을 사용할 수 있습니다. 또한 LabWindows / CVI 또는 ANSI C에 대한 지원과 C # 또는 Visual Basic에 대한 .NET을 통해 유사한 DAQmx 리셋 및 셀프 테스트 기능을 호출 할 수 있습니다.


LabVIEW NXG :

DAQmx 리셋 VI 및 자체 테스트 기능은 다이어그램의 하드웨어 인터페이스 » NI-DAQmx - 데이터 수집 » 디바이스 설정 팔레트에 있습니다.
 

LabVIEW :

DAQmx 드라이버 :
DAQmx 리셋 VI 및 자체 테스트 기능은 블록 다이어그램의 측정 I/O » NI-DAQmx - 데이터 수집 » 디바이스 설정 팔레트에 있습니다.
 

예전 DAQ 드라이버 :
장치 리셋 기능은 블록 다이어그램의 Measurement I/O » Data Acquisition » Callibration and Configuration 팔레트에 있습니다.
 

LabWindows / CVI 및 ANSI C :

DAQmx 리셋 및 자체 테스트 기능은 Libraries»NI-DAQmx Library»Advanced»Device Control에서 찾을 수 있습니다 .
 

DAQmx 리셋 :
함수 프로토 타입 : int32 DAQmxResetDevice (const char deviceName[])
예 : int errorResult = DAQmxResetDevice ("Dev1");
 

DAQmx 셀프 테스트 :
함수 프로토 타입 : int32 DAQmxSelfTestDevice (const char deviceName[])
예 : int selfTestResult = DAQmxSelfTestDevice ("Dev1");
 

C # .NET :

C #에서 DAQmx 리셋 또는 셀프 테스트를 수행하려면 먼저 DAQ 디바이스 용 Device 객체가 있어야 하며 Device 객체에서 리셋 또는 셀프 테스트 기능을 호출 할 수 있습니다.
 

DAQmx 리셋 :
함수 프로토 타입 : vid Device.Reset ();
예:
Device dev = DaqSystem.Local.LoadDevice("Dev1");
dev.Reset();
 

DAQmx 셀프 테스트 :
함수 프로토 타입 : void Device.SelfTest();
예:
Device dev = DaqSystem.Local.LoadDevice("Dev1");
dev.SelfTest();
 

Visual Basic .NET:

Visual Basic에서 DAQmx 재설정 또는 셀프 테스트를 수행하려면 C# .NET과 유사합니다. .NET에서 Device 객체를 사용하여 재설정 및 셀프 테스트 함수를 호출해야 합니다.
 

DAQmx 리셋 :
함수 프로토 타입 : Public Sub Reset ()
예:
Dim dev As Device = DaqSystem.Local.LoadDevice("Dev1")
dev.Reset()
 

DAQmx 셀프 테스트 :
함수 프로토 타입 : Public Sub SelfTest()
예:
Dim dev As Device = DaqSystem.Local.LoadDevice("Dev1")
dev.SelfTest()
 

기능 구현

장치 재설정 기능은 대개 프로그램의 시작 또는 끝 부분에서 사용됩니다. 리셋 장치가 프로그램 중간에 사용되면 장치와 관련된 모든 활성 작업을 즉시 중단하고 경로를 연결 해제 한 다음 장치를 초기화된 상태로 되돌립니다. 작업을 중단하면 읽기 또는 쓰기와 같은 현재 활성화된 작업이 즉시 종료됩니다. 작업을 중단하면 작업이 불안정하지만 복구 할 수 있는 상태가 됩니다. NI-DAQmx에서 태스크를 복구하려면 DAQmx Start Task 노드를 사용하여 태스크를 다시 시작하거나 DAQmx Stop을 사용하여 태스크를 시작하지 않고 태스크를 리셋하십시오. 재설정 프로세스는 비동기적이며 재설정 완료 전에 함수가 반환됩니다. 이 기능들에 대한 더 자세한 정보는 NI-DAQmx 도움말 파일을 참조하십시오.


LabVIEW의 예제 코드

아래는 LabVIEW로 작성된 리셋 디바이스를 프로그램의 마지막에 놓는 예제 코드입니다.
  1. DAQmx 태스크는 메인 루프 이전에 초기화되며 여기서는 태스크 인 컨트롤로 나타냅니다. 이 예제에서는 초기화 단계가 생략되어 있습니다. DAQmx 태스크를 생성하고 설정하는 방법에 대한 더 자세한 정보 다음을 참고하십시오. NI-DAQmx의 10가지 함수 학습을 통해 데이터 수집 어플리케이션의 80 퍼센트 해결 
  2. 태스크를 시작하고 수집 루프에 입력하십시오.
  3. 수집 루프는 수집을 처리합니다. 이 예제에서 데이터 수집은 단일 채널에서 N 개의 샘플을 연속적으로 읽도록 설정됩니다. 사용자가 중지 버튼을 누르거나 오류가 발생하면 수집 루프가 종료되고 디바이스 리셋 폴링 루프(Reset Device Polling)가 시작됩니다.
  4. 디바이스 리셋 폴링 루프(Reset Device Polling)는 현재 오류를 지우고 장치를 재설정합니다. 루프는 DAQmx 디바이스 리셋 VI가 성공할 때까지 실행됩니다.
  5. 이미 시작한 DAQmx 태스크를 시작하면 에러가 발생하기 때문에 현재 DAQmx 태스크를 다시 시작하기 전에 중지하십시오.
  6. 프로그램이 끝나면 작업은 지워지고 나머지 오류는 단순 에러 핸들러(Simple Error Handler) VI에 의해 처리됩니다.
선택 사항:
DAQmx 셀프 테스트 디바이스 VI를 추가하여 리셋 후에 디바이스가 올바르게 응답하는지 테스트 할 수 있습니다.


Additional Information

8.9 이전의 NI-DAQmx에는 셀프 테스트 VI 또는 기능이 없지만 디바이스 리셋 기능을 사용할 수 있습니다. MAX의 셀프 테스트와 거의 동일하지만, 조금 더 추가적인 기능을 제공합니다. 이 리셋 기능은 응용 프로그램을 중단하거나 충돌하여 참조를 정상적으로 닫고 해제 할 수없는 경우 코드 시작 부분에 추가할 수 있는 좋은 옵션입니다.