Hello, I have a Lithium battery with a BMS that has a CANopen interface using the PDO Protocol. The rest of the system is standard CAN and the communication is unidirectional (i.e. I only need to pull data out of the Battery). The Ixxat CAN@net and CANbridge come up as CANopen compatible but I can’t find any further information about it.
Yes, you can map CANopen to CAN Classic using the CAN@net NT.
CANopen is based on CAN. The meaning of the identifier of the CAN message can be defined proprietary.
The CANopen protocol just defines the meaning of the identifier of the CAN messages and
the communications mechanism like NMT, SDO and PDO.
The PDOs are CAN messages with e.g. ID (0x180 + CANopen Node Number) and up to 8 process data bytes.
Predefined connection set for PDO
0x180 + NodeID DLC = 0 … 8 Transmit PDO of the CAN node (TPDO1) (optional)
0x280 + NodeID configurable Transmit PDO of the CAN node (TPDO2) (optional)
0x380 + NodeID Transmit PDO of the CAN node (TPDO3) (optional)
0x480 + NodeID Transmit PDO of the CAN node (TPDO4) (optional)
0x200 + NodeID Receive PDO of the CAN Node (RPDO1) (optional)
0x300 + NodeID Receive PDO of the CAN Node (RPDO2) (optional)
0x400 + NodeID Receive PDO of the CAN Node (RPDO3) (optional)
0x500 + NodeID Receive PDO of the CAN Node (RPDO4) (optional)
If you need a galvanic isolation between the BMS and your CANnode:
If you have further questions, I would recommend reaching out to your local office by creating a case at support.hms-networks.com.
I guess my train of thought is the question if the CAN@net NT can assume the role of a CANopen Master? Juggle and handle the NMT states and configure the PDOs? And the other challenge is data conversion. The BMS is reporting the voltage for each cell in mV while I need just the total voltage in Volts. As far as I can tell this is something I need to implement in Lua?
Do you have an EDS file for the CANopen slave? If so, can you share it?
You should be able to use the CAN@net NT in VCI mode with CANopen Configuration Manager or canAnalyser mini to determine which frames to map. Here are some common commands: