UTC-Time-LWORD-Formatspezifikation

Die TwinCAT UTC-Time Komponenten werden in LWORD auf folgende Weise codiert:

Bit

Komponente

Typ

Wertebereich

Beschreibung

0..31

secondSinceEpoch

DT

0..16#FFFFFFFF

Anzahl der vergangenen, ganzen Sekunden seit dem 1. Januar 1970.

32..55

fractionOfSecond

T_UINT24

0..16#FFFFFF

Sekundenbruchteil codiert als 24 Bit-Zahl.

56

Quality.LeapSecondsKnown

BIT

0..1

Qualität der Schaltsekunden (0:=Unbekannt, 1:=Bekannt).

57

Quality.ClockFailure

BIT

0..1

Qualität des Zeitgebers (0:=Gut, 1:=Fehlerhaft).

58

Quality.ClockNotSynchronized

BIT

0..1

Qualität der Uhrzeitsynchronisierung (0:=Synchron, 1:=Nicht synchron).

59

Quality.Accuracy0

BIT

0..1

Genauigkeit der Zeitinformation (Präzision des Bruchteils der Sekunde). Die Accuracy-Bits bestimmen die Anzahl der signifikanten Bits in der T_UtcTime.fractionOfSecond-Komponente.

60

Quality.Accuracy1

BIT

0..1

61

Quality.Accuracy2

BIT

0..1

62

Quality.Accuracy3

BIT

0..1

63

Quality.Accuracy4

BIT

0..1

Die UTC-Time.fractionOfSecond-Komponente wird in den 24 Bits des Typs: T_UINT24 auf folgende Weise codiert:

Bit

Komponente

Wert

0

fractionOfSecond[0].0

0.5 s

1

fractionOfSecond[0].1

0.25 s

2

fractionOfSecond[0].2

0.125 s

3

fractionOfSecond[0].3

0.0625 s

4

fractionOfSecond[0].4

0.03125 s

5

fractionOfSecond[0].5

0.015625 s

6

fractionOfSecond[0].6

0.0078125 s

7

fractionOfSecond[0].7

0.00390625 s

8

fractionOfSecond[1].0

0.001953125 s

9..15

fractionOfSecond[1].1..7

usw.

16..23

fractionOfSecond[2].0..7

-/-

Beispiele

Die folgende Tabelle enthält einige Sekundenbruchteilwerte und die Werte der fractionOfSecond-Arrayelemente nach der Konvertierung.

Sekundenbruchteil

T_UINT24

Beschreibung

0 s

[0,0,0]

Alle Bits haben den Wert: 0.

0.75 s

[3,0,0]

Bits 0 und 1 sind gesetzt. Wertberechnung: 0.5 s+0.25 s=0.75 s.

0.875 s

[7,0,0]

Bits 0, 1, 2 sind gesetzt. Wertberechnung: 0.5 s+0.25 s+0.125 s=0.875 s.

0.5625 s

[9,0,0]

Bits 0 und 3 sind gesetzt. Wertberechnung: 0.5 s+0.0625 s=0.5625 s.

Codierung der Präzision in den UTC-Time.Quality.Accuracy0..4-Bits.

Präzision

Accuracy0

Accuracy1

Accuracy2

Accuracy3

Accuracy4

E_UtcTimeAccuracy

0 Bit

0

0

0

0

0

Null

1 Bit

0

0

0

0

1

_01

2 Bit

0

0

0

1

0

_02

3 Bit

0

0

0

1

1

_03

4 Bit

0

0

1

0

0

_04

5 Bit

0

0

1

0

1

_05

6 Bit

0

0

1

1

0

_06

7 Bit

0

0

1

1

1

_07

8 Bit

0

1

0

0

0

_08

9 Bit

0

1

0

0

1

_09

10 Bit

0

1

0

1

0

_10

11 Bit

0

1

0

1

1

_11

12 Bit

0

1

1

0

0

_12

13 Bit

0

1

1

0

1

_13

14 Bit

0

1

1

1

0

_14

15 Bit

0

1

1

1

1

_15

16 Bit

1

0

0

0

0

_16

17 Bit

1

0

0

0

1

_17

18 Bit

1

0

0

1

0

_18

19 Bit

1

0

0

1

1

_19

20 Bit

1

0

1

0

0

_20

21 Bit

1

0

1

0

1

_21

22 Bit

1

0

1

1

0

_22

23 Bit

1

0

1

1

1

_23

24 Bit

1

1

0

0

0

_24

Unzulässig

1

1

n

n

n

_25_invalid.._30_invalid

Nicht spezifiziert

1

1

1

1

1

Unspecified

Beispiele

Folgende Tabelle enthält einige LWORD-Werte und die Werte nach der Konvertierung in einen formatierten Binary-Time-String und den strukturierten Typ: T_UtcTime.

LWORD

STRING(39)

T_UtcTime

Beschreibung

16#0000000000000000

'UT#1970-01-01-00:00:00.000000000|000|0'

STRUCT(0)

Alle Komponenten haben den Wert: 0. Datum: 1. Januar 1970. Uhrzeit: 00:00:00 Uhr. Sekundenbruchteil: 0 ms. Präzision: 0 Bit.

16#C4000000386D4380

'UT#2000-01-01-00:00:00.000000000|001|3'

STRUCT(secondSinceEpoch:=DT#2000-01-01-00:00:00, fractionOfSecond:=[0,0,0], quality:=(ClockNotSynchronized:=1, Accuracy3:=1, Accuracy4:=1))

Datum: 1. Januar 2000. Uhrzeit: 00:00:00 Uhr. Sekundenbruchteil: 0 ms. Zeitgeber ist nicht synchronisiert. Präzision: 3 Bit.

16#A4000001386D4380

'UT#2000-01-01-00:00:00.500000000|001|5'

STRUCT(secondSinceEpoch:=DT#2000-01-01-00:00:00, fractionOfSecond:=[1,0,0], quality:=(ClockNotSynchronized:=1, Accuracy2:=1, Accuracy4:=1))

Datum: 1. Januar 2000. Uhrzeit: 00:00:00 Uhr. Sekundenbruchteil: 500 ms. Zeitgeber ist nicht synchronisiert. Präzision: 5 Bit.

16#81000000FFFFFFFF

'UT#2106-02-07-06:28:15.000000000|100|1'

STRUCT(secondSinceEpoch:=DT#2106-02-07-06:28:15, fractionOfSecond:=[0,0,0], quality:=(LeapSecondsKnown:=1, Accuracy4:=1))

Datum: 7. Februar 2106. Uhrzeit: 06:28:15 Uhr. Sekundenbruchteil: 0 ms. Schaltsekunden sind unbekannt. Präzision: 1 Bit.

16#C2000007FFFFFFFF

'UT#2106-02-07-06:28:15.875000000|010|3'

STRUCT(secondSinceEpoch:=DT#2106-02-07-06:28:15, fractionOfSecond:=[7,0,0], quality:=(ClockFailure:=1, Accuracy3:=1, Accuracy4:=1))

Datum: 7. Februar 2106. Uhrzeit: 06:28:15 Uhr. Sekundenbruchteil: 875 ms. Zeitgeber meldet einen Fehler. Präzision: 3 Bit.

16#1C000007FFFFFFFF

'UT#2106-02-07-06:28:15.875000000|001|24'

STRUCT(secondSinceEpoch:=DT#2106-02-07-06:28:15, fractionOfSecond:=[7,0,0], quality:=(ClockNotSynchronized:=1, Accuracy0:=1, Accuracy1:=1))

Datum: 7. Februar 2106. Uhrzeit: 06:28:15 Uhr. Sekundenbruchteil: 875 ms. Zeitgeber ist nicht synchronisiert. Präzision: 24 Bit.