This support article discusses the most common protocol-specific tokenizer issues and troubleshooting information to resolve them.
TABLE OF CONTENTS
- ERROR 105
- ERROR 342
- ERROR 425
- ERROR 504
- ERROR 610
- ERROR 677
- WARNING 603
- WARNING 712
- GET_DEV_VAR_VALUE Method Crash
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.
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.
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.".
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
IMPORT STANDARD _SIEPRES, DEVICE_REVISION 1, DD_REVISION 1
IMPORT STANDARD _P2_STD, DEVICE_REVISION 1, DD_REVISION 7
Additional Information: see How to upgrade device specific "symbols.txt" to use Standard HART Commands
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.
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.
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.
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.
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.