                 Smart Temperature Sensor HART Implementation
                 ============================================

This document contains 5 sections describing the communication with the
HART Temperature Sensor. The sections are:

                        1. Using the HART adapter

                        2. HART Protocol Overview 

                        3. Universal Commands

                        4. Common Practice Commands

                        5. Transmitter Specific Commands


The document explain, in brief, the HART protocols, however we recommend that 
the you contact the HART Communication Foundation and purchase the complete 
programming guide (it is reasonably priced). Contact: 

                HART Communication Foundation
                9390 Research Blvd. Suite I-100
                Austin, TX 78759, USA
                Tel.:   (512) 794-0369
                Fax.:   (512) 794-8893

There are also software tools for C available from the HCF.



                        1. Programming via the HART Adapter
                        ===================================

The HART adapter can be programmed via the serial port. The adapter uses the 
DCD and RTS in addition to the transmit (Tx) and receive (Rx) lines of the 
serial port. To use the adapter set the UART to: 

         1200 baud, 8 bits, odd parity
         DTR=1 -> adapter power on
         RTS=0 -> receive mode

Transmitting and receiving data can be done as such:

   1. Normally DCD is inactive - If this is not the case, wait until it goes 
      inactive.(DCD is 0 in its inactive state. DCD is bit 7 of a PC's Modem 
      Status Register or register #6 of the UART.) 

   2. Turn RTS on. (Bit 1 of Register #4 or the Modem Control Register) 

   3. Send out the whole frame, from the preamble to the check byte, without 
      any gaps. (A gap of 1 byte causes a timeout in the field device.)

   4. When the transmit shift register is empty, turn RTS off. (Bit 6 of the 
      Line Status Register or Register #5 set to 1 indicates the transmit 
      shift register is empty.) 

   5. Wait until DCD is 0 and note this time.

   6. Now, wait until DCD switches on. If this time is greater than 275 ms 
      from the time DCD was 0, it is a slave timeout.

   7. While DCD is 1, fill your input buffer with bytes from the receive 
      buffer. DCD will switch to 0 after the last byte is received.

   

    The next sections will describe how to decode the receive buffers and 
encode the transmit buffers.









                        2. HART Protocol Overview
                        =========================

The HART protocol documentation can be purchased from the HCF.



This section will describe how to 'frame' messages. HART uses the following
frame structure:

   ----------------------------------------------------------------------------
   | Preamble | Start Char | Addr | Cmd | Byte-Count | Data-Field | Checksum  |
   ----------------------------------------------------------------------------
                                   
   Preamble:   2-20 Bytes of "FF"

   Start Char: 02 -> STX frame in short format
               06 -> ACK frame in short format
               82 -> STX frame in long format
               86 -> ACK frame in long format
               81 -> Burst Frame in long format

   Addr:       Bit 7 -> Master Address Bit (Slave has to echo this bit)
               Bit 6 -> Device in Burst Mode Bit (in Slave answer)

               short frame: Bit 0-3  -> Polling Address
               long frame:  Bit 0-5  -> Lower 6 Bits of Manufacturers ID
                            Byte 2   -> Manufacturers Device Type Code
                            Byte 3-5 -> Device ID Number

   Cmd:        Command Number:    0- 31 -> Universal Commands
                                 32-127 -> Common Practice Commands
                                128-250 -> Transmitter Specific Commands

   Byte Count: Count of bytes in the following Data Field.

   Data Field: The data bytes to be transferred. All data frames coming from
               the slave are preceded by 2 'Response' bytes; the first byte
               is status of the communications and second is the slave device
               status.
                                                          
   Checksum:   XOR-ed result from the Start Char to the last data byte.

In order to get a response, a request must be issued except in Burst Mode. In 
Burst Mode, the sensor automatically sends a Burst Frame after a gap of about 
80ms on the line. It's only allowed to issue another request/response cycle or 
Burst Mode if there is not any response pending. In this case, wait until the 
end of the answer or until a slave timeout occurs.

Normally, the master starts with the frame:

  FF FF FF 02 00 00 00 02

to get the ID of the device with polling address 0. (This ID is used in the 
long frame format.) A sample of a corresponding device response might be:

                             (0  1  2  3  4  5  6  7  8  9 10 11)
  FF FF FF 06 00 00 0E 00 20 FE 53 20 03 05 04 05 10 02 07 A9 19 07

The most important information for further communication is the 6 least 
significant bits of the Manufacturer ID (#1 above) coupled together with the 
Device Type (#2 above) and the Device ID number (#9-11 above) in the data 
field. The response also contains more information such as the needed number 
of preambles. Normally all HART devices leave the manufacturer with the 
preambles set to 20 (the highest value). Generally, programmers will speed-up 
communications by setting the preamble count to 3 with command 59. To get 
measurement values, the commands 1, 2, 3 and 142, 143 are useful. Command 143 
can be used in application software to get all the information at once. The 
IEEE754 numbers are like the type "float" in C or "single" in PASCAL, but in 
the opposite order. A sample frame for getting the Primary Value (PV) via 
command 1 could be: 

Request:
  FF FF FF 82 13 20 07 A9 19 01 00 07

Answer:                                  (0  1  2  3  4)
  FF FF FF 86 13 20 07 A9 19 01 07 00 00 20 41 A9 DB 62 75

The sensor has answered that the PV (object temperature) is 21.2 C and
no communication errors or hardware errors have occurred. Byte #0 shows the
Unit code of degrees Celsius and bytes #1-4 represent the floating point
number starting with the exponent.

HART's packed character format uses 6 bit representations so that 4 characters 
can be packed into 3 bytes. Here is the HART character set:

 Hi\Lo  0 1 2 3 4 5 6 7 8 9 A B C D E F
     0  @ A B C D E F G H I J K L M N O
     1  P Q R S T U V W X Y Z [ \ ] ^ _
     2    ! " # $ % & ' ( ) * + , - . /
     3  0 1 2 3 4 5 6 7 8 9 : ; < = > ?

Let's use 'HART' as an example (all in hex):

        H = 08, A = 01, R = 12 & T = 14

   so:
        H would be shifted left by 2 to get 20.
        A   "    "    "      "   " 4  "  "  00 10.
        R   "    "    "      "   " 6  "  "  04 80.
        T remains unshifted at 14.

   Combining the values (by adding or OR-ing), we get:

         20
         00 10
            04 80
               14
         --------
         20 14 94


There are a lot of definitions for unit codes, error codes, warning codes and
status codes. In the HART temperature sensor, the following codes are used:

Unit codes:
   32 : degree Celsius     (hex 20)
   33 : degree Fahrenheit  (hex 21) 

First Response Byte:
 Error codes:
   Bit 7:  Error sum bit (0 = Warning - as described below, 1 = error)
   Bit 6:  Vertical Parity Error (Byte-Parity)
   Bit 5:  Receive Overrun
   Bit 4:  Framing Error
   Bit 3:  Longitudinal Parity Error (Frame-Parity)
   Bit 2:  Reserved
   Bit 1:  Receiver Buffer Overflow
   Bit 0:  Undefined

 Warning codes:
    2 : Invalid selection, code or index was not allowed
    3 : Passed parameter is too large
    4 : Passed parameter is too small
    5 : Too few data bytes received
    7 : Device is write protected
    8 : Parameter is set to the nearest possible value
    9 : Lower range value too high
   10 : Lower range value too low
   11 : Upper range value too high
   12 : Upper range value too low
   13 : Upper and Lower range values out of limits
   14 : Span too small
   16 : Access restricted
   28 : Invalid range unit code
   32 : Device busy
   64 : Command not implemented

Second Response Byte:
 Status:
   Bit 7=1 :  Malfunction, Hardware Error
   Bit 6=1 :  Configuration changed
   Bit 5=1 :  Cold start bit (valid until 1.Transfer)
   Bit 3=1 :  Primary variable analog output fixed
   Bit 2=1 :  Primary variable output out of limits
   Bit 1=1 :  Non primary variable out of limits (internal Temperature)
   Bit 0=1 :  primary variable out of limits (object Temperature)



   3. Universal Commands for the HART Temperature Sensor - HART Rev. 5.3
   ====================================================================== 

Universal HART commands can be used with all other types of HART devices. 


COMMAND #0 READ UNIQUE IDENTIFIER

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Extension-Code (254)
                                #1 : Manufacturer ID
                                #2 : Manufacturer's Device Type
                                #3 : Number of requested Preambles
                                #4 : Universal Command Revision
                                #5 : Transmitter Specific Command Rev.
                                #6 : Software Revision
                                #7 : Hardware Revision
                                #8 : Flags
                                #9..#11 : Device-ID-Number

        Response Codes: 0       No Command-Specific Errors


COMMAND #1 READ PRIMARY VALUE (PV)

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : PV-Units
                                #1..#4 : PV in IEEE 754

        Response Codes: 0       No Command-Specific Errors

        Note: The PV in HART temperature sensor is always the temperature 
        of the object.


COMMAND #2 READ PV CURRENT AND PERCENT OF RANGE

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#3 : PV-Current in IEEE 754
                                #4..#7 : PV-Percent of Range in IEEE 754

        Response Codes: 0       No Command-Specific Errors


COMMAND #3 READ DYNAMIC VARIABLES AND PV CURRENT

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#3   : PV-Current in IEEE 754
                                #4       : PV-Units
                                #5..#8   : PV in IEEE 754
                                #9       : SV-Units
                                #10..#13 : SV in IEEE 754
                                #14      : TV-Units
                                #15..#18 : TV in IEEE 754
                                #19      : FV-Units
                                #20..#23 : FV in IEEE 754

        Response Codes: 0       No Command-Specific Errors

        Note: The Primary Value (PV) in HART temperature sensor is always the 
        temperature of the object after all signal processing functions. The 
        Secondary Value (SV) is the internal temperature of the sensor head. 
        The Tertiary Value (TV) reflects the current object temperature before
        averaging and the Fourth Value (FV) reflects the object temperature
        before the hold function. The scale units are always the same as the
        PV-units.


COMMAND #6 WRITE POLLING ADDRESS

        Requested Data Bytes:   #0 : Polling Address

        Response Data Bytes:    #0 : Polling Address

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes
                        7       In Write Protect Mode


COMMAND #11 READ UNIQUE IDENTIFIER ASSOCIATED WITH TAG

        Requested Data Bytes:   #0..#5 : TAG in packed-ASCII

        Response Data Bytes:    #0 : Extension-Code (254)
                                #1 : Manufacturer ID
                                #2 : Manufacturer's Device Type
                                #3 : Number of requested Preambles
                                #4 : Universal Command Revision
                                #5 : Transmitter Specific Command Rev.
                                #6 : Software Revision
                                #7 : Hardware Revision
                                #8 : Flags
                                #9..#10 : Device-ID-Number

        Response Codes: 0       No Command-Specific Errors


COMMAND #12 READ MESSAGE

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#23 : Message in Packed-ASCII

        Response Codes: 0       No Command-Specific Errors


COMMAND #13 READ TAG, DESCRIPTOR, DATE

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#5 : Tag in Packed-ASCII
                                #6 ..#17 : not-used-code (Descriptor)
                                #18..#20 : not-used-code (Date)

        Response Codes: 0       No Command-Specific Errors

        Note: Descriptor and Date information cannot be used in HART 
        temperature sensor.


COMMAND #14 READ PRIMARY VARIABLE SENSOR INFORMATION

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#2 : Serial Number
                                #3       : PV-Limits/Min-Span-Units
                                #4 ..#7  : PV Upper Limit in IEEE 754
                                #8 ..#11 : PV Lower Limit in IEEE 754
                                #12..#15 : PV Minimum Span

        Response Codes: 0       No Command-Specific Errors

        Note: Serial Number in HART temperature sensor is equal to the
        Device-ID.


COMMAND #15 READ PRIMARY VARIABLE OUTPUT INFORMATION

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Alarm Select Code
                                #1 : Transfer Function Code
                                #2 : PV-Range-Value-Units
                                #3 ..#6  : PV Upper Range in IEEE 754
                                #7 ..#10 : PV Lower Range in IEEE 754
                                #11..#14 : PV Damping Value in IEEE 754
                                #15 : Write Protect Code
                                #16 : Private Label Distributor Code

        Response Codes: 0       No Command-Specific Errors

        Note: The HART sensor Damping Value is the time slice for averaging
        all discrete object temperatures to one mean value; it is held
        until the next time slice.


COMMAND #16 READ FINAL ASSEMBLY NUMBER

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#2 : Final Assembly Number

        Response Codes: 0       No Command-Specific Errors

        Note: Final Assembly Number in the HART sensor is equal to the 
        Device-ID. 


COMMAND #17 WRITE MESSAGE

        Response Code: 16       Access Restricted


COMMAND #18 WRITE TAG, DESCRIPTOR, DATE

        Requested Data Bytes:   #0..#5 : Tag in Packed-ASCII

        Response Data Bytes:    #0..#5 : Tag in Packed-ASCII
                                #6 ..#17 : not-used-code (Descriptor)
                                #18..#20 : not-used-code (Date)

        Response Codes: 0       No Command-Specific Errors

        Note: Descriptor and Date information not implemented in the HART
        sensor. 


COMMAND #19 WRITE FINAL ASSEMBLY NUMBER

        Response Code: 16       Access Restricted





  4. Common Practice Commands for the HART temperature sensor - HART Rev. 5.3
  ===========================================================================

These commands are defined by the HCF, however the devices manufacturers may 
select the commands they implement.


COMMAND #34 WRITE PV DAMPING VALUE

        Requested Data Bytes:   #0..#3 : Damping Value in seconds (IEEE 754)

        Response Data Bytes:    #0..#3 : Damping Value in seconds (IEEE 754)

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode
                        8       Warning: Set to Nearest Possible Value
        Note: The HART sensor Damping Value is the time slice for averaging
        all discrete object temperatures to one mean value; it is held
        until the next time slice.


COMMAND #35 WRITE PV RANGE VALUES

        Requested Data Bytes:   #0 : PV Range Value Units
                                #1..#4 : PV Upper Range Value in IEEE 754
                                #5..#8 : PV Lower Range Value in IEEE 754

        Response Data Bytes:    #0 : PV Range Value Units
                                #1..#4 : PV Upper Range Value in IEEE 754
                                #5..#8 : PV Lower Range Value in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes
                        7       In Write Protect Mode
                        9       Lower Range Value too High
                        10      Lower Range Value too Low
                        11      Upper Range Value too High
                        12      Upper Range Value too Low
                        14      Span too Small


COMMAND #38 RESET CONFIGURATION FLAG

        Requested Data Bytes:   none

        Response Data Bytes:    none

        Response Codes: 0       No Command-Specific Errors
                        7       In Write Protect Mode


COMMAND #39 EEPROM CONTROL

        Requested Data Bytes:   #0 : EEPROM Control Code
                                        0 : Burn EEPROM
                                        1 : Restore Shadow RAM

        Response Data Bytes:    #0 : EEPROM Control Code

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes
                        7       In Write Protect Mode


COMMAND #40 ENTER/EXIT FIXED PV CURRENT MODE

        Requested Data Bytes:   #0..#3 : PV Current Level in IEEE 754

        Response Data Bytes:    #0..#3 : PV Current Level in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode

        Note: A level of '0' exits the Fixed PV Current Mode.


COMMAND #41 PERFORM TRANSMITTER SELF TEST

        Requested Data Bytes:   none

        Response Data Bytes:    none

        Response Codes: 32      Device Busy


COMMAND #42 PERFORM MASTER RESET

        Requested Data Bytes:   none

        Response Data Bytes:    none

        Response Codes: 32      Device Busy


COMMAND #44 WRITE PV UNITS

        Requested Data Bytes:   #0 : PV Units Code
                                        32 : Degree Celsius
                                        33 : Degree Fahrenheit

        Response Data Bytes:    #0 : PV Units Code

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes
                        7       In Write Protect Mode


COMMAND #45 TRIM PV CURRENT DAC ZERO

        Requested Data Bytes:   #0..#3 : Measured PV Current in IEEE 754

        Response Data Bytes:    #0..#3 : Measured PV Current in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode
                        9       Not in Proper Current Mode
                        11      In Multidrop Mode

        Note: The device has to be put into fixed current mode with a set
        4.00 mA output via command #40.


COMMAND #46 TRIM PV CURRENT DAC GAIN

        Requested Data Bytes:   #0..#3 : Measured PV Current in IEEE 754

        Response Data Bytes:    #0..#3 : Measured PV Current in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode
                        9       Not in Proper Current Mode
                        11      In Multidrop Mode

        Note: The device has to be put into fixed current mode with a set
        20.00 mA output via command #40.


COMMAND #57 READ UNIT TAG, DESCRIPTOR, DATE

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#5 : Unit Tag in Packed-ASCII
                                #6 ..#17 : Unit Descriptor in Packed-ASCII
                                #18..#20 : Unit Date in Day,Month,Year

        Response Codes: 0       No Command-Specific Errors

        Note: This are fixed information. The date is the day of assembly.


COMMAND #59 WRITE NUMBER OF RESPONSE PREAMBLES

        Requested Data Bytes:   #0 : Number of Response Preambles

        Response Data Bytes:    #0 : Number of Response Preambles

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode


COMMAND #108 WRITE BURST MODE COMMAND NUMBER

        Requested Data Bytes:   #0 : Burst Mode Command Number

        Response Data Bytes:    #0 : Burst Mode Command Number

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes
                        7       In Write Protect Mode

        Note: Only read commands are available for Burst Mode's dynamic
        variables (Commands No: 1,2,3,14,15,16,136,139,142,143)


COMMAND #109 BURST MODE CONTROL

        Requested Data Bytes:   #0 : Burst Mode Select Code
                                        0 : Exit Burst Mode
                                        1 : Enter Burst Mode

        Response Data Bytes:    #0 : Burst Mode Select Code

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes
                        7       In Write Protect Mode

        Note: Available for Burst Mode are only read commands for dynamic
              variables (Command No: 1,2,3,14,15,16,136,139,142,143)





  5. Transmitter Specific Commands for the HART temperature sensor - Rev. 5
  =========================================================================

These commands are created by the manufacturer specifically for their own HART 
devices.


COMMAND #128 READ EMISSIVITY

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#3 : Emissivity in IEEE 754

        Response Codes: 0       No Command-Specific Errors


COMMAND #129 WRITE EMISSIVITY

        Requested Data Bytes:   #0..#3 : Emissivity in IEEE 754

        Response Data Bytes:    #0..#3 : Emissivity in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode

COMMAND #130 READ TRANSMISSIVITY

        Requested Data Bytes:   none

        Response Data Bytes:    #0..#3 : Transmission in IEEE 754

        Response Codes: 0       No Command-Specific Errors


COMMAND #131 WRITE TRANSMISSIVITY

        Requested Data Bytes:   #0..#3 : Transmissivity in IEEE 754

        Response Data Bytes:    #0..#3 : Transmissivity in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode


COMMAND #132 READ HOLD FUNCTION VALUE

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Hold Function Code
                                        0 : Hold Function off
                                        4 : Hold Function Valley
                                        5 : Hold Function Peak
                                        6 : Hold Function Valley Advanced
                                        7 : Hold Function Peak Advanced

                                #1..#4 : Hold Time in IEEE 754

        Response Codes: 0       No Command-Specific Errors



COMMAND #133 WRITE HOLD FUNCTION VALUE

        Requested Data Bytes:   #0 : Hold Function Code
                                        0 : Hold Function off
                                        4 : Hold Function Valley
                                        5 : Hold Function Peak
                                        6 : Hold Function Valley Advanced
                                        7 : Hold Function Peak Advanced

                                #1..#4 : Hold Time in IEEE 754

        Response Data Bytes:    #0 : Hold Function Code
                                #1..#4 : Hold Time in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode


COMMAND #134 READ ALARM FUNCTION VALUES

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Alarm Function Code
                                        0 : Alarm Function off
                                        2 : Alarm Function Low
                                        3 : Alarm Function High
                                        6 : Ambient Alarm Function Low
                                        7 : Ambient Alarm Function High
                                #1 : Units Code
                                #2..#5 : Upper Alarm Value in IEEE 754
                                #6..#9 : Lower Alarm Value in IEEE 754

        Response Codes: 0       No Command-Specific Errors


COMMAND #135 WRITE ALARM FUNCTION VALUES

        Requested Data Bytes:   #0 : Alarm Function Code
                                        0 : Alarm Function off
                                        2 : Alarm Function Low
                                        3 : Alarm Function High
                                        6 : Ambient Alarm Function Low
                                        7 : Ambient Alarm Function High
                                #1 : Units Code                          
                                #2..#5 : Upper Alarm Value in IEEE 754
                                #6..#9 : Lower Alarm Value in IEEE 754

        Response Data Bytes:    #0 : Alarm Function Code
                                #1 : Units Code
                                #2..#5 : Upper Alarm Value in IEEE 754
                                #6..#9 : Lower Alarm Value in IEEE 754

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        3       Passed Parameter too large
                        4       Passed Parameter too small
                        5       Too Few Data Bytes
                        7       In Write Protect Mode
                        9       Lower Alarm Value too High
                       10       Lower Alarm Value too Low
                       11       Upper Alarm Value too High
                       12       Upper Alarm Value too Low


COMMAND #136 READ ALARM DETECTION AND HOLD STATUS CODE

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Alarm Detection Code
                                        0 : no Alarm detected
                                        2 : low Alarm detected
                                        3 : high Alarm detected

                                #1 : Hold Status Code
                                        0 : actual Value = PV
                                        2 : Hold active, actual Value < PV
                                        3 : Hold active, actual Value > PV
                                     (Advanced Hold Function Codes)
                                        Bit0 =1 : actual Value > PV
                                        Bit1 =1 : Hold Function active
                                        Bit2 =1 : actual Value > Hold Trigger
                                        Bit3 =1 : Tracking for local Peak/Valley

        Response Codes: 0       No Command-Specific Errors



COMMAND #137 READ AMBIENT CONTROL CODE

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Ambient Control Code
                                        0 : Ambient Temp. = Internal Temp.
                                        1 : Ambient Temp. external

        Response Codes: 0       No Command-Specific Errors


COMMAND #138 WRITE AMBIENT CONTROL CODE

        Requested Data Bytes:   #0 : Ambient Control Code
                                        0 : Ambient Temp. = Internal Temp.
                                        1 : Ambient Temp. external

        Response Data Bytes:    #0 : Ambient Control Code

        Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes


COMMAND #139 READ AMBIENT VALUE

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Ambient Unit Code
                                #1..#4 : Ambient Temperature in IEEE 754

        Response Codes: 0       No Command-Specific Errors


COMMAND #140 WRITE AMBIENT VALUE

        Requested Data Bytes:   #0 : Ambient Unit Code
                                #1..#4 : Ambient Temperature in IEEE 754

        Response Data Bytes:    #0 : Ambient Unit Code
				#1..#4 : Ambient Temperature in IEEE 754

	Response Codes: 0       No Command-Specific Errors
			2       Invalid Selection
			3       Passed Parameter too large
			4       Passed Parameter too small
			5       Too Few Data Bytes
			7       In Write Protect Mode


COMMAND #141 WRITE PROTECT CONTROL

        Requested Data Bytes:   #0 : Write Protect Control Code
                                        0 : Not Write Protected
                                        1 : Write Protected
                                #1..#6 : Password = current Tag

        Response Data Bytes:    #0 : Write Protect Control Code

	Response Codes: 0       No Command-Specific Errors
                        2       Invalid Selection
                        5       Too Few Data Bytes


COMMAND #142 READ SIGNIFICANT DYNAMIC VARIABLES

        Requested Data Bytes:   none

	Response Data Bytes:    #0 : Alarm-Status (see #136)
                                #1 : Hold-Status  (see #136) 
                                #2 : PV/SV-Unit
                                #3.. #6: PV in IEEE 754
                                #7..#10: SV in IEEE 754

        Response Codes: 0       No Command-Specific Errors


COMMAND #143 READ ALL DYNAMIC VARIABLES

        Requested Data Bytes:   none

        Response Data Bytes:    #0 : Alarm-Status (see #136)
                                #1 : Hold-Status  (see #136)
				#2 : PV/SV-Unit
				#3 .. #6: PV in IEEE 754
				#7 ..#10: SV in IEEE 754
				#11..#14: Current in IEEE 754
				#15..#18: Percent of Range in IEEE 754

	Response Codes: 0       No Command-Specific Errors



COMMAND #144 READ FAIL SAFE MODE

        Requested Data Bytes:   none

	Response Data Bytes:    #0 : Fail Safe Mode
                                        0 : off
                                        2 : low current at fail safe
                                        3 : high current at fail safe

        Response Codes: 0       No Command-Specific Errors



COMMAND #145 WRITE FAIL SAFE MODE

        Requested Data Bytes:   #0 : Fail Safe Mode
					0 : off
                                        2 : low current at fail safe
					3 : high current at fail safe

        Response Data Bytes:    #0 : Fail Safe Mode

	Response Codes: 0       No Command-Specific Errors
			2       Invalid Selection
			5       Too Few Data Bytes
			7       In Write Protect Mode


COMMAND #146 READ SPECIAL CODE

	Requested Data Bytes:   none

	Response Data Bytes:    #0..#2 : Special Code

	Response Codes: 0       No Command-Specific Errors


COMMAND #147 READ ERROR CODE

	Requested Data Bytes:   none

	Response Data Bytes:    #0 : Error Code

	Response Codes: 0       No Command-Specific Errors


COMMAND #148 READ HOLD TRIGGER TEMPERATURE

	Requested Data Bytes:   none

	Response Data Bytes:    #0 : Unit Code
				#1..#4 : Trigger Temperature in IEEE 754
				#5..#9 : Hold Hysteresis in IEEE 754

	Response Codes: 0       No Command-Specific Errors


COMMAND #149 WRITE HOLD TRIGGER TEMPERATURE

	Requested Data Bytes:   #0 : Unit Code
				#1..#4 : Hold Trigger Temperature in IEEE 754
				#5..#9 : Hold Hysteresis in IEEE 754

	Response Data Bytes:    #0 : Unit Code
				#1..#4 : Hold Trigger Temperature in IEEE 754
				#5..#9 : Hold Hysteresis in IEEE 754

	Response Codes: 0       No Command-Specific Errors
			3       Passed Parameter too large
			4       Passed Parameter too small
			5       Too Few Data Bytes
			7       In Write Protect Mode




