Issue
How to decode BACnet errors when they are encountered in the following products.
Product Line
EcoStruxure Building Operation, Andover Continuum, TAC IA Series
Environment
- EBO Error Log Tool
- Continuum bCX4040 (BACnet)
- Continuum b3s
- Building Operation Multi-purpose Controller (MPC/V)
- Building Operation Room Controller (RPC/V)
- Building Operation IP-IO
- EBO Trace and System logs
Cause
Documentation is unavailable for these errors when reviewing log files against any captures.
Resolution
The error in log files is composed of two fields, BACnetErrorClass and BACnetErrorCode. The BACnet Error Class (BEC) field is made of the high 16 bits and the BACnet Error Code (BE) of the low 16 bits.
0x800 indicates the error class and error code are in Hexidecimal format.
Error Class 0x8001, when remove 0x800, 1 decodes to Object
Error Code 001f decodes to Unknown Object
Therefore, the error code is Object_Unknown Object, where the device indicates it has no knowledge of the object, either it does not exist or the device does not have the expected program/database installed. For b3, it could be memory was wiped on power failure and needs to be reloaded. It could mean the expected application needs to be downloaded for other devices.
The following are a subset of BACnet errors defined in the specification. If you have questions or encounter ones not listed, please contact Product Support Services.
Error Class List
High 16 bits of Error. See BACnet spec clause 18.
May not include 0x8000. (Example: could be 0x5002B instead of 0x8005002B for COV subscription failed)
Error Class |
Hex(0x800) |
Dec |
Notes |
device |
0 |
0 |
|
object |
1 |
1 |
|
property |
2 |
2 |
|
resources |
3 |
3 |
|
security |
4 |
4 |
|
services |
5 |
5 |
|
vt |
6 |
6 |
|
proprietary |
|
|
64 is the first available code for proprietary error classes |
client |
7FFD |
|
0x7FFD0000 |
Reject |
7FFE |
|
0x7FFE0000 (error code is BACnetReject) |
Abort |
7FFF |
|
0x7FFF0000 (error code is BACnetAbort) |
Error Code List
Low 16 bits of Error. See BACnet spec clause 18.
Error Code |
Hex (0x) |
Dec |
other |
0 |
0 |
authentication_failed |
1 |
1 |
configuration_in_progress |
2 |
2 |
device_busy |
3 |
3 |
dynamic_creation_not_supported |
4 |
4 |
file_access_denied |
5 |
5 |
incompatible_security_levels |
6 |
6 |
inconsistent_parameters |
7 |
7 |
inconsistent_selection_criterion |
8 |
8 |
invalid_data_type |
9 |
9 |
invalid_file_access_method |
A |
10 |
invalid_file_start_position |
B |
11 |
invalid_operator_name |
C |
12 |
invalid_parameter_data_type |
D |
13 |
invalid_time_stamp |
E |
14 |
key_generation_error |
F |
15 |
missing_required_parameter |
10 |
16 |
no_objects_of_specified_type |
11 |
17 |
no_space_for_object |
12 |
18 |
no_space_to_add_list_element |
13 |
19 |
no_space_to_write_property |
14 |
20 |
no_vt_sessions_available |
15 |
21 |
property_is_not_a_list |
16 |
22 |
object_deletion_not_permitted |
17 |
23 |
object_identifier_already_exists |
18 |
24 |
operational_problem |
19 |
25 |
password_failure |
1A |
26 |
read_access_denied |
1B |
27 |
security_not_supported |
1C |
28 |
service_request_denied |
1D |
29 |
timeout |
1E |
30 |
unknown_object |
1F |
31 |
unknown_property |
20 |
32 |
removed |
21 |
33 |
unknown_vt_class |
22 |
34 |
unknown_vt_session |
23 |
35 |
unsupported_object_type |
24 |
36 |
value_out_of_range |
25 |
37 |
vt_session_already_closed |
26 |
38 |
vt_session_termination_failure |
27 |
39 |
write_access_denied |
28 |
40 |
character_set_not_supported |
29 |
41 |
invalid_array_index |
2A |
42 |
cov_subscription_failed |
2B |
43 |
not_cov_property |
2C |
44 |
optional_functionality_not_supported |
2D |
45 |
invalid_configuration_data |
2E |
46 |
datatype_not_supported |
2F |
47 |
duplicate_name |
30 |
48 |
duplicate_object_id |
31 |
49 |
property_is_not_an_array |
32 |
50 |
Common BACnet errors you may see:
Error Code |
Translation |
Notes |
0x8000001e |
Device + timeout |
likely something is offline |
0x8001001f |
Object + unknown object |
likely b3/AS memory was wiped in power fail |
0x80020020 |
Property + unknown property |
|
0x80020025 |
Property + value out of range |
likely writing 0 to a multistate object |
0x80020028 |
Property + write access denied |
|
0x8002002c |
Property + not cov property |
trying to subscribe to non COV property |
0x8002002e |
Property + invalid configuration data |
likely configured a change-of-value alarm on non-analog |
0x80030000 |
Resources + out of memory |
|
0x80050007 |
Services + inconsistent parameters |
|
0x80050019 |
Services + operational problem |
|
0x8005001D |
Services + service request denied |
|
0x8005002B |
Services + COV subscription failed |
(0x5002B may show, not including the 0x800) |
In Wireshark, using the display filter bacapp.type == 5 one will see errors dissected in the APDU packets in Decimal format. In this example, the BACnet device returns an error for Device (0) and operational problem (25) when responding to a readPropertyMultiple.