NI 스캔 엔진을 사용하여 스캔 I/O 데이터에 대한 단일 포인트에 접근합니다.

NI 스캔 엔진 사용하기

NI 스캔 엔진은 글로벌 메모리 맵에 데이터를 저장하고 스캔 주기라고 하는 단일 속도로 모든 값을 업데이트하는 스캔을 사용하여, I/O 채널과 같은 데이터 채널 세트에 대한 효율적 단일 포인트 접근을 가능하게 합니다. NI 스캔 엔진은 기본적으로 Windows용 LabVIEW에 설치됩니다. 또한, RT Series PXI와 CompactRIO 타겟과 같은 지원되는 LabVIEW 타겟에 NI 스캔 엔진을 설치할 수 있습니다. NI 스캔 엔진 지원에 대한 정보는 관련 하드웨어 디바이스 문서를 참조하십시오.

(Real-Time Module) LabVIEW가 CPI 사용 통계를 리포트할 때 스캔 스레드를 시간 결정적인 항목에 포함시키지만, 기본적으로 RT 타겟에서 NI 스캔 엔진은 시간 결정적인 우선순위보다 높은 스레드에서 실행됩니다. NI 스캔 엔진을 타이밍 결정성 높은 우선순위보다 높게 실행할 때, 어플리케이션의 타이밍 결정성 높은 섹션을 스캔 주기와 동기화해야 합니다. 이를 통해 스캔 스레드가 어플리케이션의 확정성에 영향을 미치지 않도록 보장할 수 있습니다. I/O가 가장 우선순위가 높은 태스크가 아닌 어플리케이션에 대해서도 스캔 엔진의 우선 순위가 시간 결정적인 우선 순위와 Timed 구조의 우선 순위 사이에 있도록 설정할 수 있습니다. 타겟에서 I/O 변수를 사용할 계획이 없는 경우, 타겟에 NI 스캔 엔진을 설치하지 마십시오. 이미 타겟에 NI 스캔 엔진이 설치되어 있는 경우, NI Measurement & Automation Explorer (MAX)를 사용하여 NI 스캔 엔진을 제거할 수 있습니다.

노트 (Windows) Windows에서 사용 가능한 NI 스캔 엔진 우선순위는 표준 우선순위가 유일합니다. Windows OS의 비확정적(non-deterministic)인 특성 때문에, Windows 상에서 실행 중일 때 NI 스캔 엔진의 타이밍은 보장되지 않습니다.

NI 스캔 엔진 셋팅 설정하기

스캔 엔진 페이지를 사용하여 NI 스캔 엔진의 스캔 주기, 네트워크 공개 속도, 우선 순위 레벨을 포함하는 스캔 엔진 셋팅을 설정할 수 있습니다.

NI 배포된 시스템 관리자를 사용하여 스캔 엔진의 결함모드를 모니터하고 관리합니다. 도구≫배포된 시스템 관리자를 선택하여 NI 배포된 시스템 관리자를 디스플레이합니다. 또한, NI 스캔 엔진 VI를 사용하여 프로그램적으로 스캔 엔진 셋팅을 보고 설정할 수 있습니다.

NI 스캔 엔진 배포하기 및 실행하기

프로젝트 탐색기 윈도우에서 NI 스캔 엔진 셋팅을 설정한 다음, 내 컴퓨터나 RT 타겟처럼 NI 스캔 엔진을 사용하는 프로젝트 아이템을 배포해야 이 셋팅이 적용됩니다.

(Windows) 사용자가 타겟을 처음으로 배포할 때 NI 스캔 엔진이 실행을 시작하고, 사용자가 프로젝트를 닫으면 실행을 멈춥니다. 빌드 어플리케이션이 실행될 때 NI 스캔 엔진과 I/O 변수를 자동으로 배포하려면, 어플리케이션을 만들기 전에 어플리케이션 프로퍼티 대화 상자의 고급 페이지에 있는 타겟 하드웨어 설정 포함 확인란에 확인 표시를 해야 합니다.

(Real-Time Module) RT에서 NI 스캔 엔진을 실행하면, 사용자가 타겟을 부팅할 때 NI 스캔 엔진은 자동으로 시작하며 사용자가 타겟을 종료할 때까지 계속 실행됩니다.

하나의 컴퓨터는 한 번에 오직 하나의 NI 스캔 엔진 인스턴스만을 실행할 수 있습니다. 예를 들어, NI 스캔 엔진을 사용하는 Windows 빌드 어플리케이션을 생성하는 경우에는 어플리케이션을 만든 프로젝트를 닫아야만 이후에 같은 컨퓨터에서 어플리케이션을 실행할 수 있습니다. 여러 LabVIEW 프로젝트에서 여러 NI 스캔 엔진 인스턴스를 설정할 수 있지만, NI 스캔 엔진 인스턴스가 실행 중인 경우에는 NI 스캔 엔진을 사용하는 다음 프로젝트의 배포가 실패하게 됩니다. 다른 NI 스캔 엔진 인스턴스를 실행하려면, 먼저 현재의 인스턴스를 종료해야 합니다.

스캔 엔진 타이밍

NI 스캔 엔진은 사용자가 스캔 엔진 페이지에서 지정한 스캔 주기에 따라 결정되는 일정한 간격으로 실행됩니다. 다음 그림에서 보이는 것처럼, 스캔 자체와 어플리케이션 로직을 모두 처리할 수 있을 정도로 충분한 주기를 선택하십시오:

노트 스캔에 소요되는 시간은 타겟에 배포된 I/O 아이템의 개수 및 타입에 따라 달라집니다. 스캔 엔진의 성능을 최대화하려면, 어플리케이션에서 사용할 계획이 없는 모든 I/O 아이템의 배포를 취소하십시오.

스캔 주기를 프로그램적으로 읽으려면, [스캔 엔진 주기 얻기] VI를 사용합니다. 스캔 주기를 프로그램적으로 설정하려면, [스캔 엔진 주기 설정하기] VI를 사용합니다.

노트 (Real-Time Module) 일반적으로 리얼타임 루프는 한두번의 예비 반복을 수행한 후에야 확정적(deterministic)으로 실행을 시작할 수 있습니다. 어플리케이션이 타이밍 요구조건을 충족하는지 점검하기 이전에, 각각의 시간 결정적인 루프가 예비 반복을 실행할 수 있도록 허용해야 합니다.

스캔 엔진에 동기화하기

(Real-Time Module) NI 스캔 엔진이 시간 결정적인 우선순위보다 낮은 우선순위로 실행되도록 설정하지 않는 한, 시간 결정적인 코드를 스캔 주기에 동기화시켜야 어플리케이션의 확정성에 영향을 미치는 충돌을 방지할 수 있습니다.

Timed 구조의 실행을 스캔 엔진과 동기화하려면, 스캔 엔진에 동기화 타이밍 소스를 사용합니다. Timed 구조를 사용하지 않으려는 경우, [스캔 엔진에 동기화] VI를 사용하여 스캔 엔진에 동기화할 수 있습니다. 두 동기화 방법 모두, 앞의 그림에서 스캔 끝이라는 라벨이 붙은 시간에 실행을 트리거합니다. I/O 변수를 일관성 있는 데이터 세트로 사용하려면, 다음 스캔 반복 이전에 동기화된 코드가 실행을 마치도록 보장해야 합니다. 하지만, 코드가 일관성 있는 데이터 세트에 의존하지 않는 경우에는 스캔 반복을 건너뛸 수 있습니다.

노트 동기화된 코드가 다음 스캔 반복 이전에 실행을 완료하지 않는 경우, I/O 변수의 에러 클러스터에 의해 리포트된 정보는 I/O 값과의 동기화 상태를 지속하지 못할 수 있습니다.
노트 NI 스캔 엔진 동기화와 관련된 VI에서 강제 종료 버튼을 클릭할 때, 현재의 스캔 반복이 완료될 때까지 VI는 강제 종료하지 않습니다. 따라서, 스캔 주기가 길은 경우에는 VI가 일시적으로 지연되는 것처럼 보일 수 있습니다.

NI 스캔 엔진 모드

노트 오직 특정 타겟과 디바이스가 NI 스캔 엔진 모드를 사용합니다. 로컬 I/O 모듈을 가진 CompactRIO 타겟은 NI 스캔 엔진 모드를 사용하지 않습니다. 하드웨어 특정의 모드 동작에 대한 정보는 해당 I/O 하드웨어 문서를 참조하십시오.

LabVIEW가 정의하는 NI 스캔 엔진 모드는 4가지 입니다:

0 초기화 모드 시작 중일 때에만 잠시 발생합니다.
1 설정 모드 NI 스캔 엔진 모드를 사용하는 하드웨어에서 스캔 엔진 셋팅을 설정할 때 반드시 사용해야하는 모드입니다.
2 활성 모드 스캔 엔진이 실행되고 값을 업데이트하는 모드입니다.
3 결함 모드 복구 불가능하거나 주요 결함이 발생할 때 트리거되는 모드입니다.
노트 타겟에 따라 결함 모드의 동작이 달라집니다. 결함 모드 동작에 대한 정보는 특정 타겟 하드웨어 문서를 참조하십시오.

NI 배포된 시스템 관리자를 통해 스캔 엔진 모드를 보고 설정합니다. NI 배포된 시스템 관리자는 EngineState 아이템을 사용하여 스캔 엔진 모드의 값을 디스플레이합니다. 스캔 엔진 모드를 프로그램적으로 읽으려면, [스캔 엔진 모드 얻기] VI를 사용합니다. 스캔 엔진 모드를 프로그램적으로 설정하려면, [스캔 엔진 모드 설정하기] VI를 사용합니다.

데이터 통신 메소드