Diagnosis

This section explains how BACnet configurations can be analyzed at runtime. Device status in the form of process data, and for BACnet clients the client status, are available for this purposes (see section Process data). Further details can be analyzed via the "Diagnosis" tab of the BACnet device. This section describes the diagnosis via the "Diagnosis" tab and other troubleshooting strategies.

Diagnosis 1:

The diagnosis of the BACnet device is subdivided into several categories. These are described in detail in the following sections. Various options can be activated via a context menu:

Diagnosis 2:

"Auto Update" updates the diagnosis display in 1-second intervals. The category "Last Update" always shows the time at which the diagnosis was last read. The option "Enable Time Measurement" enables the category "ExecutionTime", through which the runtimes of the BACnet stack can be determined. For some values the option "Show Changes/s" activates an additional display showing the changes per second. It is formed over the last 10 read diagnostics and only works if "Auto Update" is activated. The option "Reset Values" resets all diagnostic values.

Diagnosis 3:

Diagnostic data in the PLC

The diagnostic data presented in this section can also be accessed from the PLC via an ADS interface. The function block FB_BACnet_GetDiagInfo offers convenient access.

EthernetDevice category

The EthernetDevice category enables the number of sent and received messages (frames) and any receive and send errors to be determined. These data are read directly from the network driver, which means that they are not reset when a BACnet configuration is reloaded, although the option "Reset Values" deletes these values. This category counts all frames that are processed via the network driver, including non-BACnet frames.

Diagnosis 4:

The counter "sendFrames" indicates how many frames were used, "recvFrames" indicates the number of received frames. "txCnt" and "rxCnt" indicate the number of faulty received and sent frames. Unexpectedly high numbers may indicate network faults or overload (e.g. CRC errors, dropped frames).

ExecutionTime category

Diagnosis 5:

The option "Enable Time Measurement" enables runtime information for TwinCAT BACnet/IP to be determined. For each runtime a minimum (Min), maximum (Max) and current (Cur) value is determined. All runtimes are determined with a resolution of 100 ns. The following values are available as runtimes:

In the top row of the category Execution Time the values IoIn, IoOut and cycle XXXExecution time are consolidated in the form of minimum, maximum and current values (in microseconds).

ConfirmedServices category

This category can be used to determine statistics for sent and received (acknowledged) BACnet messages. Acknowledged services operate in BACnet based on the client-server principle. A client sends a request, the server receives the request, processes it and sends a response (acknowledgement). The client receives the response and can process it further accordingly. Depending on the services a TwinCAT BACnet/IP device can act as a client or a server. The following figure shows the procedure for acknowledged services.

Diagnosis 6:

In the ConfirmedServices category, a list with the number of sent and received requests and sent and received responses is maintained for each supported service. The list shows how many requests/responses were processed successful and how many errors occurred. The 8 values for each BACnet service shown in the screenshot below are derived from these combinations. The top row of each service shows the total number of successful requests and responses and errors.

Diagnosis 7:

In the classification of BACnet services a distinction is made between so-called A-services and B-services, depending on which role (client or server) a device assumes for a service. If a device acts as a client, i.e. if it uses a request and receives a response (Ack), it uses an A-service. If a device receives a request, processes it and sends a response (Ack), it provides the B-service. If, for example, a client reads the value of a property of another device, the service ReadProperty-A is used. The remote terminal, the server, implements the ReadProperty-B service in this case. For diagnostics it is important to distinguish between A and B services. The following table is therefore subdivided into these service categories.

For acknowledged services an A-service is always associated with the counters ReqSend and AckRecv, a B-service always with ReqRecv and AckSend. The table indicates for the potential errors in which cases the error counter was incremented (e.g. ReqSendFail>0). In A-services an important error indicator may be a mismatch between the number of sent requests and received responses (Ack). Thus error type is referred to as (Req<>Ack).

Diagnosis 8:

Service diagnosis

With BACnet it should be noted that increased error counters in the diagnosis not necessarily indicate a misconfiguration. In BACnet networks short load peaks and lost messages are not uncommon. Suitable repetition mechanisms have been implemented to deal with this (ApduRetries and ApduTimeout). However, if the error rate is excessive it is advisable to find the cause.

The following table provides an overview of relevant BACnet services and their diagnosis. The section explains which function the services perform, where the services are used in TwinCAT BACnet/IP, which possible causes of errors can be diagnosed and possible solutions.

AcknowledgeAlarm-B

(ReqRecv, AckSend)

Use:

Acknowledging pending alarms

Possible errors:
nReqRecvFail>0: incorrect request parameters (wrong EventState, wrong Timestamp, Instrinsic Reporting for the object is disabled)
nAckSendFail: no frame memory, no router memory

Error handling:
Check remote terminal

ConfirmedCOVNotification-A

(ReqSend, AckRecv)

Use:

Remote terminal has subscribed to change of value. Service sends message in the event of change.

Possible errors:
ReqSendFail>0 : no frame memory, no router memory, no available Invoke-IDs
Req <> Ack: remote terminal not available or overloaded

Error handling:
Check/increase COVIncrement property for analog* objects. Reduce BACnet cycle time: for writing process data fewer modifications are then generated. Check configuration for continuously changing properties. Check whether remote terminal can use non--acknowledged COV subscriptions.

ConfirmedCOVNotification-B

(ReqRecv, AckSend)

Use:

Receipt of a change of value

Possible errors:
nReqRecvFail>0: faulty request parameters (process ID not available, unknown object, unknown property, message does not contain the expected data type), no router memory

Error handling:
Check remote terminal

ConfirmedEventNotification-A

(ReqSend, AckRecv)

Use:

Message for change in event state (Instrinsic Reporting)

Possible errors:
ReqSendFail>0: no frame memory, no router memory, no available Invoke-IDs
Req <> Ack: remote terminal not available or overloaded

Error handling:
Check whether sending of event notifications is meaningful for all objects. Perhaps deactivate Instrinsic Reporting properties, deactivate event notification via property EventEnable, or allocate a NotificationClass without recipients to all objects that should not send event notifications. Perhaps use unconfirmed event notifications (issueConfirmedNotifications in NotificationClass:RecipientList.)

ConfirmedEventNotification-B

(ReqRecv, AckSend)

Not covered by certification

Use:

Receipt of event messages in the notification sink

Possible errors:
nReqRecvFail>0: faulty request parameters (process ID not available, receive buffer for event notifications full), no router memory

Error handling:
check remote terminal, increase buffer size for EventNotifications, increase delete interval for message buffer

GetAlarmSummary-B
(ReqRecv, AckSend)

Use:

Call up summary of all objects in alarm state

Possible errors:
nReqRecvFail>0: no router memory
nAckSendFail: no frame memory, no router memory

GetEnrollmentSummary-B

Use:

Call up a summary of event-specific information (with comprehensive filter options)

Possible errors:
nReqRecvFail>0: no router memory
nAckSendFail: no frame memory, no router memory

SubscribeCOV-A

(ReqSend, AckRecv)

Use:

Service for subscribing to a change of value (COV) of properties "PresentValue" and "StatusFlags" for analog*, binary* and MultiState* objects. With remote objects for process data in COV mode. TrendLog for remote objects with LogInterval=0. COV subscriptions configured in NotificationSink.

Possible errors:
ReqSendFail>0: connection data cannot be resolved (client status not Complete), no frame memory, no router memory, no available Invoke IDs
Req <> Ack: remote terminal not available or overloaded.

Error handling:
Activate optimization of the process data in the "PropertyWizzard", increase cycle times, subscribe to fewer properties, read properties cyclically that cannot be subscribed to via COV (polling)

SubscribeCOV-B

(ReqRecv, AckSend)

Use:

Receipt of a subscription to a change of value (COV) of properties "PresentValue" and "StatusFlags" for analog*, binary* and MultiState* objects.

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unsupported property, invalid array index), maximum number of supported COV subscriptions for object reached, no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase the number of supported COV subscriptions per object in Advanced Parameter (MAX_OBJ_SUBS_COV_ENTRIES)

AtomicReadFile-B

(ReqRecv, AckSend)

Use:

Reading a file

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unsupported object, invalid FileStart position, access via record), no router memory
nAckSendFail: no frame memory, no router memory, local segment buffer full, too many data for supported segmentation of the remote terminal

Error handling:
Increase Advanced Parameter MAX_RECV_BAC_SEGM_FRAMES

AtomicWriteFile-B

(ReqRecv, AckSend)

Use:

Writing a file

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unsupported object, invalid FileStart position, access via record), no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase Advanced Parameter MAX_RECV_BAC_SEGM_FRAMES

AddListElement-B

(ReqRecv, AckSend)

Use:

Adding a list element

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unsupported property, property is not a list, property is read-only), property memory exceeded, no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase property list memory (LIST_ALLOC_MEM_BYTES). Some lists are managed in TwinCAT BACnet/IP as arrays (e.g. RecipientList, DateList). Increase MAX_PROPERTY_ARRAYELEMENTS.

RemoveListElement-B

(ReqRecv, AckSend)

Use:

Removing a list element

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unsupported property, property is not a list, property is read-only, element not available), no router memory
nAckSendFail: no frame memory, no router memory

ServiceCreateObject-B

(ReqRecv, AckSend)

Use:

Generating a dynamic object

Possible errors:
nReqRecvFail>0: faulty request parameters (unsupported object type, invalid property parameter data, object name or ObjectIdentifier already allocated, maximum number of objects exceeded), no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase Advanced Parameter MAX_OBJECTS

ServiceDeleteObject-B

(ReqRecv, AckSend)

Use:

Unloading a dynamic object

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, static object - only dynamic objects can be deleted), no router memory
nAckSendFail: no frame memory, no router memory

ReadProperty-A

(ReqSend, AckRecv)

Use:

Reading a property of a remote device

Possible errors:
ReqSendFail>0 : connection data cannot be resolved (client status not Complete), no frame memory, no router memory, no available Invoke IDs
Req <> Ack: remote terminal not available or overloaded.

Error handling:
Activate optimization of the process data in the "Property Wizzard. Increase cycle times. Request fewer properties during polling: use SubscribeCOV service

ReadProperty-B

(ReqRecv, AckSend)

Use:

Reading a local property

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unknown property, no read access, invalid array index), no router memory
nAckSendFail: no frame memory, no router memory, local segment buffer full, too many data for supported segmentation of the remote terminal

ReadPropertyMultiple-B

(ReqRecv, AckSend)

Use:

Reading several local objects and properties with one access

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown objects, unknown properties, no read access, invalid array index), no router memory
nAckSendFail: no frame memory, no router memory, local segment buffer full, too many data for supported segmentation of the remote terminal

Error handling:
in the event of excessive data, the remote terminal should use ReadProperty. Perhaps read list and array properties for each index. Increase Advanced Parameter MAX_SEND_BAC_SEGM_FRAMES

WriteProperty-A

(ReqSend, AckRecv)

Use:

Writing a property of a remote device

Possible errors:
ReqSendFail>0: connection data cannot be resolved (client status not Complete), no frame memory, no router memory, no available Invoke IDs
Req <> Ack: remote terminal not available or overloaded.

Error handling:
Activate optimization of the process data in the "PropertyWizzard. Increase cycle times. Subscribe to fewer properties. Activate WriteOnChange in the process data configuration (with WriteOnChange a maximum of WriteProperty per client property "cycle time" is executed.)

WriteProperty-B

(ReqRecv, AckSend)

Use:

Writing a local property

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unknown property, no write access, invalid array index, wrong data type), no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase property list memory (LIST_ALLOC_MEM_BYTES). Increase Advanced Parameter MAX_PROPERTY_ARRAYELEMENTS. Perhaps remove write protection ("Optional Properties" tab). Examine remote terminal!

WritePropertyMultiple-B

(ReqRecv, AckSend)

Use:

Writing several local objects and properties with one access

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown objects, unknown properties, no write access, invalid array index, wrong data type), no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase property list memory (LIST_ALLOC_MEM_BYTES). Increase Advanced Parameter MAX_PROPERTY_ARRAYELEMENTS. Perhaps remove write protection ("Optional Properties" tab). Use WriteProperty. Examine remote terminal!

DeviceCommunicationControl-B

(ReqRecv, AckSend)

Use:

Communication control of a device (switching off message processing)

Possible errors:
nReqRecvFail>0: faulty request parameters (invalid password), no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Synchronize password configuration in remote terminal with password (BACnet server "Authentication"). Check password encoding.

ReinitializeDevice-B

(ReqRecv, AckSend)

Use:

Initiates a device restart or changes the device status to backup or restore mode.

Possible errors:
nReqRecvFail>0: faulty request parameters (invalid password, device is not in operational state, device cannot restart since it is in backup or restore state), no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Synchronize password configuration in remote terminal with password (BACnet server "Authentication"). Check password encoding. Some functions of ReinitializeDevice-B (backup, restore, restart) function only in RUN mode. Check whether enough data memory is available for backup/restore.

ReadRange-B

(ReqRecv, AckSend)

Use:

Reading of lists (in particular the property LogBuffer)

Possible errors:
nReqRecvFail>0: faulty request parameter (unknown object, unknown property, property is not a list, attempt to access unsupported properties with parameter "TimeRange" and "BySequence"), no router memory
nAckSendFail: no frame memory, no router memory

SubscribeCOVP-A

(ReqSend, AckRecv)

Use:

Service for subscribing to a change of value (COV-P) with any objects and properties. With remote objects for process data in COV mode. For TrendLog for remote objects with LogInterval=0. COV subscriptions configured in NotificationSink.

Possible errors:
ReqSendFail>0 : connection data cannot be resolved (client status not Complete), no frame memory, no router memory, no available Invoke IDs
Req <> Ack: remote terminal not available or overloaded.

Error handling:
Activate optimization of the process data in the "PropertyWizzard. Increase cycle times. Subscribe to fewer properties. Read properties cyclically that cannot be subscribed to via COV-P (polling).

SubscribeCOVP-B

(ReqRecv, AckSend)

Use:

Receiving of a subscription for a change of value (COV-P) with any objects and properties.

Possible errors:
nReqRecvFail>0: faulty request parameters (unknown object, unsupported property, invalid array index), maximum number of supported COV subscriptions for object reached, no router memory
nAckSendFail: no frame memory, no router memory

Error handling:
Increase the number of supported COV subscriptions per object in the Advanced Parameters menu (MAX_OBJ_SUBS_COV_ENTRIES).

GetEventInformation-B

(ReqRecv, AckSend)

Use:

Call up summary of all objects in event state

Possible errors:
nReqRecvFail>0: no router memory
nAckSendFail: no frame memory, no router memory

UnconfirmedServices category

Unlike confirmed services, unconfirmed services are unidirectional. A client will therefore send request, and a server receives it. The following table provides a detailed description of the unconfirmed services of the BACnet diagnosis.

IAm-A

(ReqSend)

Use:

Announcing the server in the network

Possible errors:
ReqSendFail>0: no frame memory, no router memory

IAm-B

(ReqRecv)

Use:

Announcing a device from the network

Possible errors:
nReqRecvFail>0: DeviceAddressBinding list is full, no router memory

Error handling:
Increase the number of supported AddressBindings in the Advanced Parameters (MAX_DEVICE_BINDINGS)

IHave-A

(ReqSend)

Use:

Reports an object that was searched in the network

Possible errors:
ReqSendFail>0: no frame memory, no router memory

UnconfirmedCOVNotification-A

(ReqSend)

Use:

Remote terminal has subscribed to change of value. Service sends unconfirmed message in the event of change.

Possible errors:
ReqSendFail>0: no frame memory, no router memory

Error handling:
Check/increase COVIncrement property for analog* objects. Reduce BACnet cycle time: for writing process data fewer modifications are then generated. Check configuration for continuously changing properties.

UnconfirmedCOVNotification-B

(ReqRecv)

Use:

Unconfirmed receipt of a change of value

Possible errors:
nReqRecvFail>0: faulty request parameters (process ID not available, unknown object, unknown property, message does not contain the expected data type), no router memory

UnconfirmedEventNotification-A

(ReqSend)

Use:

Unconfirmed message for change in event stage (Instrinsic Reporting)

Possible errors:
ReqSendFail>0: no frame memory, no router memory

Error handling:
Check whether sending of event notifications is meaningful for all objects. Perhaps deactivate Instrinsic Reporting properties, deactivate event notification via property EventEnable, or allocate a NotificationClass without recipients to all objects that should not send event notifications.

UnconfirmedEventNotification-B

(ReqRecv)

Use:

Unconfirmed receipt of event notifications in the notification sink

Possible errors:
nReqRecvFail>0: faulty request parameters (process ID not available, receive buffer for event notifications full), no router memory

TimeSynchronisation-B

(ReqRecv)

Use:

Receipt of a timestamp for time synchronization

Possible errors:
nReqRecvFail>0: system time could not be synchronized since synchronization is already running or TwinCAT is in free-run state, no router memory

Error handling:
Switch TwinCAT to the "Run" state

WhoHas-B

(ReqRecv)

Use:

Search for certain objects in a network

Possible errors:
nReqRecvFail>0: device does not process notifications since this function was switched off via the service "DeviceCommunicationControl", no server created, no router memory

WhoIs-A

(ReqSend)

Use:

Scanning of a network for devices and querying of the device communication parameters

Possible errors:
ReqSendFail>0: no frame memory, no router memory

WhoIs-B

(ReqRecv)

Use:

Querying the server for device communication parameters

Possible errors:
nReqRecvFail>0: device does not process notifications since this function was switched off via the service "DeviceCommunicationControl", no server created, no router memory

UTCTimeSynchronisation-A

(ReqSend)

Use:

Sending a UTC timestamp for time synchronization

Possible errors:
ReqSendFail>0: no frame memory, no router memory

UTCTimeSynchronisation-B

(ReqRecv)

Use:

Receipt of a UTC timestamp for time synchronization

Possible errors:
nReqRecvFail>0: system time could not be synchronized since synchronization is already running or TwinCAT is in free-run state, no router memory

Error handling:
Switch TwinCAT to the "Run" state

FrameStatistic category

This category consolidates counters of sent and received BACnet messages. In addition the system can detect how often during operation the physical link of the network adapter was lost.

Diagnosis 9:

The individual counters are described in more detail below, and possible problem indicators are listed.

nSegmSendTimeouts

Purpose:

Indicates how often timeouts occurred during waiting for confirmation of a segment.

Problem indicator:
the remote terminal may be overloaded or no longer reachable.

nFrameAllocFailCnt

Purpose:

Indicates how often no memory for sending of BACnet messages could be allocated.

Problem indicator:
The number of messages sent per cycle may be too high. It may be possible to activate the network adapter queues (see Advanced parameters). Check whether a connection to the network exists. A high value for this counter typically indicates a local overload situation.

nFrameSendCnt

Purpose:
Indicates how many BACnet messages were sent successfully.

nFrameSendFailCnt

Purpose:

Indicates how many BACnet messages could not be sent.

Problem indicator:
The number of messages sent per cycle may be too high. It may be possible to activate the network adapter queues (see Advanced parameters). Check whether a connection to the network exists. A high value for this counter typically indicates a local overload situation.

nFrameRecvCnt

Purpose:

Indicates how many BACnet messages were received without error.

nFrameRecvFailCnt

Purpose:

Indicates how many BACnet messages were received with error. This counter indicates the total of the AckRecvFail and ReqRecvFail counters for all services.

Problem indicator:
The problem should be analyzed in more detail via the categories ConfirmedServices and UnconfirmedServices.

nLinkStatusChangedCnt

Purpose:

Indicates how often the LinkStatus of the network adapter has changed.

Problem indicator:
Normally this counter has the value 1 (link on system startup.)

MemoryInfo category

The MemoryInfo category consolidates memory-specific information. In the top row of Windows CE devices the available main and flash memory is indicated. The individual counters are explained in the following table.

nAmsAlloc

nAmsAllocCntMax
nAmsAllocFailCnt

Purpose:

These counters represent the allocation behavior of the BACnet stack for the router. nAmsAlloc indicates the current number of allocations. nAmsAllocCntMax indicates the maximum number of activated allocations at one time. nAmsAllocFailCnt indicates how often it was not possible to allocate memory. These counters do not provide information about the size of the allocated memory.

Problem indicator:
Router memory is used for temporary operations, e.g. for processing of messages and for saving EventNofitications and COV notification in the NotificationSink. A consistently high counter nAmsAlloc indicates an overload situation.

nCeAvailPhysMemBytes

nCeAvailFlashMemBytes

Purpose:

These counters are only implemented for Windows CE. They indicate how many RAM and flash memory is available.

Problem indicator:
If not enough RAM (nCeAvailPhysMemBytes) is available, it may not be possible to allocate dynamic objects. Flash memory is important for saving persistent data and for backup and restore operations.

nRecvFrameFifoSize

nEmptyFrameFifoSize

Purpose:

If network adapter queues are used, these counters indicate the available list memory for received (nRecvFrameFifoSize) and to be sent messages (nEmptyFrameFifoSize).

Problem indicator:
If the memory is inadequate, the size can be increased via the parameter dialog of the network adapter queues.

nRecvSegmUDPFramesListSize
nRecvSegmFramesListSize
nSendSegmFramesListSize

Purpose:

These counters provide information about the messages segments currently stored intermediately. A distinction is made between IP segmentation (UDP) and BACnet NPDU segmentation, and between segments that are earmarked for delivery (Send) and received segments (Recv).

Problem indicator:
In the event of problems with the segmentation, the Advanced Parameters MAX_RECV_BAC_SEGM_FRAMES and MAX_SEND_BAC_SEGM_FRAMES can be adjusted as required.

nClientScanListSize

Purpose:

Indicates the size of the list of found devices in the network.

nAdsRequestListSize

Purpose:

ADS requests to the BACnet stack are stored intermediately in a list and processed in the context of the BACnet task. This counter indicates the current number of pending ADS requests.

ServerInfo category

A detailed description of the category ServerInfo can be found in section Persistent data.

ClientInfo category

In this category information on the current communication state for each configured BACnet client is displayed.

instanceNumber

Purpose:
Contains the device ID (instance number of the device object) of the BACnet client as assignment feature.

ipAddr udpPort networkNumber

Purpose:

Contains information on communication addresses. BACnet only uses the device ID to identify devices. The IP address can be allocated dynamically. The current IP address can be determined via this diagnostic field. In addition, the UDP port and the network number (for communication via BACnet router, e.g. MS/TP devices) can be read here.

isReachable clientState

Purpose:
ClientSTMState reflects the current state of the client state machine. ClientSTMState can take the following values: Init, Connecting, WaitingForConnection, RequestDeviceInformation, Complete. The operating principle of the ClientState machine is described in the Client Control section. ClientState indicates whether a connection to the remote BACnet device could be established. ClientState is TRUE if the ClientSTMState has reached the value "Complete".
 

Problem indicator:
If a BACnet device cannot be reached, the ClientState machine remains in state "WaitingForConnection". In this case, the reason why the BACnet client is unavailable should be ascertained:

  •  Do the subnet masks of all devices match (e.g. 255.255.255.0)? This is an important prerequisite in BACnet, since it is used to calculate the broadcast addresses used for device searches.
  • Is a gateway configured, if the devices are in different IP ranges? Can the gateway be reached?!!
  • Is the use of a BBMD required (because the devices are in different networks (LANs))?
  • Was a physical connection established? (LinkStatus in the device status of the BACnet adapter; are all cables connected).

nOpenRequests nFreeOpenRequestData nRequestRetries nRequestTimeOuts

Purpose:
This group of diagnostic values shows general information on the communication state of configured process data of the BACnet client. nOpenRequests indicates how many sent, so far unanswered requests exist for this client. This value ultimately reflects the number of invokeIDs used. nFreeOpenRequestData  indicates how many invokeIDs remain available for the client. nRequestRetries indicates how often repetitions had to be sent for the process data-specific requests (ReadProperty, WriteProperty, ReadPropertyMultiple, SubscribeCOV). nRequestTimeOuts indicates how many process data-specific requests have failed, despite repetitions. The intervals between request repetitions are derived from the property APDU-Timeout of the server device object.
 

Problem indicator:
nRequestTimeOuts should never be greater than 0. This would indicate problematic communication errors. Occasional repetitions (nRequestRetries) may be acceptable. Solutions can be derived from the following 3 table rows, which list details of problems relating to the individual communication services.

nCyclicCovRequests
nCyclicCovPendingCounter
nFailedCovRequests

Purpose:
These values provide information on COV-specific communication services. These values refer to registering of COV messages (SubscribeCOV). nCyclicCovRequests indicates how many property process data were configured with mode COV (Confirmed, Unconfirmed, Unsolicited). nCyclicCovPendingCounter indicates how many open SubscribeCOV requests exist for this BACnet client. The maximum number of parallel (open) requests per client can be specified via the Advanced Parameter  MAX_PARALLEL_COV_SUBSCRIPTIONS. nFailedCovRequests indicates how many registrations of COV messages have failed.

Problem indicator:
nFailedCovRequests should never differ from 0. To subscribe to a large number of properties of a remote device, in some cases ReadPropertyMultiple can be used. If necessary, check whether the remote terminal supports COV and whether the subscribed properties are supported via COV or COV-P.

nCyclicReadPollingRequests nFailedReadRequests

Purpose:
These values provide information on polling-based process data (ReadProperty, RPM-O, RPM-C). nCyclicReadPollingRequests indicates how many messages were configured for this process data type. Attention: this value does not contain the number of configured properties, but the number of messages required for data transfer. With RPM-O and RPM-C, several property values are read with one message. nFailedReadRequests contains the number of failed read attempts.

Problem indicator:
nFailedReadRequests should never be greater than 0, if possible. In the event of an error, check whether the remote terminal supports RPM. In the event of overload, the number of process data properties should be reduced, or the polling interval should be increased.

 nCyclicWriteRequestsnFailedWriteRequests

Purpose:
These values refer to writing process data. nCyclicWriteRequests indicates how many writing properties were configured under this BACnet client. nFailedWriteRequests indicates how many write requests (WriteProperty) failed, despite repetitions.

Problem indicator:
nFailedWriteRequests should never differ from 0. In the event of overload, the cycle time should be increased. It determines how often changes can be written. If necessary, check whether attempts to write non-existing or read-only BACnet properties are made.