1
\$\begingroup\$

I am new to CAN protocol so I have questions about combinations of CAN-Bus nodes on same network:

Is it possible to communicate with two different devices one having CAN in Automation (CiA) CANopen DS 301 and other device having CAN2.0B, 11 standard identifier (ID) on the same bus with same baud rate ? The two devices doesn't have to communicate with each other. They will be communicating with microcontroller.

I understand the fact that CANopen is implemented on top of the CAN Physical and Data Link layers. The controller STM32F407 having CAN interfaces (2.0B Active) will be communicating with above two devices on same bus.

\$\endgroup\$

2 Answers 2

1
\$\begingroup\$

First, CANopen is a protocol specification based on CAN2.0A.

A node that "communicates CAN2.0B" doesn't really say anything. Can be custom, can be j1939.

CAN-open does have an option to use the 29 bit identifiers.
Most controllers can receive and send both.

If correctly implemented these 29-bit messages will just be ignored by nodes that are not listening for them.

If the unit does not specifically say it has support for CANopen you will have to see if any of the messages are in conflict with those used by CANopen.

\$\endgroup\$
2
  • \$\begingroup\$ The unit does mention that it complies with the CAN in Automation (CiA) CANopen DS 301 specification. The other device is BMS board having 11 standard identifier (ID), CAN2.0B (Custom). Why do I need to use 29 bit identifier, if both are 11 bit ID..can they coexist ? \$\endgroup\$
    – MICRO
    Jun 9, 2022 at 20:15
  • \$\begingroup\$ @EmbeddedGeek yes you can use both identifier lengths together \$\endgroup\$
    – Jeroen3
    Jun 9, 2022 at 20:19
0
\$\begingroup\$

The OSI model.

  • CANopen covers network layer up to application layer.
  • CAN bus, so called "high speed CAN", is the physical (ISO 11898-2) and data link layers (ISO 11898-1). "Bosch CAN 2.0B" is an obsolete name since 20 something years back, referring to these two layers.

CANopen only uses 11 bit identifiers by default but is compatible with 29 bit identifiers. DS301 was the working name of the main CANopen standard (there's a whole lot of them) until they were finalized, "DS" meaning draft standard. They were called "DS" for some 10-20 years but is nowadays referred to as CiA 301.

Thus "using DS301 and CAN2.0B on the same bus" doesn't make any sense, it's like asking if we can use cars and asphalt on the same road. Beware of CAN devices which don't explicitly specify what application layer they are using though, because it could be a custom one. And in that case, probably not compatible with CANopen.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.