랩뷰에서의 데이터 통신 방법 참고

랩뷰에서 데이터 통신 방법 매뉴얼 참고
http://zone.ni.com/reference/ko-XX/help/371361R-0129/lvconcepts/data_comm/


변수 인터페이스에서, 로컬변수와 데이터 값 참조 부분의 차이 확인

1. 단일 VI에서 접근 할 수 있는 데이터를 저장함.
2. 데이터 값 참조는 큰 데이터 세트를 저장함. 메모리 관리를 돕고, 데이터 복제를 방지한다.

컨트롤/인디케이터, 로컬변수 프로퍼티 노드의 차이점
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019LXrSAM&l=ko-KR

*******************************

문의사항

내 VI에서 값 프로퍼티 노드 또는 바로 컨트롤/인디케이터를 사용하는 대신 로컬 변수를 사용할 때 다르게 실행됩니다. 어떤 차이점이 있습니까?

해결책

프런트 패널 컨트롤을 업데이트하는 데 사용할 방법을 선택할 때 고려해야 할 몇 가지 성능상의 절충점이 있습니다. 사용 가능한 업데이트 방법은 컨트롤/인디케이터, 로컬 변수 또는 값 프로퍼티 노드입니다. 다음은 각 방법의 장점과 단점입니다.

컨트롤/인디케이터
장점
  • 동일한 값을 지속적으로 업데이트 할 때 프런트 패널 업데이트를 방지하는 로직 내장. 이렇게하면 프런트 패널을 다시 그릴 수 없습니다.
  • 포인터의 참조를 해제하거나 메모리의 데이터 사본을 만들 필요가 없습니다. 따라서 가장 빠르고 메모리 집약적인 옵션입니다.
단점
  • 클러스터/배열의 단일 항목에는 쓸 수 없고 전체 변수를 업데이트해야합니다
C 유사점
(이것은 C와 같지 않지만 해당 프런트 패널 컨트롤/인디케이터를 업데이트하기 위해 해야 할 단계를 보여줍니다).

int x;   // Front Panel Indicators
x = 10;  // Write directly to the Front Panel Indicator.



로컬 변수
장점
  • 동일한 값을 지속적으로 업데이트 할 때 프런트 패널 업데이트를 방지하는 로직을 내장했습니다. 이렇게하면 프런트 패널을 다시 그릴 수 없습니다.
  • 프로퍼티 노드와 달리 포인터를 참조 해제 할 필요가 없습니다. 따라서 프로퍼티 노드보다 빠릅니다.
단점
  • 메모리 집약적인 프로세스. 이들은 컨트롤/인디케이터와 같은 프런트 패널 업데이트 로직을 가지고 있지만, 생성한 각 로컬 변수에 대해 메모리에 데이터의 전체 복사본을 만들어야합니다.
  • 클러스/배열의 단일 항목에는 쓸 수 없고 전체 변수를 업데이트해야합니다.
  • 같은 로컬 변수에 다른 속도로 쓰거나 읽을 때 경쟁 조건이 발생할 수 있습니다.
C 유사성
(이것은 C와 같지 않지만 해당 프런트 패널 컨트롤/인디케이터를 업데이트하기 위해 해야 할 단계를 보여줍니다).

int x; // Front Panel Indicator
int y; // Local variable
y=10; // Write to local variable
x=y; // LabVIEW does this for you to update the front panel.



프로퍼티 노드
장점
  • 로컬 변수와 달리 메모리에 데이터 복사본을 만들지 않습니다.
  • 엄격하지 않은 컨트롤 참조를 사용하는 경우 값의 데이터 유형은 컨트롤의 실제 데이터 유형이 아닌 변형될 수 있습니다.
  • 클러스터 내에서 단일 컨트롤 읽기 및 쓰기 가능
  • SubVI 내에서 프런트 패널 컨트롤을 업데이트하는 데 사용할 수 있습니다.
단점
  • 프런트 패널 항목을 호출 할 때마다 업데이트해야합니다.
  • 그것들은 pass by value 함수가 아닌  pass by reference 함수입니다. 이는 본질적으로 특정 메모리 위치에 대한 포인터임을 의미합니다. 포인터는 참조 해제되어야하며 메모리의 값이 업데이트됩니다. 변수를 참조 해제하는 과정에서 컨트롤/인디케이터 또는 로컬 변수보다 속도가 느려집니다.
  • 프로퍼티 노드는 SubVI의 프런트 패널이 메모리에 남아 있도록하여 메모리 사용을 증가시킵니다. SubVI의 프런트 패널이 표시되지 않으면 프로퍼티 노드를 제거하여 메모리 사용을 줄이십시오.
C 유사성
(이것은 C와 같지 않지만 해당 프런트 패널 컨트롤/인디케이터를 업데이트하기 위해 해야 할 단계를 보여줍니다).

int x; // Front Panel Indicator
int *x_pointer = &x; // Create pointer to Front Panel Indicator
// (Property Node)

*x_pointer = 1; // * is used to dereference the pointer and update
// variable X. This is the operation that happens
// every time a property node executes.

2024년 9월 13일 금요일 나의 투자 기록

 1. 사람은 각자의 고민이 있게 마련이다. 이게 어떤 조직을 이루고 있고, 많은 사람이 그 조직에 섞여 있으면서 각자의 고민이 조직에 영향을 주게 된다. 즉 문제가 발생하는 요인이 되는 것이다. 다른 사람의 고민을 감지하고, 고민을 알게 되었다면 2...