Lesson 8 Timed Loop(타임루프)

안녕하세요 알렉스 입니다. 오늘은 타임루프에 대해서 이야기 하도록 하겠습니다. 보통 While Loop같은 경우 주기를 설정하지 않는 이상 최대의 CPU로 동작되게 되어 있습니다. 하지만 타임루프(Time Loop)는 다른데 정확한 주기를 설정을 할수 있습니다. 그럼 일단 프로그램을 만들어 보도록 하겠습니다.


그림1) 타임루프 선택

그림2) 타임루프의 구조
 그림1,2를 보면 제가 타임루프를 선택하고 생성한 것을 알수 있습니다. 간단하게 블록다이어 그램에 가서 선택을 하시면 됩니다.
그림3) 타임루프의 컨트롤 및 인디게이터
 사실 그림2에서 나온것과 달리 타임루프에는 여러가지 인디게이터와 컨트롤이 있습니다. 하지만 그것을 일일이 다 설명하지는 않겠습니다.
그림4) 타임루프 인디게이터 및 컨트롤
 그림4에서 제가 왼쪽의 주기1 컨트롤 1개를 만들고 오른쪽에는 여러 인디게이터를 만들었습니다. 하지만 실제로 관심을 가질 인디게이터는 '늦게 끝냄' LED입니다. 이유는 이번 Lesson이 타임루프의 기본적인 기능 및 동작 방법에 대해서 알기 위하기 때문 입니다.
그림4) 기다림(Wait) 기능 추가

실제로 주기1에 의해 타임루프는 동작시간이 정해지게 됩니다. 하지만 저는 타임루프의 시간을 인위적으로 제어하기 위해 내부에 기다림 함수를 추가합니다.
그림5) 프로그램 완성

그림6) 프런트패널 배치
이제 프로그램은 완성이 됬고 그림6과 같이 깔끔하게 컨트롤과 인디게이터를 배치하시면 됩니다.

그림7) 주기에 따른 타임루프변화

그림8) 늦게끝남 LED켜짐

그림7은 주기1이 1000이고 대기시간이 900입니다. 따라서 타임루프가 도는데 기다림이 생기지가 않습니다. 하지만 그림8과 같이 대기시간을 1100으로 늘리게 되면 기다림 함수는 타임루프의 주기보다 긴시간을 기다리기 때문에 늦게끝냄 LED가 켜지게 됩니다.

그림9) 주기 변경 불가
이때 주기1을 증가 시켜서 LED를 끌려고해도 끌수가 없습니다. 주기1은 처음 타임루프를 동작할때만 적용이 되고 이후에 수정이 불가능하기 때문입니다. 그래서 내부에 다른 주기 컨트롤을 생성해야 합니다.

그림10) 타임루프 내부에 주기컨트롤 생성

그림11) 프로그램 완료
그림10,11과 같이 주기2컨트롤을 생성해 줍니다.

그림12) 프로그램 실행

프로그램을 실행할때 반드시 주기1과 주기2가 같아야 합니다. 처음 시작할때 주기1의 값이 적용이 되지만 1회가 끝나고 2회째에는 주기2의 값이 적용되기 때문입니다.



그림13) LED켜짐

그림14) 주기2수정


그림13,14를 보면 알겠지만 이제 타임루프의 실행중의 주기도 변경을 할수 있게 되었습니다. 그밖에도 여러가지 기능들이 있는데 그것은 개인적으로 확인해 보시는게 좋을듯 합니다.

읽어주셔서 감사합니다.





댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)