In HART 7, time value was introduced.

 

For HART 5 and HART 6 Masters, DDs are typically written to use a 4 byte unsigned integer in lieu of a time value (which is a 4 byte representation of time).

 

The version 5 and 6 tokenizers do not support TYPE TIME_VALUE so the DD may use TYPE UNSIGNED_INTEGER.  For a DD to build all binary types (*.fms, *.fm6, *.fm8), the variables used for time must be conditionally defined based upon the tokenizer version. An example from the HART 7 sample DD "sample1_r3.ddl “ a collection “press” with two VARIABLEs: one that is a TYPE  TIME_VALUE and another that is an TYPE UNSIGNED_INTEGER(4) is below:

 

 


 

COLLECTION OF VARIABLE press

{

    LABEL [pressure];

    HELP [pressure_help];

    MEMBERS

    {

        // Sensor Correction Information

        DIGITAL_VALUE,              pressureValue,              [blank],                [digital_value_help];

        DIGITAL_UNITS,              pressureUnits,              [units],                [digital_units_help];

        DATA_QUALITY,               pressurePDQ,                [process_data_quality], [process_data_quality_help];

        LIMIT_STATUS,               pressureLS,                 [limit_status],         [limit_status_help];

        DEVICE_FAMILY_STATUS,       pressureStatus,             [family_status],        [family_status_help];

 

        CLASSIFICATION,             pressureClassification,     [classification],       [classification_help];

        DEVICE_FAMILY,              pressureFamily,              [device_family],        [device_family_help];

 

        UPPER_SENSOR_LIMIT,         pressureUSL,                [usl],                  [upper_sensor_limit_help];

        LOWER_SENSOR_LIMIT,         pressureLSL,                [lsl],                  [lower_sensor_limit_help];

        MINIMUM_SPAN,               pressureMinimumSpan,        [minimum_span],         [minimum_span_help];

        DAMPING_VALUE,              pressureDampingValue,       [damping_value],        [seconds_damping_value_help];

        SIMULATED,                  pressureSimulated,          "Simulate",             "";

 

#if __TOKVER__ >= 800

        UPDATE_TIME_PERIOD,         pressureUpdatePeriod,       "Update Period";

#else

        UPDATE_TIME_PERIOD,         pressureUpdatePeriod_int,   "Update Period";

#endif

 

        // Device Information

        SENSOR_SERIAL_NUMBER,       pressureSerialNumber,       [sensor_serial_number], [sensor_serial_number_help];

    }

}

 

 

#if __TOKVER__ >= 800

VARIABLE temperatureUpdatePeriod

{

    LABEL "Temp Update Period";

    HELP "";

    TYPE TIME_VALUE;

    HANDLING READ;

}

 

#else

 

VARIABLE temperatureUpdatePeriod_int

{

    LABEL "Temp Update Period";

    HELP "";

    HANDLING READ;

    CONSTANT_UNIT "s";

    TYPE UNSIGNED_INTEGER(4)

    {

        SCALING_FACTOR 0.00003125;

    }

}

#endif