LabVIEW 타임스탬프는 절대 시간을 나타내는 128비트 데이터 타입입니다. 이 데이터 타입을 64비트 기수의 부호 있는 128비트 고정 소수점 수로 해석할 수 있습니다.
{
(i64) Epoch 01/01/1904 00:00:00.00 UTC 이후의 초 수(그레고리력을 사용하고 윤초는 무시함)
(u64) 1초의 양의 분수
}
이 정보는 호출 라이브러리 노드 또는 사용자 정의 라이브러리에 타임스탬프를 전달하는 시기를 파악하는 데 중요합니다. 최상위 64비트는 64비트 부호 있는 2의 보수 정수로 해석되어야 합니다. Epoch 01/01/1904 00:00:00.00 UTC 이후의 정수 초 수를 나타냅니다. 최하위 64비트는 64비트 부호 없는 정수로 해석되어야 합니다. 최상위 64비트에 지정된 정수 초 이후의 2-64초 수를 나타냅니다. 이 정수의 각 틱은 0.05421010862427522170... 아토초를 나타냅니다.
이 128비트 데이터 타입이 나타내는 절대 시간은 두 개의 64비트 구성 요소의 합계입니다.
날짜 | 10진수 표현 | 16진수 표현 |
01/01/1904 00:00:00.000 UTC | { 0, 0 } | { 0x0, 0x0 } |
12/31/1903 23:59:59.500 UTC | { -1, (0.5 263으로 표시됨)) == 9223372036854775808 } | { 0xFFFFFFFFFFFFFFFF, 0x8000000000000000 } |
12/31/1903 23:59:54.800 UTC | { -6, (0.8 * 264) == 14757395258967641293 } | { 0xFFFFFFFFFFFFFFFA, 0xCCCCCCCCCCCCCCCD } |
01/01/2002 00:00:00.000 UTC | { 3092601600, 0 } | { 0xB8555B00, 0x0 } |
위 표에서 두 번째 예제는 Epoch보다 0.5초 이전을 나타납니다. 정수 초 값을 Epoch (-1) 이후의 다음 가장 작은 정수 초로 설정하고 분수 부분을 0.5초로 설정하여 합계가 -0.5초가 되도록 합니다.
세 번째 예제에서는 0.8을 2진수로 정확하게 표현할 수 없기 때문에 반올림이 발생했습니다. 또한 배정도에서 이러한 값 중 일부를 구성하려고 하면 정밀도 부족으로 인해 정확하게 일치하지 않습니다. 이 경우 세 번째 예제의 분수 부분은 0xccccccccccccc000이 됩니다.
LabVIEW 7.0 또는 이전 버전에서는 64비트 double(DBL)을 사용하여 시간을 나타냈으며, 15자릿수 정밀도를 생성했습니다. 1904년 1월 1일(타임스탬프 Epoch 또는 연도 0)에서 2000년 1월 1일까지의 초 수는 3027456000입니다. 이 값을 DBL로 표현하면 15자릿수 정밀도에서 10자릿수를 사용합니다. 이렇게 되면 1904년부터 현재까지만으로 분해능의 대부분을 사용하기 때문에 하드웨어 타이밍을 수행하기 위한 분해능 공간이 거의 남지 않습니다. 업계 요구 사항을 충족하지 못했기 때문에 시간을 DBL로 표현하는 것은 바람직하지 않았습니다.