Limitations¶
J1939¶
Request messages¶
Fieldbus Access runtime and LinX Manager Fieldbus Access does not have support for request messages. Support is planned for future releases.
Cyclic timeout detection for RX PGNs¶
Timeout detection does not work for RX PGNs with Transmission Mode
set to Cyclic
and Source Address
set to
0xFF
(global). PGNs tracked for reception needs to be configured to be received from a specific transmitter.
Considerations when mixing SPN data types in PGNs¶
The configuration tool allows a mixture of data types for SPNs to be entered. However, there are runtime limitations which need to be considered. Not all combinations are valid and invalid choices may lead to unwanted behaviour or system errors.
The following types are possible to mix without any limitations:
BOOL
CHAR
SHORT
INT
FLOAT
UCHAR
USHORT
UINT
Excluded from the list are: BLOB and STRING. Only one signal can be added to a PDO if the data type is set to BLOB or STRING. If it’s required to use either BLOB or STRING for a signal, then there cannot be any other signals defined in the PDO.
Cyclic reception of the same PGN from multiple sources¶
Reception of the same PGN from multiple sources is supported if the transmission mode is set Change of state
.
Timeout detection of the same PGN from multiple sources is not supported, but there is a workaround that can be applied. The solution is centered around a feature in Fieldbus Access which overrides the configured CAN-bus number. This in combination with a “faked” CAN bus in the configuration makes it possible to have timeout detection of a PGN which is received from multiple sources on a single CAN-connection.
The presented example in the following sections assume that the device which runs Fieldbus Access is connected to the CAN network on bus 0 (first CAN connector) and should receive a PGN from two different sources.
Configure additional CAN buses¶
Any PGN which should be received from multiple sources needs to be defined in a separate J1939 CAN-bus node in LinX Manager Fieldbus Access. The number of added buses should be equal to the number of source addresses which the PGN should be received from (up to a maximum of 8 source addresses).
Example
The PGN EEC1 (61444) should be received from two different sources (0x00 and 0x01). To accomplish this, we first needs
to create two J1939 buses and configure these to use unique Node IDs (one per bus). Fieldbus Access will run one J1939
instance per bus which in the end will communicate on the same physical CAN-bus (hence the need to not share the Node ID
as it would otherwise lead to name claiming issues).
Add PGNs¶
The PGNs that should be received from more than one source can now be added to the configured J1939 buses. The SPNs needs to have unique names. Append the source address to the name is a good way to distinguish between SPNs received from different sources. Update any loaded project with these settings and access the signals as shown in Cyclic timeout detection for J1939 SPNs in QML
Example
Continuing from the previous step, we add EEC1 (61444) from the library to both J1939 buses as RX Signals (receive).
Rename the signals to make it clear that they are received from one or the other source (0x00 and 0x01). Notice that the
field Source Address
is different between the PGN added to Bus 0 and Bus 1. These are set to match the source address
where the PGN should be received from.
Enable CAN override on target¶
An environment variable needs to be set to override the configuration and force Fieldbus Access to communicate on a
specific CAN bus: FIELDBUSACCESS_CAN_BUS_NR_OVERRIDE
. The variable should be assigned the bus number to use (0=first
CAN connector, 1=second CAN connector…).
CC Linux 2.0 and CrossLink TG¶
Add an override configuration to the Fieldbus Access systemd service. Connect to the device via SSH and type the following:
sudo systemctl edit fieldbusaccess
A nano session is opened. Add the following to set the bus number override to 0:
[Service]
Environment="FIELDBUSACCESS_CAN_BUS_NR_OVERRIDE=0"
i.MX 5 and i.MX 6¶
Add export FIELDBUSACCESS_CAN_BUS_NR_OVERRIDE=0
to set the environment variable in the startup-script /opt/etc/init.d/StartupFieldbusAccess
. This will set the bus number override to 0:
#!/bin/sh
export FIELDBUSACCESS_CAN_BUS_NR_OVERRIDE=0
APPLICATION_EXECUTABLE="fieldbusaccess"
APPLICATION_PATH="/opt/bin"
APPLICATION_ARGUMENT="/opt/bin/FieldbusAccess_ConfigFile.json"