해결책
이 에러는 NI-DAQmx가 물리적 리소스 충돌을 식별한 결과입니다. 몇 가지 일반적인 리소스에는 타이밍 엔진, 채널, 트리거 라인, 작업, 샘플링 클럭 등이 포함됩니다. 에러는 다양한 상황에서 나타날 수 있으므로 아래에 몇 가지 가능한 경우를 설명합니다.
- 사례 1: 작업을 제대로 지우고 리소스를 해제하지 못했습니다.
- 사례 2: 다중 카운터 카운터 작업에서 이미 예약 된 카운터 사용.
- 사례 3: 여러 작업을 사용하여 데이터 수집 보드의 동일한 물리적 채널에 액세스합니다.
- 사례 4: 독립적으로 에러 없이 실행되지만 최상위 VI에서 호출 될 때 오류를 생성하는 여러 SubVI를 사용합니다.
- 사례 5: DAQ 디바이스가 허용하는 것보다 더 많은 아날로그 입력 또는 아날로그 출력 태스크를 동시에 실행합니다.
- 사례 6: 샘플 클럭을 공유하지 않는 여러 하드웨어 타이밍 작업을 사용하여 아날로그 출력 파형을 출력합니다.
- 사례 7: 실행중인 LabVIEW 프로그램에서 사용하는 동안 NI-MAX에서 태스크를 사용하려고 합니다.
- 사례 8: 카운터 작업에 잘못된 소스 사용
사례 1: 작업을 올바르게 지우고 리소스를 해제하지 못했습니다.DAQmx 태스크가 시작되거나 그렇지 않으면 예약됨 또는 커밋됨 상태에 들어가면 클럭, 채널, 트리거 라인 또는 버퍼 메모리와 같은 해당 태스크와 관련된 리소스가 태스크에 의해 독점적으로 수집됩니다.
다음 중 하나를 수행하여 이 문제를 해결할 수 있습니다.
- 태스크 끝에 DAQmx Clear Task.vi를 추가
- 태스크 끝에 DAQmx Control Task.vi를 추가하고 해당 동작을 예약되지 않음으로 설정합니다.
while 루프를 사용하여 읽기 또는 쓰기를 수행하고 Clear 작업이 루프 이후에 수행되는 경우 중단 버튼을 사용하여 실행을 중단하지 말고 루프의 조건부 터미널에 연결된 중지 버튼을 사용하십시오.
사례 2: 다중 카운터 태스크에서 예약된 카운터를 사용합니다.두 개의 카운터가 필요한 작업의 경우 두 번째 카운터는 생성 채널 vi에 연결된 카운터를 기반으로 예약됩니다. 카운터는 항상 옆에 있는 카운터와 쌍을 이루므로 ctr 0은 ctr 1과 쌍을 이루고 ctr 2는 ctr 3과 쌍을 이룹니다. 일부 카운터 작업에는
여러 카운터가 필요합니다.
이 문제는 카운터 작업 유형에 따라 실제로 사용되는 카운터 수가 다르기 때문에 발생합니다. 특히 아래의 추가 코드의 경우. 아래 VI 스니펫을 참조하십시오.
STC II 칩을 기반으로 하는 M시리즈 DAQ의 경우 유한 펄스 시퀀스를 생성하려면 두 개의 카운터가 필요합니다. 시리즈별 DAQ 디바이스의 카운터를 비교하려면 아래 표를 참조하십시오.
표에서 볼 수 있듯이 이 기사에서 다루는 에러의 경우 M 시리즈 DAQ 디바이스에는 2개의 카운터가 있으며 유한 펄스 태스크에 2개의 카운터가 필요하기 때문에 리소스 오류가 발생합니다.
카운터 기능 | E 시리즈 | M 시리즈 | X 시리즈 |
---|
카운터/타이머 | 2, 24 bit | 2, 32 bit | 4, 32 bit |
---|
카운터 타임베이스 | 20MHz | 80MHz | 100MHz |
---|
구적 엔코더 입력 | N | Y | Y |
---|
디지털 디 바운싱 필터 | N | 카운터 작업에만 해당 | 모든 디지털 라인에서 사용 가능 |
---|
버퍼 카운터 입력 작업에 대한 최대 속도 벤치 마크 | 단일 카운터 (PCI)에서 150kHz | 380kHz (PCI) 1194kHz-621x 단일 카운터 | 4 개의 카운터 (PCIe)는 모두 10MHz입니다. |
---|
버퍼 카운터 출력? | N | N | Y |
---|
사례 3: 여러 작업을 사용하여 데이터 수집 보드의 동일한 물리적 채널에 액세스합니다.
각 물리적 채널은 하나의 작업에만 할당될 수 있습니다. 이것이 일어나고 있다는 사실을 깨닫지 못할 수도 있으므로 NI MAX에서 생성된 모든 태스크를 확인하고 실행중인 다른 태스크/subVI에 동일한 리소스가 포함되어 있지 않은 지 확인하십시오.
사례 4: 독립적으로 에러 없이 실행되지만 최상위 VI에서 호출될 때 에러를 생성하는 여러 SubVI를 사용합니다.
여러 NI-DAQmx VI가 이전에 열린 태스크를 지우지 않고 동일한 태스크를 다시 호출하면 에러 -50103가 발생할 수 있습니다. 이 에러를 방지하려면:
사례 5: DAQ 디바이스가 허용하는 것보다 더 많은 아날로그 입력 또는 아날로그 출력 태스크를 동시에 실행합니다.각 하드웨어 유형(
PCI/PCIe 및
cDAQ)에는 사용 가능한 동시 하드웨어 세션 수가 제한되어 있습니다. 이는 애플리케이션이 동시에 호출할 수 있는 동시 태스크 수를 제한합니다.
- 일반적인 유형의 작업을 하나의 작업으로 결합합니다. DAQmx 7.3 및 이후 버전은 채널 생성 VI를 통해 여러 아날로그 입력 유형을 지원합니다.
E, M, S, X 또는 AO 시리즈 DAQ 디바이스를 사용할 때 하드웨어 타이밍 아날로그 출력 태스크를 수행할 수 있습니다. 그러나 대부분의 장치는 하나의 하드웨어 타이밍 작업과 동시에 하나 이상의 소프트웨어 타이밍 작업 수행을 지원합니다. 이 기능을 사용하면 장치가 동일한 장치에서 동시에 다른 타이밍 특성을 가진 다른 신호를 생성할 수 있습니다.
- 하나의 출력 태스크에 여러 채널이 있는 경우 이 채널은 AO 샘플 클럭을 공유하므로 동일한 타이밍 정보를 공유합니다. 그러나 각 채널에서 다른 신호를 출력할 수 있습니다. 예제를 참조하십시오.
사례 6 : 아날로그 출력 파형을 출력하기 위해 샘플링 클록을 공유하지 않는 여러 하드웨어 타이밍 작업을 사용합니다.
LabVIEW의 예제를 참조하면 이 기능을 구현할 수 있습니다. Help>>Find Examples ...를 선택하여 Example Finder에서 Browse 탭을 선택한 다음 Hardware Input and Output>>DAQmx>>Analog Output>>Voltage-Continuous Output vi를 선택하십시오. 이렇게 하면 전면 패널에서 원하는 수의 채널을 선택하고 이러한 채널에 동일한 파형을 출력할 수 있습니다.
이러한 채널에서 위상 이동을 달성하기 위해 아래 스크린 샷과 유사한 방식으로 기존 예제를 편집할 수 있습니다.
웨이브폼 버퍼 생성(다중) VI를 저장하고 닫습니다. Cont Gen Voltage Wfm-Int Clk VI의 전면 패널에서 동시 파형을 출력할 두 채널을 선택합니다. 예를 들어 장치 1의 채널 0 및 1에서 파형을 출력하려면 물리적 채널이
Dev1/ao0:1이어야합니다.
LabVIEW에서 여러 NI-DAQmx 채널 선택을 참조하십시오. 프로그램이 실행 중일 때 파형은 아래 그림과 유사해야 합니다 (위상 편이는 180 °).
다른 해결방법은 다음과 같습니다.
하나의 하드웨어 타임 태스크과 동시에 여러 소프트웨어 타임 태스크E, M, S, X 또는 AO 시리즈 DAQ 디바이스를 사용할 때 하드웨어 타이밍 아날로그 출력 태스크를 수행할 수 있습니다. 그러나 대부분의 장치는 하드웨어 타이밍 작업과 함께 하나 이상의 소프트웨어 타이밍 작업의 동시 실행도 지원합니다. 이 기능을 사용하면 장치가 동일한 장치에서 타이밍 특성이 다른 신호를 동시에 생성할 수 있습니다.
하나의 하드웨어 타임 태스크에서 여러 AO 채널 사용하드웨어 타이밍 작업 내에 여러 AO 채널을 포함할 수 있습니다. 이러한 채널은 AO 샘플 클럭을 공유하기 때문에 동일한 타이밍 정보를 공유합니다. 그러나 각 채널에서 다른 신호를 출력할 수 있습니다.
예제를 참조하십시오.
참고: NI PXIe-4461/3과 같은 디바이스에서 두 아날로그 출력 모두 전용 타이밍 엔진이 있으므로 두 개의 독립적 인 타이밍 아날로그 출력 태스크를 각 채널에서 실행할 수 있습니다.
사례 7: LabVIEW 프로그램이 실행중인 동안 NI-MAX에서 태스크를 사용하려고 합니다.LabVIEW 프로그램이 현재 데이터 수집을 위해 DAQmx 태스크를 실행중인 경우,이 태스크에 해당하는 하드웨어 리소스를 예약합니다. 이는 NI-MAX가 하드웨어 리소스 또는 디바이스에 동시에 접근할 수 없음을 의미합니다.
이러한 충돌을 방지하기 위해 LabVIEW 프로그램을 실행하기 전이나 후에 또는 DAQmx 시작 태스크가 호출되기 전이나 DAQmx 태스크 지우기가 호출된 후 프로그램이 정지된 상태에서 NI-MAX 작업을 수행할 수 있습니다. 이러한 기능은 각각 하드웨어 리소스를 예약 및 해제합니다.
사례 8: 잘못된 소스를 사용하여 카운터 작업 실행선택한 소스가 실행하려는 작업에 대해 지원되는지 확인하십시오. (예를 들어, 온보드 클록 대신 디지털 에지용 내부 카운터에 배선합니다).