Error handling

Fieldbus Access automatically sets up system signals during its initialization face. These signals are accessed for various error information in your application.

CAN bus error

The system signal fieldbusAccess_CANBusError_CAN# receives CAN-Bus info, warning and errors from the SocetCAN driver as follows:

  • WarningLimitSet

  • WarningLimitReset

  • ErrorPassiveSet

  • ErrorPassiveReset

  • BusOff

  • Overrun

  • StuffError

  • FormError

  • AckError

  • CrcError

  • RxBuffHighOverrun

  • RxBuffLowOverrun

  • BusOffReset

  • FirstBusContact

J1939

J1939 errors and CAN bus errors are available on the following signals:

  • fieldbusAccess_J1939Error_CAN#

  • fieldbusAccess_CANBusError_CAN#

J1939 error

With the LinX Manager plugin configured applications will have generated files injected. These files helps with Data Engine connection and communication. System signal fieldbusAccess_J1939Error_CAN# receives listed error codes from the J1939 stack.

Following information is available for each received error message.

Info

Description

Bus

CAN bus interface #

Level

Error level

Code

Error Codes

Identifier

Error identifier

AddInfo

Additional info if available, like PGN concerned

Description

Descripton of the error in clear text

Started

Time when error was received

Ended

Time when the error was cleared (if possible)

Exists

True if error still active

J1939 error example

For a table showing received errors, use fieldbusAccessErrorModel and add following to main.qml:

ListView {
    id: errorListView
    width: view.width - exitButton.width
    height: view.height / 1.5
    model: fieldbusAccessErrorModel
    delegate: Rectangle {
        id: listComponent
        width: view.width - exitButton.width
        height: 20
        color: "#333"
        border {
            width: 1
            color: "#777"
        }

        property color textColor: level == 'OK' ? "#fff" : "#f33"

        Row {
            spacing: 25
            topPadding: 2
            Text {
                text: Number.fromLocaleString(addInfo).toString(16).toUpperCase()
                color: listComponent.textColor
            }
            Text {
                text: level
                color: listComponent.textColor
            }
            Text {
                text: description
                color: listComponent.textColor
            }
            Text {
                text: started
                color: listComponent.textColor
            }
        }
    }
}

Output:

Info

Level

Description

Received

FEEE

Error

A registered message wasn’t received in given time

2021-03-18T13:43:09.974

FF71

Error

A registered message wasn’t received in given time

2021-03-18T13:43:09.974

FEEE

Error

A registered message wasn’t received in given time

2021-03-18T13:43:10.524

For a description of received error codes, please see J1939 Error description

CANopen

Stack errors, NMT state and bus errors will be available as Data Engine signals:

  • fieldbusAccess_CANopenError_CAN#

  • fieldbusAccess_CANopenStatus_CAN#

  • fieldbusAccess_CANBusError_CAN#

If loosing connection to Data Engine, the node will go to pre-operational. This behaviour is configurable.

CANopen error

With the LinX Manager plugin configured applications will have generated files injected. These files helps with Data Engine connection and communication. The system signal fieldbusAccess_CANopenError_CAN# receives CANopen stack specific errors.

For a description of received error codes, please see CANopen Error description

CANopen error example

For a table showing received errors, use canopenStatusModel and add following to main.qml:

ListView {
    id: listView
    anchors {
        left: parent.left
        right: parent.right
        top: parent.top
        margins: 10
    }
    width: view.width - exitButton.width
    height: view.height / 1.5
    model: canopenStatusModel

    delegate: Rectangle {
        id: listDelegate
        implicitWidth: listView.width - exitButton.width
        implicitHeight: 30
        color: "#000"
        border {
            width: 1
            color: "#ccc"
        }
        Row {
            anchors.fill: parent
            anchors.leftMargin: 10
            spacing: 5

            Text {
                anchors.verticalCenter: parent.verticalCenter
                color: "#fff"
                text: bus
            }
            Text {
                anchors.verticalCenter: parent.verticalCenter
                color: "#fff"
                text: type
            }
            Text {
                anchors.verticalCenter: parent.verticalCenter
                color: "#fff"
                text: message
            }
            Text {
                anchors.verticalCenter: parent.verticalCenter
                color: "#fff"
                text: received
            }
        }
    }
}

Output:

CAN-bus

Level

Description

Received

0

Error

Successful

2021-03-18T14:54:20.549

0

Status

Pre-operational

2021-03-18T14:54:20.549

CANopen status

The system signal fieldbusAccess_CANopenStatus_CAN# receives stack state specific information from the Network Management (NMT).

State

Code (hex)

Initialisation

0x00

Pre-Operational

0x04

Operational

0x05

Stopped

0x7F

CANopen status example

To show information about received status, add following to main.qml.

Text {
    anchors.right: parent.right
    anchors.bottom: parent.bottom
    color: "#C00"
    font.pixelSize: 32;
    text: (dataEngine.fieldbusAccess_CANopenStatus_CAN0.value === FieldbusAccessCANopenStatusModel.NodeStateInitialisation) ? "Initialisation" :
            (dataEngine.fieldbusAccess_CANopenStatus_CAN0.value === FieldbusAccessCANopenStatusModel.NodeStateStopped) ? "Stopped" :
            (dataEngine.fieldbusAccess_CANopenStatus_CAN0.value === FieldbusAccessCANopenStatusModel.NodeStateOperational) ? "Operational" :
            (dataEngine.fieldbusAccess_CANopenStatus_CAN0.value === FieldbusAccessCANopenStatusModel.NodeStatePreOperational) ? "Pre Operational" : "N/A";
}

Output:

Description

Pre Operational