<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.distrap.org/index.php?action=history&amp;feed=atom&amp;title=CANOpen</id>
		<title>CANOpen - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.distrap.org/index.php?action=history&amp;feed=atom&amp;title=CANOpen"/>
		<link rel="alternate" type="text/html" href="https://wiki.distrap.org/index.php?title=CANOpen&amp;action=history"/>
		<updated>2026-05-14T13:45:37Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.29.0-rc.0</generator>

	<entry>
		<id>https://wiki.distrap.org/index.php?title=CANOpen&amp;diff=3&amp;oldid=prev</id>
		<title>Srk: init</title>
		<link rel="alternate" type="text/html" href="https://wiki.distrap.org/index.php?title=CANOpen&amp;diff=3&amp;oldid=prev"/>
				<updated>2017-08-26T22:52:13Z</updated>
		
		<summary type="html">&lt;p&gt;init&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= CANOpen =&lt;br /&gt;
&lt;br /&gt;
CANopen is a communication protocol and device profile specification for embedded systems used in automation.&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/CANopen&lt;br /&gt;
* specifications  https://www.can-cia.org/&lt;br /&gt;
* mirror http://overpof.free.fr/schneider/CAN%20&amp;amp;%20CANopen/CANopen/%A9CiA%20CANCANopen%20CD%20V5.1/index.htm&lt;br /&gt;
&lt;br /&gt;
== Object dictionary ==&lt;br /&gt;
&lt;br /&gt;
Object dictionary encapsulates all of the CAN exposed variables and allows reading or writing to&lt;br /&gt;
sections specified by index and subindex. All variables have types and complex types are allowed - records and arrays.&lt;br /&gt;
&lt;br /&gt;
Two major parts of the object dictionary are defined - communication profile area in range ''0x1000-0x1FFF''&lt;br /&gt;
and application profile area (Standardised Device Profile Area) in range ''0x6000-0x9FFF''. Communication&lt;br /&gt;
profile parameters are used internally by CANOpen stack (e.g. heartbeat period, pdo parameters) while application profile area defines application&lt;br /&gt;
parameters (e.g. target velocity, control word).&lt;br /&gt;
&lt;br /&gt;
* Specification is part of CiA 301&lt;br /&gt;
&lt;br /&gt;
=== Layout ===&lt;br /&gt;
&lt;br /&gt;
Object dictionary sections:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000      not used&lt;br /&gt;
0001-001F Static Data Types&lt;br /&gt;
0020-003F Complex Data Types&lt;br /&gt;
0040-005F Manufacturer Specific Complex Data Types&lt;br /&gt;
0060-007F Device Profile Specific Static Data Types&lt;br /&gt;
0080-009F Device Profile Specific Complex Data Types&lt;br /&gt;
00A0-0FFF Reserved for further use&lt;br /&gt;
1000-1FFF Communication Profile Area&lt;br /&gt;
2000-5FFF Manufacturer Specific Profile Area&lt;br /&gt;
6000-9FFF Standardised Device Profile Area&lt;br /&gt;
A000-BFFF Standardised Interface Profile Area&lt;br /&gt;
C000-FFFF Reserved for further use&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NMT service ==&lt;br /&gt;
&lt;br /&gt;
Network management services allows controlling node state transitions. Also provides heartbeat functionality.&lt;br /&gt;
On boot, CANOpen node automatically enters pre-operational NMT state, where node configuration usually takes place.&lt;br /&gt;
After configuration, node can be switched to operational state where PDO services are available. NMT also defines&lt;br /&gt;
initialising state, stopped state and two states for resetting object dictionary values - reset application&lt;br /&gt;
and reset communication for resetting respective parts of object dictionary.&lt;br /&gt;
&lt;br /&gt;
* Specification is part of CiA 301&lt;br /&gt;
&lt;br /&gt;
== SDO service ==&lt;br /&gt;
&lt;br /&gt;
Allows reading or writing to variables in object dictionary. Device can implement multiple SDO services&lt;br /&gt;
but generally only one service (default SDO) is provided that allows object dictionary variable access.&lt;br /&gt;
&lt;br /&gt;
SDO Upload -&amp;gt; Read register from device:&lt;br /&gt;
&lt;br /&gt;
 # rs-canopen-sdo-upload vcan0 05 6000 01&lt;br /&gt;
&lt;br /&gt;
 vcan0  605   [8]  40 00 60 01 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
SDO Download -&amp;gt; Write register to device:&lt;br /&gt;
&lt;br /&gt;
 # rs-canopen-sdo-download vcan0 05 6000 01 13&lt;br /&gt;
&lt;br /&gt;
 vcan0  605   [8]  2F 00 60 01 13 00 00 00&lt;br /&gt;
&lt;br /&gt;
* Specification is part of CiA 301.&lt;br /&gt;
* COB-ID for default SDO tx (transmitted from node) - '''0x580 + node ID'''&lt;br /&gt;
* COB-ID for default SDO rx (received by node) - '''0x600 + node ID'''&lt;br /&gt;
&lt;br /&gt;
== PDO ==&lt;br /&gt;
&lt;br /&gt;
PDO or Process Data Objects allow communication without protocol overhead. PDO allows mapping of single or multiple variables&lt;br /&gt;
into one CAN message with specific ID. This allows usage of all 8 bytes of CAN message data and allows writing or reading&lt;br /&gt;
multiple variables at once.&lt;br /&gt;
&lt;br /&gt;
There are two kinds of PDOs: transmit and receive PDOs (TPDO and RPDO). Transmit PDOs are used to read data from node&lt;br /&gt;
and receive PDOs are used for writes.&lt;br /&gt;
&lt;br /&gt;
For example RPDO for servo controller can contain mapping to two variables - ''control word'' and ''target velocity''. Both of these&lt;br /&gt;
are 32 bit values&lt;br /&gt;
&lt;br /&gt;
* ''control word'' unsigned int32 at address ''0x6040''&lt;br /&gt;
* ''target velocity'' signed int32 at address ''0x60FF''&lt;br /&gt;
&lt;br /&gt;
This fills up full 8 bytes of CAN data.&lt;br /&gt;
&lt;br /&gt;
In similar manner, TPDO can be used for monitoring the drive, example mapping can look like this:&lt;br /&gt;
&lt;br /&gt;
* ''status word'' unsigned int32 at address ''0x6041''&lt;br /&gt;
* ''velocity actual'' signed int32 at address ''0x606C''&lt;br /&gt;
&lt;br /&gt;
Specification is part of CiA 301.&lt;br /&gt;
&lt;br /&gt;
== SYNC ==&lt;br /&gt;
&lt;br /&gt;
Node synchronization is accomplished with the help of SYNC message. This can be used to either sample&lt;br /&gt;
current sensor values at SYNC time or apply buffered SDO data to all variables at once.&lt;br /&gt;
&lt;br /&gt;
* Specification is part of CiA 301&lt;br /&gt;
* COB-ID used by SYNC message is '''0x80'''&lt;br /&gt;
&lt;br /&gt;
== LSS ==&lt;br /&gt;
&lt;br /&gt;
Layer Setting Services and Protocol allows configuration of node ID and CAN baudrate.&lt;br /&gt;
This protocol runs prior other CANOpen services as they require node ID to be configured.&lt;br /&gt;
&lt;br /&gt;
Typically used when adding new nodes to the system. Non-configured node boots into LSS mode indicated&lt;br /&gt;
by both LEDs blinking rapidly. Node ID and baudrate can be configured and configuration stored in&lt;br /&gt;
non-volatile memory for next boots. If node ID is valid device skips LSS mode and goes straight into&lt;br /&gt;
pre-operational state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* LSS is defined in CiA 305&lt;br /&gt;
* COB-ID used by NMT is '''0x0'''&lt;/div&gt;</summary>
		<author><name>Srk</name></author>	</entry>

	</feed>