Tuesday, September 27, 2011

Labview 공부잘하는 법

 

1단계. LabVIEW 책을 끝까지 본다.
하다가 이해가 안가도 끝까지 보고 "LabVIEW의 여러가지 함수 및 이러이러한 기능이 있다 "
라는 것을 알면 일단 1단계 돌파.
2단계. 쉬운 예제 직접 작성
여기서 중요한 Point... 책은 덮을것. 예제는 가져다 쓰지 말것. 플로우를 작성할 것.
플로우를 모른다면 자신이 뭐를 해야 하는지를 모르는 것 이므로 프로그래머로서의 자질이
없는것이므로 그냥 취미로 공부하는 셈 칠것. %%% 프로그래머로서의 길은 포기
플로우를 작성 했다면 다음 프로그램 코딩.
코딩을 못한다면 자신이 뭐를 모르는지 자각하게 되므로 모르는 부분을 책 및 예제를 다시 봐가면서 공부.
다시 책을 덮고 예제를 덮고 코딩하여 성공하면 또 다른 예제를 작성해 봐서 잘 되면 2단계 돌파.
3단계. 조금 복잡한 예제 작성
3단계의 중요 Point... Flow 개념 파악 : 쉬운 예제는 보통 하나의 Loop 로 끝나는 경우가 많은데 복잡한 프로그램은 각각의 프로그램과 연관을 맺어야 하는데 코딩과정에서 어느부분이 먼저 실행되고 어느 부분이 동시에 실행되는지 정확한 Flow의 개념을 파악해 내야 코딩이 가능.
쉽게말해 여러개의 멀티 Loop라던지 이런 예제를 직접 작성해 보고 흐름을 이해하고 각 루프간의 연관성을 인식하였다면 3단계 돌파.

4단계. Inside LabVIEW

기초적인 부분인데 실제적으로는 간과하는 부분이 많이 있습니다.

4.1 Data Type 공부 (예. Integer -> I8, I16, I32, I64, float 등)

4.2 각종 Element(String, Array, Cluster)들의 Memory Allocation 구조

4.4 각종 Data 변환

이런 것들을 공부해야만 File Access, TypeCast, Flatten String, 통신 등을 활용할 수 있습니다.

4.1 모든 전산 책들을 보면 기초적으로 Data Type, 진법, Logic 등을 처음 파트에 놓습니다.

프로그램을 작성하려면 기본적으로 알아야 하는 상식이죠. 그런데 LabVIEW 공부하는 분들은 이것을 무시합니다.

그러므로 생각치 않은 오류를 범하기도 합니다.

예) uInt8 Type의 변수에 1000의 값을 입력. (uInt8 의 Data 범위는 0 ~ 255)

4.2 통신 함수들은 주로 String Type으로만 이루어 집니다.

그럼 String이 어떤 구조로 Memory에 배치가 되는지 일 예로 알아보죠.

typedef struct {

int32 cnt; /* number of bytes that follow */

uChar str[1]; /* cnt bytes */

} LStr, *LStrPtr, **LStrHandle;

LabVIEW에서는 Large Pascal String type을 사용합니다.

즉 스트링의 갯수 정보를 포함한 Type입니다. 몰라도 프로그램 가능하다는 분도 있을지 모르겠지만 메모리에

어떻게 저장되는지 알아야 Binary File 저장 및 통신등을 자유자재로 활용이 가능합니다.

또한 Using External Language in LabVIEW 에서는 필수로 알아야 하죠.

4.3 각종 데이타 변환은 Numeric Type을 String으로 변환, string 을 숫자로 또는 어레이로 변환 등을 말하는

겁니다.

이런것들은 Binary File 및 Binary 통신에서 주로 사용됩니다. 통신은 VISA, TCP/IP, GPIB, CAN 등등..

5단계. H/W Interface 익히기

Simulation Device 를 지원함으로 비싼 Card가 없이도 공부가 가능합니다. (MAX에서 Simulation Device 생성 가

능)

비록 Analog Input 같은 경우에는 Noise가 약간 낀 sin파가 들어 옵니다만 공부하는데 지장은 없습니다.

Training Kit 가 있는분은 kit에서 공부해도 됩니다.

모든 자원은 OS에서 관리됩니다. (예전 DOS 제외)

그래서 OS에 사용 신청, 사용, 반납 과정을 거쳐야 하죠. 이 기초를 가지고 각종 해당 수집 및 시물레이션에 관

한 부분을 공부해야 합니다.

VISA 통신 (일예 RS-232C) 같은 것도 빈번하게 필요하게 됩니다. 연습은 컴퓨터 2대로 해도 되겠죠.

간단한 ASCII 통신에서부터 Binary 통신 등을 프로그램 하는데 있어서 가장 기본이 되는것은 Protocol 입니다.

계측기, PLC등의 Protocol 은 쉽게 Internet에서 구할 수 있습니다. 그래서 여러가지의 Protocol 을 보고 익히

는게 중요합니다. 이 Protocol은 회사마다 달라서 되도록이면 여러 Protocol을 경험해야 어떤 프로토콜을 사용할

지 선택 내지 만들 수 있는 겁니다.

TCP/IP 통신도 컴퓨터 2대를 가지고 연습하면 되겠죠. 굳이 비싼 H/W 없이 공부 가능합니다.

6단계. Resource 관리

멀티 Tasking 프로그램 작성시 어느 부분은 빠르게 돌아야 하고 어느 부분은 적게 돌아도 되는지 프로그래머가

판단에 의해 지정할 수 있어야 합니다.

그리고 프로그램 실행시 CPU의 사용량을 감시하여 프로그램 내에서 불필요하게 자원을 낭비하는 부분이 있는지

봐야 합니다.

일예로 Graph 를 그리는데 있어서 10mS 마다 실행되는 Loop에 Graph를 Display 하게 되었을때 1초에 100번 뿌려

지게 되겠죠. 그런데 사람이 이것을 인식할 수 있느냐....슈퍼맨만 인식 가능합니다. 즉 불필요한 자원 낭비가

이 경우 입니다.

간단한 프로그램 같은 경우 자원 관리의 중요도는 떨어지나 복잡한 프로그램에서의 자원관리는 프로젝트 성공 /

실패의 요인이 됩니다. 더군다나 아예 처음부터 다시 짜야되는 경우도 생기죠.

7단계. 각종 Property 활용

Labview의 Control 및 Indicator 및 Application 등의 Property 활용을 잘 할때 쯤 이제 웬만한건 짜는 수준으로 올라선 것입니다. Invoke Node 및 Property Node, Reference 등을 자세히 봐야 하겠습니다.
그러나 책에는 이런 것들이 있다는 간략한 소개만으로 끝나는 경우가 많은데 각각의 프로퍼티의 용도를 스스로 공부해야 합니다.

....자료가 없으니 어렵다.... 핑게일 뿐이죠. 간단히 프로퍼티 생성하고 인디케이터에 연결하면 아...이게 뭐다 하는것을 어렴풋이 아는것들이 태반입니다. 자료없다는 변명 말고 인디케이터라던지 스스로 실행해 가면서 익혀야 하겠습니다.

8단계. 테크닉 익히기

산의 정상을 정복하기 위해서는 많은 길들이 존재하겠죠. 프로그래머에 따라 지름길로 가는 사람이 있는가 하면 뺑뺑 돌아서 가는 사람도 있습니다. 어떤분은 가다가 낭떠러지를 만나서 다시 내려와 올라가거나 포기합니다.

하나의 과제에 대해 그 흐름을 어떤식으로 구현하는거에 따라 지름길일 수도 있고 뺑뺑 돌아가는 길이 될 수도 있습니다. 이런 테크닉을 어떻게 익히냐가 관건인데.... 다른사람이 구현한 것과 자신 스스로 구현하는 것과의 비교로 익혀 나가는 방법밖에는 없습니다. 멘토가 있으면 아주 좋겠죠. LabVIEW의 Q&A를 활용하는것도 일종의 방법입니다. 나는 이런식으로 짜는데 다른사람은 다르게 짜더라. 왜 저렇게 작성 했을까? 하는 의문을 가지고 분석을 해 나가다 보변 어떤방식으로 짜는게 좋더라 라는 스스로의 깨우침에 이르게 될 듯 합니다.

9단계. External Language in LabVIEW

LabVIEW의 소스는 Text Compiler에 비해 무겁습니다. 그것은 C++ 매크로이기 때문입니다. 군더더기가 많이 묻어 있는것 또한 사실입니다. LabVIEW의 한계에 의해 구현하고자 하는 기능을 많이 제한하는 경우가 많이 있습니다.

그래서 타 언어로 혼합언어로 작성 가능하게 하는것이 있습니다. DLL 이나 CIN Node(%2010버젼부터는 함수에서는 안보이나 자체적으로는 지원합니다.) 같은 것들을 말하죠.

복잡한 분석 같은것들은 Text 언어로 작성하는것이 좋습니다. LabVIEW에서 지원하는 Mathscript도 있으나 멀티태스킹 환경에서는 DLL이나 CIN 같은것을 사용하는게 더 낳습니다. 그 node 안에서의 변수들은 Global과 같은 기능을 합니다.

LabVIEW의 한계에 대해 말하자면 멀티 태스킹 환경에서 Local이나 Global 사용시 데이타가 깨지는 것을 말합니다. 그래서 어떤 유져는 멀티 태스킹 하면 버그만 나온다고 안쓰는 분도 있더군요. 벌레 무서워 장 못담근다는 속담이 있지요. 벌레는 못 다루기 때문에 발생하는 겁니다. 이 부분의 해결이.....LabVIEW의 가장 큰 고민이죠. 모르는 사람이 태반입니다. 나중에 기회가 닿으면(좀 게을러서) 이 부분을 보여드리죠.

이 한계를 극복하기 위한게 DLL Node 및 CIN Node입니다.

10단계. 이제는 나도 프로그래머라 불러주세요.

이 정도 되야 LabVIEW를 사용하여 프로그램 할 수 있는 경지에 다다른 것입니다.

그 이전까지는 학습 단계겠죠. 간단한 예제 작성 할 줄 안다고 프로그래머가 아닙니다. 코더죠.

여기서 소개 안된 많은 부분이 존재합니다만 공부하시는 분들에게 조그마한 도움이 되었으면 하는 바램입니다.

-The End-

No comments:

Post a Comment