This support article discusses the most common protocol-specific tokenizer issues and troubleshooting information to resolve them.  


TABLE OF CONTENTS


ERROR 105

Output: FATAL ERROR 105 - cannot open file C:\HCF\DDL\Library\000000\0001\1404.psy. 

Explanation: The tokenizer is obsolete, *.psy files are no longer used.  

Solution: Please upgrade to the latest FDI Package IDE.


ERROR 309

Output: Tokenizer ver 8.x.x ERROR 309: syntax error.  (INIT_ACTIONS)

Explanation:  INIT_ACTIONS is a new attribute introduced for FDI EDDL code. This attribute cannot be used in legacy EDDs (i.e. Tokenizer 8.x or 6.x). 

Solution: Refer to solution Building EDD encoded files from a single source file set, *.FMA Only Project for HART for additional information about pre-processor directives.


ERROR 317

Output: ERROR 317: (path)*.ddl, line xxxxx: Invalid dictionary string name XXXXX. 

Explanation:  

Solution: 

ERROR 342

Output:  [exec] ERROR 342: <path>\<file>, line xxx: Comma is missing in the list.

Explanation:  Syntax error due to a comma missing in between two or more members of a list. The line number may point to the start of the object, not the offending line of source.

Solution: Add the comma where appropriate.


ERROR 423

Output: [exec] ERROR 423: C:\Users\.....\<file>.ddl, line xxx: Redefined item <item name> is missing from the imported DD. 

Explanation: The item is missing in your source file. 

Solution: Please follow the directions specifically indicated in the document "Using the HART Standard DD FCG_AG10101.pdf" Refer to documentation links here: http://go.fieldcommgroup.org/fdi-ide-documentation 

It is critically important that you observe the "dos" and "don'ts" in this document concerning what items that you can import and the required macros that you need to use (assuming your HART device supports that feature). FDI-IDE 1.5.1 and above includes an updated HART Standard Library with new versions of the standard DDs ready for import into your project, however, there are interdependencies within the new macros and imports that must be adhered to so that your source will build properly and without errors.


ERROR 425

Output: [exec] ERROR 425: <path>\<file>, line xxx: Response codes have been changed.

Explanation: All 128 possible Response Codes are defined by FCG TS20307, this error indicates a change to the standard response codes.

Solution: Review the purpose of the modified response code, use the standard response code. 

Note: There are some codes that manufacturers can customize for device-specific commands, see FCG TS20207 multi-definition codes where the notes include the following text "Manufacturers may define another meaning for this code when used by their device specific commands as long as only one meaning is application for a given command.". 


ERROR 504

Output: [exec] ERROR 504: C:\HCF\DDL\Library\000000/0010/symbols.txt, line 15:  Item calibration must be imported but was defined. 

Explanation: There are standard symbols already built into the HART Standard Library with the name "calibration". These symbols are located in Symbol table for STANDARD Menu (0010). This error also applies to variables.


Solution 1 (For Variables and Commands) IMPORT DD Item using the appropriate "Standard EDD"


When you receive this error look in the symbols.txt file, where this DD Item is defined,  located in the standard DD Library directory (ie, \000000\) and find the 4 digit device type directory .  Add the corresponding IMPORT statement and then import the DD item(s) individually.  At that point, you are free to redefine any portion you want (except for the item type).


Pressure Universal 5  (0007)


IMPORT STANDARD _PRESSURE_UNIVERSAL_5, DEVICE_REVISION 2, DD_REVISION 1


Common Pressure       (0008)


IMPORT STANDARD _PRESSURE_COMMON_5, DEVICE_REVISION 2, DD_REVISION 1


Rosemount Magflow     (0011)


IMPORT STANDARD _RMTFLOW, DEVICE_REVISION 5, DD_REVISION 3


Rosemount Pressure    (0012)


IMPORT STANDARD _RMTPRES, DEVICE_REVISION 7, DD_REVISION 4 


Moore Products        (0013)


IMPORT STANDARD _MOORE_STANDARD, DEVICE_REVISION 1, DD_REVISION 4


Siepres               (0014)


IMPORT STANDARD _SIEPRES, DEVICE_REVISION 1, DD_REVISION 1


Draeger               (0015)


IMPORT STANDARD _P2_STD, DEVICE_REVISION 1, DD_REVISION 7

Solution 2 (For Menus): Rename your MENU to make the distinction between your "calibration" menu and the existing Standard library menu.  Menus must be created by the DD developer, the Menu from the Library will be deprecated and should not be imported.


Additional Information: see How to upgrade device specific "symbols.txt" to use Standard HART Commands


ERROR 517

Output: HCF-TOOL-24 Tokenizer Ver 6.3.5 FATAL ERROR 517: Item time_stamp was imported but is not in a symbol file.. 

Explanation: Version 6 of the Tokenizer (fm6 encoded format) does not recognize data type time_value. This was added to later versions of the HART EDDL Specifications (HCF-500).  

Solution:  Pre-processor conditional statements must be added to create fm6 compatible EDDs. See the article How do I create a "Time Value" VARIABLE for HART FMS/FM6 Hosts?


ERROR 519

Output: HCF-TOOL-24 Tokenizer Ver 8.2.22 ERROR 519: (symbols.txt) Item <name> already exists with Item ID XYZ, cannot be redefined. 

Explanation:   The Item ID of the specified item is different in the current Device Description Language (EDDL) file than the Item ID in the existing symbols. The Item ID cannot be redefined for an already existing item. 

Solution:   Change the Item ID of the specified item in the EDDL file to match the above Item ID 

value or use a different unique name for the specified item in the EDDL file.


ERROR 532

Output: HCF-TOOL-24 Tokenizer Ver 8.2.22 ERROR 519: The type of item <name> was redefined from bit-enumerated.variable to enumerated.variable.

Explanation:   Established variable type must never change.  The symbols.txt file holds the variable data type.

Solution:   Create a brand new variable that is the new data type. Do not delete the old variable, as this is referenced by the older DD file versions. If this also changed in the device firmware, a new device revision is also required. See FCG TS20099 section 6.


ERROR 610

Output: [exec] ERROR 610: xxxxxx is a dependent in a_units_relations and b_units_relations. 

Explanation: UNIT relations must contain unique dependent variables (i.e. a variable must only occur once in one of the UNIT relationships defined in the source.) 

Solution: Remove the variable from all but one UNIT relation definition.


ERROR 677

Output:  [exec] ERROR 677: COMMAND xxxxx TRANSACTION z has item reference # n in the REQUEST packet that is missing in the REPLY packet.
Explanation: All HART Commands must be autonomous. 
The HART Command Summary Specification (FCG TS20099) §7.2 requires all request data to be in the response data, this is autonomous data required for HART Protocol devices.

An OPERATION COMMAND may include (or not include) data in the request and if it does, it must still echo that data back in the REPLY.  This type of Command could have 0 data bytes in the Request so in that case there is no data to be sent back to the Host Application from the device. 

The actual bug is in the version 8 tokenizer because that version has not been updated to also display this autonomous error. Tokenizer 10 includes this check.

Exception: The only exception is for a password COMMAND COMMAND, where the contents of the REQUEST representing the user entry of the password is not echoed in the RESPONSE.

Solution: Resolve by including the missing data in the REPLY packets of each transaction.  This may require a firmware change, if so, the device revision must increment when this change is made.


WARNING 603

Output: [exec] WARNING 603: aaaa is the wrong type of item to be used in xxx_refresh It is inadvisable to use CLASS DYNAMIC as a Refresh Variable value.

Explanation: Dynamic variables update frequently and should not trigger a refresh of other variables.   A host has to update CLASS DYNAMIC variables on a regular basis. If they are truly DYNAMIC, then, when the device changes one, the dependents have to be re-read.  If another one changes, the dependents have to be re-read again.  The practice is discouraged because a host could get stuck reading those values and their dependents if they are DYNAMIC and tied to the process.

Solution: Remove dynamic variables from the REFRESH action.

     

WARNING 685

Output: [exec] WARNING 685: File (path).ddl, line xxxxx: Latin-1 encoded string found.

Explanation: Strings should be UTF-8 encoded throughout the EDD source files for FDI Device Packages if any strings are UTF-8. See the EDDL Syntax and Semantics specification, FCG TS61804-3, Ed. 4.1, chapter A.2.3

Solution: Update strings to UTF-8, check that the IDE settings are defaulting to UTF-8 encoding


WARNING 712

Output: [exec] WARNING 712:  Variable 'aaaa' of CLASS DYNAMIC is discouraged from being used in a download MENU.

Explanation: The identified variable is included in a download menu, it is not recommended to use DYNAMIC variables in a download menu because these variables will be written to the device during a download. The online value may be different than the offline value which will be applied during the download.  Some hosts may ask the user if they wish to override the online value first. If it is truly a DYNAMIC variable then the value will change as soon as the device is put in service, causing the download to consume extra bandwidth (and power on a wireless device).

Solution: Remove dynamic variables from the download menu.

GET_DEV_VAR_VALUE string length to short

When using DD_STRING in method consider limitation of size check for user input.

Assume following method


DD_STRING myString;

myString = "ABC.";
GET_LOCAL_VAR_VALUE("Enter longest possible string", myString);

 

In this case you can add only character same length as default value.

In the example only 4 characters.


As workaround you may use the code 'char[]' with a specific size for myString.


Next release (1.5.1) of the EDD Engine will set size of initial value to "max unsigned int = 0xFFFFFFFF" EVAL_VAR_VALUE. (Bugzilla 3166).