해결책
두 함수는 루프의 실행속도를 제어하기 위해 지정된 시간 동안 코드 진행을 막는데 사용됩니다. 차이점은 다음과 같습니다. 기다림(ms) 함수의 경우 단순히
대기 시간(ms)에 지정된 값이 경과할 때까지 실행을 중단합니다. 다음 ms 배수까지 기다림 함수의 경우 시스템 밀리초(ms) 클럭의 현재값이
ms 배수에 지정된 값으로 나누어 떨어질 때까지 실행을 중단합니다.
아래 그림은 두 VI의 입력 값을 100으로 설정하고 50 ms에서 VI가 실행될 때 루프 실행이 재개되는 시점를 보여줍니다. 수평축은 시스템 밀리초 클럭의 값입니다.
다음 코드 예제를 사용하여 실행의 차이를 관찰할 수도 있습니다.
기다림(ms) :
기다림(ms) 함수는
대기 시간 (ms)에 지정된 값이 경과할 때까지 코드 진행을 막습니다.
- 예제 1 : While 루프 안에 실행에 5 ms가 걸리는 코드가 들어있는 경우를 생각해보십시오. 또한 루프에는 대기 시간 (ms)에 10의 값이 연결된 기다림(ms) 함수도 포함되어 있습니다. 각 반복 과정에서 코드는 5 ms 후에 완료되고 다시 5 ms 후에 기다림(ms) 함수가 완료되기 때문에 실행에 총 10 ms가 걸립니다. 이 경우 기다림(ms) 함수는 코드와 동시에 실행됩니다.
위 예에서 루프 타이밍은 기다림(ms) 함수에 의해 결정됩니다.
- 예제 2 : 이 예제는 앞의 예제와 거의 동일하지만 이번엔 코드 실행에 15 ms가 소요됩니다. 기다림(ms) 함수는 여전히 대기 시간 (ms)에 10이 연결되어 있습니다. 기다림(ms) 함수에 연결된 시간값은 코드를 실행하는 데 걸리는 시간보다 짧기 때문에 코드가 끝난 후에도 지연이 발생하지 않으며 15 ms가 지나면 루프는 다음 반복을 바로 실행합니다.
위 예제에서 루프 타이밍은 기다림(ms) 함수에 의해 결정되지 않습니다. 루프 내 코드의 전체 실행 시간에 의해 결정됩니다.
다음 ms 배수까지 기다림:
다음 ms 배수까지 기다림 함수를 사용하여 서로 다른 루프를 시스템의 밀리초 클럭에 동기화할 수 있습니다. 이름에서 알 수 있듯이, 시스템 클럭 값이
ms 배수에 지정된 값의 배수가 될 때까지 진행을 막게 됩니다.
- 예제 3 : 루프 안에 실행에 100 ms가 걸리는 코드와 다음 ms 배수까지 기다림 함수가 병렬적으로 들어있습니다. 다음 ms 배수까지 기다림 함수의 ms 배수의 입력으로 200이 연결되어 있습니다. 루프는 시스템의 밀리초 클럭을 기준으로 200 ms마다 실행됩니다. 같은 VI 내 첫 번재 루프와 비슷한 두 번째 루프가 있습니다. 단, 두 번째 루프의 코드는 실행하는 데 150 ms가 걸립니다. 두 개의 루프는 시스템 클럭의 값이 200 ms의 배수가 될 때마다 다음 반복을 시작하도록 동기화됩니다. 이 방법을 사용하면 각 루프가 동시에 반복을 시작하게 할 수 있습니다.