New Object Dictionary project file, etc. Remove old OD. Update doc.
This commit is contained in:
parent
5a14e91834
commit
a6ce313387
20 changed files with 6855 additions and 12487 deletions
|
|
@ -125,7 +125,7 @@ typedef enum {
|
|||
/**
|
||||
* NMT control bitfield for NMT internal state.
|
||||
*
|
||||
* Variable of this type is passed to @ref CO_NMT_process() function. It
|
||||
* Variable of this type is passed to @ref CO_NMT_init() function. It
|
||||
* controls behavior of the @ref CO_NMT_internalState_t of the device according
|
||||
* to CANopen error register.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@
|
|||
#define CO_TIME_H
|
||||
|
||||
#include "301/CO_driver.h"
|
||||
#include "CO_OD.h"
|
||||
|
||||
/* default configuration, see CO_config.h */
|
||||
#ifndef CO_CONFIG_TIME
|
||||
|
|
@ -79,6 +78,21 @@ extern "C" {
|
|||
|
||||
#define TIME_MSG_LENGTH 6U
|
||||
|
||||
#ifndef timeOfDay_t
|
||||
typedef union {
|
||||
unsigned long long ullValue;
|
||||
struct {
|
||||
unsigned long ms:28;
|
||||
unsigned reserved:4;
|
||||
unsigned days:16;
|
||||
unsigned reserved2:16;
|
||||
};
|
||||
} timeOfDay_t;
|
||||
#endif
|
||||
|
||||
typedef timeOfDay_t TIME_OF_DAY;
|
||||
typedef timeOfDay_t TIME_DIFFERENCE;
|
||||
|
||||
/**
|
||||
* TIME producer and consumer object.
|
||||
*/
|
||||
|
|
|
|||
1
Doxyfile
1
Doxyfile
|
|
@ -821,6 +821,7 @@ WARN_LOGFILE =
|
|||
|
||||
INPUT = README.md \
|
||||
doc \
|
||||
example/DS301_profile.md \
|
||||
CANopen.h \
|
||||
301 \
|
||||
303 \
|
||||
|
|
|
|||
49
README.md
49
README.md
|
|
@ -165,15 +165,15 @@ File structure
|
|||
- **example/** - Directory with basic example, should compile on any system.
|
||||
- **CO_driver_target.h** - Example hardware definitions for CANopenNode.
|
||||
- **CO_driver_blank.c** - Example blank interface for CANopenNode.
|
||||
- **CO_OD.h/.c** - CANopen Object dictionary. Automatically generated files.
|
||||
- **main_blank.c** - Mainline and other threads - example template.
|
||||
- **Makefile** - Makefile for example.
|
||||
- **IO.eds** - Standard CANopen EDS file, which may be used from CANopen
|
||||
configuration tool. Automatically generated file.
|
||||
- _ **project.xml** - XML file contains all data for CANopen Object dictionary.
|
||||
It is used by *Object dictionary editor* application, which generates other
|
||||
files.
|
||||
- _ **project.html** - *Object dictionary editor* launcher.
|
||||
- **DS301_profile.xpd** - CANopen device description file for DS301. It
|
||||
includes also CANopenNode specific properties. This file is also available
|
||||
in Profiles in Object dictionary editor.
|
||||
- **DS301_profile.eds**, **DS301_profile.md** - Standard CANopen EDS file and
|
||||
markdown documentation file, automatically generated from DS301_profile.xpd.
|
||||
- **OD.h/.c** - CANopen Object dictionary source files, automatically
|
||||
generated from DS301_profile.xpd.
|
||||
- **socketCAN/** - Directory for Linux socketCAN interface.
|
||||
- **CO_driver_target.h** - Linux socketCAN specific definitions for CANopenNode.
|
||||
- **CO_driver.c** - Interface between Linux socketCAN and CANopenNode.
|
||||
|
|
@ -187,7 +187,6 @@ File structure
|
|||
- **deviceSupport.md** - Information about supported devices.
|
||||
- **gettingStarted.md, LSSusage.md, traceUsage.md** - Getting started and usage.
|
||||
- **objectDictionary.md** - Description of CANopen object dictionary interface.
|
||||
- **index.html** - Soft link to html/md_README.html.
|
||||
- **html** - Directory with documentation - must be generated by Doxygen.
|
||||
- **CANopen.h/.c** - Initialization and processing of CANopen objects.
|
||||
- **codingStyle** - Example of the coding style.
|
||||
|
|
@ -201,17 +200,35 @@ File structure
|
|||
|
||||
Object dictionary editor
|
||||
------------------------
|
||||
Object Dictionary is one of the most important parts of CANopen. Its
|
||||
implementation in CANopenNode is quite outdated and there are efforts to
|
||||
rewrite it. Anyway, currently it is fully operational and works well.
|
||||
Object Dictionary is one of the most essential parts of CANopen.
|
||||
|
||||
To customize the Object Dictionary it is necessary to use external application:
|
||||
[libedssharp](https://github.com/robincornelius/libedssharp). It can be used in
|
||||
Windows or Linux with Mono.
|
||||
[libedssharp](https://github.com/robincornelius/libedssharp). Latest pre-compiled
|
||||
[binaries](https://github.com/robincornelius/libedssharp/raw/gh-pages/build/OpenEDSEditor-latest.zip)
|
||||
are also available. Just extract the zip file and run the `EDSEditor.exe`.
|
||||
In Linux it runs with mono, which is available by default on Ubuntu. Just set
|
||||
file permissions to "executable" and then execute the program.
|
||||
|
||||
Please note: since rearrangement in directory structure it is necessary to
|
||||
manually update CO_OD.c file - it must include: `301/CO_driver.h`, `CO_OD.h` and
|
||||
`301/CO_SDOserver.h`.
|
||||
In program, in preferences, set exporter to "CANopenNode_V4". Then start new
|
||||
project or open the existing project file.
|
||||
|
||||
Many project file types are supported, EDS, XDD v1.0, XDD v1.1, old custom XML
|
||||
format. Generated project file can then be saved in XDD v1.1 file format
|
||||
(xmlns="http://www.canopen.org/xml/1.1"). Project file can also be exported to
|
||||
other formats, it can be used to generate documentation and CANopenNode source
|
||||
files for Object Dictionary.
|
||||
|
||||
If new project was started, then `DS301_profile.xpd` may be inserted.
|
||||
If existing (old) project is edited, then existing `Communication Specific Parameters`
|
||||
may be Deleted and then new `DS301_profile.xpd` may be inserted. Alternative is
|
||||
editing existing communication parameters with observation to Object Dictionary
|
||||
Requirements By CANopenNode in [objectDictionary.md](doc/objectDictionary.md).
|
||||
|
||||
To clone, add or delete, select object(s) and use right click. Some knowledge
|
||||
of CANopen is required to correctly set-up the custom Object Dictionary.
|
||||
|
||||
CANopenNode includes some custom properties inside standard project file. See
|
||||
[objectDictionary.md](doc/objectDictionary.md) for more information.
|
||||
|
||||
|
||||
Device support
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ Then clone [CANopenNode](https://github.com/CANopenNode/CANopenNode) from Github
|
|||
sudo apt-get install can-utils
|
||||
git clone https://github.com/CANopenNode/CANopenNode.git
|
||||
cd CANopenNode
|
||||
# For update just use 'git pull' here
|
||||
make
|
||||
|
||||
Now prepare CAN virtual device and run _candump_, which will show all CAN traffic. Use a second terminal:
|
||||
|
|
@ -51,14 +52,12 @@ You are now running a fully functional CANopen device on virtual CAN network. It
|
|||
|
||||
On the second terminal you can see some CAN traffic. After _canopend_ startup, first messages are:
|
||||
|
||||
vcan0 704 [1] 00 # Bootup message.
|
||||
vcan0 704 [1] 00 # Boot-up message.
|
||||
vcan0 084 [8] 00 50 01 2F F3 FF FF FF # Emergency message.
|
||||
vcan0 704 [1] 7F # Heartbeat messages each second
|
||||
vcan0 704 [1] 7F
|
||||
|
||||
Bootup and Heartbeat messages of node 4 have CAN-ID equal to 0x704. CAN-ID is 11-bit standard CAN identifier. 0x7F in heartbeat message means, that node is in NMT pre-operational state.
|
||||
Boot-up message of node 4 have CAN-ID equal to 0x704. CAN-ID is 11-bit standard CAN identifier.
|
||||
|
||||
Also, both, first and second terminal shows, that there is an Emergency message after the bootup. Also Heartbeat messages shows NMT pre-operational state.
|
||||
Also, both, first and second terminal shows, that there is an Emergency message after the boot-up. Also Heartbeat messages shows NMT pre-operational state.
|
||||
|
||||
The easiest way to find the reason of the emergency message is to check the byte 4 (errorBit). It has value of 0x2F. Go to CANopenNode source code and open the file "301/CO_Emergency.h", section "Error status bits". 0x2F means "CO_EM_NON_VOLATILE_MEMORY", which is generic, critical error with access to non volatile device memory.
|
||||
|
||||
|
|
@ -70,11 +69,9 @@ You can follow the reason of the problem inside the source code. However, there
|
|||
echo "-" > od4_storage_auto
|
||||
./canopend vcan0 -i 4 -s od4_storage -a od4_storage_auto
|
||||
|
||||
Second terminal now shows operational state (0x05) and one pre-defined PDO message with CAN-ID 0x184 and two bytes of data. To learn more about PDOs, how to configure communication and mapping parameters and how to use them see other sources of CANopen documentation. For example, you can read the article of PDO re-mapping procedure in [CAN newsletter magazine, June 2016](http://can-newsletter.org/engineering/engineering-miscellaneous/160601_can-newsletter-magazine-june-2016).
|
||||
Second terminal now shows new boot-up message without emergency.
|
||||
|
||||
vcan0 704 [1] 00
|
||||
vcan0 184 [2] 00 00 # PDO message
|
||||
vcan0 704 [1] 05
|
||||
|
||||
|
||||
### Second CANopen device
|
||||
|
|
@ -84,7 +81,7 @@ Open the third terminal and cd to the same directory as is in the first terminal
|
|||
echo "-" > od_storage_auto
|
||||
./canopend vcan0 -i1 -c "stdio"
|
||||
|
||||
Now you should see in second terminal (_candump_) two CANopen devices sending heartbeats in one second interval each. One with node-ID = 4 and one with node-ID = 1. Both should be operational.
|
||||
Now you should see in second terminal (_candump_) boot-up message of new CANopen device.
|
||||
|
||||
|
||||
### CANopen command interface
|
||||
|
|
@ -98,16 +95,18 @@ For example read Heartbeat producer parameter on CANopen device with ID=4. Param
|
|||
|
||||
[1] 4 read 0x1017 0 u16
|
||||
|
||||
You should see the response, which says that Heartbeats are transmitted in 1000 ms intervals:
|
||||
You should see the response, which says that Heartbeats are disabled:
|
||||
|
||||
[1] 1000
|
||||
[1] 0
|
||||
|
||||
In CAN dump you can see some SDO communication. SDO communication can be quite complicated, if observing on _candump_, especially if larger data is split between multiple segments. However, there is no need to know the details, everything should work correctly in the background. Details about SDO communication can be found in CiA301 standard and partly also in 301/CO_SDOserver.h file, description of CO_SDO_state_t enumerator.
|
||||
|
||||
[2] 4 write 0x1017 0 u16 5000
|
||||
[2] OK #response
|
||||
|
||||
In _candump_ you will notice, that heartbeats from node 4 are coming in 5 second interval now. You can do the same also for node 1, but you won't see anything on _candump_, because data are written into itself directly. In "stdio" you can omit sequence number, to make typing easier.
|
||||
In _candump_ you will notice, that heartbeats from node 4 are coming in 5 second interval now. Heartbeat message is similar to boot-up message. 0x7F in heartbeat message means, that node is in NMT pre-operational state. 0x05 means operational and 0x04 means stopped.
|
||||
|
||||
You can do the same also for node 1, but you won't see SDO messages on _candump_, because data are written into itself directly. In "stdio" you can omit sequence number, to make typing easier.
|
||||
|
||||
1 w 0x1017 0 u16 2500
|
||||
[0] OK
|
||||
|
|
@ -117,7 +116,7 @@ Now store Object dictionary on node-ID 4, so it will preserve variables on next
|
|||
4 w 0x1010 1 u32 0x65766173
|
||||
[0] OK
|
||||
|
||||
More details about Object dictionary variables can be found in CiA301 standard or in example/IO.html file.
|
||||
More details about Object dictionary variables can be found in CiA301 standard or in example/DS301_profile.md file.
|
||||
|
||||
|
||||
#### NMT master
|
||||
|
|
@ -126,10 +125,10 @@ If node is operational (started), it can exchange all objects, including PDO, SD
|
|||
set node 4
|
||||
[0] OK
|
||||
|
||||
preop
|
||||
start
|
||||
[0] OK
|
||||
|
||||
start
|
||||
preop
|
||||
[0] OK
|
||||
|
||||
stop
|
||||
|
|
@ -141,6 +140,9 @@ If node is operational (started), it can exchange all objects, including PDO, SD
|
|||
reset communication
|
||||
[0] OK
|
||||
|
||||
0 start
|
||||
[0] OK
|
||||
|
||||
reset node
|
||||
[0] OK
|
||||
|
||||
|
|
@ -162,7 +164,7 @@ Assigning Node-ID or CAN bitrate, which support LSS configuration, is described
|
|||
|
||||
Some further CANopenNode related Linux tools are available in [CANopenSocket](https://github.com/CANopenNode/CANopenSocket).
|
||||
|
||||
Custom CANopen device can be created based on own Object Dictionary. Use *EDSEditor.exe* from https://github.com/robincornelius/libedssharp to generate one. It runs in Linux or Windows. For principles see *objectDictionary.md*. There are also many very useful and high quality specifications for different [device profiles](http://www.can-cia.org/standardization/specifications/), some of them are public and free to download, for example CiA401.
|
||||
Custom CANopen device can be created based on own Object Dictionary, see README.md. There are also many very useful and high quality specifications for different [device profiles](http://www.can-cia.org/standardization/specifications/), some of them are public and free to download, for example CiA401.
|
||||
|
||||
For own CANopen device with own microcontroller, see *deviceSupport.md*. There is a bare-metal demo for [PIC microcontrollers](https://github.com/CANopenNode/CANopenPIC), most complete example is for PIC32.
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
html/index.html
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
Object Dictionary
|
||||
=================
|
||||
|
||||
Definitions from CiA 301
|
||||
------------------------
|
||||
Definitions from CiA 301 {#definitions-from-cia-301}
|
||||
----------------------------------------------------
|
||||
The **Object Dictionary** is a collection of all the data items which have an influence on the behavior of the application objects, the communication objects and the state machine used on this device. It serves as an interface between the communication and the application.
|
||||
The object dictionary is essentially a grouping of objects accessible via the network in an ordered pre-defined fashion. Each object within the object dictionary is addressed using a 16-bit index and a 8-bit sub-index.
|
||||
|
||||
|
|
@ -11,13 +11,12 @@ A **SDO** (Service Data Object) is providing direct access to object entries of
|
|||
A **PDO** (Process Data Object) is providing real-time data transfer of object entries of a CANopen device's object dictionary. The transfer of PDO is performed with no protocol overhead. The PDO correspond to objects in the object dictionary and provide the interface to the application objects. Data type and mapping of application objects into a PDO is determined by a corresponding PDO mapping structure within the object dictionary.
|
||||
|
||||
|
||||
Operation
|
||||
---------
|
||||
Operation {#operation}
|
||||
----------------------
|
||||
### Terms
|
||||
The term **OD object** means object from object dictionary located at specific 16-bit index. There are different types of OD objects in CANopen: variables, arrays and records (structures). Each OD object contains pointer to actual data, data length(s) and attribute(s). See @ref OD_objectTypes_t.
|
||||
|
||||
The term **OD variable** is basic variable of specified type. For example: int8_t, uint32_t, float64_t, ... or just sequence of binary data with known
|
||||
or unknown data length. Each OD variable resides in Object dictionary at specified 16-bit index and 8-bit sub-index.
|
||||
The term **OD variable** is basic variable of specified type. For example: int8_t, uint32_t, float64_t, ... or just sequence of binary data with known or unknown data length. Each OD variable resides in Object dictionary at specified 16-bit index and 8-bit sub-index.
|
||||
|
||||
The term **OD entry** means structure element, which contains some basic properties of the OD object, indication of type of OD object and pointer to all necessary data for the OD object. An array of OD entries together with information about total number of OD entries represents object dictionary as defined inside CANopenNode. See @ref OD_entry_t and @ref OD_t.
|
||||
|
||||
|
|
@ -82,8 +81,8 @@ void myFuncGlob(void) {
|
|||
```
|
||||
|
||||
|
||||
Object dictionary example
|
||||
-------------------------
|
||||
Object Dictionary Example {#object-dictionary-example}
|
||||
------------------------------------------------------
|
||||
Actual Object dictionary for one CANopen device is defined by pair of OD_xyz.h and ODxyz.h files.
|
||||
|
||||
Suffix "xyz" is unique name of the object dictionary. If single default object dictionary is used, suffix is omitted. Such way configuration with multiple object dictionaries is possible.
|
||||
|
|
@ -247,15 +246,15 @@ const OD_t ODxyz = {
|
|||
```
|
||||
|
||||
|
||||
XML device description
|
||||
----------------------
|
||||
XML Device Description {#xml-device-description}
|
||||
------------------------------------------------
|
||||
CANopen device description - XML schema definition - is specified by CiA 311 standard.
|
||||
|
||||
CiA 311 complies with standard ISO 15745-1:2005/Amd1 (Industrial automation systems and integration - Open systems application integration framework).
|
||||
|
||||
CANopen device description is basically a XML file with all the information about CANopen device. The larges part of the file is a list of all object dictionary variables with all necessary properties and documentation. This file can be edited with OD editor application and can be used as data source, from which Object dictionary for CANopenNode is generated. Furthermore, this file can be used with CANopen configuration tool, which interacts with CANopen devices on running CANopen network.
|
||||
|
||||
XML schema definitions are available at: http://www.canopen.org/xml/1.1 One of the tools for viewing XML schemas is "xsddiagram" (https://github.com/dgis/xsddiagram).
|
||||
XML schema definitions are available at: http://www.canopen.org/xml/1.1 One of the tools for viewing XML schemas and validating XDD project files is "xsddiagram" (https://github.com/dgis/xsddiagram). Command line alternative to XDD file validation against schema is: `xmlstarlet val --err --xsd 311/CANopen.xsd project_file.xdd`
|
||||
|
||||
CANopen specifies also another type of files for CANopen device description. These are EDS files, which are in INI format. It is possible to convert between those two formats. But CANopenNode uses XML format.
|
||||
|
||||
|
|
@ -263,10 +262,12 @@ The device description file has "XDD" file extension. The name of this file shal
|
|||
|
||||
CANopenNode includes multiple profile definition files, one for each CANopen object. Those files have "XPD" extension. They are in the same XML format as XDD files. The XML editor tool can use XPD files to insert prepared data into device description file (XDD), which is being edited.
|
||||
|
||||
There are also device configuration files with "XDC" extension. They are describing a configured CANopen device and include additional elements, such as default value, denominator and device commissioning elements. Similar as "dcf" files in INI format.
|
||||
|
||||
### XDD, XPD file example
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ISO15745ProfileContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.canopen.org/xml/1.0">
|
||||
<ISO15745ProfileContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.canopen.org/xml/1.1">
|
||||
<ISO15745Profile>
|
||||
<ProfileHeader>...</ProfileHeader>
|
||||
<ProfileBody xsi:type="ProfileBody_Device_CANopen" fileName="..." fileCreator="..." fileCreationDate="..." fileVersion="...">
|
||||
|
|
@ -333,19 +334,6 @@ CANopenNode includes multiple profile definition files, one for each CANopen obj
|
|||
<defaultValue value="0x00000000" />
|
||||
</parameter>
|
||||
</parameterList>
|
||||
<parameterGroupList>
|
||||
<parameterGroup uniqueID="UID_PG_CO_COMM">
|
||||
<label lang="en">CANopen Communication Parameters</label>
|
||||
<description lang="en">...</description>
|
||||
<parameterGroup uniqueID="UID_PG_CO_COMM_COMMON">
|
||||
<label lang="en">CANopen Common Communication Parameters</label>
|
||||
<description lang="en">...</description>
|
||||
<parameterRef uniqueIDRef="UID_PARAM_1000" />
|
||||
<parameterRef uniqueIDRef="UID_PARAM_1001" />
|
||||
<parameterRef uniqueIDRef="UID_PARAM_1018" />
|
||||
</parameterGroup>
|
||||
</parameterGroup>
|
||||
</parameterGroupList>
|
||||
</ApplicationProcess>
|
||||
</ProfileBody>
|
||||
</ISO15745Profile>
|
||||
|
|
@ -376,16 +364,16 @@ Above XML file example shows necessary data for OD interface used by CANopenNode
|
|||
|
||||
XML file is divided into two parts:
|
||||
1. "ProfileBody_Device_CANopen" - more standardized information
|
||||
2. "ProfileBody_CommunicationNetwork_CANopen" - communication related info
|
||||
2. "ProfileBody_CommunicationNetwork_CANopen" - CANopen specific information
|
||||
|
||||
Most important part of the XML file is definition of each OD object. All OD objects are listed in "CANopenObjectList", which resides in the second part of the XML file. Each "CANopenObject" and "CANopenSubObject" of the list contains a link to parameter ("uniqueIDRef"), which resides in the first part of the XML file. So data for each OD object is split between two parts of the XML file.
|
||||
Largest part of the XML file is definition of each OD object. All OD objects are listed in "CANopenObjectList", which resides in the second part of the XML file. Each "CANopenObject" and "CANopenSubObject" of the list contains a link to parameter ("uniqueIDRef"), which resides in the first part of the XML file. So data for each OD object is split between two parts of the XML file.
|
||||
|
||||
#### <CANopenObject>
|
||||
* "index" (required) - Object dictionary index
|
||||
* "name" (required) - Name of the parameter
|
||||
* "objectType" (required) - "7"=VAR, "8"=ARRAY, "9"=RECORD
|
||||
* "subNumber" (required if "objectType" is "8" or "9")
|
||||
* "PDOmapping" (optional if "objectType" is "7", default is "no"):
|
||||
* "PDOmapping" (optional if "objectType" is "7"):
|
||||
* "no" - mapping not allowed
|
||||
* "default" - not used, same as "optional"
|
||||
* "optional" - mapping allowed to TPDO or RPDO
|
||||
|
|
@ -397,21 +385,20 @@ Most important part of the XML file is definition of each OD object. All OD obje
|
|||
* "subIndex" (required) - Object dictionary sub-index
|
||||
* "name" (required) - Name of the parameter
|
||||
* "objectType" (required, always "7")
|
||||
* "PDOmapping" (optional, same as above, default is "no")
|
||||
* "PDOmapping" (optional, same as above)
|
||||
* "uniqueIDRef" (required or see below) - Reference to <parameter>
|
||||
|
||||
#### uniqueIDRef
|
||||
This is required attribute from "CANopenObject" and "CANopenSubObject". It contains reference to <parameter> in "ProfileBody_Device_CANopen" section of the XML file. There are additional necessary properties.
|
||||
This is required attribute from "CANopenObject" and "CANopenSubObject". It contains reference to <parameter> in "ProfileBody_Device_CANopen" section of the XML file.
|
||||
|
||||
If "uniqueIDRef" attribute is not specified and "objectType" is 7(VAR), then "CANopenObject" or "CANopenSubObject" must contain additional attributes:
|
||||
* "dataType" (required for VAR) - CANopen basic data type, see below
|
||||
* "accessType" (required for VAR) - "ro", "wo", "rw" or "const"
|
||||
* "defaultValue" (optional) - Default value for the variable.
|
||||
* "denotation" (optional) - Not used by CANopenNode.
|
||||
|
||||
#### <parameter>
|
||||
* "uniqueID" (required)
|
||||
* "access" (required for VAR) - can be one of:
|
||||
* "**uniqueID**" (required)
|
||||
* "**access**" (required for VAR) - can be one of:
|
||||
* "const" - same as "read"
|
||||
* "read" - only read access with SDO or PDO
|
||||
* "write" - only write access with SDO or PDO
|
||||
|
|
@ -419,22 +406,23 @@ If "uniqueIDRef" attribute is not specified and "objectType" is 7(VAR), then "CA
|
|||
* "readWriteInput" - same as "readWrite"
|
||||
* "readWriteOutput" - same as "readWrite"
|
||||
* "noAccess" - object will be in object dictionary, but no access.
|
||||
* <label lang="en"> (required)
|
||||
* <description lang="en"> (required)
|
||||
* <INT and similar/> (required) - Basic or complex data type. Basic data type (for VAR) is specified in IEC 61131-3 (see below). If data type is complex (ARRAY or RECORD), then <dataTypeIDRef> must be specified and entry must be added in the <dataTypeList>. Such definition of complex data types is required by the standard, but it is not required by CANopenNode.
|
||||
* <defaultValue> (optional for VAR) - Default value for the variable. If it is empty, then data is not stored inside object dictionary. Application should provide own data via IO extension.
|
||||
* <**label** lang="en">, <**description** lang="en"> (required) - several elements in multiple languages possible
|
||||
* <**INT and similar**/> (required) - Basic or complex data type. Basic data type (for VAR) is specified in IEC 61131-3 (see below). If data type is complex (ARRAY or RECORD), then **<dataTypeIDRef>** must be specified and entry must be added in the **<dataTypeList>**. Such definition of complex data types is required by the standard, but it is not required by CANopenNode.
|
||||
* <**defaultValue**> (optional for VAR) - Default value for the variable. If it is empty string, then data is not stored inside object dictionary. Application should provide own data via IO extension.
|
||||
* <**property** name="..." value="..."> (optional) - Multiple elements may contain additional custom properties. CANopenNode uses custom properties with following names:
|
||||
* "**CO_disabled**" (used for base OD entry) - Valid value is "false" (default) or "true". if OD entry is disabled, then it will not be present in generated Object Dictionary .h and .c files.
|
||||
* "**CO_countLabel**" (used for base OD entry) - Valid value is any string without spaces. OD exporter will generate a macro for each different string. For example, if four OD objects have "CO_countLabel" set to "TPDO", then macro "#define ODxyz_CNT_TPDO 4" will be generated by OD exporter. "CO_countLabel" is not required for configuration with multiple object dictionaries (CO_MULTIPLE_OD), although may be useful. Default is "".
|
||||
* "**CO_storageGroup**" (used for base OD entry) - group name (string) into which the C variable will belong. Variables from specific storage group may then be stored into non-volatile memory, automatically or by SDO command. Default is "RAM". Please note: if <defaultValue> is empty string at specific subindex, then no storage group will be used for that variable.
|
||||
* "**CO_extensionIO**" (used for base OD entry) - Valid value is "false" (default) or "true", if IO extension is enabled.
|
||||
* "**CO_flagsPDO**" (used for base OD entry) - Valid value is "false" (default) or "true", if PDO flags are enabled.
|
||||
* "**CO_accessSRDO**" (used for each "VAR") - Valid values are: "tx", "rx", "trx", "no"(default).
|
||||
* "**CO_stringLengthMin**" (used for each "VAR") - Minimum length of the string. Used with "VISIBLE_STRING" and "UNICODE_STRING". If CO_stringLengthMin is smaller than length of the string in <defaultValue>, then it is ignored. Byte length of unicode string is 2 * CO_stringLengthMin. If <defaultValue> is empty and CO_stringLengthMin is 0, then data is not stored inside object dictionary. Default is 0.
|
||||
|
||||
Additional, optional, CANopenNode specific properties, which can be used inside parameters describing <CANopenObject>:
|
||||
* <property name="CO_storageGroup" value="..."> - group name (string) into which the C variable will belong. Variables from specific storage group may then be stored into non-volatile memory, automatically or by SDO command.
|
||||
* <property name="CO_extensionIO" value="..."> - Valid value is "false" (default) or "true", if IO extension is enabled.
|
||||
* <property name="CO_flagsPDO" value="..."> - Valid value is "false" (default) or "true", if PDO flags are enabled.
|
||||
* <property name="CO_countLabel" value="..."> - Valid value is any string without spaces. OD exporter will generate a macro for each different string. For example, if four OD objects have "CO_countLabel" set to "TPDO", then macro "#define ODxyz_CNT_TPDO 4" will be generated by OD exporter.
|
||||
#### Other elements
|
||||
Other elements listed in the above XML example are required by the standard. There are also many other elements, not listed above. All those does not influence the CANopenNode object dictionary exporter.
|
||||
|
||||
Additional, optional, CANopenNode specific property, which can be used inside parameters describing "VAR":
|
||||
* <property name="CO_accessSRDO" value="..."> - Valid values are: "tx", "rx", "trx", "no"(default).
|
||||
* <property name="CO_stringLength" value="..."> - Minimum length of the string. Used with "VISIBLE_STRING", "OCTET_STRING" and "UNICODE_STRING". If CO_stringLength smaller than length of string in <defaultValue>, then it is ignored. Byte length of unicode string is 2 * CO_stringLength. If <defaultValue> is empty and CO_stringLength is 0, then data is not stored inside object dictionary.
|
||||
|
||||
#### CANopen basic data types
|
||||
### CANopen basic data types
|
||||
| CANopenNode | IEC 61131-3 | CANopen | dataType |
|
||||
| -------------- | -------------- | --------------- | -------- |
|
||||
| bool_t | BOOL | BOOLEAN | 0x01 |
|
||||
|
|
@ -448,32 +436,28 @@ Additional, optional, CANopenNode specific property, which can be used inside pa
|
|||
| uint64_t | ULINT, (LWORD) | UNSIGNED64 | 0x1B |
|
||||
| float32_t | REAL | REAL32 | 0x08 |
|
||||
| float64_t | LREAL | REAL64 | 0x11 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | INTEGER24 | 0x10 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | INTEGER40 | 0x12 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | INTEGER48 | 0x13 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | INTEGER56 | 0x14 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | UNSIGNED24 | 0x16 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | UNSIGNED40 | 0x18 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | UNSIGNED48 | 0x19 |
|
||||
| uint8_t [] (1) | BITSTRING (2) | UNSIGNED56 | 0x1A |
|
||||
| char [] | STRING | VISIBLE_STRING | 0x09 |
|
||||
| uint8_t [] | BITSTRING (2) | OCTET_STRING | 0x0A |
|
||||
| uint16_t [] | WSTRING | UNICODE_STRING | 0x0B |
|
||||
| uint8_t [] (1) | BITSTRING (2) | TIME_OF_DAY | 0x0C |
|
||||
| uint8_t [] (1) | BITSTRING (2) | TIME_DIFFERENCE | 0x0D |
|
||||
| not used | BITSTRING (2) | DOMAIN | 0x0F |
|
||||
(1) Data is stored in little-endian format.
|
||||
|
||||
(2) CANopen specific type is stored as <BITSTRING/> in <parameter> and additional CANopen "dataType" attribute is stored in <CANopenObject> or <CANopenSubObject>.
|
||||
|
||||
#### <parameterGroupList>
|
||||
This is optional element and is not required by standard, nor by CANopenNode. This can be very useful for documentation, which can be organised into multiple chapters with multiple levels. CANopen objects can then be organised in any way, not only by index.
|
||||
|
||||
#### Other elements
|
||||
Other elements listed in the above XML example are required by the standard and does not influence the CANopenNode object dictionary generator.
|
||||
| - | (1) | INTEGER24 | 0x10 |
|
||||
| - | (1) | INTEGER40 | 0x12 |
|
||||
| - | (1) | INTEGER48 | 0x13 |
|
||||
| - | (1) | INTEGER56 | 0x14 |
|
||||
| - | (1) | UNSIGNED24 | 0x16 |
|
||||
| - | (1) | UNSIGNED40 | 0x18 |
|
||||
| - | (1) | UNSIGNED48 | 0x19 |
|
||||
| - | (1) | UNSIGNED56 | 0x1A |
|
||||
| char [] | STRING (2) | VISIBLE_STRING | 0x09 |
|
||||
| uint8_t [] | BITSTRING (3) | OCTET_STRING | 0x0A |
|
||||
| uint16_t [] | WSTRING (2) | UNICODE_STRING | 0x0B |
|
||||
| - | (1) | TIME_OF_DAY | 0x0C |
|
||||
| - | (1) | TIME_DIFFERENCE | 0x0D |
|
||||
| app. specific | BITSTRING (4) | DOMAIN | 0x0F |
|
||||
(1) Data is translated into OCTET_STRING.<br/>
|
||||
(2) Additional property "CO_stringLengthMin" indicates the minimum length of the string in CANopenNode.<br/>
|
||||
(3) Default value for BITSTRING (OCTET_STRING) is written as space separated, two hex digit bytes in little-endian format.<br/>
|
||||
(4) Default value for DOMAIN is stored as empty string.
|
||||
|
||||
|
||||
### Object dictionary requirements by CANopenNode
|
||||
Object Dictionary Requirements By CANopenNode {#object-dictionary-requirements-by-canopennode}
|
||||
----------------------------------------------------------------------------------------------
|
||||
* **Used by** column indicates CANopenNode object or its part, which uses the OD object. It also indicates, if OD object is required or optional for actual configuration. For the configuration of the CANopenNode objects see [Stack configuration](301/CO_config.h). If CANopenNode object or its part is disabled in stack configuration, then OD object is not used. Note that OD objects: 1000, 1001 and 1017 and 1018 are mandatory for CANopen.
|
||||
* **CO_extensionIO** column indicates, if OD object must have property "CO_extensionIO" set to true:
|
||||
* "no" - no IO extension used
|
||||
|
|
|
|||
348
example/CO_OD.c
348
example/CO_OD.c
|
|
@ -1,348 +0,0 @@
|
|||
/*
|
||||
* CANopen Object Dictionary.
|
||||
*
|
||||
* This file was automatically generated with CANopenNode Object
|
||||
* Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!!
|
||||
* Object Dictionary Editor is currently an older, but functional web
|
||||
* application. For more info see See 'Object_Dictionary_Editor/about.html' in
|
||||
* <http://sourceforge.net/p/canopennode/code_complete/ci/master/tree/>
|
||||
* For more information on CANopen Object Dictionary see <CO_SDOserver.h>.
|
||||
*
|
||||
* @file CO_OD.c
|
||||
* @author Janez Paternoster
|
||||
* @copyright 2010 - 2020 Janez Paternoster
|
||||
*
|
||||
* This file is part of CANopenNode, an opensource CANopen Stack.
|
||||
* Project home page is <https://github.com/CANopenNode/CANopenNode>.
|
||||
* For more information on CANopen see <http://www.can-cia.org/>.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
#include "301/CO_driver.h"
|
||||
#include "CO_OD.h"
|
||||
#include "301/CO_SDOserver.h"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
DEFINITION AND INITIALIZATION OF OBJECT DICTIONARY VARIABLES
|
||||
*******************************************************************************/
|
||||
|
||||
/***** Definition for RAM variables *******************************************/
|
||||
struct sCO_OD_RAM CO_OD_RAM = {
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
|
||||
/*1001*/ 0x0,
|
||||
/*1002*/ 0x0L,
|
||||
/*1003*/ {0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1010*/ {0x3L},
|
||||
/*1011*/ {0x1L},
|
||||
/*1280*/{{0x3, 0x0L, 0x0L, 0x0}},
|
||||
/*2100*/ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
/*2103*/ 0x0,
|
||||
/*2104*/ 0x0,
|
||||
/*2107*/ {0x3E8, 0x0, 0x0, 0x0, 0x0},
|
||||
/*2108*/ {0},
|
||||
/*2109*/ {0},
|
||||
/*2110*/ {0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L},
|
||||
/*2120*/ {0x5, 0x1234567890ABCDEFLL, 0x234567890ABCDEF1LL, 12.345, 456.789, 0},
|
||||
/*2130*/ {0x3, {'-', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0, 0x0L},
|
||||
/*6000*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
|
||||
/*6200*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
|
||||
/*6401*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
/*6411*/ {0, 0, 0, 0, 0, 0, 0, 0},
|
||||
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
};
|
||||
|
||||
|
||||
/***** Definition for EEPROM variables ****************************************/
|
||||
struct sCO_OD_EEPROM CO_OD_EEPROM = {
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
|
||||
/*2106*/ 0x0L,
|
||||
/*2112*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L},
|
||||
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
};
|
||||
|
||||
|
||||
/***** Definition for ROM variables *******************************************/
|
||||
struct sCO_OD_ROM CO_OD_ROM = { //constant variables, stored in flash
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
|
||||
/*1000*/ 0x0L,
|
||||
/*1005*/ 0x80L,
|
||||
/*1006*/ 0x0L,
|
||||
/*1007*/ 0x0L,
|
||||
/*1008*/ {'C', 'A', 'N', 'o', 'p', 'e', 'n', 'N', 'o', 'd', 'e'},
|
||||
/*1009*/ {'3', '.', '0', '0'},
|
||||
/*100A*/ {'3', '.', '0', '0'},
|
||||
/*1012*/ 0x80000100L,
|
||||
/*1014*/ 0x80L,
|
||||
/*1015*/ 0x64,
|
||||
/*1016*/ {0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1017*/ 0x3E8,
|
||||
/*1018*/ {0x4, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1019*/ 0x0,
|
||||
/*1029*/ {0x0, 0x0, 0x1, 0x0, 0x0, 0x0},
|
||||
/*1200*/{{0x2, 0x600L, 0x580L}},
|
||||
/*1400*/{{0x2, 0x200L, 0xFF},
|
||||
/*1401*/ {0x2, 0x300L, 0xFE},
|
||||
/*1402*/ {0x2, 0x400L, 0xFE},
|
||||
/*1403*/ {0x2, 0x500L, 0xFE}},
|
||||
/*1600*/{{0x2, 0x62000108L, 0x62000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1601*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1602*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1603*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}},
|
||||
/*1800*/{{0x6, 0x180L, 0xFF, 0x64, 0x0, 0x0, 0x0},
|
||||
/*1801*/ {0x6, 0x280L, 0xFE, 0x0, 0x0, 0x0, 0x0},
|
||||
/*1802*/ {0x6, 0x380L, 0xFE, 0x0, 0x0, 0x0, 0x0},
|
||||
/*1803*/ {0x6, 0x480L, 0xFE, 0x0, 0x0, 0x0, 0x0}},
|
||||
/*1A00*/{{0x2, 0x60000108L, 0x60000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1A01*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1A02*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1A03*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}},
|
||||
/*1F80*/ 0x00000008L,
|
||||
/*2101*/ 0x30,
|
||||
/*2102*/ 0xFA,
|
||||
/*2111*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L},
|
||||
|
||||
CO_OD_FIRST_LAST_WORD
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
STRUCTURES FOR RECORD TYPE OBJECTS
|
||||
*******************************************************************************/
|
||||
/*0x1018*/ const CO_OD_entryRecord_t OD_record1018[5] = {
|
||||
{(void*)&CO_OD_ROM.identity.maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.identity.vendorID, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.identity.productCode, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.identity.revisionNumber, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.identity.serialNumber, 0x85, 4}};
|
||||
/*0x1200*/ const CO_OD_entryRecord_t OD_record1200[3] = {
|
||||
{(void*)&CO_OD_ROM.SDOServerParameter[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDClientToServer, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDServerToClient, 0x85, 4}};
|
||||
/*0x1280*/ const CO_OD_entryRecord_t OD_record1280[4] = {
|
||||
{(void*)&CO_OD_RAM.SDOClientParameter[0].maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.SDOClientParameter[0].COB_IDClientToServer, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.SDOClientParameter[0].COB_IDServerToClient, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.SDOClientParameter[0].nodeIDOfTheSDOServer, 0x0E, 1}};
|
||||
/*0x1400*/ const CO_OD_entryRecord_t OD_record1400[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].transmissionType, 0x0D, 1}};
|
||||
/*0x1401*/ const CO_OD_entryRecord_t OD_record1401[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].transmissionType, 0x0D, 1}};
|
||||
/*0x1402*/ const CO_OD_entryRecord_t OD_record1402[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].transmissionType, 0x0D, 1}};
|
||||
/*0x1403*/ const CO_OD_entryRecord_t OD_record1403[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].transmissionType, 0x0D, 1}};
|
||||
/*0x1600*/ const CO_OD_entryRecord_t OD_record1600[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject8, 0x8D, 4}};
|
||||
/*0x1601*/ const CO_OD_entryRecord_t OD_record1601[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject8, 0x8D, 4}};
|
||||
/*0x1602*/ const CO_OD_entryRecord_t OD_record1602[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject8, 0x8D, 4}};
|
||||
/*0x1603*/ const CO_OD_entryRecord_t OD_record1603[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject8, 0x8D, 4}};
|
||||
/*0x1800*/ const CO_OD_entryRecord_t OD_record1800[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1801*/ const CO_OD_entryRecord_t OD_record1801[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1802*/ const CO_OD_entryRecord_t OD_record1802[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1803*/ const CO_OD_entryRecord_t OD_record1803[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1A00*/ const CO_OD_entryRecord_t OD_record1A00[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject8, 0x8D, 4}};
|
||||
/*0x1A01*/ const CO_OD_entryRecord_t OD_record1A01[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject8, 0x8D, 4}};
|
||||
/*0x1A02*/ const CO_OD_entryRecord_t OD_record1A02[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject8, 0x8D, 4}};
|
||||
/*0x1A03*/ const CO_OD_entryRecord_t OD_record1A03[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject8, 0x8D, 4}};
|
||||
/*0x2120*/ const CO_OD_entryRecord_t OD_record2120[6] = {
|
||||
{(void*)&CO_OD_RAM.testVar.maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.testVar.I64, 0xBE, 8},
|
||||
{(void*)&CO_OD_RAM.testVar.U64, 0xBE, 8},
|
||||
{(void*)&CO_OD_RAM.testVar.R32, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.testVar.R64, 0xBE, 8},
|
||||
{0, 0x0E, 0}};
|
||||
/*0x2130*/ const CO_OD_entryRecord_t OD_record2130[4] = {
|
||||
{(void*)&CO_OD_RAM.time.maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.time.string[0], 0x06, 30},
|
||||
{(void*)&CO_OD_RAM.time.epochTimeBaseMs, 0x8E, 8},
|
||||
{(void*)&CO_OD_RAM.time.epochTimeOffsetMs, 0xBE, 4}};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
OBJECT DICTIONARY
|
||||
*******************************************************************************/
|
||||
const CO_OD_entry_t CO_OD[CO_OD_NoOfElements] = {
|
||||
{0x1000, 0x00, 0x85, 4, (void*)&CO_OD_ROM.deviceType},
|
||||
{0x1001, 0x00, 0x36, 1, (void*)&CO_OD_RAM.errorRegister},
|
||||
{0x1002, 0x00, 0xB6, 4, (void*)&CO_OD_RAM.manufacturerStatusRegister},
|
||||
{0x1003, 0x08, 0x8E, 4, (void*)&CO_OD_RAM.preDefinedErrorField[0]},
|
||||
{0x1005, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.COB_ID_SYNCMessage},
|
||||
{0x1006, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.communicationCyclePeriod},
|
||||
{0x1007, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.synchronousWindowLength},
|
||||
{0x1008, 0x00, 0x05, 11, (void*)&CO_OD_ROM.manufacturerDeviceName[0]},
|
||||
{0x1009, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerHardwareVersion[0]},
|
||||
{0x100A, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerSoftwareVersion[0]},
|
||||
{0x1010, 0x01, 0x8E, 4, (void*)&CO_OD_RAM.storeParameters[0]},
|
||||
{0x1011, 0x01, 0x8E, 4, (void*)&CO_OD_RAM.restoreDefaultParameters[0]},
|
||||
{0x1012, 0x00, 0x85, 4, (void*)&CO_OD_ROM.COB_ID_TIME},
|
||||
{0x1014, 0x00, 0x85, 4, (void*)&CO_OD_ROM.COB_ID_EMCY},
|
||||
{0x1015, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.inhibitTimeEMCY},
|
||||
{0x1016, 0x04, 0x8D, 4, (void*)&CO_OD_ROM.consumerHeartbeatTime[0]},
|
||||
{0x1017, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.producerHeartbeatTime},
|
||||
{0x1018, 0x04, 0x00, 0, (void*)&OD_record1018},
|
||||
{0x1019, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.synchronousCounterOverflowValue},
|
||||
{0x1029, 0x06, 0x0D, 1, (void*)&CO_OD_ROM.errorBehavior[0]},
|
||||
{0x1200, 0x02, 0x00, 0, (void*)&OD_record1200},
|
||||
{0x1280, 0x03, 0x00, 0, (void*)&OD_record1280},
|
||||
{0x1400, 0x02, 0x00, 0, (void*)&OD_record1400},
|
||||
{0x1401, 0x02, 0x00, 0, (void*)&OD_record1401},
|
||||
{0x1402, 0x02, 0x00, 0, (void*)&OD_record1402},
|
||||
{0x1403, 0x02, 0x00, 0, (void*)&OD_record1403},
|
||||
{0x1600, 0x08, 0x00, 0, (void*)&OD_record1600},
|
||||
{0x1601, 0x08, 0x00, 0, (void*)&OD_record1601},
|
||||
{0x1602, 0x08, 0x00, 0, (void*)&OD_record1602},
|
||||
{0x1603, 0x08, 0x00, 0, (void*)&OD_record1603},
|
||||
{0x1800, 0x06, 0x00, 0, (void*)&OD_record1800},
|
||||
{0x1801, 0x06, 0x00, 0, (void*)&OD_record1801},
|
||||
{0x1802, 0x06, 0x00, 0, (void*)&OD_record1802},
|
||||
{0x1803, 0x06, 0x00, 0, (void*)&OD_record1803},
|
||||
{0x1A00, 0x08, 0x00, 0, (void*)&OD_record1A00},
|
||||
{0x1A01, 0x08, 0x00, 0, (void*)&OD_record1A01},
|
||||
{0x1A02, 0x08, 0x00, 0, (void*)&OD_record1A02},
|
||||
{0x1A03, 0x08, 0x00, 0, (void*)&OD_record1A03},
|
||||
{0x1F80, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.NMTStartup},
|
||||
{0x2100, 0x00, 0x36, 10, (void*)&CO_OD_RAM.errorStatusBits[0]},
|
||||
{0x2101, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.CANNodeID},
|
||||
{0x2102, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.CANBitRate},
|
||||
{0x2103, 0x00, 0x8E, 2, (void*)&CO_OD_RAM.SYNCCounter},
|
||||
{0x2104, 0x00, 0x86, 2, (void*)&CO_OD_RAM.SYNCTime},
|
||||
{0x2106, 0x00, 0x87, 4, (void*)&CO_OD_EEPROM.powerOnCounter},
|
||||
{0x2107, 0x05, 0xBE, 2, (void*)&CO_OD_RAM.performance[0]},
|
||||
{0x2108, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.temperature[0]},
|
||||
{0x2109, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.voltage[0]},
|
||||
{0x2110, 0x10, 0xFE, 4, (void*)&CO_OD_RAM.variableInt32[0]},
|
||||
{0x2111, 0x10, 0xFD, 4, (void*)&CO_OD_ROM.variableROMInt32[0]},
|
||||
{0x2112, 0x10, 0xFF, 4, (void*)&CO_OD_EEPROM.variableNVInt32[0]},
|
||||
{0x2120, 0x05, 0x00, 0, (void*)&OD_record2120},
|
||||
{0x2130, 0x03, 0x00, 0, (void*)&OD_record2130},
|
||||
{0x6000, 0x08, 0x76, 1, (void*)&CO_OD_RAM.readInput8Bit[0]},
|
||||
{0x6200, 0x08, 0x3E, 1, (void*)&CO_OD_RAM.writeOutput8Bit[0]},
|
||||
{0x6401, 0x0C, 0xB6, 2, (void*)&CO_OD_RAM.readAnalogueInput16Bit[0]},
|
||||
{0x6411, 0x08, 0xBE, 2, (void*)&CO_OD_RAM.writeAnalogueOutput16Bit[0]},
|
||||
};
|
||||
|
||||
460
example/CO_OD.h
460
example/CO_OD.h
|
|
@ -1,460 +0,0 @@
|
|||
/*
|
||||
* CANopen Object Dictionary.
|
||||
*
|
||||
* This file was automatically generated with CANopenNode Object
|
||||
* Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!!
|
||||
* Object Dictionary Editor is currently an older, but functional web
|
||||
* application. For more info see See 'Object_Dictionary_Editor/about.html' in
|
||||
* <http://sourceforge.net/p/canopennode/code_complete/ci/master/tree/>
|
||||
* For more information on CANopen Object Dictionary see <CO_SDOserver.h>.
|
||||
*
|
||||
* @file CO_OD.h
|
||||
* @author Janez Paternoster
|
||||
* @copyright 2010 - 2020 Janez Paternoster
|
||||
*
|
||||
* This file is part of CANopenNode, an opensource CANopen Stack.
|
||||
* Project home page is <https://github.com/CANopenNode/CANopenNode>.
|
||||
* For more information on CANopen see <http://www.can-cia.org/>.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CO_OD_H
|
||||
#define CO_OD_H
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
CANopen DATA DYPES
|
||||
*******************************************************************************/
|
||||
typedef uint8_t UNSIGNED8;
|
||||
typedef uint16_t UNSIGNED16;
|
||||
typedef uint32_t UNSIGNED32;
|
||||
typedef uint64_t UNSIGNED64;
|
||||
typedef int8_t INTEGER8;
|
||||
typedef int16_t INTEGER16;
|
||||
typedef int32_t INTEGER32;
|
||||
typedef int64_t INTEGER64;
|
||||
typedef float32_t REAL32;
|
||||
typedef float64_t REAL64;
|
||||
typedef char_t VISIBLE_STRING;
|
||||
typedef oChar_t OCTET_STRING;
|
||||
typedef domain_t DOMAIN;
|
||||
|
||||
#ifndef timeOfDay_t
|
||||
typedef union {
|
||||
unsigned long long ullValue;
|
||||
struct {
|
||||
unsigned long ms:28;
|
||||
unsigned reserved:4;
|
||||
unsigned days:16;
|
||||
unsigned reserved2:16;
|
||||
};
|
||||
}timeOfDay_t;
|
||||
#endif
|
||||
|
||||
typedef timeOfDay_t TIME_OF_DAY;
|
||||
typedef timeOfDay_t TIME_DIFFERENCE;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
FILE INFO:
|
||||
FileName: IO Example
|
||||
FileVersion: -
|
||||
CreationTime: 18:04:29
|
||||
CreationDate: 2016-03-25
|
||||
CreatedBy: JP
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
DEVICE INFO:
|
||||
VendorName: CANopenNode
|
||||
VendorNumber: 0
|
||||
ProductName: CANopenNode
|
||||
ProductNumber: 0
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
FEATURES
|
||||
*******************************************************************************/
|
||||
#define CO_NO_SYNC 1 //Associated objects: 1005, 1006, 1007, 2103, 2104
|
||||
#define CO_NO_TIME 1 //Associated objects: 1012-1013
|
||||
#define CO_NO_EMERGENCY 1 //Associated objects: 1014, 1015
|
||||
#define CO_NO_SDO_SERVER 1 //Associated objects: 1200
|
||||
#define CO_NO_SDO_CLIENT 1 //Associated objects: 1280
|
||||
#define CO_NO_GFC 0 //Associated objects: 1300
|
||||
#define CO_NO_SRDO 0 //Associated objects: 1301-13FF
|
||||
#define CO_NO_RPDO 4 //Associated objects: 1400, 1401, 1402, 1403, 1600, 1601, 1602, 1603
|
||||
#define CO_NO_TPDO 4 //Associated objects: 1800, 1801, 1802, 1803, 1A00, 1A01, 1A02, 1A03
|
||||
#define CO_NO_TRACE 0
|
||||
|
||||
/*******************************************************************************
|
||||
OBJECT DICTIONARY
|
||||
*******************************************************************************/
|
||||
#define CO_OD_NoOfElements 57
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
TYPE DEFINITIONS FOR RECORDS
|
||||
*******************************************************************************/
|
||||
/*1018 */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 vendorID;
|
||||
UNSIGNED32 productCode;
|
||||
UNSIGNED32 revisionNumber;
|
||||
UNSIGNED32 serialNumber;
|
||||
} OD_identity_t;
|
||||
|
||||
/*1200[1] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDClientToServer;
|
||||
UNSIGNED32 COB_IDServerToClient;
|
||||
} OD_SDOServerParameter_t;
|
||||
|
||||
/*1280[1] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDClientToServer;
|
||||
UNSIGNED32 COB_IDServerToClient;
|
||||
UNSIGNED8 nodeIDOfTheSDOServer;
|
||||
} OD_SDOClientParameter_t;
|
||||
/*1301 */ typedef struct {
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED8 informationDirection;
|
||||
UNSIGNED16 safetyCycleTime;
|
||||
UNSIGNED8 safetyRelatedValidationTime;
|
||||
UNSIGNED8 transmissionType;
|
||||
UNSIGNED32 COB_ID1_normal;
|
||||
UNSIGNED32 COB_ID2_inverted;
|
||||
} OD_SRDOCommunicationParameter_t;
|
||||
/*1381 */ typedef struct {
|
||||
UNSIGNED8 numberOfMappedObjects;
|
||||
UNSIGNED32 mappedObject[16];
|
||||
} OD_SRDOMappingParameter_t;
|
||||
/*1400[4] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDUsedByRPDO;
|
||||
UNSIGNED8 transmissionType;
|
||||
} OD_RPDOCommunicationParameter_t;
|
||||
|
||||
/*1600[4] */ typedef struct{
|
||||
UNSIGNED8 numberOfMappedObjects;
|
||||
UNSIGNED32 mappedObject1;
|
||||
UNSIGNED32 mappedObject2;
|
||||
UNSIGNED32 mappedObject3;
|
||||
UNSIGNED32 mappedObject4;
|
||||
UNSIGNED32 mappedObject5;
|
||||
UNSIGNED32 mappedObject6;
|
||||
UNSIGNED32 mappedObject7;
|
||||
UNSIGNED32 mappedObject8;
|
||||
} OD_RPDOMappingParameter_t;
|
||||
|
||||
/*1800[4] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDUsedByTPDO;
|
||||
UNSIGNED8 transmissionType;
|
||||
UNSIGNED16 inhibitTime;
|
||||
UNSIGNED8 compatibilityEntry;
|
||||
UNSIGNED16 eventTimer;
|
||||
UNSIGNED8 SYNCStartValue;
|
||||
} OD_TPDOCommunicationParameter_t;
|
||||
|
||||
/*1A00[4] */ typedef struct{
|
||||
UNSIGNED8 numberOfMappedObjects;
|
||||
UNSIGNED32 mappedObject1;
|
||||
UNSIGNED32 mappedObject2;
|
||||
UNSIGNED32 mappedObject3;
|
||||
UNSIGNED32 mappedObject4;
|
||||
UNSIGNED32 mappedObject5;
|
||||
UNSIGNED32 mappedObject6;
|
||||
UNSIGNED32 mappedObject7;
|
||||
UNSIGNED32 mappedObject8;
|
||||
} OD_TPDOMappingParameter_t;
|
||||
|
||||
/*2120 */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
INTEGER64 I64;
|
||||
UNSIGNED64 U64;
|
||||
REAL32 R32;
|
||||
REAL64 R64;
|
||||
DOMAIN domain;
|
||||
} OD_testVar_t;
|
||||
|
||||
/*2130 */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
VISIBLE_STRING string[30];
|
||||
UNSIGNED64 epochTimeBaseMs;
|
||||
UNSIGNED32 epochTimeOffsetMs;
|
||||
} OD_time_t;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
STRUCTURES FOR VARIABLES IN DIFFERENT MEMORY LOCATIONS
|
||||
*******************************************************************************/
|
||||
#define CO_OD_FIRST_LAST_WORD 0x55 //Any value from 0x01 to 0xFE. If changed, EEPROM will be reinitialized.
|
||||
|
||||
/***** Structure for RAM variables ********************************************/
|
||||
struct sCO_OD_RAM{
|
||||
UNSIGNED32 FirstWord;
|
||||
|
||||
/*1001 */ UNSIGNED8 errorRegister;
|
||||
/*1002 */ UNSIGNED32 manufacturerStatusRegister;
|
||||
/*1003 */ UNSIGNED32 preDefinedErrorField[8];
|
||||
/*1010 */ UNSIGNED32 storeParameters[1];
|
||||
/*1011 */ UNSIGNED32 restoreDefaultParameters[1];
|
||||
/*1280[1] */ OD_SDOClientParameter_t SDOClientParameter[1];
|
||||
/*2100 */ OCTET_STRING errorStatusBits[10];
|
||||
/*2103 */ UNSIGNED16 SYNCCounter;
|
||||
/*2104 */ UNSIGNED16 SYNCTime;
|
||||
/*2107 */ UNSIGNED16 performance[5];
|
||||
/*2108 */ INTEGER16 temperature[1];
|
||||
/*2109 */ INTEGER16 voltage[1];
|
||||
/*2110 */ INTEGER32 variableInt32[16];
|
||||
/*2120 */ OD_testVar_t testVar;
|
||||
/*2130 */ OD_time_t time;
|
||||
/*6000 */ UNSIGNED8 readInput8Bit[8];
|
||||
/*6200 */ UNSIGNED8 writeOutput8Bit[8];
|
||||
/*6401 */ INTEGER16 readAnalogueInput16Bit[12];
|
||||
/*6411 */ INTEGER16 writeAnalogueOutput16Bit[8];
|
||||
|
||||
UNSIGNED32 LastWord;
|
||||
};
|
||||
|
||||
/***** Structure for EEPROM variables *****************************************/
|
||||
struct sCO_OD_EEPROM{
|
||||
UNSIGNED32 FirstWord;
|
||||
|
||||
/*2106 */ UNSIGNED32 powerOnCounter;
|
||||
/*2112 */ INTEGER32 variableNVInt32[16];
|
||||
|
||||
UNSIGNED32 LastWord;
|
||||
};
|
||||
|
||||
|
||||
/***** Structure for ROM variables ********************************************/
|
||||
struct sCO_OD_ROM{
|
||||
UNSIGNED32 FirstWord;
|
||||
|
||||
/*1000 */ UNSIGNED32 deviceType;
|
||||
/*1005 */ UNSIGNED32 COB_ID_SYNCMessage;
|
||||
/*1006 */ UNSIGNED32 communicationCyclePeriod;
|
||||
/*1007 */ UNSIGNED32 synchronousWindowLength;
|
||||
/*1008 */ VISIBLE_STRING manufacturerDeviceName[11];
|
||||
/*1009 */ VISIBLE_STRING manufacturerHardwareVersion[4];
|
||||
/*100A */ VISIBLE_STRING manufacturerSoftwareVersion[4];
|
||||
/*1012 */ UNSIGNED32 COB_ID_TIME;
|
||||
/*1014 */ UNSIGNED32 COB_ID_EMCY;
|
||||
/*1015 */ UNSIGNED16 inhibitTimeEMCY;
|
||||
/*1016 */ UNSIGNED32 consumerHeartbeatTime[4];
|
||||
/*1017 */ UNSIGNED16 producerHeartbeatTime;
|
||||
/*1018 */ OD_identity_t identity;
|
||||
/*1019 */ UNSIGNED8 synchronousCounterOverflowValue;
|
||||
/*1029 */ UNSIGNED8 errorBehavior[6];
|
||||
/*1200[1] */ OD_SDOServerParameter_t SDOServerParameter[1];
|
||||
/*1400[4] */ OD_RPDOCommunicationParameter_t RPDOCommunicationParameter[4];
|
||||
/*1600[4] */ OD_RPDOMappingParameter_t RPDOMappingParameter[4];
|
||||
/*1800[4] */ OD_TPDOCommunicationParameter_t TPDOCommunicationParameter[4];
|
||||
/*1A00[4] */ OD_TPDOMappingParameter_t TPDOMappingParameter[4];
|
||||
/*1F80 */ UNSIGNED32 NMTStartup;
|
||||
/*2101 */ UNSIGNED8 CANNodeID;
|
||||
/*2102 */ UNSIGNED16 CANBitRate;
|
||||
/*2111 */ INTEGER32 variableROMInt32[16];
|
||||
|
||||
UNSIGNED32 LastWord;
|
||||
};
|
||||
|
||||
|
||||
/***** Declaration of Object Dictionary variables *****************************/
|
||||
extern struct sCO_OD_RAM CO_OD_RAM;
|
||||
|
||||
extern struct sCO_OD_EEPROM CO_OD_EEPROM;
|
||||
|
||||
extern struct sCO_OD_ROM CO_OD_ROM;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
ALIASES FOR OBJECT DICTIONARY VARIABLES
|
||||
*******************************************************************************/
|
||||
/*1000, Data Type: UNSIGNED32 */
|
||||
#define OD_deviceType CO_OD_ROM.deviceType
|
||||
|
||||
/*1001, Data Type: UNSIGNED8 */
|
||||
#define OD_errorRegister CO_OD_RAM.errorRegister
|
||||
|
||||
/*1002, Data Type: UNSIGNED32 */
|
||||
#define OD_manufacturerStatusRegister CO_OD_RAM.manufacturerStatusRegister
|
||||
|
||||
/*1003, Data Type: UNSIGNED32, Array[8] */
|
||||
#define OD_preDefinedErrorField CO_OD_RAM.preDefinedErrorField
|
||||
#define ODL_preDefinedErrorField_arrayLength 8
|
||||
|
||||
/*1005, Data Type: UNSIGNED32 */
|
||||
#define OD_COB_ID_SYNCMessage CO_OD_ROM.COB_ID_SYNCMessage
|
||||
|
||||
/*1006, Data Type: UNSIGNED32 */
|
||||
#define OD_communicationCyclePeriod CO_OD_ROM.communicationCyclePeriod
|
||||
|
||||
/*1007, Data Type: UNSIGNED32 */
|
||||
#define OD_synchronousWindowLength CO_OD_ROM.synchronousWindowLength
|
||||
|
||||
/*1008, Data Type: VISIBLE_STRING, Array[11] */
|
||||
#define OD_manufacturerDeviceName CO_OD_ROM.manufacturerDeviceName
|
||||
#define ODL_manufacturerDeviceName_stringLength 11
|
||||
|
||||
/*1009, Data Type: VISIBLE_STRING, Array[4] */
|
||||
#define OD_manufacturerHardwareVersion CO_OD_ROM.manufacturerHardwareVersion
|
||||
#define ODL_manufacturerHardwareVersion_stringLength 4
|
||||
|
||||
/*100A, Data Type: VISIBLE_STRING, Array[4] */
|
||||
#define OD_manufacturerSoftwareVersion CO_OD_ROM.manufacturerSoftwareVersion
|
||||
#define ODL_manufacturerSoftwareVersion_stringLength 4
|
||||
|
||||
/*1010, Data Type: UNSIGNED32, Array[1] */
|
||||
#define OD_storeParameters CO_OD_RAM.storeParameters
|
||||
#define ODL_storeParameters_arrayLength 1
|
||||
#define ODA_storeParameters_saveAllParameters 0
|
||||
|
||||
/*1011, Data Type: UNSIGNED32, Array[1] */
|
||||
#define OD_restoreDefaultParameters CO_OD_RAM.restoreDefaultParameters
|
||||
#define ODL_restoreDefaultParameters_arrayLength 1
|
||||
#define ODA_restoreDefaultParameters_restoreAllDefaultParameters 0
|
||||
|
||||
/*1012, Data Type: UNSIGNED32 */
|
||||
#define OD_COB_ID_TIME CO_OD_ROM.COB_ID_TIME
|
||||
|
||||
/*1014, Data Type: UNSIGNED32 */
|
||||
#define OD_COB_ID_EMCY CO_OD_ROM.COB_ID_EMCY
|
||||
|
||||
/*1015, Data Type: UNSIGNED16 */
|
||||
#define OD_inhibitTimeEMCY CO_OD_ROM.inhibitTimeEMCY
|
||||
|
||||
/*1016, Data Type: UNSIGNED32, Array[4] */
|
||||
#define OD_consumerHeartbeatTime CO_OD_ROM.consumerHeartbeatTime
|
||||
#define ODL_consumerHeartbeatTime_arrayLength 4
|
||||
|
||||
/*1017, Data Type: UNSIGNED16 */
|
||||
#define OD_producerHeartbeatTime CO_OD_ROM.producerHeartbeatTime
|
||||
|
||||
/*1018, Data Type: OD_identity_t */
|
||||
#define OD_identity CO_OD_ROM.identity
|
||||
|
||||
/*1019, Data Type: UNSIGNED8 */
|
||||
#define OD_synchronousCounterOverflowValue CO_OD_ROM.synchronousCounterOverflowValue
|
||||
|
||||
/*1029, Data Type: UNSIGNED8, Array[6] */
|
||||
#define OD_errorBehavior CO_OD_ROM.errorBehavior
|
||||
#define ODL_errorBehavior_arrayLength 6
|
||||
#define ODA_errorBehavior_communication 0
|
||||
#define ODA_errorBehavior_communicationOther 1
|
||||
#define ODA_errorBehavior_communicationPassive 2
|
||||
#define ODA_errorBehavior_generic 3
|
||||
#define ODA_errorBehavior_deviceProfile 4
|
||||
#define ODA_errorBehavior_manufacturerSpecific 5
|
||||
|
||||
/*1200[1], Data Type: OD_SDOServerParameter_t, Array[1] */
|
||||
#define OD_SDOServerParameter CO_OD_ROM.SDOServerParameter
|
||||
|
||||
/*1280[1], Data Type: OD_SDOClientParameter_t, Array[1] */
|
||||
#define OD_SDOClientParameter CO_OD_RAM.SDOClientParameter
|
||||
|
||||
/*1400[4], Data Type: OD_RPDOCommunicationParameter_t, Array[4] */
|
||||
#define OD_RPDOCommunicationParameter CO_OD_ROM.RPDOCommunicationParameter
|
||||
|
||||
/*1600[4], Data Type: OD_RPDOMappingParameter_t, Array[4] */
|
||||
#define OD_RPDOMappingParameter CO_OD_ROM.RPDOMappingParameter
|
||||
|
||||
/*1800[4], Data Type: OD_TPDOCommunicationParameter_t, Array[4] */
|
||||
#define OD_TPDOCommunicationParameter CO_OD_ROM.TPDOCommunicationParameter
|
||||
|
||||
/*1A00[4], Data Type: OD_TPDOMappingParameter_t, Array[4] */
|
||||
#define OD_TPDOMappingParameter CO_OD_ROM.TPDOMappingParameter
|
||||
|
||||
/*1F80, Data Type: UNSIGNED32 */
|
||||
#define OD_NMTStartup CO_OD_ROM.NMTStartup
|
||||
|
||||
/*2100, Data Type: OCTET_STRING, Array[10] */
|
||||
#define OD_errorStatusBits CO_OD_RAM.errorStatusBits
|
||||
#define ODL_errorStatusBits_stringLength 10
|
||||
|
||||
/*2101, Data Type: UNSIGNED8 */
|
||||
#define OD_CANNodeID CO_OD_ROM.CANNodeID
|
||||
|
||||
/*2102, Data Type: UNSIGNED16 */
|
||||
#define OD_CANBitRate CO_OD_ROM.CANBitRate
|
||||
|
||||
/*2103, Data Type: UNSIGNED16 */
|
||||
#define OD_SYNCCounter CO_OD_RAM.SYNCCounter
|
||||
|
||||
/*2104, Data Type: UNSIGNED16 */
|
||||
#define OD_SYNCTime CO_OD_RAM.SYNCTime
|
||||
|
||||
/*2106, Data Type: UNSIGNED32 */
|
||||
#define OD_powerOnCounter CO_OD_EEPROM.powerOnCounter
|
||||
|
||||
/*2107, Data Type: UNSIGNED16, Array[5] */
|
||||
#define OD_performance CO_OD_RAM.performance
|
||||
#define ODL_performance_arrayLength 5
|
||||
#define ODA_performance_cyclesPerSecond 0
|
||||
#define ODA_performance_timerCycleTime 1
|
||||
#define ODA_performance_timerCycleMaxTime 2
|
||||
#define ODA_performance_mainCycleTime 3
|
||||
#define ODA_performance_mainCycleMaxTime 4
|
||||
|
||||
/*2108, Data Type: INTEGER16, Array[1] */
|
||||
#define OD_temperature CO_OD_RAM.temperature
|
||||
#define ODL_temperature_arrayLength 1
|
||||
#define ODA_temperature_mainPCB 0
|
||||
|
||||
/*2109, Data Type: INTEGER16, Array[1] */
|
||||
#define OD_voltage CO_OD_RAM.voltage
|
||||
#define ODL_voltage_arrayLength 1
|
||||
#define ODA_voltage_mainPCBSupply 0
|
||||
|
||||
/*2110, Data Type: INTEGER32, Array[16] */
|
||||
#define OD_variableInt32 CO_OD_RAM.variableInt32
|
||||
#define ODL_variableInt32_arrayLength 16
|
||||
|
||||
/*2111, Data Type: INTEGER32, Array[16] */
|
||||
#define OD_variableROMInt32 CO_OD_ROM.variableROMInt32
|
||||
#define ODL_variableROMInt32_arrayLength 16
|
||||
|
||||
/*2112, Data Type: INTEGER32, Array[16] */
|
||||
#define OD_variableNVInt32 CO_OD_EEPROM.variableNVInt32
|
||||
#define ODL_variableNVInt32_arrayLength 16
|
||||
|
||||
/*2120, Data Type: OD_testVar_t */
|
||||
#define OD_testVar CO_OD_RAM.testVar
|
||||
|
||||
/*2130, Data Type: OD_time_t */
|
||||
#define OD_time CO_OD_RAM.time
|
||||
|
||||
/*6000, Data Type: UNSIGNED8, Array[8] */
|
||||
#define OD_readInput8Bit CO_OD_RAM.readInput8Bit
|
||||
#define ODL_readInput8Bit_arrayLength 8
|
||||
|
||||
/*6200, Data Type: UNSIGNED8, Array[8] */
|
||||
#define OD_writeOutput8Bit CO_OD_RAM.writeOutput8Bit
|
||||
#define ODL_writeOutput8Bit_arrayLength 8
|
||||
|
||||
/*6401, Data Type: INTEGER16, Array[12] */
|
||||
#define OD_readAnalogueInput16Bit CO_OD_RAM.readAnalogueInput16Bit
|
||||
#define ODL_readAnalogueInput16Bit_arrayLength 12
|
||||
|
||||
/*6411, Data Type: INTEGER16, Array[8] */
|
||||
#define OD_writeAnalogueOutput16Bit CO_OD_RAM.writeAnalogueOutput16Bit
|
||||
#define ODL_writeAnalogueOutput16Bit_arrayLength 8
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -1,385 +0,0 @@
|
|||
/*
|
||||
* CANopen Object Dictionary.
|
||||
*
|
||||
* This file was automatically generated with CANopenNode Object
|
||||
* Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!!
|
||||
* Object Dictionary Editor is currently an older, but functional web
|
||||
* application. For more info see See 'Object_Dictionary_Editor/about.html' in
|
||||
* <http://sourceforge.net/p/canopennode/code_complete/ci/master/tree/>
|
||||
* For more information on CANopen Object Dictionary see <CO_SDOserver.h>.
|
||||
*
|
||||
* @file CO_OD.c
|
||||
* @author Janez Paternoster
|
||||
* @copyright 2010 - 2020 Janez Paternoster
|
||||
*
|
||||
* This file is part of CANopenNode, an opensource CANopen Stack.
|
||||
* Project home page is <https://github.com/CANopenNode/CANopenNode>.
|
||||
* For more information on CANopen see <http://www.can-cia.org/>.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
#include "CO_driver.h"
|
||||
#include "CO_OD.h"
|
||||
#include "CO_SDOserver.h"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
DEFINITION AND INITIALIZATION OF OBJECT DICTIONARY VARIABLES
|
||||
*******************************************************************************/
|
||||
|
||||
/***** Definition for RAM variables *******************************************/
|
||||
struct sCO_OD_RAM CO_OD_RAM = {
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
|
||||
/*1001*/ 0x0,
|
||||
/*1002*/ 0x0L,
|
||||
/*1003*/ {0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1010*/ {0x3L},
|
||||
/*1011*/ {0x1L},
|
||||
/*2100*/ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
/*2103*/ 0x0,
|
||||
/*2104*/ 0x0,
|
||||
/*2107*/ {0x3E8, 0x0, 0x0, 0x0, 0x0},
|
||||
/*2108*/ {0},
|
||||
/*2109*/ {0},
|
||||
/*2110*/ {0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L},
|
||||
/*2120*/ {0x5, 0x1234567890ABCDEFLL, 0x234567890ABCDEF1LL, 12.345, 456.789, 0},
|
||||
/*2130*/ {0x3, {'-', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0, 0x0L},
|
||||
/*2400*/ 0x0,
|
||||
/*2401*/{{0x6, 0x0L, 0L, 0L, 0L, 0, 0x0L},
|
||||
/*2402*/ {0x6, 0x0L, 0L, 0L, 0L, 0, 0x0L}},
|
||||
/*6000*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
|
||||
/*6200*/ {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
|
||||
/*6401*/ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
/*6411*/ {0, 0, 0, 0, 0, 0, 0, 0},
|
||||
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
};
|
||||
|
||||
|
||||
/***** Definition for EEPROM variables ****************************************/
|
||||
struct sCO_OD_EEPROM CO_OD_EEPROM = {
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
|
||||
/*2106*/ 0x0L,
|
||||
/*2112*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L},
|
||||
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
};
|
||||
|
||||
|
||||
/***** Definition for ROM variables *******************************************/
|
||||
struct sCO_OD_ROM CO_OD_ROM = { //constant variables, stored in flash
|
||||
CO_OD_FIRST_LAST_WORD,
|
||||
|
||||
/*1000*/ 0x0L,
|
||||
/*1005*/ 0x80L,
|
||||
/*1006*/ 0x0L,
|
||||
/*1007*/ 0x0L,
|
||||
/*1008*/ {'C', 'A', 'N', 'o', 'p', 'e', 'n', 'N', 'o', 'd', 'e'},
|
||||
/*1009*/ {'3', '.', '0', '0'},
|
||||
/*100A*/ {'3', '.', '0', '0'},
|
||||
/*1014*/ 0x80L,
|
||||
/*1015*/ 0x64,
|
||||
/*1016*/ {0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1017*/ 0x3E8,
|
||||
/*1018*/ {0x4, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1019*/ 0x0,
|
||||
/*1029*/ {0x0, 0x0, 0x1, 0x0, 0x0, 0x0},
|
||||
/*1200*/{{0x2, 0x600L, 0x580L}},
|
||||
/*1400*/{{0x2, 0x200L, 0xFF},
|
||||
/*1401*/ {0x2, 0x300L, 0xFE},
|
||||
/*1402*/ {0x2, 0x400L, 0xFE},
|
||||
/*1403*/ {0x2, 0x500L, 0xFE}},
|
||||
/*1600*/{{0x2, 0x62000108L, 0x62000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1601*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1602*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1603*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}},
|
||||
/*1800*/{{0x6, 0x180L, 0xFF, 0x64, 0x0, 0x0, 0x0},
|
||||
/*1801*/ {0x6, 0x280L, 0xFE, 0x0, 0x0, 0x0, 0x0},
|
||||
/*1802*/ {0x6, 0x380L, 0xFE, 0x0, 0x0, 0x0, 0x0},
|
||||
/*1803*/ {0x6, 0x480L, 0xFE, 0x0, 0x0, 0x0, 0x0}},
|
||||
/*1A00*/{{0x2, 0x60000108L, 0x60000208L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1A01*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1A02*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L},
|
||||
/*1A03*/ {0x0, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L}},
|
||||
/*1F80*/ 0x0L,
|
||||
/*2101*/ 0x30,
|
||||
/*2102*/ 0xFA,
|
||||
/*2111*/ {1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L},
|
||||
/*2301*/{{0x8, 0x64L, 0x1, {'T', 'r', 'a', 'c', 'e', '1', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, {'r', 'e', 'd', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0x60000108L, 0x1, 0x0, 0L},
|
||||
/*2302*/ {0x8, 0x0L, 0x0, {'T', 'r', 'a', 'c', 'e', '2', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, {'g', 'r', 'e', 'e', 'n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0x0L, 0x0, 0x0, 0L}},
|
||||
|
||||
CO_OD_FIRST_LAST_WORD
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
STRUCTURES FOR RECORD TYPE OBJECTS
|
||||
*******************************************************************************/
|
||||
/*0x1018*/ const CO_OD_entryRecord_t OD_record1018[5] = {
|
||||
{(void*)&CO_OD_ROM.identity.maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.identity.vendorID, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.identity.productCode, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.identity.revisionNumber, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.identity.serialNumber, 0x85, 4}};
|
||||
/*0x1200*/ const CO_OD_entryRecord_t OD_record1200[3] = {
|
||||
{(void*)&CO_OD_ROM.SDOServerParameter[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDClientToServer, 0x85, 4},
|
||||
{(void*)&CO_OD_ROM.SDOServerParameter[0].COB_IDServerToClient, 0x85, 4}};
|
||||
/*0x1400*/ const CO_OD_entryRecord_t OD_record1400[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[0].transmissionType, 0x0D, 1}};
|
||||
/*0x1401*/ const CO_OD_entryRecord_t OD_record1401[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[1].transmissionType, 0x0D, 1}};
|
||||
/*0x1402*/ const CO_OD_entryRecord_t OD_record1402[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[2].transmissionType, 0x0D, 1}};
|
||||
/*0x1403*/ const CO_OD_entryRecord_t OD_record1403[3] = {
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].COB_IDUsedByRPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOCommunicationParameter[3].transmissionType, 0x0D, 1}};
|
||||
/*0x1600*/ const CO_OD_entryRecord_t OD_record1600[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[0].mappedObject8, 0x8D, 4}};
|
||||
/*0x1601*/ const CO_OD_entryRecord_t OD_record1601[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[1].mappedObject8, 0x8D, 4}};
|
||||
/*0x1602*/ const CO_OD_entryRecord_t OD_record1602[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[2].mappedObject8, 0x8D, 4}};
|
||||
/*0x1603*/ const CO_OD_entryRecord_t OD_record1603[9] = {
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.RPDOMappingParameter[3].mappedObject8, 0x8D, 4}};
|
||||
/*0x1800*/ const CO_OD_entryRecord_t OD_record1800[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[0].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1801*/ const CO_OD_entryRecord_t OD_record1801[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[1].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1802*/ const CO_OD_entryRecord_t OD_record1802[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[2].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1803*/ const CO_OD_entryRecord_t OD_record1803[7] = {
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].COB_IDUsedByTPDO, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].transmissionType, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].inhibitTime, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].compatibilityEntry, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].eventTimer, 0x8D, 2},
|
||||
{(void*)&CO_OD_ROM.TPDOCommunicationParameter[3].SYNCStartValue, 0x0D, 1}};
|
||||
/*0x1A00*/ const CO_OD_entryRecord_t OD_record1A00[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[0].mappedObject8, 0x8D, 4}};
|
||||
/*0x1A01*/ const CO_OD_entryRecord_t OD_record1A01[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[1].mappedObject8, 0x8D, 4}};
|
||||
/*0x1A02*/ const CO_OD_entryRecord_t OD_record1A02[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[2].mappedObject8, 0x8D, 4}};
|
||||
/*0x1A03*/ const CO_OD_entryRecord_t OD_record1A03[9] = {
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].numberOfMappedObjects, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject1, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject2, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject3, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject4, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject5, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject6, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject7, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.TPDOMappingParameter[3].mappedObject8, 0x8D, 4}};
|
||||
/*0x2120*/ const CO_OD_entryRecord_t OD_record2120[6] = {
|
||||
{(void*)&CO_OD_RAM.testVar.maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.testVar.I64, 0xBE, 8},
|
||||
{(void*)&CO_OD_RAM.testVar.U64, 0xBE, 8},
|
||||
{(void*)&CO_OD_RAM.testVar.R32, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.testVar.R64, 0xBE, 8},
|
||||
{0, 0x0E, 0}};
|
||||
/*0x2130*/ const CO_OD_entryRecord_t OD_record2130[4] = {
|
||||
{(void*)&CO_OD_RAM.time.maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.time.string[0], 0x06, 30},
|
||||
{(void*)&CO_OD_RAM.time.epochTimeBaseMs, 0x8E, 8},
|
||||
{(void*)&CO_OD_RAM.time.epochTimeOffsetMs, 0xBE, 4}};
|
||||
/*0x2301*/ const CO_OD_entryRecord_t OD_record2301[9] = {
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].size, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].axisNo, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].name[0], 0x0D, 30},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].color[0], 0x0D, 20},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].map, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].format, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].trigger, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[0].threshold, 0x8D, 4}};
|
||||
/*0x2302*/ const CO_OD_entryRecord_t OD_record2302[9] = {
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].maxSubIndex, 0x05, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].size, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].axisNo, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].name[0], 0x0D, 30},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].color[0], 0x0D, 20},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].map, 0x8D, 4},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].format, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].trigger, 0x0D, 1},
|
||||
{(void*)&CO_OD_ROM.traceConfig[1].threshold, 0x8D, 4}};
|
||||
/*0x2401*/ const CO_OD_entryRecord_t OD_record2401[7] = {
|
||||
{(void*)&CO_OD_RAM.trace[0].maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.trace[0].size, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.trace[0].value, 0xA6, 4},
|
||||
{(void*)&CO_OD_RAM.trace[0].min, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.trace[0].max, 0xBE, 4},
|
||||
{0, 0x06, 0},
|
||||
{(void*)&CO_OD_RAM.trace[0].triggerTime, 0xBE, 4}};
|
||||
/*0x2402*/ const CO_OD_entryRecord_t OD_record2402[7] = {
|
||||
{(void*)&CO_OD_RAM.trace[1].maxSubIndex, 0x06, 1},
|
||||
{(void*)&CO_OD_RAM.trace[1].size, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.trace[1].value, 0xA6, 4},
|
||||
{(void*)&CO_OD_RAM.trace[1].min, 0xBE, 4},
|
||||
{(void*)&CO_OD_RAM.trace[1].max, 0xBE, 4},
|
||||
{0, 0x06, 0},
|
||||
{(void*)&CO_OD_RAM.trace[1].triggerTime, 0xBE, 4}};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
OBJECT DICTIONARY
|
||||
*******************************************************************************/
|
||||
const CO_OD_entry_t CO_OD[CO_OD_NoOfElements] = {
|
||||
{0x1000, 0x00, 0x85, 4, (void*)&CO_OD_ROM.deviceType},
|
||||
{0x1001, 0x00, 0x36, 1, (void*)&CO_OD_RAM.errorRegister},
|
||||
{0x1002, 0x00, 0xB6, 4, (void*)&CO_OD_RAM.manufacturerStatusRegister},
|
||||
{0x1003, 0x08, 0x8E, 4, (void*)&CO_OD_RAM.preDefinedErrorField[0]},
|
||||
{0x1005, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.COB_ID_SYNCMessage},
|
||||
{0x1006, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.communicationCyclePeriod},
|
||||
{0x1007, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.synchronousWindowLength},
|
||||
{0x1008, 0x00, 0x05, 11, (void*)&CO_OD_ROM.manufacturerDeviceName[0]},
|
||||
{0x1009, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerHardwareVersion[0]},
|
||||
{0x100A, 0x00, 0x05, 4, (void*)&CO_OD_ROM.manufacturerSoftwareVersion[0]},
|
||||
{0x1010, 0x01, 0x8E, 4, (void*)&CO_OD_RAM.storeParameters[0]},
|
||||
{0x1011, 0x01, 0x8E, 4, (void*)&CO_OD_RAM.restoreDefaultParameters[0]},
|
||||
{0x1014, 0x00, 0x85, 4, (void*)&CO_OD_ROM.COB_ID_EMCY},
|
||||
{0x1015, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.inhibitTimeEMCY},
|
||||
{0x1016, 0x04, 0x8D, 4, (void*)&CO_OD_ROM.consumerHeartbeatTime[0]},
|
||||
{0x1017, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.producerHeartbeatTime},
|
||||
{0x1018, 0x04, 0x00, 0, (void*)&OD_record1018},
|
||||
{0x1019, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.synchronousCounterOverflowValue},
|
||||
{0x1029, 0x06, 0x0D, 1, (void*)&CO_OD_ROM.errorBehavior[0]},
|
||||
{0x1200, 0x02, 0x00, 0, (void*)&OD_record1200},
|
||||
{0x1400, 0x02, 0x00, 0, (void*)&OD_record1400},
|
||||
{0x1401, 0x02, 0x00, 0, (void*)&OD_record1401},
|
||||
{0x1402, 0x02, 0x00, 0, (void*)&OD_record1402},
|
||||
{0x1403, 0x02, 0x00, 0, (void*)&OD_record1403},
|
||||
{0x1600, 0x08, 0x00, 0, (void*)&OD_record1600},
|
||||
{0x1601, 0x08, 0x00, 0, (void*)&OD_record1601},
|
||||
{0x1602, 0x08, 0x00, 0, (void*)&OD_record1602},
|
||||
{0x1603, 0x08, 0x00, 0, (void*)&OD_record1603},
|
||||
{0x1800, 0x06, 0x00, 0, (void*)&OD_record1800},
|
||||
{0x1801, 0x06, 0x00, 0, (void*)&OD_record1801},
|
||||
{0x1802, 0x06, 0x00, 0, (void*)&OD_record1802},
|
||||
{0x1803, 0x06, 0x00, 0, (void*)&OD_record1803},
|
||||
{0x1A00, 0x08, 0x00, 0, (void*)&OD_record1A00},
|
||||
{0x1A01, 0x08, 0x00, 0, (void*)&OD_record1A01},
|
||||
{0x1A02, 0x08, 0x00, 0, (void*)&OD_record1A02},
|
||||
{0x1A03, 0x08, 0x00, 0, (void*)&OD_record1A03},
|
||||
{0x1F80, 0x00, 0x8D, 4, (void*)&CO_OD_ROM.NMTStartup},
|
||||
{0x2100, 0x00, 0x36, 10, (void*)&CO_OD_RAM.errorStatusBits[0]},
|
||||
{0x2101, 0x00, 0x0D, 1, (void*)&CO_OD_ROM.CANNodeID},
|
||||
{0x2102, 0x00, 0x8D, 2, (void*)&CO_OD_ROM.CANBitRate},
|
||||
{0x2103, 0x00, 0x8E, 2, (void*)&CO_OD_RAM.SYNCCounter},
|
||||
{0x2104, 0x00, 0x86, 2, (void*)&CO_OD_RAM.SYNCTime},
|
||||
{0x2106, 0x00, 0x87, 4, (void*)&CO_OD_EEPROM.powerOnCounter},
|
||||
{0x2107, 0x05, 0xBE, 2, (void*)&CO_OD_RAM.performance[0]},
|
||||
{0x2108, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.temperature[0]},
|
||||
{0x2109, 0x01, 0xB6, 2, (void*)&CO_OD_RAM.voltage[0]},
|
||||
{0x2110, 0x10, 0xFE, 4, (void*)&CO_OD_RAM.variableInt32[0]},
|
||||
{0x2111, 0x10, 0xFD, 4, (void*)&CO_OD_ROM.variableROMInt32[0]},
|
||||
{0x2112, 0x10, 0xFF, 4, (void*)&CO_OD_EEPROM.variableNVInt32[0]},
|
||||
{0x2120, 0x05, 0x00, 0, (void*)&OD_record2120},
|
||||
{0x2130, 0x03, 0x00, 0, (void*)&OD_record2130},
|
||||
{0x2301, 0x08, 0x00, 0, (void*)&OD_record2301},
|
||||
{0x2302, 0x08, 0x00, 0, (void*)&OD_record2302},
|
||||
{0x2400, 0x00, 0x3E, 1, (void*)&CO_OD_RAM.traceEnable},
|
||||
{0x2401, 0x06, 0x00, 0, (void*)&OD_record2401},
|
||||
{0x2402, 0x06, 0x00, 0, (void*)&OD_record2402},
|
||||
{0x6000, 0x08, 0x76, 1, (void*)&CO_OD_RAM.readInput8Bit[0]},
|
||||
{0x6200, 0x08, 0x3E, 1, (void*)&CO_OD_RAM.writeOutput8Bit[0]},
|
||||
{0x6401, 0x0C, 0xB6, 2, (void*)&CO_OD_RAM.readAnalogueInput16Bit[0]},
|
||||
{0x6411, 0x08, 0xBE, 2, (void*)&CO_OD_RAM.writeAnalogueOutput16Bit[0]},
|
||||
};
|
||||
|
||||
|
|
@ -1,451 +0,0 @@
|
|||
/*
|
||||
* CANopen Object Dictionary.
|
||||
*
|
||||
* This file was automatically generated with CANopenNode Object
|
||||
* Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!!
|
||||
* Object Dictionary Editor is currently an older, but functional web
|
||||
* application. For more info see See 'Object_Dictionary_Editor/about.html' in
|
||||
* <http://sourceforge.net/p/canopennode/code_complete/ci/master/tree/>
|
||||
* For more information on CANopen Object Dictionary see <CO_SDOserver.h>.
|
||||
*
|
||||
* @file CO_OD.h
|
||||
* @author Janez Paternoster
|
||||
* @copyright 2010 - 2020 Janez Paternoster
|
||||
*
|
||||
* This file is part of CANopenNode, an opensource CANopen Stack.
|
||||
* Project home page is <https://github.com/CANopenNode/CANopenNode>.
|
||||
* For more information on CANopen see <http://www.can-cia.org/>.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef CO_OD_H
|
||||
#define CO_OD_H
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
CANopen DATA DYPES
|
||||
*******************************************************************************/
|
||||
typedef uint8_t UNSIGNED8;
|
||||
typedef uint16_t UNSIGNED16;
|
||||
typedef uint32_t UNSIGNED32;
|
||||
typedef uint64_t UNSIGNED64;
|
||||
typedef int8_t INTEGER8;
|
||||
typedef int16_t INTEGER16;
|
||||
typedef int32_t INTEGER32;
|
||||
typedef int64_t INTEGER64;
|
||||
typedef float32_t REAL32;
|
||||
typedef float64_t REAL64;
|
||||
typedef char_t VISIBLE_STRING;
|
||||
typedef oChar_t OCTET_STRING;
|
||||
typedef domain_t DOMAIN;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
FILE INFO:
|
||||
FileName: IO Example
|
||||
FileVersion: -
|
||||
CreationTime: 17:24:43
|
||||
CreationDate: 2016-03-25
|
||||
CreatedBy: JP
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
DEVICE INFO:
|
||||
VendorName: CANopenNode
|
||||
VendorNumber: 0
|
||||
ProductName: CANopenNode
|
||||
ProductNumber: 0
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
FEATURES
|
||||
*******************************************************************************/
|
||||
#define CO_NO_SYNC 1 //Associated objects: 1005, 1006, 1007, 2103, 2104
|
||||
#define CO_NO_EMERGENCY 1 //Associated objects: 1014, 1015
|
||||
#define CO_NO_SDO_SERVER 1 //Associated objects: 1200
|
||||
#define CO_NO_SDO_CLIENT 0
|
||||
#define CO_NO_RPDO 4 //Associated objects: 1400, 1401, 1402, 1403, 1600, 1601, 1602, 1603
|
||||
#define CO_NO_TPDO 4 //Associated objects: 1800, 1801, 1802, 1803, 1A00, 1A01, 1A02, 1A03
|
||||
#define CO_NO_NMT_MASTER 0
|
||||
#define CO_NO_TRACE 2 //Associated objects: 2301, 2302, 2400, 2401, 2402
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
OBJECT DICTIONARY
|
||||
*******************************************************************************/
|
||||
#define CO_OD_NoOfElements 60
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
TYPE DEFINITIONS FOR RECORDS
|
||||
*******************************************************************************/
|
||||
/*1018 */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 vendorID;
|
||||
UNSIGNED32 productCode;
|
||||
UNSIGNED32 revisionNumber;
|
||||
UNSIGNED32 serialNumber;
|
||||
} OD_identity_t;
|
||||
|
||||
/*1200[1] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDClientToServer;
|
||||
UNSIGNED32 COB_IDServerToClient;
|
||||
} OD_SDOServerParameter_t;
|
||||
|
||||
/*1400[4] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDUsedByRPDO;
|
||||
UNSIGNED8 transmissionType;
|
||||
} OD_RPDOCommunicationParameter_t;
|
||||
|
||||
/*1600[4] */ typedef struct{
|
||||
UNSIGNED8 numberOfMappedObjects;
|
||||
UNSIGNED32 mappedObject1;
|
||||
UNSIGNED32 mappedObject2;
|
||||
UNSIGNED32 mappedObject3;
|
||||
UNSIGNED32 mappedObject4;
|
||||
UNSIGNED32 mappedObject5;
|
||||
UNSIGNED32 mappedObject6;
|
||||
UNSIGNED32 mappedObject7;
|
||||
UNSIGNED32 mappedObject8;
|
||||
} OD_RPDOMappingParameter_t;
|
||||
|
||||
/*1800[4] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 COB_IDUsedByTPDO;
|
||||
UNSIGNED8 transmissionType;
|
||||
UNSIGNED16 inhibitTime;
|
||||
UNSIGNED8 compatibilityEntry;
|
||||
UNSIGNED16 eventTimer;
|
||||
UNSIGNED8 SYNCStartValue;
|
||||
} OD_TPDOCommunicationParameter_t;
|
||||
|
||||
/*1A00[4] */ typedef struct{
|
||||
UNSIGNED8 numberOfMappedObjects;
|
||||
UNSIGNED32 mappedObject1;
|
||||
UNSIGNED32 mappedObject2;
|
||||
UNSIGNED32 mappedObject3;
|
||||
UNSIGNED32 mappedObject4;
|
||||
UNSIGNED32 mappedObject5;
|
||||
UNSIGNED32 mappedObject6;
|
||||
UNSIGNED32 mappedObject7;
|
||||
UNSIGNED32 mappedObject8;
|
||||
} OD_TPDOMappingParameter_t;
|
||||
|
||||
/*2120 */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
INTEGER64 I64;
|
||||
UNSIGNED64 U64;
|
||||
REAL32 R32;
|
||||
REAL64 R64;
|
||||
DOMAIN domain;
|
||||
} OD_testVar_t;
|
||||
|
||||
/*2130 */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
VISIBLE_STRING string[30];
|
||||
UNSIGNED64 epochTimeBaseMs;
|
||||
UNSIGNED32 epochTimeOffsetMs;
|
||||
} OD_time_t;
|
||||
|
||||
/*2301[2] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 size;
|
||||
UNSIGNED8 axisNo;
|
||||
VISIBLE_STRING name[30];
|
||||
VISIBLE_STRING color[20];
|
||||
UNSIGNED32 map;
|
||||
UNSIGNED8 format;
|
||||
UNSIGNED8 trigger;
|
||||
INTEGER32 threshold;
|
||||
} OD_traceConfig_t;
|
||||
|
||||
/*2401[2] */ typedef struct{
|
||||
UNSIGNED8 maxSubIndex;
|
||||
UNSIGNED32 size;
|
||||
INTEGER32 value;
|
||||
INTEGER32 min;
|
||||
INTEGER32 max;
|
||||
DOMAIN plot;
|
||||
UNSIGNED32 triggerTime;
|
||||
} OD_trace_t;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
STRUCTURES FOR VARIABLES IN DIFFERENT MEMORY LOCATIONS
|
||||
*******************************************************************************/
|
||||
#define CO_OD_FIRST_LAST_WORD 0x55 //Any value from 0x01 to 0xFE. If changed, EEPROM will be reinitialized.
|
||||
|
||||
/***** Structure for RAM variables ********************************************/
|
||||
struct sCO_OD_RAM{
|
||||
UNSIGNED32 FirstWord;
|
||||
|
||||
/*1001 */ UNSIGNED8 errorRegister;
|
||||
/*1002 */ UNSIGNED32 manufacturerStatusRegister;
|
||||
/*1003 */ UNSIGNED32 preDefinedErrorField[8];
|
||||
/*1010 */ UNSIGNED32 storeParameters[1];
|
||||
/*1011 */ UNSIGNED32 restoreDefaultParameters[1];
|
||||
/*2100 */ OCTET_STRING errorStatusBits[10];
|
||||
/*2103 */ UNSIGNED16 SYNCCounter;
|
||||
/*2104 */ UNSIGNED16 SYNCTime;
|
||||
/*2107 */ UNSIGNED16 performance[5];
|
||||
/*2108 */ INTEGER16 temperature[1];
|
||||
/*2109 */ INTEGER16 voltage[1];
|
||||
/*2110 */ INTEGER32 variableInt32[16];
|
||||
/*2120 */ OD_testVar_t testVar;
|
||||
/*2130 */ OD_time_t time;
|
||||
/*2400 */ UNSIGNED8 traceEnable;
|
||||
/*2401[2] */ OD_trace_t trace[2];
|
||||
/*6000 */ UNSIGNED8 readInput8Bit[8];
|
||||
/*6200 */ UNSIGNED8 writeOutput8Bit[8];
|
||||
/*6401 */ INTEGER16 readAnalogueInput16Bit[12];
|
||||
/*6411 */ INTEGER16 writeAnalogueOutput16Bit[8];
|
||||
|
||||
UNSIGNED32 LastWord;
|
||||
};
|
||||
|
||||
/***** Structure for EEPROM variables *****************************************/
|
||||
struct sCO_OD_EEPROM{
|
||||
UNSIGNED32 FirstWord;
|
||||
|
||||
/*2106 */ UNSIGNED32 powerOnCounter;
|
||||
/*2112 */ INTEGER32 variableNVInt32[16];
|
||||
|
||||
UNSIGNED32 LastWord;
|
||||
};
|
||||
|
||||
|
||||
/***** Structure for ROM variables ********************************************/
|
||||
struct sCO_OD_ROM{
|
||||
UNSIGNED32 FirstWord;
|
||||
|
||||
/*1000 */ UNSIGNED32 deviceType;
|
||||
/*1005 */ UNSIGNED32 COB_ID_SYNCMessage;
|
||||
/*1006 */ UNSIGNED32 communicationCyclePeriod;
|
||||
/*1007 */ UNSIGNED32 synchronousWindowLength;
|
||||
/*1008 */ VISIBLE_STRING manufacturerDeviceName[11];
|
||||
/*1009 */ VISIBLE_STRING manufacturerHardwareVersion[4];
|
||||
/*100A */ VISIBLE_STRING manufacturerSoftwareVersion[4];
|
||||
/*1014 */ UNSIGNED32 COB_ID_EMCY;
|
||||
/*1015 */ UNSIGNED16 inhibitTimeEMCY;
|
||||
/*1016 */ UNSIGNED32 consumerHeartbeatTime[4];
|
||||
/*1017 */ UNSIGNED16 producerHeartbeatTime;
|
||||
/*1018 */ OD_identity_t identity;
|
||||
/*1019 */ UNSIGNED8 synchronousCounterOverflowValue;
|
||||
/*1029 */ UNSIGNED8 errorBehavior[6];
|
||||
/*1200[1] */ OD_SDOServerParameter_t SDOServerParameter[1];
|
||||
/*1400[4] */ OD_RPDOCommunicationParameter_t RPDOCommunicationParameter[4];
|
||||
/*1600[4] */ OD_RPDOMappingParameter_t RPDOMappingParameter[4];
|
||||
/*1800[4] */ OD_TPDOCommunicationParameter_t TPDOCommunicationParameter[4];
|
||||
/*1A00[4] */ OD_TPDOMappingParameter_t TPDOMappingParameter[4];
|
||||
/*1F80 */ UNSIGNED32 NMTStartup;
|
||||
/*2101 */ UNSIGNED8 CANNodeID;
|
||||
/*2102 */ UNSIGNED16 CANBitRate;
|
||||
/*2111 */ INTEGER32 variableROMInt32[16];
|
||||
/*2301[2] */ OD_traceConfig_t traceConfig[2];
|
||||
|
||||
UNSIGNED32 LastWord;
|
||||
};
|
||||
|
||||
|
||||
/***** Declaration of Object Dictionary variables *****************************/
|
||||
extern struct sCO_OD_RAM CO_OD_RAM;
|
||||
|
||||
extern struct sCO_OD_EEPROM CO_OD_EEPROM;
|
||||
|
||||
extern struct sCO_OD_ROM CO_OD_ROM;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
ALIASES FOR OBJECT DICTIONARY VARIABLES
|
||||
*******************************************************************************/
|
||||
/*1000, Data Type: UNSIGNED32 */
|
||||
#define OD_deviceType CO_OD_ROM.deviceType
|
||||
|
||||
/*1001, Data Type: UNSIGNED8 */
|
||||
#define OD_errorRegister CO_OD_RAM.errorRegister
|
||||
|
||||
/*1002, Data Type: UNSIGNED32 */
|
||||
#define OD_manufacturerStatusRegister CO_OD_RAM.manufacturerStatusRegister
|
||||
|
||||
/*1003, Data Type: UNSIGNED32, Array[8] */
|
||||
#define OD_preDefinedErrorField CO_OD_RAM.preDefinedErrorField
|
||||
#define ODL_preDefinedErrorField_arrayLength 8
|
||||
|
||||
/*1005, Data Type: UNSIGNED32 */
|
||||
#define OD_COB_ID_SYNCMessage CO_OD_ROM.COB_ID_SYNCMessage
|
||||
|
||||
/*1006, Data Type: UNSIGNED32 */
|
||||
#define OD_communicationCyclePeriod CO_OD_ROM.communicationCyclePeriod
|
||||
|
||||
/*1007, Data Type: UNSIGNED32 */
|
||||
#define OD_synchronousWindowLength CO_OD_ROM.synchronousWindowLength
|
||||
|
||||
/*1008, Data Type: VISIBLE_STRING, Array[11] */
|
||||
#define OD_manufacturerDeviceName CO_OD_ROM.manufacturerDeviceName
|
||||
#define ODL_manufacturerDeviceName_stringLength 11
|
||||
|
||||
/*1009, Data Type: VISIBLE_STRING, Array[4] */
|
||||
#define OD_manufacturerHardwareVersion CO_OD_ROM.manufacturerHardwareVersion
|
||||
#define ODL_manufacturerHardwareVersion_stringLength 4
|
||||
|
||||
/*100A, Data Type: VISIBLE_STRING, Array[4] */
|
||||
#define OD_manufacturerSoftwareVersion CO_OD_ROM.manufacturerSoftwareVersion
|
||||
#define ODL_manufacturerSoftwareVersion_stringLength 4
|
||||
|
||||
/*1010, Data Type: UNSIGNED32, Array[1] */
|
||||
#define OD_storeParameters CO_OD_RAM.storeParameters
|
||||
#define ODL_storeParameters_arrayLength 1
|
||||
#define ODA_storeParameters_saveAllParameters 0
|
||||
|
||||
/*1011, Data Type: UNSIGNED32, Array[1] */
|
||||
#define OD_restoreDefaultParameters CO_OD_RAM.restoreDefaultParameters
|
||||
#define ODL_restoreDefaultParameters_arrayLength 1
|
||||
#define ODA_restoreDefaultParameters_restoreAllDefaultParameters 0
|
||||
|
||||
/*1014, Data Type: UNSIGNED32 */
|
||||
#define OD_COB_ID_EMCY CO_OD_ROM.COB_ID_EMCY
|
||||
|
||||
/*1015, Data Type: UNSIGNED16 */
|
||||
#define OD_inhibitTimeEMCY CO_OD_ROM.inhibitTimeEMCY
|
||||
|
||||
/*1016, Data Type: UNSIGNED32, Array[4] */
|
||||
#define OD_consumerHeartbeatTime CO_OD_ROM.consumerHeartbeatTime
|
||||
#define ODL_consumerHeartbeatTime_arrayLength 4
|
||||
|
||||
/*1017, Data Type: UNSIGNED16 */
|
||||
#define OD_producerHeartbeatTime CO_OD_ROM.producerHeartbeatTime
|
||||
|
||||
/*1018, Data Type: OD_identity_t */
|
||||
#define OD_identity CO_OD_ROM.identity
|
||||
|
||||
/*1019, Data Type: UNSIGNED8 */
|
||||
#define OD_synchronousCounterOverflowValue CO_OD_ROM.synchronousCounterOverflowValue
|
||||
|
||||
/*1029, Data Type: UNSIGNED8, Array[6] */
|
||||
#define OD_errorBehavior CO_OD_ROM.errorBehavior
|
||||
#define ODL_errorBehavior_arrayLength 6
|
||||
#define ODA_errorBehavior_communication 0
|
||||
#define ODA_errorBehavior_communicationOther 1
|
||||
#define ODA_errorBehavior_communicationPassive 2
|
||||
#define ODA_errorBehavior_generic 3
|
||||
#define ODA_errorBehavior_deviceProfile 4
|
||||
#define ODA_errorBehavior_manufacturerSpecific 5
|
||||
|
||||
/*1200[1], Data Type: OD_SDOServerParameter_t, Array[1] */
|
||||
#define OD_SDOServerParameter CO_OD_ROM.SDOServerParameter
|
||||
|
||||
/*1400[4], Data Type: OD_RPDOCommunicationParameter_t, Array[4] */
|
||||
#define OD_RPDOCommunicationParameter CO_OD_ROM.RPDOCommunicationParameter
|
||||
|
||||
/*1600[4], Data Type: OD_RPDOMappingParameter_t, Array[4] */
|
||||
#define OD_RPDOMappingParameter CO_OD_ROM.RPDOMappingParameter
|
||||
|
||||
/*1800[4], Data Type: OD_TPDOCommunicationParameter_t, Array[4] */
|
||||
#define OD_TPDOCommunicationParameter CO_OD_ROM.TPDOCommunicationParameter
|
||||
|
||||
/*1A00[4], Data Type: OD_TPDOMappingParameter_t, Array[4] */
|
||||
#define OD_TPDOMappingParameter CO_OD_ROM.TPDOMappingParameter
|
||||
|
||||
/*1F80, Data Type: UNSIGNED32 */
|
||||
#define OD_NMTStartup CO_OD_ROM.NMTStartup
|
||||
|
||||
/*2100, Data Type: OCTET_STRING, Array[10] */
|
||||
#define OD_errorStatusBits CO_OD_RAM.errorStatusBits
|
||||
#define ODL_errorStatusBits_stringLength 10
|
||||
|
||||
/*2101, Data Type: UNSIGNED8 */
|
||||
#define OD_CANNodeID CO_OD_ROM.CANNodeID
|
||||
|
||||
/*2102, Data Type: UNSIGNED16 */
|
||||
#define OD_CANBitRate CO_OD_ROM.CANBitRate
|
||||
|
||||
/*2103, Data Type: UNSIGNED16 */
|
||||
#define OD_SYNCCounter CO_OD_RAM.SYNCCounter
|
||||
|
||||
/*2104, Data Type: UNSIGNED16 */
|
||||
#define OD_SYNCTime CO_OD_RAM.SYNCTime
|
||||
|
||||
/*2106, Data Type: UNSIGNED32 */
|
||||
#define OD_powerOnCounter CO_OD_EEPROM.powerOnCounter
|
||||
|
||||
/*2107, Data Type: UNSIGNED16, Array[5] */
|
||||
#define OD_performance CO_OD_RAM.performance
|
||||
#define ODL_performance_arrayLength 5
|
||||
#define ODA_performance_cyclesPerSecond 0
|
||||
#define ODA_performance_timerCycleTime 1
|
||||
#define ODA_performance_timerCycleMaxTime 2
|
||||
#define ODA_performance_mainCycleTime 3
|
||||
#define ODA_performance_mainCycleMaxTime 4
|
||||
|
||||
/*2108, Data Type: INTEGER16, Array[1] */
|
||||
#define OD_temperature CO_OD_RAM.temperature
|
||||
#define ODL_temperature_arrayLength 1
|
||||
#define ODA_temperature_mainPCB 0
|
||||
|
||||
/*2109, Data Type: INTEGER16, Array[1] */
|
||||
#define OD_voltage CO_OD_RAM.voltage
|
||||
#define ODL_voltage_arrayLength 1
|
||||
#define ODA_voltage_mainPCBSupply 0
|
||||
|
||||
/*2110, Data Type: INTEGER32, Array[16] */
|
||||
#define OD_variableInt32 CO_OD_RAM.variableInt32
|
||||
#define ODL_variableInt32_arrayLength 16
|
||||
|
||||
/*2111, Data Type: INTEGER32, Array[16] */
|
||||
#define OD_variableROMInt32 CO_OD_ROM.variableROMInt32
|
||||
#define ODL_variableROMInt32_arrayLength 16
|
||||
|
||||
/*2112, Data Type: INTEGER32, Array[16] */
|
||||
#define OD_variableNVInt32 CO_OD_EEPROM.variableNVInt32
|
||||
#define ODL_variableNVInt32_arrayLength 16
|
||||
|
||||
/*2120, Data Type: OD_testVar_t */
|
||||
#define OD_testVar CO_OD_RAM.testVar
|
||||
|
||||
/*2130, Data Type: OD_time_t */
|
||||
#define OD_time CO_OD_RAM.time
|
||||
|
||||
/*2301[2], Data Type: OD_traceConfig_t, Array[2] */
|
||||
#define OD_traceConfig CO_OD_ROM.traceConfig
|
||||
|
||||
/*2400, Data Type: UNSIGNED8 */
|
||||
#define OD_traceEnable CO_OD_RAM.traceEnable
|
||||
|
||||
/*2401[2], Data Type: OD_trace_t, Array[2] */
|
||||
#define OD_trace CO_OD_RAM.trace
|
||||
|
||||
/*6000, Data Type: UNSIGNED8, Array[8] */
|
||||
#define OD_readInput8Bit CO_OD_RAM.readInput8Bit
|
||||
#define ODL_readInput8Bit_arrayLength 8
|
||||
|
||||
/*6200, Data Type: UNSIGNED8, Array[8] */
|
||||
#define OD_writeOutput8Bit CO_OD_RAM.writeOutput8Bit
|
||||
#define ODL_writeOutput8Bit_arrayLength 8
|
||||
|
||||
/*6401, Data Type: INTEGER16, Array[12] */
|
||||
#define OD_readAnalogueInput16Bit CO_OD_RAM.readAnalogueInput16Bit
|
||||
#define ODL_readAnalogueInput16Bit_arrayLength 12
|
||||
|
||||
/*6411, Data Type: INTEGER16, Array[8] */
|
||||
#define OD_writeAnalogueOutput16Bit CO_OD_RAM.writeAnalogueOutput16Bit
|
||||
#define ODL_writeAnalogueOutput16Bit_arrayLength 8
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
1688
example/DS301_profile.eds
Normal file
1688
example/DS301_profile.eds
Normal file
File diff suppressed because it is too large
Load diff
738
example/DS301_profile.md
Normal file
738
example/DS301_profile.md
Normal file
|
|
@ -0,0 +1,738 @@
|
|||
CANopen documentation
|
||||
=====================
|
||||
**New Product**
|
||||
|
||||
|
||||
|
||||
| | |
|
||||
| ------------ | ------------------------------ |
|
||||
| Project File | DS301_profile.xpd |
|
||||
| File Version | 1 |
|
||||
| Created | 23. 11. 2020 12:00:00 |
|
||||
| Created By | |
|
||||
| Modified | 24. 11. 2020 13:31:53 |
|
||||
| Modified By | |
|
||||
|
||||
This file was automatically generated with [libedssharp](https://github.com/robincornelius/libedssharp) Object Dictionary Editor v0.8-99-g0425f94
|
||||
|
||||
* [Device Information](#device-information)
* [PDO Mapping](#pdo-mapping)
* [Communication Specific Parameters](#communication-specific-parameters)
* [Manufacturer Specific Parameters](#manufacturer-specific-parameters)
* [Device Profile Specific Parameters](#device-profile-specific-parameters)
|
||||
|
||||
Device Information {#device-information}
|
||||
----------------------------------------
|
||||
| | |
|
||||
| ------------ | ------------------------------ |
|
||||
| Vendor Name | |
|
||||
| Vendor ID | |
|
||||
| Product Name | New Product |
|
||||
| Product ID | |
|
||||
| Granularity | 8 |
|
||||
| RPDO count | 4 |
|
||||
| TPDO count | 4 |
|
||||
| LSS Slave | True |
|
||||
| LSS Master | False |
|
||||
|
||||
#### Supported Baud rates
|
||||
* [x] 10 kBit/s
|
||||
* [x] 20 kBit/s
|
||||
* [x] 50 kBit/s
|
||||
* [x] 125 kBit/s
|
||||
* [x] 250 kBit/s
|
||||
* [x] 500 kBit/s
|
||||
* [x] 800 kBit/s
|
||||
* [x] 1000 kBit/s
|
||||
* [ ] auto
|
||||
|
||||
|
||||
PDO Mapping {#pdo-mapping}
|
||||
--------------------------
|
||||
|
||||
Communication Specific Parameters {#communication-specific-parameters}
|
||||
----------------------------------------------------------------------
|
||||
|
||||
### 0x1000 - Device type
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | NMT | PERSIST_COMM | False | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
|
||||
* bit 16-31: Additional information
|
||||
* bit 0-15: Device profile number
|
||||
|
||||
### 0x1001 - Error register
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | EM | RAM | False | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED8 | ro | tr | no | 0x00 |
|
||||
|
||||
* bit 7: manufacturer specific
|
||||
* bit 6: Reserved (always 0)
|
||||
* bit 5: device profile specific
|
||||
* bit 4: communication error (overrun, error state)
|
||||
* bit 3: temperature
|
||||
* bit 2: voltage
|
||||
* bit 1: current
|
||||
* bit 0: generic error
|
||||
|
||||
### 0x1003 - Pre-defined error field
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| ARRAY | | RAM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of errors | UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x02 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x03 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x04 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x05 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x06 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x07 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x08 | Standard error field | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
|
||||
* Sub Index 0: Contains number of actual errors. 0 can be written to clear error history.
|
||||
* sub-index 1 and above:
|
||||
* bit 16-31: Manufacturer specific additional information
|
||||
* bit 0-15: Error code as transmited in the Emergency object
|
||||
|
||||
### 0x1005 - COB-ID SYNC message
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | SYNC | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED32 | rw | no | no | 0x00000080 |
|
||||
|
||||
* bit 31: set to 0
|
||||
* bit 30: If set, CANopen device generates SYNC object
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
|
||||
### 0x1006 - Communication cycle period
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | SYNC_PROD | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED32 | rw | no | no | 0 |
|
||||
|
||||
Period of SYNC transmission in µs (0 = transmission disabled).
|
||||
|
||||
### 0x1007 - Synchronous window length
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED32 | rw | no | no | 0 |
|
||||
|
||||
Synchronous window leghth in µs (0 = not used). All synchronous PDOs must be transmitted within this time window.
|
||||
|
||||
### 0x1010 - Store parameters
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| ARRAY | | RAM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x04 |
|
||||
| 0x01 | Save all parameters | UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
| 0x02 | Save communication parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
| 0x03 | Save application parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
| 0x04 | Save manufacturer defined parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
|
||||
Sub-indexes 1 and above:
|
||||
* Reading provides information about its storage functionality:
|
||||
* bit 1: If set, CANopen device saves parameters autonomously
|
||||
* bit 0: If set, CANopen device saves parameters on command
|
||||
* Writing value 0x65766173 ('s','a','v','e' from LSB to MSB) stores corresponding data.
|
||||
|
||||
### 0x1011 - Restore default parameters
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| ARRAY | | RAM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x04 |
|
||||
| 0x01 | Restore all default parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
| 0x02 | Restore communication default parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
| 0x03 | Restore application default parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
| 0x04 | Restore manufacturer defined default parameters| UNSIGNED32 | rw | no | no | 0x00000001 |
|
||||
|
||||
Sub-indexes 1 and above:
|
||||
* Reading provides information about its restoring capability:
|
||||
* bit 0: If set, CANopen device restores parameters
|
||||
* Writing value 0x64616F6C ('l','o','a','d' from LSB to MSB) restores corresponding data.
|
||||
|
||||
### 0x1012 - COB-ID time stamp object
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | TIME | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED32 | rw | no | no | 0x00000100 |
|
||||
|
||||
* bit 31: If set, CANopen device consumes TIME message
|
||||
* bit 30: If set, CANopen device produces TIME message
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
|
||||
### 0x1014 - COB-ID EMCY
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | EM_PROD | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED32 | rw | no | no | 0x80+$NODEID |
|
||||
|
||||
* bit 31: If set, EMCY does NOT exist / is NOT valid
|
||||
* bit 11-30: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
|
||||
### 0x1015 - Inhibit time EMCY
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED16 | rw | no | no | 0 |
|
||||
|
||||
Inhibit time of emergency message in multiples of 100µs. The value 0 disables the inhibit time.
|
||||
|
||||
### 0x1016 - Consumer heartbeat time
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| ARRAY | HB_CONS | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x08 |
|
||||
| 0x01 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Consumer heartbeat time| UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
Consumer Heartbeat Time:
|
||||
* bit 24-31: set to 0
|
||||
* bit 16-23: Node ID of the monitored node. If 0 or greater than 127, sub-entry is not used.
|
||||
* bit 0-15: Heartbeat time in ms (if 0, sub-intry is not used). Value should be higher than the corresponding producer heartbeat time.
|
||||
|
||||
### 0x1017 - Producer heartbeat time
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | HB_PROD | PERSIST_COMM | True | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED16 | rw | no | no | 0 |
|
||||
|
||||
Heartbeat producer time in ms (0 = disable transmission).
|
||||
|
||||
### 0x1018 - Identity
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | False | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x04 |
|
||||
| 0x01 | Vendor-ID | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x02 | Product code | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x03 | Revision number | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
| 0x04 | Serial number | UNSIGNED32 | ro | no | no | 0x00000000 |
|
||||
|
||||
* Vendor-ID, assigned by CiA
|
||||
* Product code, manufacturer specific
|
||||
* Revision number:
|
||||
* bit 16-31: Major revision number (CANopen behavior has changed)
|
||||
* bit 0-15: Minor revision num. (CANopen behavior has not changed)
|
||||
* Serial number, manufacturer specific
|
||||
|
||||
### 0x1019 - Synchronous counter overflow value
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| VAR | | PERSIST_COMM | False | False |
|
||||
|
||||
| Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ----------------------- | --- | --- | ---- | ------------------------------- |
|
||||
| UNSIGNED8 | rw | no | no | 0 |
|
||||
|
||||
* Value 0: SYNC message is transmitted with data length 0.
|
||||
* Value 1: reserved.
|
||||
* Value 2-240: SYNC message has one data byte, which contains the counter.
|
||||
* Value 241-255: reserved.
|
||||
|
||||
### 0x1200 - SDO server parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | SDO_SRV | RAM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 2 |
|
||||
| 0x01 | COB-ID client to server (rx)| UNSIGNED32 | ro | t | no | 0x600+$NODEID |
|
||||
| 0x02 | COB-ID server to client (tx)| UNSIGNED32 | ro | t | no | 0x580+$NODEID |
|
||||
|
||||
Sub-indexes 1 and 2:
|
||||
* bit 11-31: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
|
||||
### 0x1280 - SDO client parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | SDO_CLI | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x03 |
|
||||
| 0x01 | COB-ID client to server (tx)| UNSIGNED32 | rw | tr | no | 0x80000000 |
|
||||
| 0x02 | COB-ID server to client (rx)| UNSIGNED32 | rw | tr | no | 0x80000000 |
|
||||
| 0x03 | Node-ID of the SDO server| UNSIGNED8 | rw | no | no | 0x01 |
|
||||
|
||||
* Sub-indexes 1 and 2:
|
||||
* bit 31: If set, SDO does NOT exist / is NOT valid
|
||||
* bit 30: If set, value is assigned dynamically
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Node-ID of the SDO server, 0x01 to 0x7F
|
||||
|
||||
### 0x1400 - RPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | RPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x05 |
|
||||
| 0x01 | COB-ID used by RPDO | UNSIGNED32 | rw | no | no | 0x80000200+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 11-30: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0-240: synchronous, processed after next reception of SYNC object
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Event timer in ms (0 = disabled) for deadline monitoring.
|
||||
|
||||
### 0x1401 - RPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | RPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x05 |
|
||||
| 0x01 | COB-ID used by RPDO | UNSIGNED32 | rw | no | no | 0x80000300+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 11-30: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0-240: synchronous, processed after next reception of SYNC object
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Event timer in ms (0 = disabled) for deadline monitoring.
|
||||
|
||||
### 0x1402 - RPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | RPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x05 |
|
||||
| 0x01 | COB-ID used by RPDO | UNSIGNED32 | rw | no | no | 0x80000400+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 11-30: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0-240: synchronous, processed after next reception of SYNC object
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Event timer in ms (0 = disabled) for deadline monitoring.
|
||||
|
||||
### 0x1403 - RPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | RPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x05 |
|
||||
| 0x01 | COB-ID used by RPDO | UNSIGNED32 | rw | no | no | 0x80000500+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 11-30: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0-240: synchronous, processed after next reception of SYNC object
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Event timer in ms (0 = disabled) for deadline monitoring.
|
||||
|
||||
### 0x1600 - RPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1601 - RPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1602 - RPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1603 - RPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1800 - TPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | TPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x06 |
|
||||
| 0x01 | COB-ID used by TPDO | UNSIGNED32 | rw | no | no | 0xC0000180+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x03 | Inhibit time | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x06 | SYNC start value | UNSIGNED8 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 30: If set, NO RTR is allowed on this PDO
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0: synchronous (acyclic)
|
||||
* Value 1-240: synchronous (cyclic every (1-240)-th sync)
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Inhibit time in multiple of 100µs, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* Event timer interval in ms, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* SYNC start value
|
||||
* Value 0: Counter of the SYNC message shall not be processed.
|
||||
* Value 1-240: The SYNC message with the counter value equal to this value shall be regarded as the first received SYNC message.
|
||||
|
||||
### 0x1801 - TPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | TPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x06 |
|
||||
| 0x01 | COB-ID used by TPDO | UNSIGNED32 | rw | no | no | 0xC0000280+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x03 | Inhibit time | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x06 | SYNC start value | UNSIGNED8 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 30: If set, NO RTR is allowed on this PDO
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0: synchronous (acyclic)
|
||||
* Value 1-240: synchronous (cyclic every (1-240)-th sync)
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Inhibit time in multiple of 100µs, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* Event timer interval in ms, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* SYNC start value
|
||||
* Value 0: Counter of the SYNC message shall not be processed.
|
||||
* Value 1-240: The SYNC message with the counter value equal to this value shall be regarded as the first received SYNC message.
|
||||
|
||||
### 0x1802 - TPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | TPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x06 |
|
||||
| 0x01 | COB-ID used by TPDO | UNSIGNED32 | rw | no | no | 0xC0000380+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x03 | Inhibit time | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x06 | SYNC start value | UNSIGNED8 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 30: If set, NO RTR is allowed on this PDO
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0: synchronous (acyclic)
|
||||
* Value 1-240: synchronous (cyclic every (1-240)-th sync)
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Inhibit time in multiple of 100µs, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* Event timer interval in ms, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* SYNC start value
|
||||
* Value 0: Counter of the SYNC message shall not be processed.
|
||||
* Value 1-240: The SYNC message with the counter value equal to this value shall be regarded as the first received SYNC message.
|
||||
|
||||
### 0x1803 - TPDO communication parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | TPDO | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Highest sub-index supported| UNSIGNED8 | ro | no | no | 0x06 |
|
||||
| 0x01 | COB-ID used by TPDO | UNSIGNED32 | rw | no | no | 0xC0000480+$NODEID|
|
||||
| 0x02 | Transmission type | UNSIGNED8 | rw | no | no | 254 |
|
||||
| 0x03 | Inhibit time | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x05 | Event timer | UNSIGNED16 | rw | no | no | 0 |
|
||||
| 0x06 | SYNC start value | UNSIGNED8 | rw | no | no | 0 |
|
||||
|
||||
* COB-ID used by RPDO:
|
||||
* bit 31: If set, PDO does not exist / is not valid
|
||||
* bit 30: If set, NO RTR is allowed on this PDO
|
||||
* bit 11-29: set to 0
|
||||
* bit 0-10: 11-bit CAN-ID
|
||||
* Transmission type:
|
||||
* Value 0: synchronous (acyclic)
|
||||
* Value 1-240: synchronous (cyclic every (1-240)-th sync)
|
||||
* Value 241-253: not used
|
||||
* Value 254: event-driven (manufacturer-specific)
|
||||
* Value 255: event-driven (device profile and application profile specific)
|
||||
* Inhibit time in multiple of 100µs, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* Event timer interval in ms, if the transmission type is set to 254 or 255 (0 = disabled).
|
||||
* SYNC start value
|
||||
* Value 0: Counter of the SYNC message shall not be processed.
|
||||
* Value 1-240: The SYNC message with the counter value equal to this value shall be regarded as the first received SYNC message.
|
||||
|
||||
### 0x1A00 - TPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1A01 - TPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1A02 - TPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
|
||||
### 0x1A03 - TPDO mapping parameter
|
||||
| Object Type | Count Label | Storage Group | IO extension | PDO flags |
|
||||
| ----------- | -------------- | -------------- | ------------- | ------------ |
|
||||
| RECORD | | PERSIST_COMM | True | False |
|
||||
|
||||
| Sub | Name | Data Type | SDO | PDO | SRDO | Default Value |
|
||||
| ---- | --------------------- | ---------- | --- | --- | ---- | ------------- |
|
||||
| 0x00 | Number of mapped application objects in PDO| UNSIGNED8 | rw | no | no | 0 |
|
||||
| 0x01 | Application object 1 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x02 | Application object 2 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x03 | Application object 3 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x04 | Application object 4 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x05 | Application object 5 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x06 | Application object 6 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x07 | Application object 7 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
| 0x08 | Application object 8 | UNSIGNED32 | rw | no | no | 0x00000000 |
|
||||
|
||||
* Number of mapped application objects in PDO:
|
||||
* Value 0: mapping is disabled.
|
||||
* Value 1: sub-index 0x01 is valid.
|
||||
* Value 2-8: sub-indexes 0x01 to (0x02 to 0x08) are valid.
|
||||
* Application object 1-8:
|
||||
* bit 16-31: index
|
||||
* bit 8-15: sub-index
|
||||
* bit 0-7: data length in bits
|
||||
2631
example/DS301_profile.xpd
Normal file
2631
example/DS301_profile.xpd
Normal file
File diff suppressed because it is too large
Load diff
2800
example/IO.eds
2800
example/IO.eds
File diff suppressed because it is too large
Load diff
6627
example/IO.html
6627
example/IO.html
File diff suppressed because it is too large
Load diff
1369
example/OD.c
1369
example/OD.c
File diff suppressed because it is too large
Load diff
347
example/OD.h
347
example/OD.h
|
|
@ -1,45 +1,320 @@
|
|||
/* blank OD for pre-release */
|
||||
/*******************************************************************************
|
||||
CANopen Object Dictionary definition for CANopenNode V4
|
||||
|
||||
extern const OD_t OD;
|
||||
This file was automatically generated with
|
||||
libedssharp Object Dictionary Editor v0.8-99-g0425f94
|
||||
|
||||
https://github.com/CANopenNode/CANopenNode
|
||||
https://github.com/robincornelius/libedssharp
|
||||
|
||||
DON'T EDIT THIS FILE MANUALLY !!!!
|
||||
********************************************************************************
|
||||
|
||||
File info:
|
||||
File Names: OD.h; OD.c
|
||||
Project File: DS301_profile.xpd
|
||||
File Version: 1
|
||||
|
||||
Created: 23. 11. 2020 12:00:00
|
||||
Created By:
|
||||
Modified: 24. 11. 2020 13:31:53
|
||||
Modified By:
|
||||
|
||||
Device Info:
|
||||
Vendor Name:
|
||||
Vendor ID:
|
||||
Product Name: New Product
|
||||
Product ID:
|
||||
|
||||
Description:
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef OD_H
|
||||
#define OD_H
|
||||
/*******************************************************************************
|
||||
Counters of OD objects
|
||||
*******************************************************************************/
|
||||
#define OD_CNT_NMT 1
|
||||
#define OD_CNT_HB_PROD 1
|
||||
#define OD_CNT_EM 1
|
||||
//#define OD_CNT_SYNC 1
|
||||
//#define OD_CNT_SYNC_PROD 1
|
||||
//#define OD_CNT_TIME 1
|
||||
#define OD_CNT_EM_PROD 1
|
||||
//#define OD_CNT_HB_CONS 1
|
||||
#define OD_CNT_HB_PROD 1
|
||||
#define OD_CNT_SDO_SRV 1
|
||||
#define OD_CNT_SDO_CLI 1
|
||||
//#define OD_CNT_RPDO 4
|
||||
//#define OD_CNT_TPDO 4
|
||||
|
||||
#if 0
|
||||
#define OD_CNT_HB_CONS 1
|
||||
#define OD_CNT_TIME 1
|
||||
#define OD_CNT_SYNC 1
|
||||
#define OD_CNT_SYNC_PROD 1
|
||||
#define OD_CNT_RPDO 4
|
||||
#define OD_CNT_TPDO 4
|
||||
#define OD_CNT_GFC 0
|
||||
#define OD_CNT_SRDO 0
|
||||
#define OD_CNT_TRACE 0
|
||||
#endif
|
||||
|
||||
#define OD_ENTRY_H1017 &OD.list[0]
|
||||
#define OD_ENTRY_H1016 &OD.list[0]
|
||||
#define OD_ENTRY_H1001 &OD.list[0]
|
||||
#define OD_ENTRY_H1014 &OD.list[0]
|
||||
#define OD_ENTRY_H1015 &OD.list[0]
|
||||
#define OD_ENTRY_H1003 &OD.list[0]
|
||||
#define OD_ENTRY_H1200 &OD.list[0]
|
||||
#define OD_ENTRY_H1280 &OD.list[0]
|
||||
#define OD_ENTRY_H1012 &OD.list[0]
|
||||
#define OD_ENTRY_H1005 &OD.list[0]
|
||||
#define OD_ENTRY_H1006 &OD.list[0]
|
||||
#define OD_ENTRY_H1007 &OD.list[0]
|
||||
#define OD_ENTRY_H1019 &OD.list[0]
|
||||
#define OD_ENTRY_H1400 &OD.list[0]
|
||||
#define OD_ENTRY_H1600 &OD.list[0]
|
||||
#define OD_ENTRY_H1800 &OD.list[0]
|
||||
#define OD_ENTRY_H1A00 &OD.list[0]
|
||||
#define OD_ENTRY_H1300 &OD.list[0]
|
||||
#define OD_ENTRY_H1301 &OD.list[0]
|
||||
#define OD_ENTRY_H1381 &OD.list[0]
|
||||
#define OD_ENTRY_H13FE &OD.list[0]
|
||||
#define OD_ENTRY_H13FF &OD.list[0]
|
||||
/*******************************************************************************
|
||||
OD data declaration of all groups
|
||||
*******************************************************************************/
|
||||
typedef struct {
|
||||
uint32_t x1000_deviceType;
|
||||
uint32_t x1005_COB_ID_SYNCMessage;
|
||||
uint32_t x1006_communicationCyclePeriod;
|
||||
uint32_t x1007_synchronousWindowLength;
|
||||
uint32_t x1012_COB_IDTimeStampObject;
|
||||
uint32_t x1014_COB_ID_EMCY;
|
||||
uint16_t x1015_inhibitTimeEMCY;
|
||||
uint8_t x1016_consumerHeartbeatTime_sub0;
|
||||
uint32_t x1016_consumerHeartbeatTime[8];
|
||||
uint16_t x1017_producerHeartbeatTime;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t vendor_ID;
|
||||
uint32_t productCode;
|
||||
uint32_t revisionNumber;
|
||||
uint32_t serialNumber;
|
||||
} x1018_identity;
|
||||
uint8_t x1019_synchronousCounterOverflowValue;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDClientToServerTx;
|
||||
uint32_t COB_IDServerToClientRx;
|
||||
uint8_t node_IDOfTheSDOServer;
|
||||
} x1280_SDOClientParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByRPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t eventTimer;
|
||||
} x1400_RPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByRPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t eventTimer;
|
||||
} x1401_RPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByRPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t eventTimer;
|
||||
} x1402_RPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByRPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t eventTimer;
|
||||
} x1403_RPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1600_RPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1601_RPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1602_RPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1603_RPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByTPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t inhibitTime;
|
||||
uint16_t eventTimer;
|
||||
uint8_t SYNCStartValue;
|
||||
} x1800_TPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByTPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t inhibitTime;
|
||||
uint16_t eventTimer;
|
||||
uint8_t SYNCStartValue;
|
||||
} x1801_TPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByTPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t inhibitTime;
|
||||
uint16_t eventTimer;
|
||||
uint8_t SYNCStartValue;
|
||||
} x1802_TPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDUsedByTPDO;
|
||||
uint8_t transmissionType;
|
||||
uint16_t inhibitTime;
|
||||
uint16_t eventTimer;
|
||||
uint8_t SYNCStartValue;
|
||||
} x1803_TPDOCommunicationParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1A00_TPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1A01_TPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1A02_TPDOMappingParameter;
|
||||
struct {
|
||||
uint8_t numberOfMappedApplicationObjectsInPDO;
|
||||
uint32_t applicationObject_1;
|
||||
uint32_t applicationObject_2;
|
||||
uint32_t applicationObject_3;
|
||||
uint32_t applicationObject_4;
|
||||
uint32_t applicationObject_5;
|
||||
uint32_t applicationObject_6;
|
||||
uint32_t applicationObject_7;
|
||||
uint32_t applicationObject_8;
|
||||
} x1A03_TPDOMappingParameter;
|
||||
} OD_PERSIST_COMM_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t x1001_errorRegister;
|
||||
uint8_t x1003_pre_definedErrorField_sub0;
|
||||
uint32_t x1003_pre_definedErrorField[8];
|
||||
uint8_t x1010_storeParameters_sub0;
|
||||
uint32_t x1010_storeParameters[4];
|
||||
uint8_t x1011_restoreDefaultParameters_sub0;
|
||||
uint32_t x1011_restoreDefaultParameters[4];
|
||||
struct {
|
||||
uint8_t highestSub_indexSupported;
|
||||
uint32_t COB_IDClientToServerRx;
|
||||
uint32_t COB_IDServerToClientTx;
|
||||
} x1200_SDOServerParameter;
|
||||
} OD_RAM_t;
|
||||
|
||||
extern OD_PERSIST_COMM_t OD_PERSIST_COMM;
|
||||
extern OD_RAM_t OD_RAM;
|
||||
extern const OD_t OD;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Object dictionary entries - shortcuts
|
||||
*******************************************************************************/
|
||||
#define OD_ENTRY_H1000 &OD.list[0]
|
||||
#define OD_ENTRY_H1001 &OD.list[1]
|
||||
#define OD_ENTRY_H1003 &OD.list[2]
|
||||
#define OD_ENTRY_H1005 &OD.list[3]
|
||||
#define OD_ENTRY_H1006 &OD.list[4]
|
||||
#define OD_ENTRY_H1007 &OD.list[5]
|
||||
#define OD_ENTRY_H1010 &OD.list[6]
|
||||
#define OD_ENTRY_H1011 &OD.list[7]
|
||||
#define OD_ENTRY_H1012 &OD.list[8]
|
||||
#define OD_ENTRY_H1014 &OD.list[9]
|
||||
#define OD_ENTRY_H1015 &OD.list[10]
|
||||
#define OD_ENTRY_H1016 &OD.list[11]
|
||||
#define OD_ENTRY_H1017 &OD.list[12]
|
||||
#define OD_ENTRY_H1018 &OD.list[13]
|
||||
#define OD_ENTRY_H1019 &OD.list[14]
|
||||
#define OD_ENTRY_H1200 &OD.list[15]
|
||||
#define OD_ENTRY_H1280 &OD.list[16]
|
||||
#define OD_ENTRY_H1400 &OD.list[17]
|
||||
#define OD_ENTRY_H1401 &OD.list[18]
|
||||
#define OD_ENTRY_H1402 &OD.list[19]
|
||||
#define OD_ENTRY_H1403 &OD.list[20]
|
||||
#define OD_ENTRY_H1600 &OD.list[21]
|
||||
#define OD_ENTRY_H1601 &OD.list[22]
|
||||
#define OD_ENTRY_H1602 &OD.list[23]
|
||||
#define OD_ENTRY_H1603 &OD.list[24]
|
||||
#define OD_ENTRY_H1800 &OD.list[25]
|
||||
#define OD_ENTRY_H1801 &OD.list[26]
|
||||
#define OD_ENTRY_H1802 &OD.list[27]
|
||||
#define OD_ENTRY_H1803 &OD.list[28]
|
||||
#define OD_ENTRY_H1A00 &OD.list[29]
|
||||
#define OD_ENTRY_H1A01 &OD.list[30]
|
||||
#define OD_ENTRY_H1A02 &OD.list[31]
|
||||
#define OD_ENTRY_H1A03 &OD.list[32]
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Object dictionary entries - shortcuts with names
|
||||
*******************************************************************************/
|
||||
#define OD_ENTRY_H1000_deviceType &OD.list[0]
|
||||
#define OD_ENTRY_H1001_errorRegister &OD.list[1]
|
||||
#define OD_ENTRY_H1003_pre_definedErrorField &OD.list[2]
|
||||
#define OD_ENTRY_H1005_COB_ID_SYNCMessage &OD.list[3]
|
||||
#define OD_ENTRY_H1006_communicationCyclePeriod &OD.list[4]
|
||||
#define OD_ENTRY_H1007_synchronousWindowLength &OD.list[5]
|
||||
#define OD_ENTRY_H1010_storeParameters &OD.list[6]
|
||||
#define OD_ENTRY_H1011_restoreDefaultParameters &OD.list[7]
|
||||
#define OD_ENTRY_H1012_COB_IDTimeStampObject &OD.list[8]
|
||||
#define OD_ENTRY_H1014_COB_ID_EMCY &OD.list[9]
|
||||
#define OD_ENTRY_H1015_inhibitTimeEMCY &OD.list[10]
|
||||
#define OD_ENTRY_H1016_consumerHeartbeatTime &OD.list[11]
|
||||
#define OD_ENTRY_H1017_producerHeartbeatTime &OD.list[12]
|
||||
#define OD_ENTRY_H1018_identity &OD.list[13]
|
||||
#define OD_ENTRY_H1019_synchronousCounterOverflowValue &OD.list[14]
|
||||
#define OD_ENTRY_H1200_SDOServerParameter &OD.list[15]
|
||||
#define OD_ENTRY_H1280_SDOClientParameter &OD.list[16]
|
||||
#define OD_ENTRY_H1400_RPDOCommunicationParameter &OD.list[17]
|
||||
#define OD_ENTRY_H1401_RPDOCommunicationParameter &OD.list[18]
|
||||
#define OD_ENTRY_H1402_RPDOCommunicationParameter &OD.list[19]
|
||||
#define OD_ENTRY_H1403_RPDOCommunicationParameter &OD.list[20]
|
||||
#define OD_ENTRY_H1600_RPDOMappingParameter &OD.list[21]
|
||||
#define OD_ENTRY_H1601_RPDOMappingParameter &OD.list[22]
|
||||
#define OD_ENTRY_H1602_RPDOMappingParameter &OD.list[23]
|
||||
#define OD_ENTRY_H1603_RPDOMappingParameter &OD.list[24]
|
||||
#define OD_ENTRY_H1800_TPDOCommunicationParameter &OD.list[25]
|
||||
#define OD_ENTRY_H1801_TPDOCommunicationParameter &OD.list[26]
|
||||
#define OD_ENTRY_H1802_TPDOCommunicationParameter &OD.list[27]
|
||||
#define OD_ENTRY_H1803_TPDOCommunicationParameter &OD.list[28]
|
||||
#define OD_ENTRY_H1A00_TPDOMappingParameter &OD.list[29]
|
||||
#define OD_ENTRY_H1A01_TPDOMappingParameter &OD.list[30]
|
||||
#define OD_ENTRY_H1A02_TPDOMappingParameter &OD.list[31]
|
||||
#define OD_ENTRY_H1A03_TPDOMappingParameter &OD.list[32]
|
||||
|
||||
#endif /* OD_H */
|
||||
|
|
|
|||
|
|
@ -1,311 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" style="height: 99%;"><head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Project - CANopenNode</title>
|
||||
<style type="text/css">
|
||||
body{
|
||||
background-color: rgb(165, 186, 221);
|
||||
margin: 0px;
|
||||
height: 100%;
|
||||
}
|
||||
table{
|
||||
width: 100%;
|
||||
}
|
||||
td {
|
||||
border: 1px solid black;
|
||||
padding: 1px 0.6em 1px 0.3em;
|
||||
width: 50%;
|
||||
}
|
||||
table div{
|
||||
position: relative;
|
||||
height: 2em;
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
table pre{
|
||||
margin: 0px;
|
||||
}
|
||||
textarea{
|
||||
width: 100%;
|
||||
height: 10em;
|
||||
}
|
||||
.right{
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
var editorWindowOK = false;
|
||||
|
||||
function loadProject(name){
|
||||
var loc = getURLPath(name);
|
||||
var req = new XMLHttpRequest();
|
||||
req.open('GET', loc, false);
|
||||
req.send(null);
|
||||
document.getElementById('textXML').value = req.responseText;
|
||||
}
|
||||
|
||||
function updateFields(){
|
||||
var xmlText = document.getElementById("textXML");
|
||||
var el = xmlText.value.substring(xmlText.value.indexOf("<file"));
|
||||
var el = el.substring(0, el.indexOf("/>")+2);
|
||||
var filename = ""
|
||||
if(el.length){
|
||||
var el = new XML(el);
|
||||
fileName = el.@fileName.toString();
|
||||
document.title = fileName + " - CANopenNode";
|
||||
var span = document.getElementById("title");
|
||||
span.replaceChild(document.createTextNode(fileName), span.firstChild);
|
||||
|
||||
var date = "V " + el.@fileVersion.toString() + "; Updated: " + el.@fileCreationDate.toString() + ", " +
|
||||
el.@fileCreationTime.toString() + ", by " + el.@fileCreator.toString();
|
||||
span = document.getElementById("date");
|
||||
span.replaceChild(document.createTextNode(date), span.firstChild);
|
||||
}
|
||||
|
||||
//for use with firefox addon "Save Text Area 0.4.5"
|
||||
//https://addons.mozilla.org/en-US/firefox/addon/1046
|
||||
updateFileName("textXML", "_project.xml");
|
||||
updateFileName("textHTM", fileName+".html");
|
||||
updateFileName("textODH", "CO_OD.h");
|
||||
updateFileName("textODC", "CO_OD.c");
|
||||
updateFileName("textEDS", fileName+".eds");
|
||||
updateFileName("textXDD", fileName+".xdd");
|
||||
|
||||
document.getElementById("iframe").src = "";
|
||||
}
|
||||
|
||||
function openEditor(newWindow){
|
||||
var path = document.getElementById("locEditor").value;
|
||||
var loc = getURLPath(path + "/device.xul");
|
||||
|
||||
if(newWindow){
|
||||
editorWindow = window.open(loc, '_blank', 'left=0,top=150,width=1024,height=768,resizable=yes,scrollbars=yes,location=no,status=no');
|
||||
editorWindow.focus();
|
||||
}
|
||||
else{
|
||||
var iframe = document.getElementById("iframe");
|
||||
iframe.src = loc;
|
||||
editorWindow = iframe.contentWindow;
|
||||
}
|
||||
|
||||
document.getElementById("textHTM").value = "-";
|
||||
document.getElementById("textODH").value = "-";
|
||||
document.getElementById("textODC").value = "-";
|
||||
document.getElementById("textEDS").value = "-";
|
||||
document.getElementById("textXDD").value = "-";
|
||||
|
||||
//verify if editor window is OK
|
||||
editorWindowOK = false;
|
||||
setTimeout(verifyEditorWindow, 10000);
|
||||
}
|
||||
|
||||
function verifyEditorWindow(){
|
||||
if(editorWindowOK == false)
|
||||
alert("Error with Editor!\n(Wrong location)");
|
||||
}
|
||||
|
||||
function openAbout(){
|
||||
var path = document.getElementById("locEditor").value;
|
||||
var loc = getURLPath(path + "/about.html");
|
||||
var w = window.open(loc, 'About', 'left=0,top=150,height=600,width=800,resizable=yes,scrollbars=yes,location=yes,status=yes');
|
||||
w.focus();
|
||||
}
|
||||
|
||||
function receiveMessage(event){
|
||||
//function receives a message from editor window, which is editing a project file. This event is triggered
|
||||
//after editor sends some data. For more information see http://developer.mozilla.org/en/DOM/window.postMessage
|
||||
|
||||
//if (event.origin !== "http://example.com:8080") return; //for safety
|
||||
|
||||
var head = event.data.substring(0, 3); //first three characters of the message
|
||||
var body = event.data.substring(3); //other text of the message
|
||||
|
||||
switch(head){
|
||||
case "RDY": //editor was loaded
|
||||
editorWindow.postMessage(document.getElementById('textXML').value, '*');
|
||||
document.getElementById("fileBoxes").style.display = "none";
|
||||
document.getElementById("iframe").style.height = "100%";
|
||||
editorWindowOK = true;
|
||||
break;
|
||||
case "CLS": //editor was closed
|
||||
document.getElementById("iframe").style.height = "0px";
|
||||
document.getElementById("fileBoxes").style.display = "block";
|
||||
break;
|
||||
case "XML": //xml contents was sent
|
||||
var tb = document.getElementById("textXML");
|
||||
tb.value = body;
|
||||
//tb.setAttribute("value", body); //faster code
|
||||
updateFields();
|
||||
break;
|
||||
case "HTM": //html contents was sent
|
||||
var tb = document.getElementById("textHTM");
|
||||
tb.value = body;
|
||||
//tb.setAttribute("value", body); //faster code
|
||||
break;
|
||||
case "ODH": //CO_OD.h contents was sent
|
||||
var tb = document.getElementById("textODH");
|
||||
tb.value = body;
|
||||
//tb.setAttribute("value", body); //faster code
|
||||
break;
|
||||
case "ODC": //CO_OD.c contents was sent
|
||||
var tb = document.getElementById("textODC");
|
||||
tb.value = body;
|
||||
//tb.setAttribute("value", body); //faster code
|
||||
break;
|
||||
case "EDS": //EDS contents was sent
|
||||
var tb = document.getElementById("textEDS");
|
||||
tb.value = body;
|
||||
//tb.setAttribute("value", body); //faster code
|
||||
break;
|
||||
case "XDD": //XDD contents was sent
|
||||
var tb = document.getElementById("textXDD");
|
||||
tb.value = body;
|
||||
//tb.setAttribute("value", body); //faster code
|
||||
break;
|
||||
default: alert("Message command was not recognized: " + head);
|
||||
}
|
||||
}
|
||||
window.addEventListener("message", receiveMessage, false);
|
||||
|
||||
function viewFile(value, pre){
|
||||
var w = window.open("", '_blank', 'left=0,top=150,width=1024,height=768,resizable=yes,scrollbars=yes,location=yes,status=yes,menubar=yes');
|
||||
w.document.open();
|
||||
if(pre){
|
||||
value = value.replace(/&/g, "&");
|
||||
value = value.replace(/</g, "<");
|
||||
value = value.replace(/>/g, ">");
|
||||
w.document.write("<pre>"+value+"</pre>");
|
||||
}
|
||||
else{
|
||||
w.document.write(value);
|
||||
//disable anchors
|
||||
var anchors = w.document.getElementsByTagName("a");
|
||||
for(var i = 0; i < anchors.length; i++){
|
||||
anchors[i].removeAttribute("href");
|
||||
}
|
||||
}
|
||||
w.document.close();
|
||||
}
|
||||
|
||||
function getURLPath(path){
|
||||
//Function returns absolute path based on input path. If input path is relative, it is relative to path of this html document.
|
||||
//Input path can be one of the following (either '/' or '\' can be used):
|
||||
//- http://www.example.com/example/example.html
|
||||
//- file:///C:/example/example.html
|
||||
//- C:/example/example.html
|
||||
//- example/example.html
|
||||
//- /example/example.html
|
||||
//- ../example/example.html
|
||||
var absloutePath;
|
||||
path = path.replace(/\\/g,"/");
|
||||
var i = path.indexOf(":");
|
||||
if(i >= 0){
|
||||
absloutePath = path;
|
||||
if(i == 1) absloutePath = "file:///" + absloutePath;
|
||||
}
|
||||
else{
|
||||
absloutePath = location.href;
|
||||
absloutePath = absloutePath.substring(0, absloutePath.lastIndexOf("/"));
|
||||
while(path.substring(0, 3) == "../"){
|
||||
path = path.substring(3);
|
||||
absloutePath = absloutePath.substring(0, absloutePath.lastIndexOf("/"));
|
||||
}
|
||||
var hash = "/";
|
||||
if(path.charAt(0) == "/") hash = "";
|
||||
absloutePath = absloutePath + hash + path;
|
||||
}
|
||||
return absloutePath;
|
||||
}
|
||||
|
||||
function getLocalPath(path){
|
||||
//Function returns absolute path based on input path. If input path is relative, it is relative to path of this html document.
|
||||
//Input path can be one of the following (either '/' or '\' can be used):
|
||||
//- C:\example\example.html
|
||||
//- example\example.html
|
||||
//- \example\example.html
|
||||
//- ..\example\example.html
|
||||
path = path.replace(/\//g,"\\");
|
||||
if(path.indexOf(":") >= 0) return path;
|
||||
|
||||
var absloutePath = location.href;
|
||||
if(absloutePath.substring(0, 8) != "file:///") return "";
|
||||
absloutePath = absloutePath.substring(8, absloutePath.lastIndexOf("/"));
|
||||
absloutePath = absloutePath.replace(/\//g,"\\");
|
||||
while(path.substring(0, 3) == "..\\"){
|
||||
path = path.substring(3);
|
||||
absloutePath = absloutePath.substring(0, absloutePath.lastIndexOf("\\"));
|
||||
}
|
||||
var hash = "\\";
|
||||
if(path.charAt(0) == "\\") hash = "";
|
||||
absloutePath = absloutePath + hash + path;
|
||||
return absloutePath;
|
||||
}
|
||||
|
||||
function updateFileName(field, name){
|
||||
document.getElementById(field).setAttribute("fileName", name);
|
||||
}
|
||||
</script>
|
||||
</head><body onload="loadProject('_project.xml'); updateFields();">
|
||||
<div id="fileBoxes" style="margin: 8px; display: block;">
|
||||
<div style="padding: 0.5em;">
|
||||
<span id="title" style="font-size: 1.5em; font-weight: bold;">---</span>
|
||||
<span id="date" style="margin-left: 2em;">---</span>
|
||||
<input style="margin-left: 2em; font-size: 1.3em;" value="Open Editor" onclick="openEditor(false);" type="button">
|
||||
at location:
|
||||
<input id="locEditor" value="../../../Object_Dictionary_Editor" onblur="this.setAttribute('value', this.value);" type="text">
|
||||
<input class="right" style="right: 1em;" value="Help" onclick="openAbout();" type="button">
|
||||
</div>
|
||||
<table>
|
||||
<tbody><tr>
|
||||
<td>
|
||||
<div>
|
||||
<b>CANopenNode project file:</b>
|
||||
<input class="right" value="View source" onclick="viewFile(document.getElementById('textXML').value, true);" type="button">
|
||||
</div>
|
||||
<pre><textarea id="textXML" fileName="_project.xml" wrap="off" onchange="updateFields();">-</textarea></pre>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<b>Documentation HTML file:</b>
|
||||
<input value="Preview" onclick="viewFile(document.getElementById('textHTM').value, false);" type="button">
|
||||
<input class="right" value="View source" onclick="viewFile(document.getElementById('textHTM').value, true);" type="button">
|
||||
</div>
|
||||
<textarea id="textHTM" fileName="documentation.html" wrap="off">-</textarea>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<div>
|
||||
<b>Source code CO_OD.h file:</b>
|
||||
<input class="right" value="View source" onclick="viewFile(document.getElementById('textODH').value, true);" type="button">
|
||||
</div>
|
||||
<textarea id="textODH" fileName="CO_OD.h" wrap="off">-</textarea>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<b>Source code CO_OD.c file:</b>
|
||||
<input class="right" value="View source" onclick="viewFile(document.getElementById('textODC').value, true);" type="button">
|
||||
</div>
|
||||
<textarea id="textODC" fileName="CO_OD.c" wrap="off">-</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div>
|
||||
<b>EDS specification file:</b>
|
||||
<input class="right" value="View source" onclick="viewFile(document.getElementById('textEDS').value, true);" type="button">
|
||||
</div>
|
||||
<textarea id="textEDS" fileName="Electronic data sheet.eds" wrap="off">-</textarea>
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
<b>Errors and warnings:</b>
|
||||
<input class="right" value="View source" onclick="viewFile(document.getElementById('textXDD').value, true);" type="button">
|
||||
</div>
|
||||
<textarea id="textXDD" fileName="Electronic data sheet.xdd" wrap="off">-</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<em style="text-align: center; display: block;"><a href="http://canopennode.sourceforge.net/">CANopenNode</a> Editor - project file.</em>
|
||||
</div>
|
||||
<iframe style="border: 0px none ; width: 100%; height: 0px;" src="" id="iframe"></iframe>
|
||||
</body></html>
|
||||
|
|
@ -1,960 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<device>
|
||||
<features>
|
||||
<feature name="SYNC" value="1">
|
||||
<label lang="en">Synchronization object (Sync)</label>
|
||||
<description lang="en" URI="http://www.can-cia.org/canopen/protocol/special.html">The Sync Object is broadcast periodically by the Sync Producer.
|
||||
|
||||
Permissible value for SYNC is 0 or 1.</description>
|
||||
<associatedObject index="1005"/>
|
||||
<associatedObject index="1006"/>
|
||||
<associatedObject index="1007"/>
|
||||
<associatedObject index="2103"/>
|
||||
<associatedObject index="2104"/>
|
||||
</feature>
|
||||
<feature name="Emergency" value="1">
|
||||
<label lang="en">Emergency object (Emcy)</label>
|
||||
<description lang="en" URI="http://www.can-cia.org/canopen/protocol/special.html">The Emergency message is triggered by the occurrence of a device internal error situation.
|
||||
|
||||
Permissible value for Emergency is 0 or 1.</description>
|
||||
<associatedObject index="1014"/>
|
||||
<associatedObject index="1015"/>
|
||||
</feature>
|
||||
<feature name="SDO server" value="1">
|
||||
<label lang="en">Service Data Object (SDO)</label>
|
||||
<description lang="en" URI="http://www.can-cia.org/canopen/protocol/sdo.html">A Service Data Object (SDO) reads from entries or writes to entries of the Object Dictionary.
|
||||
SDO server is implemented on all CANopen devices.
|
||||
|
||||
Permissible value for SDO sever is 0 or 1.</description>
|
||||
<associatedObject index="1200" indexMax="1201" indexStep="1"/>
|
||||
</feature>
|
||||
<feature name="SDO client" value="1">
|
||||
<label lang="en">Service Data Object (SDO)</label>
|
||||
<description lang="en" URI="http://www.can-cia.org/canopen/protocol/sdo.html">A Service Data Object (SDO) reads from entries or writes to entries of the Object Dictionary.
|
||||
SDO client is usually a master device in a CANopen network.
|
||||
|
||||
Permissible value for SDO client is 0 or 1.</description>
|
||||
<associatedObject index="1280" indexMax="1281" indexStep="1"/>
|
||||
</feature>
|
||||
<feature name="RPDO" value="4">
|
||||
<label lang="en">Recive Process Data Object (RPDO)</label>
|
||||
<description lang="en" URI="http://www.can-cia.org/canopen/protocol/pdo.html">Process Data Objects (PDOs) are mapped to a single CAN frame using up to 8 bytes of the data field to transmit application objects. Each PDO has a unique identifier and is transmitted by only one node, but it can be received by more than one (producer/consumer communication).
|
||||
|
||||
Permissible value for RPDO is 0 to 16. For larger value Max Index must be changed.</description>
|
||||
<associatedObject index="1400" indexMax="140F" indexStep="1"/>
|
||||
<associatedObject index="1600" indexMax="160F" indexStep="1"/>
|
||||
</feature>
|
||||
<feature name="TPDO" value="4">
|
||||
<label lang="en">Transmit Process Data Object (TPDO)</label>
|
||||
<description lang="en" URI="http://www.can-cia.org/canopen/protocol/pdo.html">Process Data Objects (PDOs) are mapped to a single CAN frame using up to 8 bytes of the data field to transmit application objects. Each PDO has a unique identifier and is transmitted by only one node, but it can be received by more than one (producer/consumer communication).
|
||||
|
||||
Permissible value for TPDO is 0 to 16. For larger value Max Index must be changed.</description>
|
||||
<associatedObject index="1800" indexMax="180F" indexStep="1"/>
|
||||
<associatedObject index="1A00" indexMax="1A0F" indexStep="1"/>
|
||||
</feature>
|
||||
<feature name="NMT master" value="0">
|
||||
<label lang="en">NMT master</label>
|
||||
<description lang="en">NMT master can send CANopen NMT command, which can start, stop or reset nodes.</description>
|
||||
</feature>
|
||||
<feature name="Trace" value="0">
|
||||
<label lang="en">Trace</label>
|
||||
<description lang="en">Trace is used for recording variables.</description>
|
||||
<associatedObject index="2301" indexMax="2320" indexStep="1"/>
|
||||
<associatedObject index="2400"/>
|
||||
<associatedObject index="2401" indexMax="2420" indexStep="1"/>
|
||||
</feature>
|
||||
</features>
|
||||
<CANopenObjectList>
|
||||
<CANopenObject index="1000" name="Device type" objectType="7" memoryType="ROM" dataType="07" accessType="ro" PDOmapping="no" defaultValue="0x00000000">
|
||||
<label lang="en">Device type</label>
|
||||
<description lang="en">bit 0-15: Device profile number
|
||||
bit 16-31: Additional information</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1001" name="Error register" objectType="7" memoryType="RAM" dataType="05" accessType="ro" PDOmapping="optional" defaultValue="0">
|
||||
<label lang="en">Error register</label>
|
||||
<description lang="en">bit 0: generic error
|
||||
bit 1: current
|
||||
bit 2: voltage
|
||||
bit 3: temperature
|
||||
bit 4: communication error (overrun, error state)
|
||||
bit 5: device profile specific
|
||||
bit 6: Reserved (always 0)
|
||||
bit 7: manufacturer specific</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1002" name="Manufacturer status register" objectType="7" memoryType="RAM" dataType="07" accessType="ro" PDOmapping="optional" defaultValue="0">
|
||||
<label lang="en">Manufacturer status register</label>
|
||||
<description lang="en">bit 0-31: Not used by stack (available for user)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1003" name="Pre-defined error field" objectType="8" subNumber="9" memoryType="RAM" dataType="07" accessType="ro" PDOmapping="no" accessFunctionName="CO_ODF_1003">
|
||||
<label lang="en">Pre-defined error field</label>
|
||||
<description lang="en">Number of Errors
|
||||
bit 0-7: Zero can be written to erase error history
|
||||
|
||||
Standard Error Field
|
||||
bit 0-15: Error code as transmited in the Emergency object
|
||||
bit 16-31: Manufacturer specific additional information</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of errors" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="Standard error field" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1005" name="COB-ID SYNC message" objectType="7" memoryType="ROM" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000080" accessFunctionName="CO_ODF_1005">
|
||||
<label lang="en">COB-ID SYNC message</label>
|
||||
<description lang="en">bit 0-10: COB-ID for SYNC object
|
||||
bit 11-29: set to 0
|
||||
bit 30: 1(0) - node generates (does NOT generate) SYNC object
|
||||
bit 31: set to 0</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1006" name="Communication cycle period" objectType="7" memoryType="ROM" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0" accessFunctionName="CO_ODF_1006">
|
||||
<label lang="en">Communication cycle period</label>
|
||||
<description lang="en">bit 0-31: period of SYNC transmission in µs (0 = no transmission, no checking)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1007" name="Synchronous window length" objectType="7" memoryType="ROM" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0">
|
||||
<label lang="en">Synchronous window length</label>
|
||||
<description lang="en">bit 0-31: window leghth after SYNC when PDOS must be transmited in µs, (0 = not used)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1008" name="Manufacturer device name" objectType="7" memoryType="ROM" dataType="09" accessType="const" PDOmapping="no" defaultValue="CANopenNode">
|
||||
<label lang="en">Manufacturer device name</label>
|
||||
<description lang="en">Name of the manufacturer as string</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1009" name="Manufacturer hardware version" objectType="7" memoryType="ROM" dataType="09" accessType="const" PDOmapping="no" defaultValue="3.00">
|
||||
<label lang="en">Manufacturer hardware version</label>
|
||||
<description lang="en">Name of the hardware version as string</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="100A" name="Manufacturer software version" objectType="7" memoryType="ROM" dataType="09" accessType="const" PDOmapping="no" defaultValue="3.00">
|
||||
<label lang="en">Manufacturer software version</label>
|
||||
<description lang="en">Name of the software version as string.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1010" name="Store parameters" objectType="8" subNumber="2" memoryType="RAM" dataType="07" accessType="rw" PDOmapping="no" accessFunctionName="CO_ODF_1010">
|
||||
<label lang="en">Store parameters</label>
|
||||
<description lang="en">Writing value 0x65766173 ('s','a','v','e' from LSB to MSB) into this location stores all ROM variables into EEPROM.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="01" name="save all parameters" objectType="7" defaultValue="0x00000003"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1011" name="Restore default parameters" objectType="8" subNumber="2" memoryType="RAM" dataType="07" accessType="rw" PDOmapping="no" accessFunctionName="CO_ODF_1011">
|
||||
<label lang="en">Restore default parameters</label>
|
||||
<description lang="en">Writing value 0x64616F6C ('l','o','a','d' from LSB to MSB) into this location restores all ROM and EEPROM variables after reset. (After reset read form EEPROM is not performed, so default values are used.)</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="01" name="restore all default parameters" objectType="7" defaultValue="0x00000001"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1014" name="COB-ID EMCY" objectType="7" memoryType="ROM" dataType="07" accessType="ro" PDOmapping="no" defaultValue="$NODEID+0x80" accessFunctionName="CO_ODF_1014">
|
||||
<label lang="en">COB-ID emergency message</label>
|
||||
<description lang="en">bit 0-10: COB-ID
|
||||
bit 11-30: set to 0 for 11 bit COB-ID
|
||||
bit 31: 0(1) - node uses (does NOT use) Emergency object</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1015" name="inhibit time EMCY" objectType="7" memoryType="ROM" dataType="06" accessType="rw" PDOmapping="no" defaultValue="100">
|
||||
<label lang="en">inhibit time emergency message</label>
|
||||
<description lang="en">bit 0-15: Inhibit time of emergency message in 100µs</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1016" name="Consumer heartbeat time" objectType="8" subNumber="5" memoryType="ROM" dataType="07" accessType="rw" PDOmapping="no" accessFunctionName="CO_ODF_1016">
|
||||
<label lang="en">Consumer heartbeat time</label>
|
||||
<description lang="en">max sub-index
|
||||
|
||||
Consumer Heartbeat Time
|
||||
bit 0-15: Heartbeat consumer time in ms (0 = node is not monitored)
|
||||
bit 16-23: Node ID
|
||||
bit 24-31: set to 0</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="4"/>
|
||||
<CANopenSubObject subIndex="01" name="Consumer heartbeat time" objectType="7" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="Consumer heartbeat time" objectType="7" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="Consumer heartbeat time" objectType="7" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="Consumer heartbeat time" objectType="7" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1017" name="Producer heartbeat time" objectType="7" memoryType="ROM" dataType="06" accessType="rw" PDOmapping="no" defaultValue="1000">
|
||||
<label lang="en">Producer heartbeat time</label>
|
||||
<description lang="en">bit 0-15: Heartbeat producer time in ms (0 = disable transmission)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1018" name="Identity" objectType="9" subNumber="5" memoryType="ROM">
|
||||
<label lang="en">Identity</label>
|
||||
<description lang="en">max sub-index
|
||||
|
||||
Vendor-ID
|
||||
bit 0-31: Assigned by CiA
|
||||
|
||||
Product code
|
||||
bit 0-31: Manufacturer specific
|
||||
|
||||
Revision number
|
||||
bit 0-15: Minor revision num. (CANopen behavior has not changed)
|
||||
bit 16-31: Major revision number (CANopen behavior has changed)
|
||||
|
||||
Serial number
|
||||
bit 0-31: Manufacturer specific</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="4"/>
|
||||
<CANopenSubObject subIndex="01" name="Vendor-ID" objectType="7" dataType="07" accessType="ro" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="Product code" objectType="7" dataType="07" accessType="ro" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="Revision number" objectType="7" dataType="07" accessType="ro" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="Serial number" objectType="7" dataType="07" accessType="ro" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1019" name="Synchronous counter overflow value" objectType="7" memoryType="ROM" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0" accessFunctionName="CO_ODF_1019">
|
||||
<label lang="en">Synchronous counter overflow value</label>
|
||||
<description lang="en">If value is zero, then SYNC message is transmitted with data length 0.
|
||||
|
||||
If Value is from 2 to 240, then SYNC message has one data byte, which contains the counter.
|
||||
|
||||
Other values are reserved.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1029" name="Error behavior" objectType="8" subNumber="7" memoryType="ROM" dataType="05" accessType="rw" PDOmapping="no">
|
||||
<label lang="en">Error behavior</label>
|
||||
<description lang="en">If error is detected and operating NMT state is NMT operational, this object defines behavior of the device.
|
||||
|
||||
Value definition for all subindexes:
|
||||
0x00 - if operational, switch to NMT pre-operational
|
||||
0x01 - do nothing
|
||||
0x02 - switch to NMT stopped
|
||||
|
||||
01 - Communication error - bus off or Heartbeat consumer error.
|
||||
02 - Communication other error (critical errors - see 'Error status bits') except CAN bus passive but including bus off or Heartbeat consumer.
|
||||
03 - Communication passive - any communication error including CAN bus passive.
|
||||
04 - Generic error (critical errors - see 'Error status bits').
|
||||
05 - Device profile error - bit 5 in error register is set.
|
||||
06 - Manufacturer specific error - bit 7 in error register is set.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="Communication" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="02" name="Communication other" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="03" name="Communication passive" objectType="7" defaultValue="0x01"/>
|
||||
<CANopenSubObject subIndex="04" name="Generic" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="05" name="Device profile" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="06" name="Manufacturer specific" objectType="7" defaultValue="0x00"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1200" name="SDO server parameter" objectType="9" subNumber="3" memoryType="ROM" accessFunctionName="CO_ODF_1200">
|
||||
<label lang="en">SDO server parameter</label>
|
||||
<description lang="en">0x1200 SDO server parameter
|
||||
max sub-index
|
||||
|
||||
COB-ID client to server (Receive SDO)
|
||||
bit 0-31: 0x00000600 + Node ID
|
||||
|
||||
COB-ID server to client (Transmit SDO)
|
||||
bit 0-31: 0x00000580 + Node ID
|
||||
|
||||
|
||||
|
||||
0x1201 - 0x127F SDO server parameter
|
||||
max sub-index
|
||||
|
||||
COB-ID client to server (Receive SDO)
|
||||
bit 0-10: COB_ID
|
||||
bit 11-30: Set to 0
|
||||
bit 31*: 0(1) - node uses (does NOT use) SDO
|
||||
|
||||
COB-ID server to client (Transmit SDO)
|
||||
bit 0-31: same as previous
|
||||
|
||||
Node-ID of the SDO client
|
||||
bit 0-7: Node ID (optional)</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID client to server" objectType="7" dataType="07" accessType="ro" PDOmapping="no" defaultValue="$NODEID+0x600"/>
|
||||
<CANopenSubObject subIndex="02" name="COB-ID server to client" objectType="7" dataType="07" accessType="ro" PDOmapping="no" defaultValue="$NODEID+0x580"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1280" name="SDO client parameter" objectType="9" subNumber="4" memoryType="RAM">
|
||||
<label lang="en">SDO client parameter</label>
|
||||
<description lang="en">0x1280 - 0x12FF SDO client parameter
|
||||
max sub-index
|
||||
|
||||
COB-ID client to server (Transmit SDO)
|
||||
bit 0-10: COB_ID
|
||||
bit 11-30: Set to 0
|
||||
bit 31: 0(1) - node uses (does NOT use) SDO
|
||||
|
||||
COB-ID server to client (Receive SDO)
|
||||
bit 0-31: same as previous
|
||||
|
||||
Node-ID of the SDO server
|
||||
0-7: Node ID</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="3"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID client to server" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="COB-ID server to client" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Node-ID of the SDO server" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1400" name="RPDO communication parameter" objectType="9" subNumber="3" memoryType="ROM" accessFunctionName="CO_ODF_RPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by RPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x200"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="255"/>
|
||||
<label lang="en">RPDO communication parameter</label>
|
||||
<description lang="en">0x1400 - 0x15FF RPDO communication parameter
|
||||
max sub-index
|
||||
|
||||
COB-ID
|
||||
bit 0-10: COB-ID for PDO, to change it bit 31 must be set
|
||||
bit 11-29: set to 0 for 11 bit COB-ID
|
||||
bit 30: 0(1) - rtr are allowed (are NOT allowed) for PDO
|
||||
bit 31: 0(1) - node uses (does NOT use) PDO
|
||||
|
||||
Transmission type
|
||||
value = 0-240: reciving is synchronous, process after next reception of SYNC object
|
||||
value = 241-253: not used
|
||||
value = 254: manufacturer specific
|
||||
value = 255: asynchronous</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1401" name="RPDO communication parameter" objectType="9" subNumber="3" memoryType="ROM" accessFunctionName="CO_ODF_RPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by RPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x300"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<label lang="en">RPDO communication parameter</label>
|
||||
<description lang="en">0x1400 - 0x15FF RPDO communication parameter (see description for 0x1400)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1402" name="RPDO communication parameter" objectType="9" subNumber="3" memoryType="ROM" accessFunctionName="CO_ODF_RPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by RPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x400"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<label lang="en">RPDO communication parameter</label>
|
||||
<description lang="en">0x1400 - 0x15FF RPDO communication parameter (see description for 0x1400)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1403" name="RPDO communication parameter" objectType="9" subNumber="3" memoryType="ROM" accessFunctionName="CO_ODF_RPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by RPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x500"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<label lang="en">RPDO communication parameter</label>
|
||||
<description lang="en">0x1400 - 0x15FF RPDO communication parameter (see description for 0x1400)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1404" name="RPDO communication parameter" objectType="9" subNumber="3" memoryType="ROM" accessFunctionName="CO_ODF_RPDOcom" disabled="true">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by RPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<label lang="en">RPDO communication parameter</label>
|
||||
<description lang="en">0x1400 - 0x15FF RPDO communication parameter (see description for 0x1400)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1600" name="RPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_RPDOmap">
|
||||
<label lang="en">RPDO mapping parameter</label>
|
||||
<description lang="en">0x1600 - 0x17FF RPDO mapping parameter (To change mapping, 'Number of mapped objects' must be set to 0)
|
||||
Number of mapped objects
|
||||
|
||||
mapped object (subindex 1...8)
|
||||
bit 0-7: data length in bits
|
||||
bit 8-15: subindex from OD
|
||||
bit 16-31: index from OD</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x62000108"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x62000208"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1601" name="RPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_RPDOmap">
|
||||
<label lang="en">RPDO mapping parameter</label>
|
||||
<description lang="en">0x1600 - 0x17FF RPDO mapping parameter (see description for 0x1600)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1602" name="RPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_RPDOmap">
|
||||
<label lang="en">RPDO mapping parameter</label>
|
||||
<description lang="en">0x1600 - 0x17FF RPDO mapping parameter (see description for 0x1600)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1603" name="RPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_RPDOmap">
|
||||
<label lang="en">RPDO mapping parameter</label>
|
||||
<description lang="en">0x1600 - 0x17FF RPDO mapping parameter (see description for 0x1600)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1604" name="RPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_RPDOmap" disabled="true">
|
||||
<label lang="en">RPDO mapping parameter</label>
|
||||
<description lang="en">0x1600 - 0x17FF RPDO mapping parameter (see description for 0x1600)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1800" name="TPDO communication parameter" objectType="9" subNumber="7" memoryType="ROM" accessFunctionName="CO_ODF_TPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by TPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x180"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="255"/>
|
||||
<CANopenSubObject subIndex="03" name="inhibit time" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="100"/>
|
||||
<CANopenSubObject subIndex="04" name="compatibility entry" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="event timer" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="SYNC start value" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<label lang="en">TPDO communication parameter</label>
|
||||
<description lang="en">0x1800 - 0x19FF TPDO communication parameter
|
||||
max sub-index
|
||||
|
||||
COB-ID
|
||||
bit 0-10: COB-ID for PDO, to change it bit 31 must be set
|
||||
bit 11-29: set to 0 for 11 bit COB-ID
|
||||
bit 30: 0(1) - rtr are allowed (are NOT allowed) for PDO
|
||||
bit 31: 0(1) - node uses (does NOT use) PDO
|
||||
|
||||
Transmission type
|
||||
value = 0: transmiting is synchronous, specification in device profile
|
||||
value = 1-240: transmiting is synchronous after every N-th SYNC object
|
||||
value = 241-251: not used
|
||||
value = 252-253: Transmited only on reception of Remote Transmission Request
|
||||
value = 254: manufacturer specific
|
||||
value = 255: asinchronous, specification in device profile
|
||||
|
||||
inhibit time
|
||||
bit 0-15: Minimum time between transmissions of the PDO in 100µs. Zero disables functionality.
|
||||
|
||||
compatibility entry
|
||||
bit 0-7: Not used.
|
||||
|
||||
event timer
|
||||
bit 0-15: Time between periodic transmissions of the PDO in ms. Zero disables functionality.
|
||||
|
||||
SYNC start value
|
||||
value = 0: Counter of the SYNC message shall not be processed.
|
||||
value = 1-240: The SYNC message with the counter value equal to this value shall be regarded as the first received SYNC message.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1801" name="TPDO communication parameter" objectType="9" subNumber="7" memoryType="ROM" accessFunctionName="CO_ODF_TPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by TPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x280"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<CANopenSubObject subIndex="03" name="inhibit time" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="compatibility entry" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="event timer" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="SYNC start value" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<label lang="en">TPDO communication parameter</label>
|
||||
<description lang="en">0x1800 - 0x19FF TPDO communication parameter (see description for 0x1800)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1802" name="TPDO communication parameter" objectType="9" subNumber="7" memoryType="ROM" accessFunctionName="CO_ODF_TPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by TPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x380"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<CANopenSubObject subIndex="03" name="inhibit time" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="compatibility entry" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="event timer" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="SYNC start value" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<label lang="en">TPDO communication parameter</label>
|
||||
<description lang="en">0x1800 - 0x19FF TPDO communication parameter (see description for 0x1800)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1803" name="TPDO communication parameter" objectType="9" subNumber="7" memoryType="ROM" accessFunctionName="CO_ODF_TPDOcom">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by TPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="$NODEID+0x480"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<CANopenSubObject subIndex="03" name="inhibit time" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="compatibility entry" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="event timer" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="SYNC start value" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<label lang="en">TPDO communication parameter</label>
|
||||
<description lang="en">0x1800 - 0x19FF TPDO communication parameter (see description for 0x1800)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1804" name="TPDO communication parameter" objectType="9" subNumber="7" memoryType="ROM" accessFunctionName="CO_ODF_TPDOcom" disabled="true">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="COB-ID used by TPDO" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="02" name="transmission type" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="254"/>
|
||||
<CANopenSubObject subIndex="03" name="inhibit time" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="compatibility entry" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="event timer" objectType="7" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="SYNC start value" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<label lang="en">TPDO communication parameter</label>
|
||||
<description lang="en">0x1800 - 0x19FF TPDO communication parameter (see description for 0x1800)</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1A00" name="TPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_TPDOmap">
|
||||
<label lang="en">TPDO mapping parameter</label>
|
||||
<description lang="en">0x1A00 - 0x1BFF TPDO mapping parameter. (To change mapping, 'Number of mapped objects' must be set to 0).
|
||||
Number of mapped objects
|
||||
|
||||
mapped object (subindex 1...8)
|
||||
bit 0-7: data length in bits
|
||||
bit 8-15: subindex from OD
|
||||
bit 16-31: index from OD</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="2"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x60000108"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x60000208"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1A01" name="TPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_TPDOmap">
|
||||
<label lang="en">TPDO mapping parameter</label>
|
||||
<description lang="en">0x1A00 - 0x1BFF TPDO mapping parameter (see description for 0x1A00)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1A02" name="TPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_TPDOmap">
|
||||
<label lang="en">TPDO mapping parameter</label>
|
||||
<description lang="en">0x1A00 - 0x1BFF TPDO mapping parameter (see description for 0x1A00)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1A03" name="TPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_TPDOmap">
|
||||
<label lang="en">TPDO mapping parameter</label>
|
||||
<description lang="en">0x1A00 - 0x1BFF TPDO mapping parameter (see description for 0x1A00)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1A04" name="TPDO mapping parameter" objectType="9" subNumber="9" memoryType="ROM" accessFunctionName="CO_ODF_TPDOmap" disabled="true">
|
||||
<label lang="en">TPDO mapping parameter</label>
|
||||
<description lang="en">0x1A00 - 0x1BFF TPDO mapping parameter (see description for 0x1A00)</description>
|
||||
<CANopenSubObject subIndex="00" name="Number of mapped objects" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="01" name="mapped object 1" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="02" name="mapped object 2" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="03" name="mapped object 3" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="04" name="mapped object 4" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="05" name="mapped object 5" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="mapped object 6" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="07" name="mapped object 7" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="08" name="mapped object 8" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="1F80" name="NMT startup" objectType="7" memoryType="ROM" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000008">
|
||||
<label lang="en">NMT Startup</label>
|
||||
<description lang="en">Only bit 2 is implemented.
|
||||
|
||||
bit 0: 0(1) - device is not (is) NMT master
|
||||
bit 1: 0(1) - if bit3=0, start explicitly assigned (all) nodes
|
||||
bit 2: 0(1) - automaticaly enter (DO NOT automaticaly enter) the operational state on bootup
|
||||
bit 3: 0(1) - NMT master may (may not) start nodes automatically
|
||||
bit 4: 0(1) - if monitored node fails heartbeat handle that (all) node(s)
|
||||
bit 5: 0(1) - flying master process not (yes) supported
|
||||
bit 6: 0(1) - use bit 4 (ignore bit 4, stop all nodes)
|
||||
bit 7-31: reserved, set to 0</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2100" name="Error status bits" objectType="7" memoryType="RAM" dataType="0A" accessType="ro" PDOmapping="optional" defaultValue="00 00 00 00 00 00 00 00 00 00">
|
||||
<label lang="en">Error Status Bits</label>
|
||||
<description lang="en">Error Status Bits indicates error conditions inside stack or inside application. Specific bit is set by CO_errorReport() function, when error occurs in program. It can be reset by CO_errorReset() function, if error is solved. Emergency message is sent on each change of any Error Status Bit. If critical bits are set, node will not be able to stay in operational state. For more information see file CO_Emergency.h.
|
||||
|
||||
Default error status bits are:
|
||||
|
||||
Communication or protocol errors from driver (informative):
|
||||
00 - ERROR_NO_ERROR - Error Reset or No Error.
|
||||
01 - ERROR_CAN_BUS_WARNING - CAN bus warning.
|
||||
02 - ERROR_RXMSG_WRONG_LENGTH - Wrong data length of received CAN message.
|
||||
03 - ERROR_RXMSG_OVERFLOW - Previous received CAN message wasn't processed yet.
|
||||
04 - ERROR_RPDO_WRONG_LENGTH - Wrong data length of received PDO.
|
||||
05 - ERROR_RPDO_OVERFLOW - Previous received PDO wasn't processed yet.
|
||||
06 - ERROR_CAN_RX_BUS_PASSIVE - CAN receive bus is passive.
|
||||
07 - ERROR_CAN_TX_BUS_PASSIVE - CAN transmit bus is passive.
|
||||
|
||||
Communication or protocol errors from driver (critical):
|
||||
08 - ERROR_08_reserved - (reserved)
|
||||
09 - ERROR_09_reserved - (reserved)
|
||||
0A - ERROR_CAN_TX_BUS_OFF - CAN transmit bus is off.
|
||||
0B - ERROR_CAN_RXB_OVERFLOW - CAN module receive buffer has overflowed.
|
||||
0C - ERROR_CAN_TX_OVERFLOW - CAN transmit buffer has overflowed.
|
||||
0D - ERROR_TPDO_OUTSIDE_WINDOW - TPDO is outside SYNC window.
|
||||
0E - ERROR_CAN_CONFIGURATION_FAILED - Configuration of CAN module CAN failed (Rx or Tx).
|
||||
0F - ERROR_0F_reserved - (reserved)
|
||||
|
||||
Communication or protocol errors (informative):
|
||||
10 - ERROR_NMT_WRONG_COMMAND - Wrong NMT command received.
|
||||
11 - ERROR_SYNC_EARLY - SYNC message was too early.
|
||||
12 - ERROR_12_reserved - (reserved)
|
||||
13 - ERROR_13_reserved - (reserved)
|
||||
14 - ERROR_14_reserved - (reserved)
|
||||
15 - ERROR_15_reserved - (reserved)
|
||||
16 - ERROR_16_reserved - (reserved)
|
||||
17 - ERROR_17_reserved - (reserved)
|
||||
|
||||
Communication or protocol errors (critical):
|
||||
18 - ERROR_SYNC_TIME_OUT - SYNC message timeout.
|
||||
19 - ERROR_SYNC_LENGTH - Unexpected SYNC data length
|
||||
1A - ERROR_PDO_WRONG_MAPPING - Error with PDO mapping.
|
||||
1B - ERROR_HEARTBEAT_CONSUMER - Heartbeat consumer timeout.
|
||||
1C - ERROR_HEARTBEAT_CONSUMER_REMOTE_RESET - Heartbeat consumer detected remote node reset.
|
||||
1D - ERROR_1D_reserved - (reserved)
|
||||
1E - ERROR_1E_reserved - (reserved)
|
||||
1F - ERROR_1F_reserved - (reserved)
|
||||
|
||||
Generic errors (informative):
|
||||
20 - ERROR_20_reserved - (reserved)
|
||||
21 - ERROR_21_reserved - (reserved)
|
||||
22 - ERROR_22_reserved - (reserved)
|
||||
23 - ERROR_23_reserved - (reserved)
|
||||
24 - ERROR_24_reserved - (reserved)
|
||||
25 - ERROR_25_reserved - (reserved)
|
||||
26 - ERROR_26_reserved - (reserved)
|
||||
27 - ERROR_27_reserved - (reserved)
|
||||
|
||||
Generic errors (critical):
|
||||
28 - ERROR_WRONG_ERROR_REPORT - Wrong parameters to <CO_errorReport()> function.
|
||||
29 - ERROR_ISR_TIMER_OVERFLOW - Timer task has overflowed.
|
||||
2A - ERROR_MEMORY_ALLOCATION_ERROR - Unable to allocate memory for objects.
|
||||
2B - ERROR_GENERIC_ERROR - Generic error, test usage.
|
||||
2C - ERROR_MAIN_TIMER_OVERFLOW - Mainline function exceeded maximum execution time.
|
||||
2D - ERROR_INTERNAL_STATE_APPL - Error in application software internal state.
|
||||
2E - ERROR_2E_reserved - (reserved)
|
||||
2F - ERROR_2F_reserved - (reserved)
|
||||
|
||||
Manufacturer specific errors:
|
||||
Manufacturer may define its own constants up to index 0xFF. Of course, he must then define large enough buffer for error status bits (up to 32 bytes).</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2101" name="CAN node ID" objectType="7" memoryType="ROM" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0x30">
|
||||
<accessFunctionPreCode>if(WRITING){
|
||||
UNSIGNED8 var = *((UNSIGNED8*)dataBuff);
|
||||
if(var < 1) return 0x06090032L; //Value of parameter written too low.
|
||||
if(var > 127) return 0x06090031L; //Value of parameter written too high.
|
||||
}</accessFunctionPreCode>
|
||||
<label lang="en">CAN Node ID</label>
|
||||
<description lang="en">CAN Node ID is CANopenNode specific variable. It sets node-ID for device on CANopen network. Node-ID can be set on other ways too, for example with DIP switches. More advanced solution is use of LSS.
|
||||
|
||||
Valid values are from 1 to 127:</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2102" name="CAN bit rate" objectType="7" memoryType="ROM" dataType="06" accessType="rw" PDOmapping="no" defaultValue="250">
|
||||
<accessFunctionPreCode>if(WRITING){
|
||||
UNSIGNED16 var;
|
||||
memcpySwap2((UNSIGNED8*)&var, (UNSIGNED8*)dataBuff);
|
||||
if(!(var == 10 || var == 20 || var == 50 || var == 125 || var == 250 || var == 500 || var == 800 || var == 1000)) return 0x06090030L; //Invalid value for the parameter
|
||||
}</accessFunctionPreCode>
|
||||
<label lang="en">CAN Bit-Rate</label>
|
||||
<description lang="en">CAN Bit-Rate is CANopenNode specific variable. It sets CAN Bit-Rate for device on CANopen network.
|
||||
|
||||
Valid values are in [kbps]:
|
||||
10, 20, 50, 125, 250, 500, 800, 1000</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2103" name="SYNC counter" objectType="7" memoryType="RAM" dataType="06" accessType="rw" PDOmapping="no" defaultValue="0">
|
||||
<label lang="en">SYNC Counter</label>
|
||||
<description lang="en">SYNC Counter is incremented each time, SYNC message is received or transmitted.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2104" name="SYNC time" objectType="7" memoryType="RAM" dataType="06" accessType="ro" PDOmapping="no" defaultValue="0">
|
||||
<label lang="en">SYNC Time</label>
|
||||
<description lang="en">SYNC Time is incremented each timer period and reset to zero, each time SYNC is received or transmitted.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2106" name="Power-on counter" objectType="7" memoryType="EEPROM" dataType="07" accessType="ro" PDOmapping="no" defaultValue="0">
|
||||
<label lang="en">Power on Counter</label>
|
||||
<description lang="en">Power on Counter counts total microcontroller resets in it's lifetime. Variable is an example of EEPROM usage.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2107" name="Performance" objectType="8" subNumber="6" memoryType="RAM" dataType="06" accessType="rw" PDOmapping="optional">
|
||||
<accessFunctionPreCode>if(WRITING){
|
||||
UNSIGNED16 var;
|
||||
memcpySwap2((UNSIGNED8*)&var, (UNSIGNED8*)dataBuff);
|
||||
if(!((subIndex == 3 || subIndex == 5) && var == 0))
|
||||
return 0x06090030; //Invalid value for parameter
|
||||
}</accessFunctionPreCode>
|
||||
<label lang="en">Performance</label>
|
||||
<description lang="en">Internal performance of the microcontroller.
|
||||
|
||||
cycles per second - cycle frequency of internal timer.
|
||||
timer cycle time - current timer cycle time in percent of timer period.
|
||||
timer cycle max time - maximum timer cycle time in percent of timer period.
|
||||
main cycle time - current mainline function cycle time in percent of timer period.
|
||||
main cycle max time - maximum mainline function cycle time in percent of timer period.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="5"/>
|
||||
<CANopenSubObject subIndex="01" name="cycles per second" objectType="7" defaultValue="1000"/>
|
||||
<CANopenSubObject subIndex="02" name="timer cycle time" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="timer cycle max time" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="main cycle time" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="main cycle max time" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2108" name="Temperature" objectType="8" subNumber="2" memoryType="RAM" dataType="03" accessType="ro" PDOmapping="optional">
|
||||
<label lang="en">Temperature</label>
|
||||
<description lang="en">Current temperature on device in 0,1°C.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="01" name="main PCB" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2109" name="Voltage" objectType="8" subNumber="2" memoryType="RAM" dataType="03" accessType="ro" PDOmapping="optional">
|
||||
<label lang="en">Voltage</label>
|
||||
<description lang="en">Current voltage on device in 0,1V.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="01" name="main PCB supply" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2110" name="Variable Int32" objectType="8" subNumber="17" memoryType="RAM" dataType="04" accessType="rw" PDOmapping="optional" TPDOdetectCOS="true">
|
||||
<label lang="en">Variable Integer 32bit</label>
|
||||
<description lang="en">Vartiable is free to use by application.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="16"/>
|
||||
<CANopenSubObject subIndex="01" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="09" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0A" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0B" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0C" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0D" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0E" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0F" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="10" name="int32" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2111" name="Variable ROM Int32" objectType="8" subNumber="17" memoryType="ROM" dataType="04" accessType="rw" PDOmapping="optional" TPDOdetectCOS="true">
|
||||
<label lang="en">Variable ROM Integer 32bit</label>
|
||||
<description lang="en">Vartiable is free to use by application.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="16"/>
|
||||
<CANopenSubObject subIndex="01" name="int32" objectType="7" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="02" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="09" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0A" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0B" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0C" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0D" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0E" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0F" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="10" name="int32" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2112" name="Variable NV Int32" objectType="8" subNumber="17" memoryType="EEPROM" dataType="04" accessType="rw" PDOmapping="optional" TPDOdetectCOS="true">
|
||||
<label lang="en">Variable nonvolatile Integer 32bit</label>
|
||||
<description lang="en">Vartiable is free to use by application. Variable is stored to internal baterry powered SRAM.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="16"/>
|
||||
<CANopenSubObject subIndex="01" name="int32" objectType="7" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="02" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="09" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0A" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0B" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0C" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0D" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0E" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0F" name="int32" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="10" name="int32" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2120" name="test var" objectType="9" subNumber="6" memoryType="RAM">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="5"/>
|
||||
<CANopenSubObject subIndex="01" name="I64" objectType="7" dataType="15" accessType="rw" PDOmapping="optional" defaultValue="0x1234567890ABCDEFLL"/>
|
||||
<CANopenSubObject subIndex="02" name="U64" objectType="7" dataType="1B" accessType="rw" PDOmapping="optional" defaultValue="0x234567890ABCDEF1LL"/>
|
||||
<CANopenSubObject subIndex="03" name="R32" objectType="7" dataType="08" accessType="rw" PDOmapping="optional" defaultValue="12.345"/>
|
||||
<CANopenSubObject subIndex="04" name="R64" objectType="7" dataType="11" accessType="rw" PDOmapping="optional" defaultValue="456.789"/>
|
||||
<CANopenSubObject subIndex="05" name="domain" objectType="7" dataType="0F" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2130" name="Time" objectType="9" subNumber="4" memoryType="RAM">
|
||||
<label lang="en">Time</label>
|
||||
<description lang="en">Variable displays current time.
|
||||
|
||||
String - returns current time as string.
|
||||
|
||||
Epoch time ms - Milliseconds since unix epoch (1.1.1970, 00:00:00, UTC). It is calculated as base + offset. Base is calculated on startup of program and offset increments continuously since then. 'Epoch time offset ms' overflows each 49,7 days. 'Epoch time base ms' is recalculated in case of overflow or in case of write to 'Epoch time offset ms'. It is rounded to one minute.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="3"/>
|
||||
<CANopenSubObject subIndex="01" name="String" objectType="7" dataType="09" accessType="ro" PDOmapping="no" defaultValue="- "/>
|
||||
<CANopenSubObject subIndex="02" name="Epoch time base ms" objectType="7" dataType="1B" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Epoch time offset ms" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2301" name="Trace config" objectType="9" subNumber="9" memoryType="ROM" disabled="true">
|
||||
<label lang="en">Trace config</label>
|
||||
<description lang="en">Trace is used for recording variables.
|
||||
|
||||
See also Trace.
|
||||
|
||||
Size - Maximum number of trace records in circular buffer. By reading it returns actual buffer size (If zero, malloc may had been failed at startup). By writing it sets the size, which will be valid after next reboot. (It is necessary to store parameters before (0x1010).)
|
||||
|
||||
Axis no - If value is different than zero, trace is enabled. Value is informative and describes group of traces (Multiple traces can belong to single axis.). By reading it returns zero if trace is disabled or if it is not configured properly. When trace is enabled, internal buffer is cleared.
|
||||
|
||||
Name - name of the trace as a string (informative).
|
||||
|
||||
Color - color of the trace as a string (informative).
|
||||
|
||||
Map - Map to variable in object dictionary, similar as PDO map(two bytes of index, one byte of subindex and 1 byte of bitlength. It's value will be copied to trace.value in case index and subindex are correct. If map index and subindex is zero, RPDO may be mapped to trace.value, for example. Valid values of map.bitlength is 08, 10 or 20 or 00, which indicates 8-bit, 16bit, 32-bit or default-size variable. Trace must be disabled, if mapping is written (Axis no set to 0).
|
||||
|
||||
Format - If first bit is zero, then value is used as signed integer otherwise as unsigned integer. If format is 0 or 1, text points are generated for time and value: "123;321\n140;345\n..." If format is 2 or 3, binary data is generated: 4-byte timestamp and 4-byte value. If format is 4 or 5, SVG path is generated: "M123,321H140V345...".
|
||||
|
||||
Trigger - 0=disabled, 1=rising edge, 2=falling edge, 3=both edges.
|
||||
|
||||
Threshold - If integer value passes threshold (based on trigger setting), time is recorded into 'trigger time'.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="8"/>
|
||||
<CANopenSubObject subIndex="01" name="Size" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="100"/>
|
||||
<CANopenSubObject subIndex="02" name="Axis no" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="03" name="Name" objectType="7" dataType="09" accessType="rw" PDOmapping="no" defaultValue="Trace1 "/>
|
||||
<CANopenSubObject subIndex="04" name="Color" objectType="7" dataType="09" accessType="rw" PDOmapping="no" defaultValue="red "/>
|
||||
<CANopenSubObject subIndex="05" name="Map" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x60000108"/>
|
||||
<CANopenSubObject subIndex="06" name="Format" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="1"/>
|
||||
<CANopenSubObject subIndex="07" name="Trigger" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="Threshold" objectType="7" dataType="04" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2302" name="Trace config" objectType="9" subNumber="9" memoryType="ROM" disabled="true">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="8"/>
|
||||
<CANopenSubObject subIndex="01" name="Size" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="Axis no" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Name" objectType="7" dataType="09" accessType="rw" PDOmapping="no" defaultValue="Trace2 "/>
|
||||
<CANopenSubObject subIndex="04" name="Color" objectType="7" dataType="09" accessType="rw" PDOmapping="no" defaultValue="green "/>
|
||||
<CANopenSubObject subIndex="05" name="Map" objectType="7" dataType="07" accessType="rw" PDOmapping="no" defaultValue="0x00000000"/>
|
||||
<CANopenSubObject subIndex="06" name="Format" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="Trigger" objectType="7" dataType="05" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="Threshold" objectType="7" dataType="04" accessType="rw" PDOmapping="no" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2400" name="Trace enable" objectType="7" memoryType="RAM" dataType="05" accessType="rw" PDOmapping="optional" defaultValue="0" disabled="true">
|
||||
<label lang="en">Trace enable</label>
|
||||
<description lang="en">This object controls, how many trace objects (beginning from index 0x2401) are enabled. If zero, all traces are disabled.</description>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2401" name="Trace" objectType="9" subNumber="7" memoryType="RAM" disabled="true">
|
||||
<label lang="en">Trace</label>
|
||||
<description lang="en">Trace is used for recording variables.
|
||||
|
||||
See also Trace config.
|
||||
|
||||
Size - Number of current records in buffer.
|
||||
|
||||
Value - Latest value. If traceConfig.map (index and subindex) is valid, then mapped variable will be copied here.
|
||||
|
||||
Min, Max - Minimum and maximum value.
|
||||
|
||||
Plot - SVG path generated from the values from circular buffer. For time axis is used Time->'Epoch time offset ms'. When Plot is read, internal buffer is emptied.
|
||||
|
||||
Trigger time - If integer value passes 'TraceConfig->threshold', then time is recorded into this variable.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="Size" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="Value" objectType="7" dataType="04" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Min" objectType="7" dataType="04" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="Max" objectType="7" dataType="04" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="Plot" objectType="7" dataType="0F" accessType="ro" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="Trigger time" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="2402" name="Trace" objectType="9" subNumber="7" memoryType="RAM" disabled="true">
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="6"/>
|
||||
<CANopenSubObject subIndex="01" name="Size" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="Value" objectType="7" dataType="04" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Min" objectType="7" dataType="04" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="Max" objectType="7" dataType="04" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="Plot" objectType="7" dataType="0F" accessType="ro" PDOmapping="no" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="Trigger time" objectType="7" dataType="07" accessType="rw" PDOmapping="optional" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="6000" name="Read input 8 bit" objectType="8" subNumber="9" memoryType="RAM" dataType="05" accessType="ro" PDOmapping="optional" TPDOdetectCOS="true">
|
||||
<label lang="en">Read input 8 bit</label>
|
||||
<description lang="en">Digital inputs from hardware.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="8"/>
|
||||
<CANopenSubObject subIndex="01" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="02" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="03" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="04" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="05" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="06" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="07" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="08" name="Input" objectType="7" defaultValue="0x00"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="6200" name="Write output 8 bit" objectType="8" subNumber="9" memoryType="RAM" dataType="05" accessType="rw" PDOmapping="optional">
|
||||
<label lang="en">Write output 8 bit</label>
|
||||
<description lang="en">Digital outputs on hardware.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="8"/>
|
||||
<CANopenSubObject subIndex="01" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="02" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="03" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="04" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="05" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="06" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="07" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
<CANopenSubObject subIndex="08" name="Output" objectType="7" defaultValue="0x00"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="6401" name="Read analogue input 16 bit" objectType="8" subNumber="13" memoryType="RAM" dataType="03" accessType="ro" PDOmapping="optional">
|
||||
<label lang="en">Read analogue input 16 bit</label>
|
||||
<description lang="en">Analogue inputs from hardware. The integer value is left adjusted.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="12"/>
|
||||
<CANopenSubObject subIndex="01" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="09" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0A" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0B" name="Input" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="0C" name="Input" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
<CANopenObject index="6411" name="Write analogue output 16 bit" objectType="8" subNumber="9" memoryType="RAM" dataType="03" accessType="rw" PDOmapping="optional">
|
||||
<label lang="en">Write analogue output 16 bit</label>
|
||||
<description lang="en">Analogue outputs on hardware. The integer value is left adjusted.</description>
|
||||
<CANopenSubObject subIndex="00" name="max sub-index" objectType="7" dataType="05" accessType="ro" PDOmapping="no" defaultValue="8"/>
|
||||
<CANopenSubObject subIndex="01" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="02" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="03" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="04" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="05" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="06" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="07" name="Output" objectType="7" defaultValue="0"/>
|
||||
<CANopenSubObject subIndex="08" name="Output" objectType="7" defaultValue="0"/>
|
||||
</CANopenObject>
|
||||
</CANopenObjectList>
|
||||
<other>
|
||||
<file fileName="IO Example" fileCreator="JP" fileCreationDate="2016-03-25" fileCreationTime="18:04:29" fileVersion="-"/>
|
||||
<DeviceIdentity>
|
||||
<vendorName>CANopenNode</vendorName>
|
||||
<productName>CANopenNode</productName>
|
||||
<productText>
|
||||
<label lang="en">CANopenNode</label>
|
||||
<description lang="en" URI="http://canopennode.sourceforge.net">CANopenNode is an open source software stack used for serial communication of multiple devices over the CAN/CANopen Network.</description>
|
||||
</productText>
|
||||
</DeviceIdentity>
|
||||
<capabilities>
|
||||
<characteristicsList>
|
||||
<characteristic>
|
||||
<characteristicName>
|
||||
<label lang="en"/>
|
||||
</characteristicName>
|
||||
<characteristicContent>
|
||||
<label lang="en"/>
|
||||
</characteristicContent>
|
||||
</characteristic>
|
||||
</characteristicsList>
|
||||
</capabilities>
|
||||
<baudRate>
|
||||
<supportedBaudRate value="10 Kbps"/>
|
||||
<supportedBaudRate value="20 Kbps"/>
|
||||
<supportedBaudRate value="50 Kbps"/>
|
||||
<supportedBaudRate value="125 Kbps"/>
|
||||
<supportedBaudRate value="250 Kbps"/>
|
||||
<supportedBaudRate value="500 Kbps"/>
|
||||
<supportedBaudRate value="800 Kbps"/>
|
||||
<supportedBaudRate value="1000 Kbps"/>
|
||||
</baudRate>
|
||||
<dummyUsage>
|
||||
<dummy entry="Dummy0001=0"/>
|
||||
<dummy entry="Dummy0002=1"/>
|
||||
<dummy entry="Dummy0003=1"/>
|
||||
<dummy entry="Dummy0004=1"/>
|
||||
<dummy entry="Dummy0005=1"/>
|
||||
<dummy entry="Dummy0006=1"/>
|
||||
<dummy entry="Dummy0007=1"/>
|
||||
</dummyUsage>
|
||||
</other>
|
||||
</device>
|
||||
Loading…
Reference in a new issue