There are some predefined device variable codes.
244 is the percent range
245 is the loop current
246 is Primary Value (PV)
247 is Secondary Value (SV)
248 is Tertiary Value (TV)
249 is Quaternary Value (QV)
Every device must include these codes in addition to the manufacturer specific codes. (HCF_SPEC-99 section 8 page 39)
If you do not implement device variables, then in addition to the codes listed above you will also use Device Variable 0 for PV, 1 for SV, 2 for TV, and 3 for QV. (HCF_SPEC-127 section 6.20 page 23 )
If you implement device variables, then you will begin numbering your device variables at 0 and increment singly until you have numbered all variables. (HCF_SPEC-99 section 8 page 38)
Your response to command 0 will include the number of the last device variable supported (less than 239). For instance, if you support 0 to 4 as device variables, you will return 4 as the last code supported in byte 13 of command 0 response. The device will still respond to 245-249, but those are predefined and are not taken into account in the command 0 response.
All Device Variables are IEEE 754 Floating Point values.
IEEE 754 does not define the specific values for signaling and non-signaling NAN. The HART NAN is a signaling NAN used to represent when a floating point variable is unused. The result of a signaling NAN is that the value cannot propagate in the system. A signaling NAN should not be used to represent an error in a function. A non-signaling NAN is generated when a mathematical result is inconclusive or there is another issue in the calculation. The HART specification uses IEEE 754 as a base, but includes the NAN value for signaling NAN. The non-signaling NAN is a value that you will need to implement and is platform/compiler dependent.
HART defines a signaling NAN for unsupported variables. If you do not support a device variable, then the device variable Value must be set to 0x7FA00000; the device variable Status must be set to 0x30, (i.e., Status = "Bad" and Limit ="Constant"); the device variable Units Code must be set to 0xFA "Not Used"; and the Device Variable Classification must be set to 0x00, "Not Yet Classified".
An unsupported device variable returns the signaling HART NAN. If a device variable is supported in a device, it must not return the HART signaling NAN. Error must be indicated by another value.
The IEEE-754 spec states that a NAN as follows:
S111 1111 1X?? ???? ???? ???? ???? ????
Where S is the sign bit and X determines whether the value is a non-signaling NAN (X=1) or signaling NAN (X=0).
In the HART signaling NAN, the value is 0x7FA00000 which has the following pattern
0111 1111 1010 0000 0000 0000 0000 0000
This value indicates a signaling NAN. The HART Signaling NAN is defined for specific use cases such as indicating Device Variables or Dynamic Variables are unsupported. The value is permanent. The use of the value requires specific unit codes, classification, and status.
One example from a DUT is the value 0x7FFFFFFF which has the following pattern
0111 1111 1111 1111 1111 1111 1111 1111
This value indicates a non-signaling NAN.
The FieldComm Group testcases treat the non-signaling NAN as a transient condition. The expectation is that the device can be configured to avoid reaching the non-signaling NAN.
The FieldComm Group will modify the test in a future release to better address the non-signaling NAN bit.
In the case of a simple temperature device with a single measurement point of temperature, if the device does not support device variables then the following will occur.
Request for device variable 0 will return temperature with the associated units. Request for device Variable 246 will return the same information. Device Variable 244 will return the percent range (temperature value scaled between upper and lower range value). Device Variable 245 will return the loop current (loop current between 4mA and 20mA that represents the percent range which in turn represents the temperature). Figure 10 from HCF_SPEC-99 explains the relationship.
For all other device variables, the device will return the HART NAN of 0x7FA00000 with the appropriate associated information.
The dynamic variable called “primary variable”, which is abbreviated “PV”, in this example is device variable 0. PV = DV0 in this example.
To change the units on the PV, use Command 44 Write Primary Variable Units.
For more information on Dynamic and Device Variables, please refer HCF_SPEC-99 section 8.
DEVICE VARIABLE COMMANDS
Implementation of Commands 33, 53-55, and 79 is recommended:
- Command 33 Read Device Variables
Command 52 Set Device Variable Zero
- Command 53 Write Device Variable Units
- Command 54 Read Device Variable Information
- Command 55 Write Device Variable Damping Value
- Command 56 Write Device Variable Transducer Serial No.
- Command 79 Write Device Variable