Q&A 게시판

cancel
Showing results for 
Search instead for 
Did you mean: 

VIT와 VI

Solved!
Go to solution

안녕하세요.

 

저는 powersupply를 RS232C 통신하여 제어하는 업무를 하고있습니다.

파워서플라이에 명령어를 보낸 후 버퍼 read까지 하는 함수를 sub VI로 제작하였습니다.

함수는 오래걸리지 않으며 100ms안에 종료됩니다.

함수는 금방 종료되지만 수시로 다시 실행합니다. (1초에 약 5번 꼴로)

 

그런데 파워서플라이를 다채널로 쓰게 되면서 다른 while 루프에서도

동시에 할 필요가 있었습니다. 

그냥쓰면 한쪽 루프에서 실행중인 sub VI가 끝나야 다른쪽에서 열리길래

처음에는 위에서 언급한 sub VI 파일을 똑같은걸 이름만 다르게

복사 붙여넣기해서 만든다음

각채널에 각각 다른 복사한 sub VI를 사용하였습니다.

 

그러던 중 VIT라는 걸 듣게되었고 VIT를 사용하게되면 복사할 필요없이 될 것 같아서 해보았는데 실행중인 sub VI가 끝나야 다른쪽에서 열리는게 같더군요

그러다가 다시 재호출 옵션에 대해 알게 되었습니다.

그런데 재호출을 허용하면 vi든 vit든 둘다 원하는 동작을 하더군요

 

우선 지금은 재호출을 허용한 vit로 쓰고 있긴한데 vi와 vit의 차이점이 무엇인지

제 경우에는 vi가 유리한지 vit가 유리한지 궁금합니다.

0 Kudos
Message 1 of 2
(920 Views)
Solution
Accepted by topic author oys

물어보신 동작에 대해서는 완전히  '재호출 허용'에 관련된 내용만 아시면 됩니다.

 

VIT는 템플릿을 미리 만들어 두는 것 뿐으로, 

 

예를 들어  Read 함수를 만들어서 VI 상태로  넣어 둔 후, 

여러 프로젝트에서 그 VI 를 불러다 쓰다 보면, 

조금씩 내용이 다르거나, 실수로 편집하거나 할 수 있는데

 

VIT로 만들어 저장한 후, 

새로 만들기 >> 템플릿으로 부터 기능으로 VI를 만들면 원본(VIT)은 그대로 있고, 그와 똑같은 VI 가 새로 만들어지기 때문에

조금 수정해서 저장하더라도 원본에는 문제가 없는,,,

그러니까 자주 쓸만한 기능을 등록해 두는 것 뿐인 것이 VIT입니다.

 

 

재호출 옵션은,

만드신 subVI를  mainVI에서 사용할 때,

subVI를 컴퓨터의 메모리상에 1개만 복사하느냐, 호출한 갯수만큼 다 따로 복사하느냐의 차이를 말하는 옵션입니다.

 

1개만 복사하면(재호출이 아닌 실행), 여러군데서 호출하면  먼저 호출한 곳에서 사용되고, 종료가 되어야 다른 곳에서 호출이 가능하므로 시간이 지연됩니다.

1개만 복사되었으므로, 여러군데서 호출하더라도 이전에 값을 공유해서 사용할 수 있습니다.(기능적 글로벌 변수의 원리)

 

여러개 복사하면(미리 할당된 복제 재호출 실행), 여러군데서 호출하여도 subVI_1, subVI_2 라는 식으로 컴퓨터가 알아서 따로따로 호출해 주므로 동시에 호출이 됩니다. 메모리를 많이 사용하게 됩니다. 입출력 및 내부 연산 과정도 다 따로 관리되므로 서로간에 데이터를 공유할 수 없습니다.

 

공유 복제 재호출 실행은 여러개 복사하는 것과 같이 동작하지만, 필요할 때 쓰고 반환합니다.

 

 

질문하신분께서,

 

장비 2개를 서로 다른 subVI에서 각각 읽으시는 것이면  여러개 복사해서(미리 할당된 복제 재호출 실행) 쓰시는게 맞습니다.

 

그러나 장비 1개를 여러 곳에서 읽으시는 것이라면 1개만 복사해서(재호출이 아닌 실행) 쓰시는게 맞습니다. 

어차피 통신포트는 1개니까 다른 곳에서 통신으로 읽고 있다면, 다른 곳에서 동시에 읽어봤자 통신포트에 접근할수 없습니다.

 

 

0 Kudos
Message 2 of 2
(791 Views)