CANopen is a communication protocol and device profile specification for embedded systems communication over CAN.
The basic CANopen communication and device profiles are given in the CiA 301 specification released by CAN in Automation (CiA), a non-profit organisation that "owns" and maintains the CANopen standard. As the name hints, it is an open standard and available for free if you register. You can register and download the standards from CiA here.
Profiles for more specialized devices are built on top of the basic CiA 301 profile, and are specified in numerous other standards, such as CiA 401 for I/O-modules and CiA 402 for motion control. They can be found at the above link as well.
Often these standards are still referred to as "DS301" etc because they were draft standards (DS) for a very long time, pretty much from the first version in 1995 up to the 4.2 version was released in 2011.
Tag usage
Please always use this tag together with the can-bus tag. CANopen being the network and application layers, CAN being the physical and data link layers.
In case of embedded systems programming, microcontroller programming etc make sure to also include embedded as well as the relevant tag for the microcontroller and/or CAN controller you are using. Also include information about which protocol stack or CAN adapters you are using, if applicable. Some may have tags of their own, such as Vector canoe.
Please note that Stack Overflow is a programming site: you may ask questions about CANopen programming, configuration and protocols here. Questions about hardware or the borderline between hardware/software should be asked at https://electronics.stackexchange.com instead, where CANopen questions are also on-topic.
More info at:
Open source CANopen protocol stack: