DTL data type and syntax
- Last UpdatedJul 29, 2024
- 2 minute read
The S7-1500 PLCs contain a data type named DTL (Date Time Long). The DTL can be subscribed as a string (VT_BSTR), which provides the full range and resolution of 1 nanosecond, or as a date and time (VT_DATE), which provides the full range but with the highest resolution of 1 second. The DTL data type in the PLC is a 12-byte structure with the following format:
|
Byte |
Field Name |
Date Type |
Value Range |
|
0,1 |
Year |
UINT |
1970 to 2554 |
|
2 |
Month |
USINT |
1 to 12 |
|
3 |
Day |
USINT |
1 to 31 |
|
4 |
Weekday |
USINT |
1 (Sunday) to 7 (Saturday) |
|
5 |
Hour |
USINT |
0 to 23 |
|
6 |
Minute |
USINT |
0 to 59 |
|
7 |
Seconds |
USINT |
0 to 59 |
|
8,9,10,11 |
Nanoseconds |
UDINT |
0 to 999,999,999 |
The Communication Driver reads the 12-byte structure from the S7 PLC and converts it into one of the following canonical types based on the item name suffix specified:
|
DTL Suffix |
Canonical Type |
Range |
|
<none> |
VT_BSTR |
1970-1-1-0:0:0.000000000 to 2554-12-31-23:59:59.999999999 (Highest resolution in units of 1 nanoseconds increments) |
|
TREAL |
VT_DATE |
1970-1-1-0:0:0 to 2554-12-31-23:59:59 (Highest resolution is in units of 1 sec increments) The syntax for VT_DATE can be YYYY/MM/DD, MM/DD/YYYY, or YYYY-MM-DD. |
The item name syntax for DTL is as follows:
|
Memory Type |
Syntax |
Canonical Type |
|
Data Block |
D<B,I>d,DTLm D<B,I>d,DTLmTREAL D<B,I>d,DTLm,v D<B,I>d,DTLm,vTREAL |
VT_BSTR VT_DATE VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE |
|
Flag |
FDTLm MDTLm FDTLmTREAL MDTLmTREAL FDTLm,v MDTLm,v FDTLm,vTREAL MDTLm,vTREAL |
VT_BSTR VT_BSTR VT_DATE VT_DATE VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE |
|
Input Bytes |
IDTLm EDTLm IDTLmTREAL EDTLmTREAL IDTLm,v EDTLm,v IDTLm,vTREAL EDTLm,vTREAL |
VT_BSTR VT_BSTR VT_DATE VT_DATE VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE |
|
Output Bytes |
ODTLm ADTLm QDTLm ODTLmTREAL ADTLmTREAL QDTLmTREAL ODTLm,v ADTLm,v QDTLm,v ODTLm,vTREAL ADTLm,vTREAL QDTLm,vTREAL |
VT_BSTR VT_BSTR VT_BSTR VT_DATE VT_DATE VT_DATE VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE |
|
Peripheral Input Bytes |
PIDTLm PEDTLm PIDTLmTREAL PEDTLmTREAL PIDTLm,v PEDTLm,v PIDTLm,vTREAL PEDTLm,vTREAL |
VT_BSTR VT_BSTR VT_DATE VT_DATE VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE |
|
Peripheral Output Bytes |
PODTLm PADTLm PQDTLm PODTLmTREAL PADTLmTREAL PQDTLmTREAL PODTLm,v PADTLm,v PQDTLm,v PODTLm,vTREAL PADTLm,vTREAL PQDTLm,vTREAL |
VT_BSTR VT_BSTR VT_BSTR VT_DATE VT_DATE VT_DATE VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_BSTR VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE VT_ARRAY |VT_DATE |
Where:
|
d |
is the data block number, with a range from 1 to 65535 |
|
m |
is the start offset of an DTL tag |
|
v |
is the length of an array in elements (an item in an array), with a range from 1 to 65535 |