I just completed a project with Arduino Uno, CANbus shield and using de Seeedstudio CAN library controlling a maxon EPOS2 servodrive via CANopen. Works perfectly for me.
CANopen is just another way of using the 8 available databytes of an CAN message. Also the CAN ID’s used, have to conform the CANopen specification.
The Seedstudio CAN library allows to receive messages on interrupt, or polled. The interrupt method did not work for me, as I missed messages. Using polled reception and configuring the CAN message filters correctly worked best.
CANopen also allows messages to be Synced with the CANopen master (in this case my Arduino). You can control the CAN busload very nicely in using this mechanism. I was able to send data and receive status messages with 100Hz using a pre-stored motion profile on the uSD card.
The controller has 4 buttons;
-Start (with build in green led)
-Stop (with build in red led)
-Jog up
-Jog down
I have implemented a very simple state-machine, using switch/case statements.
Liked to share my code, could be usefull if you want to start a CANopen project.
i've tried to compile the code and i've received the same error than you. I've been reviewing the code and I think the problem is that you need tu put before the void setup the next:
MCP_CAN CAN(10);
Where 10 is the number of the Chip Select of your Shield.
I've compiled the code and now I don't receive any error.