I/O 변수는 I/O 데이터를 전송하는 공유 변수의 한 종류입니다. 로컬에서 접근할 때 I/O 변수는 NI 스캔 엔진을 사용해 I/O 데이터에 단일 포인트 접근합니다. 로컬에서 접근할 때 I/O 변수는 NI Publish-Subscribe Protocol (NI-PSP)을 사용해 I/O 데이터에 단일 포인트 접근하거나 버퍼 접근합니다. I/O 변수는 물리적인 I/O 채널과 직접 통신하거나, 사용자 I/O 데이터를 동일한 타겟 상에서 실행 중인 FPGA VI와 리얼타임(RT) VI 간에 전송시킬 수 있습니다.

주의 NI 스캔 엔진은 데이터를 버퍼하지 않습니다. I/O 변수를 로컬에서 접근할 때 데이터 손실을 방지하려면, 다음 포인트가 도착하기 전에 각 데이터 포인트를 읽어야 하며, NI 스캔 엔진 주기보다 빨리 데이터를 쓰는 것을 피하십시오.

다음 테이블에는 I/O 변수를 사용하는 경우가 요약되어 있습니다:

용도 I/O 변수 타입
LabVIEW FPGA Module을 사용하지 않고 I/O 하드웨어와 LabVIEW VI 사이에서 스케일된 I/O 데이터를 전송함 스케일된 I/O 데이터를 위한 I/O 변수
같은 하드웨어 디바이스 상에서 실행 중인 LabVIEW FPGA VI와 LabVIEW Real-Time VI 사이에서 FPGA 처리된 사용자 정의 I/O 데이터를 전송함 사용자 정의 FPGA I/O 데이터를 위한 I/O 변수
노트 NI 스캔 엔진 지원에 대한 정보는 관련 하드웨어 디바이스 문서를 참조하십시오.

스케일된 I/O 데이터를 위한 I/O 변수

스케일된 I/O 데이터를 위해 I/O 변수를 사용하려면, 먼저 지원되는 I/O 디바이스를 NI 스캔 엔진이 설치된 타겟에 연결한 다음에 LabVIEW 프로젝트에 있는 타겟에서 해당 I/O 디바이스를 추가합니다.

프로젝트 탐색기 윈도우에서 지원되는 타겟에 지원되는 I/O 디바이스를 추가하면, LabVIEW는 자동으로 각 I/O 채널에 대해 I/O 변수를 추가합니다. 현재 LabVIEW 프로젝트에 포함된 타겟에 물리적으로 I/O 디바이스를 추가하는 경우, 이 I/O 디바이스를 프로젝트에 추가하고 이에 대응하는 I/O 변수를 먼저 배포해야 사용할 수 있습니다.

현재 LabVIEW 프로젝트의 일부인 타겟에서 물리적으로 I/O 디바이스를 제거하는 경우, 프로젝트에서 I/O 디바이스를 삭제하고 해당 I/O 디바이스를 포함하고 있었던 타겟을 다시 배포해야 합니다. 타겟을 재배포하면 타겟에서의 설정이 프로젝트 설정을 반영하도록 보장할 수 있습니다. 프로젝트 및 시스템 비교 대화 상자를 사용하면 프로젝트와 타겟 설정이 일치하는지 확인할 수 있습니다.

사용자 FPGA I/O 데이터를 위한 I/O 변수 (FPGA Module 또는 Real-Time Module)

프로젝트가 NI 스캔 엔진을 지원하는 FPGA 타겟을 포함하고 있는 경우, 동일한 하드웨어 디바이스 상에서 실행 중인 FPGA VI와 RT VI 사이에서 사용자 I/O 데이터를 전송할 사용자 정의 I/O 변수를 생성할 수 있습니다.

사용자 정의 I/O 변수를 호스트하는 섀시에서 실행 중인 FPGA VI와 RT VI의 블록다이어그램에 사용자 정의 I/O 변수를 추가할 수 있습니다. 하지만, 모든 I/O 변수는 한 방향으로만 동작하기 때문에 각 사용자 정의 I/O 변수의 방향을 FPGA에서 호스트로 또는 호스트에서 FPGA로 중에서 하나로 설정해야 합니다. 예를 들어, FPGA VI에서 아날로그 I/O 데이터를 수집하고 데이터에 FFT를 수행하고, 이렇게 처리된 데이터를 FPGA에서 호스트로 I/O 변수를 사용하여 RT VI에 있는 컨트롤 루프에 전송한 후, 호스트에서 FPGA로 I/O 변수를 사용하여 RT 컨트롤 루프로부터의 출력 데이터를 다시 FPGA에 전송하여 물리적 I/O 채널에 출력할 수 있습니다.

사용자 정의 I/O 변수를 생성하려면 LabVIEW FPGA Module을 설치해야 합니다. 그러나 Real-Time Module만 있는 경우, LabVIEW FPGA Module을 설치하지 않아도 RT VI에서 사용자 정의 I/O 변수를 사용할 수 있습니다. 예를 들어, LabVIEW FPGA Module을 보유한 개발자는 사용자 정의 I/O 변수를 생성하고, 이 변수를 사용하는 FPGA 비트 파일을 컴파일할 수 있습니다. 이후, 개발자는 FPGA Module이 없는 다른 개발자에게 해당 비트 파일과 사용자 정의 I/O 변수를 포함하는 LabVIEW 프로젝트를 배포할 수 있습니다. 그러면, 이 프로젝트를 사용하여 CampactRIO 섀시에서 해당 비트 파일을 실행할 수 있습니다. 이 경우, 두번째 개발자는 사용자 정의 I/O 변수를 생성할 수는 없지만 Real-Time Module을 사용하여 첫번째 개발자가 생성한 사용자 정의 I/O 변수에 접근할 수 있습니다.

(윈도우) 사용자 정의 I/O 변수에서 네트워크 공개가 활성화되어 있는 경우, 같은 LabVIEW 프로젝트 내에 있는 모든 RT VI 또는 윈도우 기반의 VI에서 이 변수를 사용할 수 있습니다. 예를 들어, 네트워크에 공개된 I/O 변수를 사용하여 Windows에서 실행되는 사용자 인터페이스 VI를 생성할 수 있습니다.

노트 사용자 정의된 I/O 변수는 오직 스캔 접근만 지원합니다. 사용자 정의된 I/O 변수에 대해 다이렉트 접근은 사용할 수 없습니다.

I/O 변수 설정하기

편집 시나 런타임에 대화식으로 또는 런타임에 프로그램적으로 I/O 변수를 설정할 수 있습니다. 또한 이 방법을 섞어서 사용할 수 있습니다. 다음 테이블에서는 각 방법의 장점과 단점이 요약되어 있습니다:

방법 용도 장점 단점
대화식 프로젝트 탐색기 윈도우에 대한 접근 권한이 있을 때 I/O 변수에 대한 셋팅 설정하기 프로그래밍이 덜 필요함.
  • 블록다이어그램을 볼 때 설정 셋팅이 보이지 않음.
  • 변수를 호스트하는 타겟에서만 I/O 변수에 대한 셋팅을 설정할 수 있습니다.
프로그램적
  • 프로젝트 탐색기 윈도우에 대한 접근 권한이 없을 때 I/O 변수에 대한 셋팅 설정하기. 예를 들어, I/O 변수를 사용하는 독립 어플리케이션을 생성할 계획이 있고 어플리케이션 실행 중 I/O 변수에 대한 설정 셋팅을 변경할 필요가 있을 경우, I/O 변수를 프로그램적으로 설정합니다.
  • I/O 변수를 호스트하는 타겟 이외의 컴퓨터에서 I/O 변수에 대한 셋팅 설정하기 예를 들어, 호스트 컴퓨터에서 CompactRIO 타겟의 I/O 변수를 설정할 필요가 있을 경우, I/O 변수를 프로그램적으로 설정합니다.
  • 블록다이어그램을 볼 때 설정 셋팅이 보임.
  • I/O 변수를 원격으로 설정할 수 있습니다.
프로그래밍이 더 필요함.

대화식으로 I/O 변수 설정하기

공유 변수 프로퍼티 대화 상자를 사용하여 단일 I/O 변수를 설정하거나 여러 변수 편집기 윈도우를 사용하여 동시에 여러 I/O 변수를 설정합니다.

I/O 변수를 사용하는 VI가 실행 중인 동안에도 I/O 변수의 설명, 네트워크, 스케일링 옵션을 업데이트할 수 있습니다. 그러나 실행 중에 I/O 변수의 이름이나 데이터 타입은 업데이트할 수 없습니다.

노트 새 I/O 변수를 추가하거나 I/O 변수 설정을 변경할 때, 새 설정을 활성화하려면 변수를 배포해야 합니다.

프로그램적으로 I/O 변수 설정하기

다음 단계를 따라 변수 프로퍼티를 사용하여 I/O 변수를 프로그램적으로 설정합니다:

  1. 블록다이어그램에 변수 프로퍼티 노드를 추가합니다.
  2. 참조 입력에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 생성≫상수를 선택합니다.
  3. 공유 변수 참조 번호 상수의 오른쪽에 있는 화살표 버튼을 클릭한 후 탐색을 선택합니다.
  4. 변수 객체 탐색 대화 상자를 사용하여 설정하려는 I/O 변수를 선택합니다.
  5. 공유 변수 참조 번호 상수에서 마우스 오른쪽 버튼을 클릭한 후 변수 클래스 선택 바로 가기 메뉴를 통해 사용하려는 프로퍼티의 클래스를 선택합니다.
  6. 변수 프로퍼티 노드의 흰색 영역을 클릭한 후 사용하려는 프로퍼티를 선택합니다.
  7. (옵션) 위치 도구를 사용해서 변수 프로퍼티 노드의 크기를 조정하면, 한 개 이상의 프로퍼티를 동시에 디스플레이할 수 있습니다.

다음 그림은 원격 타겟의 I/O 변수를 프로그램적으로 설정하는 예를 보여줍니다:

이 예에서, 변수 프로퍼티 노드는 CompactRIO 모듈 채널에 대응하는 I/O 변수를 설정하여 해당 채널에 대한 전류 리미트를 지정합니다.

노트 5초 후에도 변수 프로퍼티 노드가 원격 I/O 변수에 연결될 수 없으면, 설정 호출이 타임아웃됩니다. 다음 단계를 따라 타임아웃 기간을 변경합니다:
  1. labview\LabVIEW.ini를 텍스트 파일로 엽니다.
  2. 새 라인에서, RemoteIOVConfigurationTimeout=을 입력하고 이어서 새로운 타임아웃 기간의 초 단위 수를 입력합니다. 예를 들어, 타임아웃 기간을 10초로 연장하려면, RemoteIOVConfigurationTimeout=10을 입력합니다.
  3. 파일을 저장하고 닫습니다.

I/O 변수 배포하기

I/O 변수를 배포하려면, 프로젝트 탐색기 윈도우에서 해당 I/O 변수를 포함하는 프로젝트 아이템에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 배포를 선택합니다.

I/O 변수 노드를 포함하는 VI를 실행할 때, LabVIEW는 해당 변수가 속한 I/O 변수 컨테이너를 자동으로 배포합니다. 이로써 컨테이너에 있는 모든 I/O 변수가 배포됩니다.

노트 I/O 드라이버가 초기화에 실패하는 경우, LabVIEW는 프로젝트에서 모든 I/O 변수에 대한 로드 작업을 강제 종료합니다. 이 경우에 I/O 변수가 여전히 프로젝트에 나타날 수도 있지만, 어플리케이션에서 해당 변수에 접근하려고 시도하면 런타임 에러가 발생합니다. I/O 드라이버 에러 디버깅에 대한 정보는 해당 타겟 I/O 드라이버 문서를 참조하십시오.

I/O 변수 값 스케일하기

공유 변수 프로퍼티 대화 상자의 스케일링 페이지에 있는 I/O 변수 또는 가명에서 선형 스케일링을 활성화할 수 있습니다. 하지만, I/O 변수는 비선형 스케일링을 지원하지 않습니다.

노트 일부 I/O 버스는 하드웨어 스케일링을 구현합니다. 이 경우, LabVIEW I/O 변수 스케일링은 추가적인 스케일링 레이어를 제공합니다. LabVIEW는 하드웨어 스케일링을 덮어쓰지 않습니다. LabVIEW는 I/O 버스로부터의 하드웨어 스케일된 값을 원시 값으로 사용하여 소프트웨어 스케일된 값을 계산합니다.

I/O 가명 생성하기

I/O 변수의 가명을 생성하여, 다른 상황에서 I/O 데이터의 이름과 스케일을 서로 다르게 사용할 수 있습니다. 예를 들어, 열전쌍에 연결된 I/O 변수를 갖고 있는 경우에 섭씨와 화씨라는 가명을 생성할 수 있습니다. 그런 다음에 각 가명을 각자 스케일하여, 두 종류의 측정 단위에서 온도를 디스플레이하는데 사용할 수 있습니다.

I/O 가명의 값은 직상위의 값에 양방향으로 링크되어 있기 때문에 직상위 값을 업데이트하면 I/O 가명의 값이 업데이트되고, I/O 가명의 값을 업데이트하면 직상위의 값이 업데이트됩니다. 또한, I/O 가명 연결 링크가 업데이트 되면 연결된 다른 링크도 모두 업데이트 됩니다.

단일 I/O 가명 생성하기

I/O 가명을 생성하려면, 프로젝트 탐색기 윈도우에서 I/O 변수를 포함하는 타겟에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 새로 만들기≫변수를 선택하여 공유 변수 프로퍼티를 디스플레이합니다. I/O 가명의 이름을 입력하고, 변수 타입 풀다운 메뉴에서 I/O 가명을 선택합니다. 이후, 탐색 버튼을 클릭하고 새 I/O 가명과 연계시키려는 기존의 I/O 변수 또는 I/O 가명을 선택합니다.

노트 가명을 I/O 변수에 연계시킬 때, 가명의 데이터 타입이 기본 I/O 변수의 데이터 타입과 일치하는지 점검하십시오.

프로젝트 탐색기 윈도우를 사용하여 I/O 가명의 이름, 설명, 네트워크 공개 셋팅, 스케일링을 편집할 수 있습니다. 또한, 여러 변수 편집기 윈도우를 사용하여 여러 I/O 가명을 동시에 편집할 수 있습니다.

노트 I/O 가명 및 다른 타입의 공유 변수를 모두 포함하는 라이브러리를 배포할 수 없습니다. I/O 가명은 별도의 라이브러리에서 배포해야 합니다.

여러 I/O 가명 동시에 생성하기

일괄 변수 생성 대화 상자를 사용하여 여러 I/O 가명을 동시에 생성할 수 있습니다. 다음 단계에 따라 일괄적으로 여러 I/O 가명을 생성하십시오:

  1. 단일 I/O 가명을 생성하여, 일괄 생성 프로세서에서 템플릿으로 사용합니다.
  2. I/O 가명을 포함하는 변수 라이브러리에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 변수 생성을 선택하여 일괄 변수 생성 대화 상자를 디스플레이합니다.
  3. 프로퍼티 복사를 선택하고, 탐색 버튼을 클릭한 후에 템플릿으로 사용하려면 기존의 I/O 가명을 선택합니다.
  4. 생성하려는 I/O 가명의 개수를 생성할 개수 필드에 입력하고 확인 버튼을 클릭하여 새 I/O 가명을 생성합니다.

이 단계를 모두 마치면, LabVIEW는 자동으로 여러 변수 편집기 윈도우를 열고 이를 통해 사용자가 새로 만든 변수를 편집할 수 있습니다. 예를 들어, 각 I/O 가명의 가명 경로를 편집하여 특정 I/O 변수에 연계시킬 수도 있습니다.

I/O 변수 값 강제 변환하기

I/O 변수의 값을 대화식 또는 프로그램적으로 강제 변환할 수 있습니다. I/O 변수를 강제 변환하면, 이와 연계된 I/O 데이터는 변수의 강제 변환을 해제하거나, 타겟을 재부팅하거나, 변수가 다른 값을 취하도록 강제 변환할 때까지 사용자가 지정한 값을 취하게 됩니다. I/O 변수에 대한 강제 변환을 해제하면, I/O 변수에 대한 통제 권한이 NI 스캔 엔진에게 되돌아갑니다.

노트 I/O 변수가 강제 변환될 때, 각 I/O 변수에 대한 접근 시간은 강제 변환하지 않는 경우에 비해 다소 길어집니다. 이로 인해 루프 주기가 강제 변환 오버헤드를 처리할 정도로 길지 않을 경우에, 루프의 실행이 느려질 수 있습니다.

대화식으로 I/O 변수 값 강제 변환하기

NI 배포된 시스템 관리자를 사용하여 I/O 채널을 디버깅하거나 수동으로 컨트롤하는 동안에 I/O 변수의 값을 강제 변환 또는 강제 변환을 해제합니다. LabVIEW에서 도구≫배포된 시스템 관리자를 선택하여 NI 배포된 시스템 관리자를 시작합니다. 또한, 프로젝트 탐색기 윈도우에 있는 RT 타겟에서 마우스 오른쪽 버튼을 클릭하고 유틸리티≫시스템 관리자에서 보기를 선택하여, 배포된 시스템 관리자를 시작할 수 있습니다.

노트 NI 배포된 관리자의 보안 셋팅을 사용하여, 사용자가 NI 배포된 시스템 관리자 내에서 I/O 변수를 강제 변환하는 것을 방지할 수 있습니다.

프로그램적으로 I/O 변수 값 강제 변환하기

강제 변환 VI를 사용하여 I/O 변수를 프로그램적으로 강제 변환 및 강제 변환 해제합니다.

I/O 가명 강제 변환하기

강제 변환은 표준 I/O 변수뿐만 아니라 가명에도 적용됩니다. I/O 변수를 강제 변환하면, 이와 연계된 가명도 모두 강제 변환하는 것입니다. 가명을 강제 변환하면, 직상위 I/O 변수와 이와 연계된 다른 가명도 모두 강제 변환하는 것입니다.

노트 LabVIEW는 I/O 채널의 실제 값처럼 강제 변환된 값에 스케일링을 적용합니다. 따라서, 가명 연결 고리에서 어느 한 링크를 강제 면환하면 그 연결 고리에 있는 모든 링크가 적절하게 스케일링됩니다.

동시에 타겟에 있는 모든 I/O 변수를 강제 변환 및 강제 변환 해제하기

타겟의 글로벌 강제 변환 상태를 사용하여, 타겟에서 모든 I/O 변수를 강제 변환 및 강제 변환 해제할 수 있습니다. 대화식 또는 프로그램적으로 타겟에서 글로벌 강제 변환을 활성화 및 비활성화시킬 수 있습니다.

NI 배포된 시스템 관리자에 있는 강제 변환 활성화강제 변환 비활성화 버튼을 사용하여, 대화식으로 타겟에서 글로벌 강제 변환을 활성화하고 비활성화합니다. 변수 강제 변환 활성화변수 강제 변환 비활성화 버튼을 사용하여, 프로그램적으로 타겟에서 강제 변환을 활성화하고 비활성화합니다.

다음 단계에 따라 타겟에 있는 모든 I/O 변수를 동시에 강제 변환합니다:

  1. 개별적으로 I/O 변수를 개별적으로 강제 변환시킬 필요가 없이, 원하는 I/O 변수의 강제 변환 값을 개별적으로 설정할 수 있도록 타겟에서 강제 변환을 비활성화합니다.
  2. 타겟에 있는 I/O 변수 모두에 대해 원하는 강제 변환 값을 설정합니다.
  3. 타겟에서 강제 변환을 활성화하여, 타겟에 있는 모든 I/O 변수를 동시에 강제 변환합니다.

원격으로 I/O 변수에 접근하기

I/O 변수에서 네트워크 공개가 활성화되어 있는 경우, I/O 변수를 호스트하는 타겟과 같은 네트워크에 연결되어 있는 원격 컴퓨터에서 그 I/O 변수에 접근할 수 있습니다. NI 배포된 시스템 관리자에서 I/O 변수 프로브 보기를 사용하여 대화식으로 원격 I/O 변수에 접근할 수 있습니다. 또한, VI에서 프로그램적으로 원격 I/O 변수에 접근할 수 있습니다.

공유 변수 프로퍼티 대화 상자를 사용하여 I/O 변수에서 네트워크 공개를 활성화 또는 비활성화합니다. 호스트 컴퓨터에서 I/O 값을 모니터링해야 하거나, 원격 타겟에서 I/O 변수에 접근할 필요가 있는 경우에는 네트워크 공개를 활성화합니다. 스캔 엔진 페이지를 사용하여 타겟에 있는 모든 I/O 타겟에 대해 글로벌 네트워크 공개 속도를 설정할 수 있습니다.

노트 I/O 변수에 원격으로 접근할 계획이 없는 경우, 네트워크 공개를 비활성화하여 CPU 오버헤드를 최소화하십시오. I/O 변수 또는 I/O 가명에서 네트워크 공개를 비활성화하면, 다른 컴퓨터에서 실행 중인 VI에 있는 변수에 접근할 수 없습니다. 하지만, NI 배포된 시스템 관리자에서 변수를 강제 변환할 수 있습니다. 사용자가 I/O 변수를 강제 변환하지 못하도록 방지하려면, 시스템 관리자의 보안 셋팅을 사용합니다.

로컬에서 I/O 변수에 접근하기

LabVIEW는 I/O 변수를 글로벌 스캔 엔진 메모리 맵에 추가하고 동시에 모든 I/O 변수의 값을 업데이트합니다. 하지만, I/O 변수를 호스트하는 로컬 타겟에서의 I/O 변수 접근에 대해 각 노드가 스캔 접근 또는 다이렉트 접근 중에 하나를 사용하도록 설정할 수 있습니다.

다음 단계에 따라 I/O 변수 노드의 로컬 접근 모드를 선택합니다:

  1. 블록다이어그램에 있는 I/O 변수 노드에서 마우스 오른쪽 버튼을 클릭합니다.
  2. 바로 가기 메뉴에서 로컬 접근 모드를 선택합니다.
  3. 노드에 대해 사용하려는 접근 모드를 선택합니다.
노트 각 변수에 대해 사용하는 접근 모드와는 상관 없이, LabVIEW는 모든 I/O 변수를 글로벌 스캔 엔진 메모리 맵에 추가합니다.

로컬 접근 모드 선택하기

일반적으로 스캔 접근은 업데이트 속도가 비슷한 I/O 채널 그룹에 적합하고, 다이렉트 접근은 스캔 주기에 대해 비동기적으로 업데이트되는 개별 I/O 채널에 적합합니다. 다음 테이블은 각 I/O 접근 방법을 사용하는 경우에 대한 요약 정보를 보여줍니다:

일반적인 용도 접근 방법
공통된 업데이트 속도를 갖는 I/O 채널에 대한 단일 포인트 접근 스캔
긴급 정지 출력에 대한 단일 쓰기와 같이 (사용자 정의된 I/O 변수에서는지원되지 않음), NI 스캔 엔진 주기에 대해 비동기적인 로컬 I/O 채널에 대한 단일 포인트 접근 다이렉트
노트 NI 스캔 엔진 주기보다 업데이트 속도가 느린 I/O 채널에 대해 다이렉트 접근을 사용할 수 있습니다. 그러나 이런 경우에는 일반적으로 스캔 접근이 다이렉트 접근보다는 같은 I/O 동작을 더 효율적으로 제공합니다.

스캔 접근

LabVIEW는 I/O 변수 노드를 설정하여 스캔 접근을 사용하도록 기본설정됩니다. 같은 속도로 업데이트 되는 I/O 채널 세트 및 확장 I/O 채널에 대해 스캔 접근을 사용합니다. 스캔 접근은 스캔 엔진 메모리 맵을 사용하여, 다음 그림에서 보이는 것처럼, 무차단형 I/O 읽기와 쓰기를 수행합니다:

스캔 접근을 사용하여 I/O 변수에서 읽을 때마다, NI 스캔 엔진은 새 값을 기다리거나 차단하지 않고 메모리 맵에 저장된 최신 값을 즉시 반환합니다. 각 스캔에서, LabVIEW는 최신 I/O 값을 읽고 이 값을 NI 스캔 엔진 메모리 맵에 씁니다.

스캔 접근을 사용하여 I/O 변수에 대해 쓰기 작업을 취할 때마다, 스캔 엔진 메모리 맵에 저장된 이전 값을 덮어쓰게 됩니다. 각 스캔이 진행될 때마다, LabVIEW는 메모리 맵에 저장된 값을 물리적인 I/O 채널에 밀어넣습니다. 데이터 손실을 막으려면, 모든 I/O 변수 쓰기 작업을 스캔 주기에 동기화해야 합니다.

다이렉트 접근

스캔 주기에 대해 비동기적으로 단일 포인트 로컬 I/O 채널을 읽거나 쓰려면 다이렉트 접근을 사용합니다. 어플리케이션이 가능한 빨리 값을 써야 하는 경우 다이렉트 접근을 사용할 수 있습니다. 다음 그림에서 보이는 것처럼, 다이렉트 접근은 스캔 엔진 메모리 맵을 건너뛰고 I/O 디바이스 드라이버와 직접 통신하여 비동기식(Non-Blocking) I/O 읽기와 쓰기 작업을 수행합니다:

노트 사용자 정의 I/O 변수는 다이렉트 접근을 지원하지 않습니다.

노트 NI 스캔 엔진을 RIO Scan Interface와 함께 사용하는 경우, 하드웨어 스캔 신호가 I/O에 대한 업데이트를 제어합니다. 하드웨어 스캔 신호의 유휴 상태에서 다이렉트 접근을 통해 값을 쓰면, 이 값이 하드웨어 스캔 신호가 끝난 후에 하드웨어로 전달됩니다.
노트 컨트롤러, I/O 모듈, 통신 프로토콜에 따라 다이렉트 접근의 속도는 다릅니다. I/O 접근 속도에 대한 추가적인 정보는 관련 하드웨어 문서를 참조하십시오.

I/O 변수 노드 아이콘 해석하기

블록다이어그램에 있는 각 I/O 변수 노드는 다음에 나열된 접근 방법 중 한 개를 나타내는 문양을 가집니다.

접근 방법 노드 모양
NI-PSP

스캔

다이렉트

데이터 통신 메소드