CANopen Master Protocol API 15 EN
CANopen Master Protocol API 15 EN
CANopen Master
V2.13.0
Table of Contents
1 Introduction ............................................................................................................................................. 4
1.1 About this Document ...................................................................................................................... 4
1.2 List of Revisions ............................................................................................................................. 4
1.3 Intended Audience ......................................................................................................................... 5
1.4 System Requirements .................................................................................................................... 5
1.5 Specifications ................................................................................................................................. 6
1.5.1 Technical Data .................................................................................................................................. 6
1.6 Terms, Abbreviations and Definitions ............................................................................................ 8
1.7 References ..................................................................................................................................... 8
1.8 Legal Notes .................................................................................................................................... 9
1.8.1 Copyright ........................................................................................................................................... 9
1.8.2 Important Notes ................................................................................................................................. 9
1.8.3 Exclusion of Liability ........................................................................................................................ 10
1.8.4 Export .............................................................................................................................................. 10
2 Fundamentals ....................................................................................................................................... 11
2.1 General Access Mechanisms on netX Systems .......................................................................... 11
2.2 Accessing the Protocol Stack by Programming the AP Task’s Queue ........................................12
2.2.1 Getting the Receiver Task Handle of the Process Queue ............................................................... 12
2.2.2 Meaning of Source- and Destination-related Parameters ................................................................ 12
2.3 Accessing the Protocol Stack via the Dual Port Memory Interface..............................................13
2.3.1 Communication via Mailboxes ......................................................................................................... 13
2.3.2 Using Source and Destination Variables correctly........................................................................... 14
2.3.3 Obtaining useful Information about the Communication Channel.................................................... 17
2.4 Client/Server Mechanism ............................................................................................................. 19
2.4.1 Application as Client ........................................................................................................................ 19
2.4.2 Application as Server....................................................................................................................... 20
3 Dual-Port-Memory ................................................................................................................................ 21
3.1 Cyclic Data (Input/Output Data) ................................................................................................... 21
3.1.1 Input Data Image ............................................................................................................................. 22
3.1.2 Process Data Output ....................................................................................................................... 22
3.2 Acyclic Data (Mailboxes) .............................................................................................................. 23
3.2.1 General Structure of Messages or Packets for Non-Cyclic Data Exchange .................................... 24
3.2.2 Status & Error Codes....................................................................................................................... 27
3.2.3 Differences between System and Channel Mailboxes..................................................................... 27
3.2.4 Send Mailbox................................................................................................................................... 27
3.2.5 Receive Mailbox .............................................................................................................................. 27
3.2.6 Channel Mailboxes (Details of Send and Receive Mailboxes) ........................................................ 28
3.3 Status ........................................................................................................................................... 29
3.3.1 Common Status ............................................................................................................................... 29
3.3.2 Extended Status .............................................................................................................................. 37
3.4 Control Block ................................................................................................................................ 47
4 Getting started / Configuration ........................................................................................................... 48
4.1 Overview about Essential Functionality ....................................................................................... 48
4.2 Configuration of the CANopen Master ......................................................................................... 48
4.2.1 Using the Packet Interface with write Access to the Dual-Port Memory .......................................... 48
4.2.2 Using the Configuration Tool SYCON.net ....................................................................................... 48
4.3 Task Structure of the CANopen Master Stack ............................................................................. 49
4.4 Handling of Process Data ............................................................................................................ 50
4.4.1 General............................................................................................................................................ 50
4.4.2 Mapping of Input and Output Image to Send and Receive Objects ................................................. 51
4.4.3 Obtaining Diagnostic Information from connected Slaves by sending an
RCX_GET_SLAVE_CONN_INFO_REQ Packet............................................................................................. 52
5 The Application Interface .................................................................................................................... 56
5.1 The CANopen-APM-Task ............................................................................................................ 56
5.1.1 CANOPEN_APM_GET_STATE_REQ/CNF – Get State of AP-Task .................................................... 57
5.1.2 CANOPEN_APM_WARMSTART_REQ/CNF – Set Warmstart Parameters ............................................ 59
5.1.3 CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ/CNF – Enable/Disable PDO Counter ... 63
5.2 The CANopen Master-Task ......................................................................................................... 66
5.2.1 CANOPEN_MASTER_REGISTER_REQ/CNF – Register Application .................................................. 68
1 Introduction
1.1 About this Document
This manual describes the application interface of the CANopen Master stack, with the aim to
support and lead you during the integration process of the given stack into your own application.
Base of the development of the stack itself is the Hilscher’s Task Layer Reference Programming
Model. It is a description of how to program a Task in general, which is defined as a combination of
appropriate functions belonging to the same type of protocol layer. It furthermore defines of how
different Tasks have to communicate with each other in order to exchange their layer information in
between. The reference model is commonly used by all programmers at Hilscher and shall be used
by you as well when writing your Application Task on top of the stack.
1.5 Specifications
The data below applies to CANopen Master firmware and stack version V2.13.0.
The firmware/stack has been designed in order to meet the CiA Work Draft 301 V4.02
specification.
netX 50 no
netX 100, netX 500 yes
PCI
Slot Number
Configuration
Diagnostic
Firmware supports common and extended diagnostic in the dual-port-memory for loadable
firmware
All variables, parameters, and data used in this manual have the LSB/MSB (“Intel”) data format.
This corresponds to the convention of the Microsoft C Compiler.
All IP addresses in this document have host byte order.
1.7 References
This document based on the following specification respectively documents:
[1] CAN in Automation e.V., Erlangen: CANopen Application Layer and Communication Profile,
CiA Draft Standard 301, Version 4.02, 2005
[2] Hilscher Gesellschaft für Systemautomation mbh: netX Dual-Port Memory Interface Manual.
Revision 12, 2012
[3] Hilscher Gesellschaft für Systemautomation mbH: CAN Data Link Packet Interface Protocol
API Manual, Revision 3, 2010-2013
Table 3: References
1.8.4 Export
The delivered product (including the technical data) is subject to export or import laws as well as
the associated regulations of different counters, in particular those of Germany and the USA. The
software may not be exported to countries where this is prohibited by the United States Export
Administration Act and its additional provisions. You are obligated to comply with the regulations at
your personal responsibility. We wish to inform you that you may require permission from state
authorities to export, re-export or import the product.
2 Fundamentals
2.1 General Access Mechanisms on netX Systems
This chapter explains the possible ways to access a Protocol Stack running on a netX system :
1. By accessing the Dual Port Memory Interface directly or via a driver.
2. By accessing the Dual Port Memory Interface via a shared memory.
3. By interfacing with the Stack Task of the Protocol Stack.
The picture below visualizes these three ways:
2 (Extended) Status Block Send Mailbox Reveive Mailbox Output Data Image Input Data Image
AP Task
3 Fieldbus Task(s)
Network
This chapter explains how to program the stack (alternative 3) correctly while the next chapter
describes accessing the protocol stack via the dual-port memory interface according to alternative
1 (and 2, if the user application is executed on the netX chip in the context of the rcX operating
system and uses the virtual DPM). Finally, chapter Obtaining Diagnostic Information from
connected Slaves by sending an RCX_GET_SLAVE_CONN_INFO_REQ Packeton page 52
describes the entire interface to the protocol stack in detail.
Depending on you choose the stack-oriented approach or the Dual Port Memory-based approach,
you will need either the information given in this chapter or those of the next chapter to be able to
work with the set of functions described in chapter Obtaining Diagnostic Information from
connected Slaves by sending an RCX_GET_SLAVE_CONN_INFO_REQ Packet. All of those
functions use the four parameters ulDest, ulSrc, ulDestId and ulSrcId. This chapter
and the next one inform about how to work with these important parameters.
The returned handle has to be used as value ulDest in all initiator packets the AP-Task intends to
send to the CANopen Master. This handle is the same handle that has to be used in conjunction
with the macros like TLR_QUE_SENDPACKET_FIFO/LIFO() for sending a packet to the
respective task.
Variable Meaning
ulDest Application mailbox used for confirmation
ulSrc Queue handle returned by TLR_QUE_IDENTIFY() as described above.
ulSrcId Used for addressing at a lower level
Table 5: Meaning of Source- and Destination-related Parameters
For more information about programming the AP task’s stack queue, please refer to the Hilscher
Task Layer Reference Model Manual. Especially the following sections might be of interest in this
context:
1. Section 7 “Queue-Packets”
2. Section 10.1.9 “Queuing Mechanism”
2.3 Accessing the Protocol Stack via the Dual Port Memory
Interface
This chapter defines the application interface of the CANopen Master Stack.
ulDest = 0x00
ulDest = 0x01
ulDest = 0x02
ulDest = 0x20
ulDest = 0x00
ulDest = 0x01
ulDest = 0x02
ulDest = 0x20
ulDest = 0x00
ulDest = 0x01
ulDest = 0x02
System Channel 0 Channel 1
Mailbox Mainbox Mailbox
netX OS
rcX
AP Task 1
AP Task 2
For use in the destination queue handle, the tasks have been assigned to hexadecimal numerical
values as described in the following table:
ulDest Description
0x00000000 Packet is passed to the netX operating system rcX
0x00000001 Packet is passed to communication channel 0
0x00000002 Packet is passed to communication channel 1
0x00000003 Packet is passed to communication channel 2
0x00000004 Packet is passed to communication channel 3
0x00000020 Packet is passed to communication channel of the mailbox
else Reserved, do not use
Table 6: Destination Queue Handle
The picture and the table above both show the use of the destination identifier ulDest.
A remark on the special channel identifier 0x00000020 (= Channel Token). The Channel Token is
valid for any mailbox. That way the application uses the same identifier for all packets without
actually knowing which mailbox or communication channel is applied. The packet stays 'local'. The
system mailbox is a little bit different, because it is used to communicate to the netX operating
CANopen Master | Protocol API
DOC070501API15EN | Revision 15 | English | 2016-02 | Released | Public © Hilscher, 2007-2016
Fundamentals 15/152
system rcX. The rcX has its own range of valid commands codes and differs from a communication
channel.
Unless there is a reply packet, the netX operating system returns it to the same mailbox the
request packet went through. Consequently, the host application has to return its reply packet to
the mailbox the request was received from.
Application #444
Process #11
Process #22
Process #33
Channel
Mainbox
Example:
This example applies to command messages initiated by a process in the context of the host
application. If the process #22 sends a packet through the channel mailbox to the AP task, the
packet header has to be filled in as follows:
For packets through the channel mailbox, the application uses 32 (= 0x20, Channel Token) for the
destination queue handler ulDest. The source queue handler ulSrc and the source identifier ulSrcId
are used to identify the originator of a packet. The destination identifier ulDestId can be used to
address certain resources in the protocol stack. It is not used in this example. The source queue
handler ulSrc has to be filled in. Therefore its use is mandatory; the use of ulSrcId is optional.
The netX operating system passes the request packet to the protocol stack's AP task. The protocol
stack then builds a reply to the packet and returns it to the mailbox. The application has to make
sure that the packet finds its way back to the originator (process #22 in the example).
This section describes a procedure how to obtain useful information for accessing the
communication channel(s) of your netX device and to check if it is ready for correct operation.
Proceed as follows:
3. Start with reading the channel information block within the system channel (usually starting at
address 0x0030).
4. Then you should check the hardware assembly options of your netX device. They are
located within the system information block following offset 0x0010 and stored as data type
UINT16. The following table explains the relationship between the offsets and the
corresponding xC Ports of the netX device:
Offset Port
0x0010 Hardware Assembly Options for xC Port[0]
0x0012 Hardware Assembly Options for xC Port[1]
0x0014 Hardware Assembly Options for xC Port[2]
0x0016 Hardware Assembly Options for xC Port[3]
Check each of the hardware assembly options whether its value has been set to
RCX_HW_ASSEMBLY_CAN = 0x0030. If true, this denotes that this xCPort is suitable for
running the CANopen protocol stack. Otherwise, this port is designed for another
communication protocol. In most cases, xC Port[2] will be used for field-bus systems, while
xC Port[0] and xC Port[1] are normally used for Ethernet communication.
5. You can find information about the corresponding communication channel (0…3) under the
following addresses:
Offset Communication Channel
0x0050 Communication Channel 0
0x0060 Communication Channel 1
0x0070 Communication Channel 2
0x0080 Communication Channel 3
In devices which support only one communication system which is usually the case (either a
single field-bus system or a single standard for Industrial-Ethernet communication), always
communication channel 0 will be used. In devices supporting more than one communication
system you should also check the other communication channels.
6. There you can find such information as the ID (containing channel number and port number)
of the communication channel, the size and the location of the handshake cells, the overall
number of blocks within the communication channel and the size of the channel in bytes.
Evaluate this information precisely in order to access the communication channel correctly.
The information is delivered as follows:
Size of Channel in Bytes
Address Data Type Description
Application netX
REQ
CNF
IND
RSP
Application netX
IND
RSP
3 Dual-Port-Memory
All data in the dual-port memory is structured in blocks. According to their functions, these blocks
use different data transfer mechanisms. For example, data transfer through mailboxes uses a
synchronized handshake mechanism between host system and netX firmware. The same is true
for IO data images, when a buffered handshake mode is configured. Other blocks, like the status
block, are read by the host application and use no synchronization mechanism.
Note: 48 byte are used for status information (16 byte for list of configured slaves, 16
byte for list of activated slaves and 16 byte for list of slaves with faults or errors).
The contents of these 48 byte is identical to the contents of the second part of the
Extended Status Block beginning at address 0x0100, see Table 28: Extended Status Block
for CANopen-Master – Second part (State Field Definition Block definition of the bit list state fields for
CANopen Master).
The send and receive mailbox areas are used by field bus protocols providing a non-cyclic data
exchange mechanism. Another use of the mailbox system is to allow access to the firmware
running on the netX chip itself for diagnostic and identification purposes. The send mailbox is used
to transfer cyclic data to the network or to the firmware. The receive mailbox is used to transfer
cyclic data from the network or from the firmware.
A send/receive mailbox may or may not be available in the communication channel. It depends on
the function of the firmware whether or not a mailbox is needed. The location of the system
mailbox and the channel mailbox is described in the netX DPM Interface Manual.
Note: Each mailbox can hold one packet at a time. The netX firmware stores packets
that are not retrieved by the host application in a packet queue. This queue has limited
space and may fill up so new packets maybe lost. To avoid these deadlock situations,
it is strongly recommended to empty the mailbox frequently, even if packets are not
expected by the host application. Unexpected command packets should be returned
to the sender with an Unknown Command in the status field; unexpected reply
messages can be discarded.
Structure Information
ulDest UINT32 Destination Queue Handle
Structure Information
… … User Data
Specific To The Command
Table 10: General Structure of Messages or Packets for Non-Cyclic Data Exchange
Some of the fields are mandatory; some are conditional; others are optional. However, the size of a
packet is always at least 10 double-words or 40 bytes. Depending on the command, a packet may
or may not have a data field. If present, the content of the data field is specific to the command,
respectively the reply.
The ulDest field identifies a task queue in the context of the netX firmware. The task queue
represents the final receiver of the packet and is assigned to a protocol stack. The ulDest field has
to be filled out in any case. Otherwise, the netX operating system cannot route the packet. This
field is mandatory.
The ulSrc field identifies the sender of the packet. In the context of the netX firmware (inter-task
communication) this field holds the identifier of the sending task. Usually, a driver uses this field for
its own handle, but it can hold any handle of the sending process. Using this field is mandatory.
The receiving task does not evaluate this field and passes it back unchanged to the originator of
the packet.
Destination Identifier
The ulDestId field identifies the destination of an unsolicited packet from the netX firmware to the
host system. It can hold any handle that helps to identify the receiver. Therefore, its use is
mandatory for unsolicited packets. The receiver of unsolicited packets has to register for this.
Source Identifier
The ulSrcId field identifies the originator of a packet. This field is used by a host application, which
passes a packet from an external process to an internal netX task. The ulSrcId field holds the
handle of the external process. When netX operating system returns the packet, the application
can identify the packet and returns it to the originating process. The receiving task on the netX
does not evaluate this field and passes it back unchanged. For inter-task communication, this field
is not used.
The ulLen field holds the size of the data field in bytes. It defines the total size of the packet’s
payload that follows the packet’s header. The size of the header is not included in ulLen. So the
total size of a packet is the size from ulLen plus the size of packet’s header. Depending on the
command, a data field may or may not be present in a packet. If no data field is included, the
length field is set to zero.
Identifier
The ulId field is used to identify a specific packet among others of the same kind. That way the
application or driver can match a specific reply or confirmation packet to a previous request packet.
The receiving task does not change this field and passes it back to the originator of the packet. Its
use is optional in most of the cases. But it is mandatory for sequenced packets. Example:
Downloading big amounts of data that does not fit into a single packet. For a sequence of packets
the identifier field is incremented by one for every new packet.
The ulState field is used in response or confirmation packets. It informs the originator of the packet
about success or failure of the execution of the command. The field may be also used to hold
status information in a request packet.
Command / Response
The ulCmd field holds the command code or the response code, respectively. The
command/response is specific to the receiving task. If a task is not able to execute certain
commands, it will return the packet with an error indication. A command is always even (the least
significant bit is zero). In the response packet, the command code is incremented by one indicating
a confirmation to the request packet.
Extension
The extension field ulExt is used for controlling packets that are sent in a sequenced manner. The
extension field indicates the first, last or a packet of a sequence. If sequencing is not required, the
extension field is not used and set to zero.
Routing information
The ulRout field is used internally by the netX firmware only. It has no meaning to a driver type
application and therefore set to zero.
This field contains data related to the command specified in ulCmd field. Depending on the
command, a packet may or may not have a data field. The length of the data field is given in the
ulLen field.
The size is 1596 bytes for the send mailbox in the default memory layout. The mailbox is
accompanied by counters that hold the number of packages that can be accepted.
3.3 Status
A status block is present within the communication channel. It contains information about network
and task related issues. In some respects, status and control block are used together in order to
exchange information between host application and netX firmware. The application reads a status
block whereas the control block is written by the application. Both status and control block have
registers that use the Change of State mechanism (see also section 2.2.1 of the netX Dual-Port-
Memory manual).
Common Status
Common Status
0x0028 UINT32 ulErrorCount Error Count
Total Number of Detected Error
Since Power-Up or Reset
Number of available Log
Entries
0x002C UINT8 bErrorLogInd
Not supported yet (see page
34)
Number of input process data
0x002D UINT8 bErrorPDInCnt
handshake errors
Number of output process data
0x002E UINT8 bErrorPDOutCnt
handshake errors
Number of synchronization
0x002F UINT8 bErrorSyncCnt handshake errors
Not supported yet
Synchronization Handshake
0x0030 UINT8 bSyncHskMode Mode
Not supported yet
Synchronization Source
0x0031 UIN8 bSyncSource
(see page 35)
Reserved
0x0032 UINT16 ausReserved[3]
Set to 0
Table 12: Common Status Structure Definition
The communication change of state register contains information about the current operating
status of the communication channel and its firmware. Every time the status changes, the netX
protocol stack toggles the netX Change of State Command flag in the netX communication flags
register (see section 3.2.2.1 of the netX DPM Interface Manual). The application then has to toggle
the netX Change of State Acknowledge flag back acknowledging the new state (see section
3.2.2.2 of the netX DPM Interface Manual).
The communication state field contains information regarding the current network status of the
communication channel. Depending on the implementation, all or a subset of the definitions below
is supported.
UNKNOWN #define RCX_COMM_STATE_UNKNOWN 0x00000000
NOT_CONFIGURED #define RCX_COMM_STATE_NOT_CONFIGURED 0x00000001
STOP #define RCX_COMM_STATE_STOP 0x00000002
IDLE #define RCX_COMM_STATE_IDLE 0x00000003
OPERATE #define RCX_COMM_STATE_OPERATE 0x00000004
This field holds the current error code of the communication channel. If the cause of error is
resolved, the communication error field is set to zero (= RCX_SYS_SUCCESS) again. Not all of the
error codes are supported in every implementation. Protocol stacks may use a subset of the error
codes below.
SUCCESS #define RCX_SYS_SUCCESS 0x00000000
Runtime Failures
Initialization Failures
Configuration Failures
Network Failures
The version field holds version of this structure. It starts with one; zero is not defined.
STRUCTURE VERSION #define RCX_STATUS_BLOCK_VERSION 0x0002
This field holds the configured watchdog timeout value in milliseconds. The application may set its
watchdog trigger interval accordingly. If the application fails to copy the value from the host
watchdog location to the device watchdog location, the protocol stack will interrupt all network
connections immediately regardless of their current state. For details, see section 4.13 of the netX
DPM Interface Manual.
The protocol stack supervises the host system using the watchdog function. If the application fails
to copy the value from the device watchdog location (section 3.2.5 of the netX DPM Interface
Manual) to the host watchdog location (section 3.2.4 of the netX DPM Interface Manual), the
protocol stack assumes that the host system has some sort of problem and shuts down all network
connections. For details on the watchdog function, refer to section 4.13 of the netX DPM Interface
Manual.
This field holds the total number of errors detected since power-up, respectively after reset. The
protocol stack counts all sorts of errors in this field no matter if they were network related or caused
internally.
Not supported yet: The error log indicator field holds the number of entries in the internal error log.
If all entries are read from the log, the field is set to zero.
TBD
TBD
This counter will be incremented if the device detects a not handled synchronization indication.
This field is not supported yet.
Synchronization Status
Master Status
Slave State
The slave state field is available for master implementations only. It indicates whether the master is
in cyclic data exchange to all configured slaves. In case there is at least one slave missing or if the
slave has a diagnostic request pending, the status is set to FAILED. For protocols that support
non-cyclic communication only, the slave state is set to OK as soon as a valid configuration is
found.
The error log indicator field holds the number of entries in the internal error log. If all entries are
read from the log, the field is set to zero.
The firmware maintains a list of slaves to which the master has to open a connection. This list is
derived from the configuration database created by SYCON.net (see section 6.1 of the netX Dual-
Port Memory Manual). This field holds the number of configured slaves.
The firmware maintains a list of slaves to which the master has successfully opened a connection.
Ideally, the number of active slaves is equal to the number of configured slaves. For certain field
bus systems it could be possible that the slave is shown as activated, but still has a problem in
terms of a diagnostic issue. This field holds the number of active slaves.
If a slave encounters a problem, it can provide an indication of the new situation to the master in
certain field bus systems. As long as those indications are pending and not serviced, the field holds
a value unequal zero. If no more diagnostic information is pending, the field is set to zero.
Note: Have in mind, that all offsets mentioned in this section are relative to the
beginning of the common status block, as the start offset of this block depends on the
size and location of the preceding blocks.
Note: Each offset is always related to the begin of correspondent channel start.
The definition of the first structure remains specific to correspondent protocol and contains
additional information about network status (i.e. flags, error counters, events etc.).
The second structure begins at offset 0x00FC and provides the definition of the up to 32
independent State Fields. These state fields can be defined to represent a kind of bit-list, byte-list
etc. with up to 65535 entities. In this way a common access mechanism for different state
definitions and quantities can be provided independent of protocol implementation.
The Extended Status Block for CANopen Master is structured as follows:
At address 0x0050, the following data structure is stored:
struct CANOPEN_MASTER_EXTENDED_STATE_Ttag
{
CANOPEN_MASTER_GLOBAL_STATE_T tGlobalState;
CANOPEN_MASTER_ADDITIONAL_INFO_T tAdditionalInfo;
};
The Extended Status Block of CANopen is built of 2 parts, the Global Status Block and the
Additional Info Block:
Extended Status Block for CANopen Master
bGlobalBits parameter
Offset / Bit D7 D6 D5 D4 D3 D2 D1 D0
0x60 7 6 5 4 3 2 1 0
0x61 15 14 13 12 11 10 9 8
0x62 23 22 21 20 19 18 17 16
…
0x6F 127 126 125 124 123 122 121 120
Table 22: Table explaining the Relation between Node Address and the abListProjectedNodes Bit
Offset / Bit D7 D6 D5 D4 D3 D2 D1 D0
0x70 7 6 5 4 3 2 1 0
0x71 15 14 13 12 11 10 9 8
0x72 23 22 21 20 19 18 17 16
…
0x7F 127 126 125 124 123 122 121 120
Table 23: Table explaining the Relation between Node Address and the abListActivatedNodes Bit
Offset / Bit D7 D6 D5 D4 D3 D2 D1 D0
0x80 7 6 5 4 3 2 1 0
0x81 15 14 13 12 11 10 9 8
0x82 23 22 21 20 19 18 17 16
…
0x8F 127 126 125 124 123 122 121 120
Table 24: Table explaining the Relationship between Node Address and the abListDiagnosticNodes Bit
The following relationship is valid between the abListActivatedNodes bit and the
abListDiagnosticNodes bit:
abListActivatedNodes = 0 abListActivatedNodes = 1
abListDiagnosticNodes = 0 - node not in operation, no Data IO - node is present on the bus, node
Exchange between master and node guarding active
- Perhaps this slave is not configured - PDO exchange between master and
node happens as configured
abListDiagnosticNodes = 1 - node is not operating, node guarding - node is present on the bus, node
failed guarding or heartbeat is active, PDO
- The master holds newly received exchange
diagnostic data in the internal - The master holds newly received
diagnostic buffer diagnostic data in the internal
diagnostic buffer
Table 25: Relationship between the abListDiagnosticNodes bit and the abListDiagnosticNodes bit
ulFlags
For the CANopen Master protocol implementation, the Extended Status Area is structured as
follows:
/*********************************************************************************/
/** type of CANOPEN_MASTER_GLOBAL_STATE_Ttag */
typedef struct CANOPEN_MASTER_GLOBAL_STATE_Ttag
CANOPEN_MASTER_GLOBAL_STATE_T;
#define CANOPEN_MASTER_GLOBAL_STATE_ERROR_SIZE 4
#define CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE 16
struct CANOPEN_MASTER_GLOBAL_STATE_Ttag
{
TLR_UINT8 bGlobalBits;
TLR_UINT8 bCanState;
TLR_UINT8 bErrorNodeAddress;
TLR_UINT8 bErrorEvent;
TLR_UINT16 usBusErrorCount;
TLR_UINT16 usBusOffCount;
TLR_UINT16 usMsgTimeOut;
TLR_UINT16 usRxOverFlow;
TLR_UINT8 abGlobalError[CANOPEN_MASTER_GLOBAL_STATE_ERROR_SIZE];
TLR_UINT8 abListProjectedNodes[CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE];
TLR_UINT8 abListActivatedNodes[CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE];
TLR_UINT8 abListDiagnosticNodes[CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE];
};
/*********************************************************************************/
/** type of CANOPEN_MASTER_ADDITIONAL_INFO_Ttag */
typedef struct CANOPEN_MASTER_ADDITIONAL_INFO_Ttag
CANOPEN_MASTER_ADDITIONAL_INFO_T;
struct CANOPEN_MASTER_ADDITIONAL_INFO_Ttag
{
TLR_UINT32 ulFlags;
TLR_UINT32 ulReserved;
TLR_UINT32 ulLastDiagAddress;
TLR_UINT32 ulLastDiagInfo;
TLR_UINT32 ulBusOffEveCnt;
TLR_UINT32 ulErrorPassiveEveCnt;
TLR_UINT32 ulRxOverflowCnt;
TLR_UINT32 ulTxOverflowCnt;
TLR_UINT32 aulReserved[8];
TLR_UINT32 ulMaxRecvIdx;
TLR_UINT32 ulMaxSendIdx;
TLR_UINT32 aulAddDetail[CANOPEN_MASTER_ADD_DETAIL_SIZE];
};
/*********************************************************************************/
/** type of CANOPEN_MASTER_EXTENDED_STATE_Ttag */
typedef struct CANOPEN_MASTER_EXTENDED_STATE_Ttag
CANOPEN_MASTER_EXTENDED_STATE_T;
struct CANOPEN_MASTER_EXTENDED_STATE_Ttag
{
CANOPEN_MASTER_GLOBAL_STATE_T tGlobalState;
CANOPEN_MASTER_ADDITIONAL_INFO_T tAdditionalInfo;
};
Besides the global state flags and error counters additional status bit lists of slaves are defined in
this structure. These bit lists contain the current state information of all slave devices the master
communicates with (i.e. 16bytes = 128 devices). Despite the fact that the implementation of
extended status block is protocol specific, the place and definition of these bit lists are to a greater
or lesser extent similar for all Hilscher Fieldbus Master protocol stacks. The layout of this block is
still maintained with actual specification and will be supported further. The example below shows a
generic way to define the corresponding location of the bit lists located at the offsets 0x60, 0x70
and 0x80 (see Table above). Three state structures are needed to be defined to locate such bit
lists i.e. inside of input data block.
Extended Status Block for CANopen-Master – Second part (State Field Definition Block)
Offset Type Name Description/Value
0x00FC unsigned char bReserved[3] Reserved. Do not use.
0x00FF unsigned char bNumStateStructs Number of State Structures defined below = 3
NETX_EXTENDED_ atStateStruct[0] Structure to define State field properties
STATE_STRUCT_T
0x0100 unsigned char bStateArea =0. State field is located in standard input area of channel
0
unsigned char bStateTypeID =1. Corresponds to a bit list (one bit per node ) of
configured nodes
unsigned short usNumOfStateEntries =128. Corresponds to 128 bits, each representing a slave
unsigned long ulStateOffset Contains an offset pointer to a state field inside input data
area 0, which contains the list of projected nodes. See
description of the list of projected nodes area above.
NETX_EXTENDED_ atStateStruct[1] Structure to define State field properties
STATE_STRUCT_T
0x0108 unsigned char bStateArea =0. State field is located in standard input area of channel
0
unsigned char bStateTypeID =2. Corresponds to a bit list (one bit per node ) of active
nodes
unsigned short usNumOfStateEntries =128. Corresponds to 128 bits, each representing a slave
unsigned long ulStateOffset Contains an offset pointer to a state field inside input data
area 0, which contains the list of activated nodes. See
description of the list of activated nodes area above.
NETX_EXTENDED_ atStateStruct[2] Structure to define State field properties
STATE_STRUCT_T
0x0110 unsigned char bStateArea =0. State field is located in standard input area of channel
0
unsigned char bStateTypeID =3. Corresponds to a bit list (one bit per node ) of
diagnostic nodes
unsigned short usNumOfStateEntries =128. Corresponds to 128 bits, each representing a slave
unsigned long ulStateOffset Contains an offset pointer to a state field inside input data
area 0, which contains the list of diagnostic nodes. See
description of the list of diagnostic nodes area above.
Table 28: Extended Status Block for CANopen-Master – Second part (State Field Definition Block definition of the bit list
state fields for CANopen Master).
If the location of the state fields is defined to be inside of input data area 0 block (as it is shown in
generic example above), the corresponding bit lists will be updated by the stack consistently to the
data in this area. Moreover, the data and corresponding state fields can be read out by the host
application as one data block i.e. with DMA support.
Control Block
For more information concerning the Control Block please refer to the netX DPM Interface Manual.
For the explanation of the different kinds of arrows see lower left corner of figure.
The dual-port memory is used for exchange of information, data and packets. Configuration and IO
data will be transferred using this way.
The user application only accesses the task located in the highest layer namely the AP task which
constitutes the application interface of the CANopen Master stack.
The triple buffer mechanism provides a consistent synchronous access procedure from both sides
(DPM and AP task). The triple buffer technique ensures that the access will always affect the last
written cell.
In detail, the various tasks have the following functionality and responsibilities:
AP-Task
The AP-Task provides the interface to the user application and the control of the stack. It also
completely handles the Dual Port Memory interface of the communication channel. In detail, it is
responsible for the following:
Handling the communication channels DPM-interface
Configuration of protocol stack
IO Process data exchange
Channel mailboxes
Watchdog supervision
Handling of applications packets
Send/Receive packets
The CANopen Master Task is the center part of CANopen Master stack implementation. It is
responsible for the protocol handling, the communication to/from CAN_DL layer and it is the
counterpart of the AP-Task.
CAN_DL Task
The CAN_DL Task handles the interface of the XC CAN and is responsible for configuration,
events and sending and receiving of CAN-Frames.
DPM output image byte offset Send object index Send object sub-index
0 2000h 01h
1 2000h 02h
.. .. ..
127 2000h 80h
128 2001h 01h
.. .. ..
3582 201Bh 7Fh
3583 201Bh 80h
Table 32: Mapping of Output Data
/*************************************************************************************/
struct CANOPEN_MASTER_NODE_DIAG_Ttag
{
TLR_UINT32 ulNodeFlags; /* Flags of node (error and info) */
TLR_RESULT eLastDiagInfo; /* Last diagnostic information */
TLR_BOOLEAN32 fDeviceTypeValid; /* Device Type in information is valid */
TLR_UINT32 ulDeviceType; /* Device Type of node */
TLR_UINT32 ulNmtState; /* NMT state of node */
TLR_UINT32 ulEmcyCnt; /* Number of emergency telegrams in buffer */
CANOPEN_MASTER_EMCY_ENTRY_T atEmcyData[CANOPEN_MASTER_MAX_EMCY_CNT];
TLR_UINT32 ulAddInfo;
TLR_UINT32 aulReserved[4];
};
atEmcyData[5] Data field for emergency entries consisting of 5 blocks each sized 8 bytes
ulAddInfo UINT32 Additional info
ulNodeFlags
eLastDiagInfo
In this information the last diagnostic information of this node station is stored.
fDeviceTypeValid
This variable indicates whether the device type in variable ulDeviceType is valid or not.
ulDeviceType
These four bytes are read out from the node while startup. There are several predefined profile
numbers existing each described in an own specification manual. Here is an extract of these:
Device Profile for I/O modules: 401 decimal.
Device Profile for Drives and Motion Control: 402 decimal.
Device Profile for Encode: 406 decimal.
ulNmtState
This variable holds the internal NMT state of the node according to the following table:
ulEmcyCnt
This variable contains the number of saved emergency telegrams in the buffer (the data area set
up by atEmcyData[5] spanning the next following 40 bytes)
atEmcyData[5]
In this area the containments of the emergency messages are saved. Each emergency message
contains 8 bytes of data
ulAddInfo
Additional information
aulReserved[4]
The returned handle has to be used as value ulDest in all request packets to be sent to the APM-
Task. This handle is the same handle that has to be used in conjunction with the macros like
TLR_QUE_SENDPACKET_FIFO/LIFO() for sending a packet to the APM-Task.
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NAPM
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.1 Codes of the CANopen-APM-Task
ulCmd UINT32 0x00003A00 CANOPEN_APM_GET_STATE_REQ - Command
ulExt UINT32 0 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 x Routing, do not touch
Table 38: CANOPEN_APM_PCK_GET_STATE_REQ_T – Get State of AP-Task Request
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.1 Codes of the CANopen-APM-Task
ulCmd UINT32 0x00003A01 CANOPEN_APM_GET_STATE_CNF - Command
ulExt UINT32 0 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 x Routing, do not touch
Structure CANOPEN_APM_GET_STATE_CNF_DATA_T
ulHighest UINT32 0.. 28 Number of the highest PDO mapped send triple buffer.
MappedSend
BufferNum
ulHighest UINT32 0.. 28 Number of the highest PDO mapped receive triple buffer.
MappedRecv
BufferNum
Table 39: CANOPEN_APM_PCK_GET_STATE_CNF_T – Get State of AP-Task Confirmation
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NAPM
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 36 Packet Data Length (In Bytes)
32
ulId UINT32 0 ... 2 -1 Packet Identification As Unique Number
ulSta UINT32 See section 6.1 Codes of the CANopen-APM-Task
ulCmd UINT32 0x00003A02 CANOPEN_APM_WARMSTART_REQ - Command
ulExt UINT32 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 Routing, do not touch
Structure CANOPEN_APM_WARMSTART_REQ_DATA_T
ulSystemFlags UINT32 System Flags
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPE Source End Point Identifier, untouched
NMST0Id
ulLen UINT32 36 Packet Data Length (In Bytes)
32
ulId UINT32 0 ... 2 -1 Packet Identification as Unique Number
ulSta UINT32 See section 6.1 Codes of the CANopen-APM-Task
ulCmd UINT32 0x00003A0 CANOPEN_APM_WARMSTART_CNF - Command
3
ulExt UINT32 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 Routing, do not touch
Structure CANOPEN_APM_WARMSTART_CNF_DATA_T
ulSystemFlags UINT32 System Flags
5.1.3 CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ/CNF –
Enable/Disable PDO Counter
This packet allows to enable (ulMode= CANOPEN_APM_ENABLE_PDO_COUNTER=1) or to disable
(ulMode= CANOPEN_APM_DISABLE_PDO_COUNTER=0) the PDO counter.
The confirmation packet additionally returns the offset of the PDO Counter in the DPM.
/*************************************************************************************/
/** type of CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_Ttag */
typedef struct CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_Ttag
CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_T;
struct CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_Ttag
{
TLR_UINT32 ulMode;
};
/*************************************************************************************/
/** type of CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_REQ_Ttag */
typedef struct CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_REQ_Ttag
CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_REQ_T;
struct CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header */
CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_T tData; /** packet data */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle
QUE_CANOPE
NAPM
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process. Set to 0 for the Initialization
Packet
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.1 Codes of the CANopen-APM-Task
ulCmd UINT32 0x3A04 CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ -
Command
ulExt UINT32 0 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 x Routing, do not touch
Structure CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_T
ulMode UINT32 0,1 Mode
0: Disable PDO Counter
1: Enable PDO Counter
Table 42: CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ –Enable/Disable PDO Counter Request
struct CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_CNF_DATA_Ttag
{
TLR_UINT32 ulMode;
TLR_UINT32 ulDpmOffset;
};
/*************************************************************************************/
/** type of CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_CNF_Ttag */
typedef struct CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_CNF_Ttag
CANOPEN_APM_PCK_ENABLE_DISABLE_PDO_COUNTER_CNF_T;
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle
ulSrc UINT32 Source Queue-Handle
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, specifying the final receiver of the
packet within the Destination Process. Set to 0 for the Initialization
Packet
ulSrcId UINT32 ulCANOPEN Source End Point Identifier, specifying the origin of the packet inside
MST0Id the Source Process
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.1 Codes of the CANopen-APM-Task
ulCmd UINT32 0x00003A05 CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_CNF -
Command
ulExt UINT32 0 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 x Routing, do not touch
Structure CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_CNF_DATA_T
ulMode UINT32 0,1 Mode
0: Disable PDO Counter
1: Enable PDO Counter
ulDpmOffset UINT32 Offset of PDO Counter in the DPM
Table 43: CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_CNF – Confirmation of Enable/Disable PDO Counter
Request
The returned handle has to be used as value ulDest in all request packets to be sent to the
CANopen Master-Task. This handle is the same handle that has to be used in conjunction with the
macros like TLR_QUE_SENDPACKET_FIFO/LIFO() for sending a packet to the CANopen Master-
Task.
In detail, the following functionality is provided by the CANopen Master-Task:
Overview over Packets of the CANopen Master-Task
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
Note: This packet is used by the AP-Task only and will not be routed from the user
application to the CANopen Master task.
Note: This packet will no longer be supported by the firmware described in this
document after September 1, 2009.
Instead use the registering functionality described in the netX Dual-Port-Memory
Manual instead (RCX_REGISTER_APP_REQ, code 0x2F10).
struct CANOPEN_MASTER_REGISTER_REQ_DATA_Ttag
{
TLR_UINT32 ulReserved;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 QUE_CANOPE Destination Queue-Handle of CANopen Master-Task Process Queue
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See Table 47: CANOPEN_MASTER_REGISTER_REQ – Packet
Status/Error
ulCmd UINT32 0x00002800 CANOPEN_MASTER_REGISTER_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_REGISTER_REQ_DATA_T
ulReserved UINT32 Reserved for further use, set to zero
Table 46: CANOPEN_MASTER_PACKET_REGISTER_REQ_T – Register Application Request
Packet Status/Error
struct CANOPEN_MASTER_REGISTER_CNF_DATA_Ttag
{
TLR_UINT32 ulReserved;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See Table 49: CANOPEN_MASTER_REGISTER_CNF – Packet
Status/Error
ulCmd UINT32 0x00002801 CANOPEN_MASTER_REGISTER_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_REGISTER_CNF_DATA_T
ulReserved UINT32 Reserved for further use, set to zero
Table 48: CANOPEN_MASTER_PACKET_REGISTER_CNF_T – Register Application Confirmation
Packet Status/Error
#define CANOPEN_MASTER_RECV_OBJECT_CNT 28
#define CANOPEN_MASTER_MIN_RECV_SUB_IDX 1
#define CANOPEN_MASTER_MAX_RECV_SUB_IDX 128
#define CANOPEN_MASTER_SEND_OBJECT_CNT 28
#define CANOPEN_MASTER_MIN_SEND_SUB_IDX 1
#define CANOPEN_MASTER_MAX_SEND_SUB_IDX 128
struct CANOPEN_MASTER_EXCHANGE_DATA_REQ_DATA_Ttag
{
TLR_UINT32 ulRecvIndex; /* Object index for recv data */
TLR_UINT32 ulRecvSubIndex; /* Object sub-index for recv data */
TLR_UINT32 ulRecvDataCnt; /* Recv data count */
TLR_UINT8 abSendData[CANOPEN_MASTER_MAX_SEND_SUB_IDX];
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 24 ... 152 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000280A CANOPEN_MASTER_EXCHANGE_DATA_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_EXCHANGE_DATA_REQ_DATA_T
ulRecvIndex UINT32 2200h...221Bh Receive object index
ulRecvSub UINT32 1.. 128 Receive object sub-index
Index
ulRecvData UINT32 0..128 Number data byte to be read
Cnt
ulSendIndex UINT32 2000h...201Bh Send object index
ulSendSub UINT32 1.. 128 Send object sub-index
Index
ulSendDataCnt UINT32 0 ...128 Number data byte to be sent
abSendData UINT8[ ] Send data
[128]
Table 50: CANOPEN_MASTER_PACKET_EXCHANGE_DATA_REQ_T – Exchange Data Request
#define CANOPEN_MASTER_RECV_OBJECT_CNT 28
#define CANOPEN_MASTER_MIN_RECV_SUB_IDX 1
#define CANOPEN_MASTER_MAX_RECV_SUB_IDX 128
#define CANOPEN_MASTER_SEND_OBJECT_CNT 28
#define CANOPEN_MASTER_MIN_SEND_SUB_IDX 1
#define CANOPEN_MASTER_MAX_SEND_SUB_IDX 128
struct CANOPEN_MASTER_EXCHANGE_DATA_CNF_DATA_Ttag
{
TLR_UINT32 ulRecvIndex; /* Object index for recv data */
TLR_UINT32 ulRecvSubIndex; /* Object sub-index for recv data */
TLR_UINT32 ulRecvDataCnt; /* Recv data count */
TLR_UINT8 abRecvData[CANOPEN_MASTER_MAX_RECV_SUB_IDX];
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 24 ... 152 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000280B CANOPEN_MASTER_EXCHANGE_DATA_CNF- Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
structure CANOPEN_MASTER_EXCHANGE_DATA_CNF_DATA_T
ulRecvIndex UINT32 2200h...221Bh Receive object index
ulRecvSub UINT32 1.. 128 Receive object sub-index
Index
ulRecvData UINT32 0..128 Number data byte to be read
Cnt
ulSendIndex UINT32 2000h...201Bh Send object index
ulSendSub UINT32 1.. 128 Send object sub-index
Index
ulSendData UINT32 0..128 Number data byte to be sent
Cnt
abRecvData UINT8[ ] Receive data
[128]
Table 51: CANOPEN_MASTER_PACKET_EXCHANGE_DATA_CNF_T –Exchange Data Confirmation
struct CANOPEN_MASTER_STARTSTOP_REQ_DATA_Ttag
{
TLR_UINT32 ulMode;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002802 CANOPEN_MASTER_STARTSTOP_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_STARTSTOP_REQ_DATA_T
ulMode UINT32 Depending on this assignment, CANopen is either started or stopped:
0 Stop CANopen
1 Start CANopen
Table 52: CANOPEN_MASTER_PACKET_STARTSTOP_REQ_T – Start/Stop CANopen Network Request
struct CANOPEN_MASTER_STARTSTOP_CNF_DATA_Ttag
{
TLR_UINT32 ulMode;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002803 CANOPEN_MASTER_STARTSTOP_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
structure CANOPEN_MASTER_STARTSTOP_CNF_DATA_T
ulMode UINT32 Depending on this assignment, CANopen is either started or stopped:
0 Stop CANopen
1 Start CANopen
Table 53: CANOPEN_MASTER_PACKET_STARTSTOP_CNF_T – Start/Stop CANopen Network Confirmation
Note: Use this packet preferably when working with linkable object modules. In the
context of loadable firmware we recommend to use ‘config reload’ instead
Note: This command does not delete configuration databases. If the CANopen Master
is configured by configuration database, this configuration is reloaded again after the
initialize command is completed.
struct CANOPEN_MASTER_INITIALIZE_REQ_DATA_Ttag
{
TLR_UINT32 ulReserved;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPEN
MST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENMS Destination End Point Identifier, specifying the final receiver of the
T0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002804 CANOPEN_MASTER_INITIALIZE_REQ – Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_INITIALIZE_REQ_DATA_T
ulReserved UINT32 Reserved for further use, set to zero
Table 54: CANOPEN_MASTER_PACKET_INITIALIZE_REQ_T – Initialization of CANopen Master Request
Packet Status/Error
Definition / (Value) Description
TLR_S_OK Status ok
(0x00000000)
Table 55: CANOPEN_MASTER_INITIALIZE_REQ – Packet Status/Error
struct CANOPEN_MASTER_INITIALIZE_CNF_DATA_Ttag
{
TLR_UINT32 ulReserved;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002805 CANOPEN_MASTER_INITIALIZE_CNF- Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_INITIALIZE_CNF_DATA_T
ulReserved UINT32 Reserved for further use, set to zero
Table 56: CANOPEN_MASTER_PACKET_INITIALIZE_CNF_T – Initialization of CANopen Master Confirmation
#define CANOPEN_MASTER_MIN_MASTER_NODE_ID 1
#define CANOPEN_MASTER_MAX_MASTER_NODE_ID 127
struct CANOPEN_MASTER_CFG_BUS_PARAM_Ttag
{
TLR_UINT32 ulMasterNodeId; /* Node ID of CANopen Master */
TLR_UINT32 ulBaudRate; /* Baudrate */
TLR_BOOLEAN32 fGlobalStartNode; /* Send global start node */
TLR_BOOLEAN32 f29BitSelector; /* Enable 29-Bit identifier */
TLR_UINT32 ulAcceptCode; /* Accept code for 29-Bit identifier */
TLR_UINT32 ulAcceptMask; /* Accept mask for 29-Bit identifier */
TLR_UINT32 ulCobIdSync; /* Master SYNC message */
TLR_UINT32 ulSyncTimer; /* Cycletime of SYNC message */
TLR_UINT32 ulProdHeartbeatTimer; /* Producer heartbeat time */
TLR_UINT32 ulAutoClear; /* Auto clear mode on/off */
TLR_UINT32 ulIntelMotorola; /* Intel or Motorola format */
};
The variable ulMasterNodeId indicating the node ID of the CANopen master is required for the
addressing of the device at the bus and has to be unique in the network. Therefore it is not allowed
to use this number two times in the same network. Allowed values range from 1 to 127.
The baud rate of the CANopen network can be set using the ulBaudRate variable. The settings
listed in the following table are applicable:
The flag fGlobalStartNode decides whether a global CANopen Start_Node signal is sent to the
CANopen network by the master after initialization of all nodes. If the flag is logically 1 the master
will send it, if it is logically 0 the master will not send it.
The flag f29BitSelector decides whether 11-bit or 29-bit-addresses are used for the COB-IDs in
the CANopen network. If the value is 1, then 29-bit-addresses are enabled otherwise 11-bit-
addresses will be used. 29-bit mode is not supported yet.
The ulAcceptCode variable is part of a receive filter for the 29-bit COB-IDs which can be defined
optionally. Those are the bits set to filter the IDs. Those bits must have the value ‘1’ in the
acceptance code and the reaching COB ID to pass the filter. If a bit is not set in the Acceptance
Mask, the filter will pass the message anyway. 29-bit mode is not supported yet.
Similarly, the ulAcceptMask variable is part of a receive filter for the 29-bit COB-IDs which
optionally can be defined. Here it is possible to define the bits, the filter uses. In other words: All
bits not set will not be filtered out. 29-bit mode is not supported yet.
The ulCobIdSync variable contains the COB-ID for the SYNC message.
This parameter has a valid range from 1 to 2047 the recommended values is 80h. This COB-ID is
configured via the SDO-Download function to each configured node during the start up process of
the bus.
The periodic cycle time of the SYNC message send mechanism can be adjusted with the
ulSyncTimer variable. The reload timer value for the SYNC-message defines the cycle time in
multiples of 1 msec., when the next SYNC-message will be transferred to the nodes. A value of 0
here indicates that the timer has been disabled.
The variable ulProdHeartbeatTimer enables or disables the Heartbeat request protocol of the
device. The value can be either 0 or a time value specified in multiples of a millisecond. The
specified value of time itself defines the time between two consecutive requests. If a value unequal
0 is configured the heartbeat request functionality of the device is enabled. In this case it starts
right after finishing the initialization when entering the pre-operational state with sending the
heartbeat requests as producer based on the values in the variables ulMasterNodeId and
ulProdHeartbeatTimer. All other node devices which support heartbeat guarding and are
configured to listen to this produced heartbeat requests can guard the device.
The variable ulAutoClear indicates whether auto clear mode is enabled or disabled. The auto
clear mode defines the system behavior if one node classified as active has been disconnected. If
auto clear mode has been activated then the card will stop the communication to all other nodes
too, otherwise it will try to restart the missed node and keep on running.
The variable ulIntelMotorola indicates whether the data are interpreted according to the Intel
or motorola format. It changes the interpretation of word oriented PDO data from LSB/MSB format
to MSB/LSB format and vice versa.
struct CANOPEN_MASTER_SET_BUSPARAM_REQ_DATA_Ttag
{
CANOPEN_MASTER_CFG_BUS_PARAM_T tCfgBusParam;
};
struct CANOPEN_MASTER_PACKET_SET_BUSPARAM_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SET_BUSPARAM_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 44 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002806 CANOPEN_MASTER_SET_BUSPARAM_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SET_BUSPARAM_REQ_DATA_T
tCfgBusParam See Table 57: CANOPEN_MASTER_CFG_BUS_PARAM_T - Bus Parameter
Table 59: CANOPEN_MASTER_SET_BUSPARAM_REQ_DATA_T – Set Bus Parameter Request
struct CANOPEN_MASTER_SET_BUSPARAM_CNF_DATA_Ttag
{
CANOPEN_MASTER_CFG_BUS_PARAM_T tCfgBusParam;
};
struct CANOPEN_MASTER_PACKET_SET_BUSPARAM_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SET_BUSPARAM_CNF_DATA_T tData; /** packet confirmation data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 44 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002807 CANOPEN_MASTER_SET_BUSPARAM_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_SET_BUSPARAM_REQ_DATA_T
tCfgBusParam See Table 57: CANOPEN_MASTER_CFG_BUS_PARAM_T - Bus Parameter
Table 60: CANOPEN_MASTER_PACKET_SET_BUSPARAM_CNF_T –Set Bus Parameter Confirmation
#define CANOPEN_MASTER_MIN_SLAVE_NODE_ID 1
#define CANOPEN_MASTER_MAX_SLAVE_NODE_ID 127
struct CANOPEN_MASTER_ND_PARAM_HEAD_Ttag
{
TLR_UINT8 bNodeId;
TLR_UINT16 Node_Para_Len;
TLR_UINT8 bNd_Flag;
TLR_UINT16 usAddInfo;
TLR_UINT16 usDevProfNum;
TLR_UINT16 usCobIDEmcy;
TLR_UINT16 usCobIDGuard;
TLR_UINT16 usGuardTime;
TLR_UINT8 bLifeTime;
TLR_UINT8 bCfgNdState;
TLR_UINT8 Octet_String[1];
};
Structure CANOPEN_MASTER_ND_PARAM_HEAD_T
The first length indicator usNodeParaLen fixes the length of the whole data block inclusive the
length of the size indicator.
This variable is followed by a special bit field called bNd_Flag. The topmost bit D7 = ACTIVE is
declaring the parameter data set as active or inactive. If declared as not active, the device will not
start any communication to this Node.
The next bit D6 = HRTBT decides whether the device will use either the traditional Guard Time
Protocol or the Heartbeat Protocol to supervise a node existence during PDO communication. If
not set the Guarding Protocol is used, if set the Heartbeat Protocol is used.
The other bits in this byte are reserved for future use.
bGlobalBits parameter
The next two words represent the contents 'device type object 1000H' of the node station. Both
values usAddInfo and usDevProfNum will be compared in the startup process of the node by reading
the real object 1000H with SDO upload commands. If one of these two variables is not equal to the
corresponding entry of the physically existing node, a runtime error will be generated and the node
will not be brought into the OPERATIONAL state.
The CAN identifier usCobIDEmcy in the range of 1 to 2047 (decimal) is written into the node object
directory during its startup.
The parameter usCobIDGuard has to be set to value 700h + Node-ID.
The Emergency COB ID is used later by the node to send Emergency Messages to the network
like for example a low power indication. The standard calculation formula for the usCobIDEmcy is 80h
+ Node-ID.
The next two variables have different meanings based on the configured D6 = HRTBT bit in the
variable bNd_Flag.
HRTBT = 0:
The variable usGuardTime defines the time the device will poll the node at regular time intervals.
The value is a multiple of 1msec. If the value for example is set to 500, the master will request the
node at every half second. The usGuardTime is automatically configured by the master during the
nodes startup process by writing this value into its object 100Ch via SDO download commands. If
the value is 0 the guarding protocol is disabled.
The node life time is given by the usGuardTime multiplied with the value bLifeTime. If the node
has not been polled by the master during its life time, a remote node error is indicated by the node.
So the bLifeTime can be seen as a safety factor the master gets time to send the node guarding
request. The bLifeTime is automatically configured by the master during the nodes startup
process by writing this value into its object 100Dh via SDO download commands. The Life
Guarding is disabled if the parameter value is 0.
HRTBT = 1:
The variable usGuardTime defines the time the device will wait as consumer for heartbeat
Indications of this node. The value itself reflects the time in multiples of a millisecond. If the value
for example is set to 500, the device will wait in maximum 500 msecs for a heartbeat indication
from this node until it would declare the node as not present and faulty. If the value is configured to
0 the device will not supervise the node and heartbeat supervision as consumer and node
existence check is disabled.
The value bLifeTime has no meaning in heartbeat protocol and is not used.
The bit field in byte bCfgNdState configures the startup sequence the device is executing with
the node. If the bit is logical '0' the corresponding service(s) is (are) active, if it is logical '1' it is
(they are) deactivated.
The SDO list serves to change data in the object directory of the node via SDO download transfer.
All object values be configured in this list are written into the located object directory entry one after
the other while start up the node. Up to 2000 SDO download requests can be configured per node.
Each entry in the list must have the following structure:
struct CANOPEN_MASTER_SDO_CFG_DATA_Ttag
{
TLR_UINT16 usIndex;
TLR_UINT8 bSubIndex;
TLR_UINT16 usLength;
TLR_UINT8 abSdoValue[CANOPEN_MASTER_MAX_SDO_DATA_SIZE];
};
struct CANOPEN_MASTER_ND_SDO_CFG_DATA_Ttag
{
TLR_UINT16 Sdo_Cfg_Data_Len;
CANOPEN_MASTER_SDO_CFG_DATA_T Sdo_Cfg_Data[CANOPEN_MASTER_MAX_SDOS];
};
Structure CANOPEN_MASTER_SDO_CFG_DATA_T
Structure CANOPEN_MASTER_ND_SDO_CFG_DATA_T
The length of the SDO list fixes always the length of the SDO data field in bytes inclusive the size
of the length indicator. If no objects should be changed, so that the SDO list is empty, a value of 2
results for the Sdo_Cfg_Data_Len.
Example:
Only the values in the object 6200H sub-index 5 and object 6200H sub-index 6 should be
changed, the SDO configuration block should have the following data entries:
Sdo_Cfg_Data_Len 20
usIndex 0x6200
bSubIndex 0x05
usLength 0x04
abSdoValue[ ] 0x10010108
usIndex 0x6200
bSubIndex 0x06
usLength 0x04
abSdoValue[ ] 0x10010208
Table 66: SDO Configuration Example
The PDO list configures the CANopen process data messages (PDO) of this node. In the view of
the master it enables the configured CAN identifier to be sent or to be received. So one entry in
this list can configure either a transmit process data message = inputs in the view of the master or
a receive process data message = outputs in the view of the master.
struct CANOPEN_MASTER_PDO_CFG_DATA_Ttag
{
TLR_UINT8 bTypOfPdo;
TLR_UINT8 bLength;
TLR_UINT16 usPdoCOBId;
TLR_UINT8 bTransType;
TLR_UINT16 usInhibit;
};
#define CANOPEN_MASTER_MAX_CFG_PDOS \
CANOPEN_MASTER_MAX_CFG_TPDOS + \
CANOPEN_MASTER_MAX_CFG_RPDOS
struct CANOPEN_MASTER_ND_PDO_CFG_DATA_Ttag
{
TLR_UINT16 Pdo_Cfg_Data_Len;
CANOPEN_MASTER_PDO_CFG_DATA_T Pdo_Cfg_Data[CANOPEN_MASTER_MAX_CFG_PDOS];
};
Structure CANOPEN_MASTER_PDO_CFG_DATA_T
The first value decides whether the configured PDO is a transmit or a receive PDO.
bTypeOfPdo = 0 : RXPDO (outputs in the view of the master)
bTypeOfPdo <> 0 : TXPDO (inputs in the view of the master)
Structure CANOPEN_MASTER_ND_PDO_CFG_DATA_T
One CANopen PDO message can hold only 8 bytes of process data information in maximum, so
the size indicator Length fixes the number of valid byte in this PDO and defines herewith the
number of bytes to copy from and into the process data area of the dual-port memory. The highest
bit in the length indicator byte has assigned a special function. It defines if the PDO data is either
handled as word oriented data or byte oriented one. If word oriented is chosen, the behavior of the
word data interpretation in this PDO can be changed between LSB/MSB and vice versa. This can
be done in the bus parameter data set globally for all word oriented PDOs as described in section
CANOPEN_MASTER_SET_BUSPARAM_REQ/CNF – Set Bus Parameters.
The COB-ID defines the CAN identifier, the node sends or receives this PDO. The CiA draft
specification defines several transmission types for PDO. The value in bTransType corresponds to
the CiA draft specification.
The parameter usInhibit defines the minimum time period in milliseconds between two
transmissions of the same PDO.
One entry in the PDO list results a corresponding entry in the ADDTab. In this table the offset
address in the dual-port memory of each PDO is held down. See the following structure:
typedef struct CANOPEN_MASTER_ND_PRM_ADD_TAB_Ttag
CANOPEN_MASTER_ND_PRM_ADD_TAB_T;
#define CANOPEN_MASTER_MAX_CFG_PDOS \
CANOPEN_MASTER_MAX_CFG_TPDOS + \
CANOPEN_MASTER_MAX_CFG_RPDOS
struct CANOPEN_MASTER_ND_PRM_ADD_TAB_Ttag
{
TLR_UINT16 Add_Tab_Len;
TLR_UINT8 bTxPdoCount;
TLR_UINT8 bRxPdoCount;
TLR_UINT16 EA_Offset[CANOPEN_MASTER_MAX_CFG_PDOS];
};
Structure CANOPEN_MASTER_ND_PRM_ADD_TAB_T
Add_Tab_Len word Length of the following add_tab data inclusive the length of the size
indicator.
bTxPdoCount byte Number of inputs following in the IO_Offset table
EA_Offset[ ] word array Byte IO_Offset in the order: first all input offsets then all output offsets.
Table 69: CANOPEN_MASTER_ND_PRM_ADD_TAB_T - Address Table Configuration Data Block
If for example a node has one RXPDO and one TXPDO, the value for bTxPdoCount and the
value for bRxPdoCount must be set to 1 followed first by the word input offset address and then
the word output offset address. The length indicator Add_Tab_Len in this case is 8.
If a node has more than one of the same type of PDO, first all input offset addresses must be set in
the EA_Offset table and than all output offsets can follow.
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOP
ENMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 1.. 512 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet. Must be incremented with each request during
sequenced configuration.
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002808 CANOPEN_MASTER_SET_NODEPARAM_REQ - Command
ulExt UINT32 Sequencing information
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SET_NODEPARAM_REQ_DATA_T
abNodeParam UINT8[ ] Node Parameter Data Area
Data[512]
Table 70: CANOPEN_MASTER_PACKET_SET_NODEPARAM_REQ_T – Set Node Parameter Request
struct CANOPEN_MASTER_SET_NODEPARAM_CNF_DATA_Ttag
{
TLR_UINT8 abNodeParamData[CANOPEN_MASTER_MAX_NODEPARAM_DATA];
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 1.. 512 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002809 CANOPEN_MASTER_SET_NODEPARAM_CNF -
Command
ulExt UINT32 Sequencing information
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_SET_NODEPARAM_CNF_DATA_T
abNodeParam UINT8[ ] Node Parameter Data Area
Data[512]
Table 71: CANOPEN_MASTER_PACKET_SET_NODEPARAM_CNF_T –Set Node Parameter Confirmation
struct CANOPEN_MASTER_GET_NODE_DIAG_REQ_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulFlags;
};
struct CANOPEN_MASTER_PACKET_GET_NODE_DIAG_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_GET_NODE_DIAG_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000280E CANOPEN_MASTER_GET_NODE_DIAG_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_GET_NODE_DIAG_REQ_DATA_T
ulNodeId UINT32 1..127 Node ID of the node for which diagnostic data are intended to be
collected
ulFlags UINT32 Flags
BIT 0: PEEK
0 Node is deleted from diagnostic list after request
1 Node remains in diagnostic list after request
BIT 1 - 31: Reserved for further use, se to zero
Table 72: CANOPEN_MASTER_PACKET_GET_NODE_DIAG_REQ_T – Get Node Diagnostic Request
struct CANOPEN_MASTER_PACKET_GET_NODE_DIAG_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_GET_NODE_DIAG_CNF_DATA_T tData; /** packet confirmation data. */
};
struct CANOPEN_MASTER_GET_NODE_DIAG_CNF_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulFlags;
CANOPEN_MASTER_NODE_DIAG_T tNodeDiag;
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 92 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000280F CANOPEN_MASTER_GET_NODE_DIAG_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_GET_NODE_DIAG_CNF_DATA_T
ulNodeId UINT32 Node ID of the node for which diagnostic data are intended to be
collected
ulFlags UINT32 Bit Field for Flags
tNodeDiag CANOP See Table 33: CANOPEN_MASTER_NODE_DIAG_T - Node
EN_MA Diagnostic Structure
STER_
NODE_
DIAG_T
Table 73: CANOPEN_MASTER_GET_NODE_DIAG_CNF_DATA_T – Get Node Diagnostic Confirmation
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
Note: This packet is used by the AP-Task only and will not be routed from the user
application to the CANopen Master task.
The received handles can be used with the macros TLR_GETEXCHGED_TRIBUFF() and
TLR_EXCHANGE_TRIBUFF() in order to exchange data with the CANopen network.
struct CANOPEN_MASTER_GET_BUFFER_HANDLE_REQ_DATA_Ttag
{
TLR_UINT32 ulReserved;
};
struct CANOPEN_MASTER_PACKET_GET_BUFFER_HANDLE_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_GET_BUFFER_HANDLE_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 QUE_CANOPE Destination Queue-Handle of CANopen Master-Task Process Queue
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000280C CANOPEN_MASTER_GET_BUFFER_HANDLE_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_GET_BUFFER_HANDLE_REQ_DATA_T
ulReserved UINT32 Reserved, set to zero
Table 74: CANOPEN_MASTER_PACKET_GET_BUFFER_HANDLE_REQ_T – Get Buffer Handle Request
#define CANOPEN_MASTER_RECV_OBJECT_CNT 28
#define CANOPEN_MASTER_SEND_OBJECT_CNT 28
struct CANOPEN_MASTER_GET_BUFFER_HANDLE_CNF_DATA_Ttag
{
TLR_UINT32 aulRecvBuffer[CANOPEN_MASTER_RECV_OBJECT_CNT];
TLR_UINT32 aulSendBuffer[CANOPEN_MASTER_SEND_OBJECT_CNT];
};
struct CANOPEN_MASTER_PACKET_GET_BUFFER_HANDLE_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_GET_BUFFER_HANDLE_CNF_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 224 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000280D CANOPEN_MASTER_GET_BUFFER_HANDLE_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_GET_BUFFER_HANDLE_CNF_DATA_T
aulRecvBuffer[28] UINT32[ ] Receive Buffer
aulSendBuffer[28] UINT32[ ] Send Buffer
Table 75: CANOPEN_MASTER_GET_BUFFER_HANDLE_CNF – Get Buffer Handle Confirmation
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
Note: This indication is used by the AP-Task in order to set status information in the
DPM and will not be routed to the user application.
struct CANOPEN_MASTER_STATE_CHANGE_IND_DATA_Ttag
{
CANOPEN_MASTER_STATE_T tMasterState; /* Master state */
CANOPEN_MASTER_EXTENDED_STATE_T tExtMasterState; /* Extended Master state */
};
struct CANOPEN_MASTER_PACKET_STATE_CHANGE_IND_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_STATE_CHANGE_IND_DATA_T tData; /** packet indication data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle of AP-Task Process Queue
ulSrc UINT32 Source Queue-Handle of CANopen Master-Task Process Queue
ulDestId UINT32 Destination End Point Identifier, specifying the final receiver of the
packet within the Destination Process
ulSrcId UINT32 Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 216 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002812 CANOPEN_MASTER_STATE_CHANGE_IND - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_STATE_CHANGE_IND_DATA_T
tMasterState CANOPEN_MASTER_ Structure for Master state, see explanation below.
STATE_T
tExtMaster CANOPEN_MASTER_ Structure for Extended Master state, see explanation below.
State EXTENDED_STATE_T
Table 76: CANOPEN_MASTER_PACKET_STATE_CHANGE_IND_T – Change of State Indication
struct CANOPEN_MASTER_STATE_Ttag
{
NETX_MASTER_STATUS tNetxMasterState; /* netX master state */
TLR_UINT32 ulCanState; /* CAN state */
CANOPEN_MASTER_IO_STATUS_T tIoStatus; /* IO Status */
TLR_UINT32 ulFlags;
TLR_UINT32 ulErrorCount;
TLR_UINT32 ulCommError;
TLR_UINT32 ulRunLedState;
TLR_UINT32 ulErrLedState;
TLR_UINT32 ulRecvDataCnt;
TLR_UINT32 ulSendDataCnt;
TLR_UINT32 ulReserved;
};
struct CANOPEN_MASTER_IO_STATUS_Ttag
{
TLR_UINT32 ulHighestMappedSendBufferNum;
TLR_UINT32 ulHighestMappedRecvBufferNum;
};
struct CANOPEN_MASTER_EXTENDED_STATE_Ttag
{
CANOPEN_MASTER_GLOBAL_STATE_T tGlobalState;
CANOPEN_MASTER_ADDITIONAL_INFO_T tAdditionalInfo;
};
The extended master state structure consists of two components, namely:
The Global State Block
The Additional Information Block
The extended master state is described in detail in section 3.3.2 “Extended Status”.
#define CANOPEN_MASTER_GLOBAL_STATE_ERROR_SIZE 4
#define CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE 16
struct CANOPEN_MASTER_GLOBAL_STATE_Ttag
{
TLR_UINT8 bGlobalBits;
TLR_UINT8 bCanState;
TLR_UINT8 bErrorNodeAddress;
TLR_UINT8 bErrorEvent;
TLR_UINT16 usBusErrorCount;
TLR_UINT16 usBusOffCount;
TLR_UINT16 usMsgTimeOut;
TLR_UINT16 usRxOverFlow;
TLR_UINT8 abGlobalError[CANOPEN_MASTER_GLOBAL_STATE_ERROR_SIZE];
TLR_UINT8 abListProjectedNodes[CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE];
TLR_UINT8 abListActivatedNodes[CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE];
TLR_UINT8 abListDiagnosticNodes[CANOPEN_MASTER_GLOBAL_NODE_LIST_SIZE];
};
For more information refer to section 3.3.2.1 “The Global Status Block” of this manual.
struct CANOPEN_MASTER_ADDITIONAL_INFO_Ttag
{
TLR_UINT32 ulFlags;
TLR_UINT32 ulReserved;
TLR_UINT32 ulLastDiagAddress;
TLR_UINT32 ulLastDiagInfo;
TLR_UINT32 ulBusOffEveCnt;
TLR_UINT32 ulErrorPassiveEveCnt;
TLR_UINT32 ulRxOverflowCnt;
TLR_UINT32 ulTxOverflowCnt;
TLR_UINT32 aulReserved[8];
TLR_UINT32 ulMaxRecvIdx;
TLR_UINT32 ulMaxSendIdx;
TLR_UINT32 aulAddDetail[CANOPEN_MASTER_ADD_DETAIL_SIZE];
};
For more information refer to section 3.3.2.2 “The Additional Info Block” of this manual.
struct CANOPEN_MASTER_PACKET_STATE_CHANGE_RES_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle of CANopen Master-Task Process Queue
ulSrc UINT32 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process. Set to 0 for the Initialization
Packet
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002813 CANOPEN_MASTER_STATE_CHANGE_RES - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Table 77: CANOPEN_MASTER_PACKET_STATE_CHANGE_RES_T – Change of State Response
struct CANOPEN_MASTER_SDO_REQ_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulIndex;
TLR_UINT32 ulSubIndex;
TLR_UINT32 ulDataCnt;
TLR_UINT8 abSdoData[CANOPEN_MASTER_MAX_SDO_DATA];
};
struct CANOPEN_MASTER_PACKET_SDO_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SDO_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 16 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002814 CANOPEN_MASTER_SDO_UPLOAD_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SDO_REQ_DATA_T
ulNodeId UINT32 1 ... 127 Node ID of the node of the CANopen network to be read
ulIndex UINT32 0 ... 65535 Index
ulSubIndex UINT32 0 ... 255 Sub index
ulDataCnt UINT32 1 ... 512 Number of data bytes to read
abSdoData UINT8[ ] Unused
[512]
Table 78: CANOPEN_MASTER_PACKET_SDO_REQ_T – SDO Upload Request
struct CANOPEN_MASTER_SDO_CNF_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulIndex;
TLR_UINT32 ulSubIndex;
TLR_UINT32 ulDataCnt;
TLR_UINT8 abSdoData[CANOPEN_MASTER_MAX_SDO_DATA];
};
struct CANOPEN_MASTER_PACKET_SDO_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SDO_CNF_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 16 ... 528 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002815 CANOPEN_MASTER_SDO_UPLOAD_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_SDO_CNF_DATA_T
ulNodeId UINT32 1 ... 127 Node ID of the node to be read
ulIndex UINT32 0 ... 65535 Index
ulSubIndex UINT32 0 ... 255 Sub index
ulDataCnt UINT32 1 ... 512 Data count
abSdoData UINT8[ ] SDO upload data or if available, the error code the node returns via
[512] CANopen
Table 79: CANOPEN_MASTER_PACKET_SDO_CNF_T – SDO Upload Confirmation
struct CANOPEN_MASTER_SDO_REQ_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulIndex;
TLR_UINT32 ulSubIndex;
TLR_UINT32 ulDataCnt;
TLR_UINT8 abSdoData[CANOPEN_MASTER_MAX_SDO_DATA];
};
struct CANOPEN_MASTER_PACKET_SDO_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SDO_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 17 ... 528 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002816 CANOPEN_MASTER_SDO_DOWNLOAD_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SDO_REQ_DATA_T
ulNodeId UINT32 1 ... 127 Node ID of the node of the CANopen network to be read
ulIndex UINT32 0 ... 65535 Index
ulSubIndex UINT32 0 ... 255 Sub index
ulDataCnt UINT32 1 ... 512 Number of data bytes to write
abSdoData UINT8[ ] SDO download data
[512]
Table 80: CANOPEN_MASTER_PACKET_SDO_REQ_T – SDO Download Request
struct CANOPEN_MASTER_SDO_CNF_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulIndex;
TLR_UINT32 ulSubIndex;
TLR_UINT32 ulDataCnt;
TLR_UINT8 abSdoData[CANOPEN_MASTER_MAX_SDO_DATA];
};
struct CANOPEN_MASTER_PACKET_SDO_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SDO_CNF_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 16, 20 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002817 CANOPEN_MASTER_SDO_DOWNLOAD_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Structure CANOPEN_MASTER_SDO_CNF_DATA_T
ulNodeId UINT32 1 ... 127 Node ID of the node to be read
ulIndex UINT32 0 ... 65535 Index
ulSubIndex UINT32 0 ... 255 Sub index
ulDataCnt UINT32 1 ... 512 Data count
abSdoData UINT8[ ] The error code the node returns via CANopen
[512]
Table 81: CANOPEN_MASTER_PACKET_SDO_CNF_T – SDO Download Confirmation
Error Code
CANOPEN_MASTER_ERROR_REGISTER_GENERIC_BIT 0x01
CANOPEN_MASTER_ERROR_REGISTER_CURRENT_BIT 0x02
CANOPEN_MASTER_ERROR_REGISTER_VOLTAGE_BIT 0x04
CANOPEN_MASTER_ERROR_REGISTER_TEMPERATURE_BIT 0x08
CANOPEN_MASTER_ERROR_REGISTER_COMM_ERROR_BIT 0x10
CANOPEN_MASTER_ERROR_REGISTER_DEV_PROFILE_BIT 0x20
CANOPEN_MASTER_ERROR_REGISTER_RESERVED_BIT 0x40
CANOPEN_MASTER_ERROR_REGISTER_MANU_SPEC_BIT 0x80
Table 83: Error Register (Variable bErrorRegister)
struct CANOPEN_MASTER_SEND_EMCY_REQ_DATA_Ttag
{
TLR_UINT16 usErrorCode;
TLR_UINT8 abManErrorCode[CANOPEN_MASTER_EMCY_DATA_SIZE];
TLR_UINT8 bErrorRegister;
};
struct CANOPEN_MASTER_PACKET_SEND_EMCY_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SEND_EMCY_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002818 CANOPEN_MASTER_SEND_EMCY_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SEND_EMCY_REQ_DATA_T
usErrorCode UINT16 Error Code
abManError UINT8[ ] Area for Error Code
Code[5]
bErrorRegister UINT8 Bit mask See Table 83: Error Register
Table 84: CANOPEN_MASTER_PACKET_SEND_EMCY_REQ_T – Send Emergency Message Request
struct CANOPEN_MASTER_PACKET_SEND_EMCY_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x00002819 CANOPEN_MASTER_SEND_EMCY_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Table 85: CANOPEN_MASTER_PACKET_SEND_EMCY_CNF_T – Send Emergency Message Confirmation
These commands are standardized and have been specified in the CANopen Application Layer
Profile.
The node to be controlled can be addressed by the ulNodeId variable, as an NMT node is uniquely
identified in the network by its Node ID.
struct CANOPEN_MASTER_NODE_NMT_COMMAND_REQ_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulNmtState;
};
typedef struct CANOPEN_MASTER_PACKET_NODE_NMT_COMMAND_REQ_Ttag
CANOPEN_MASTER_PACKET_NODE_NMT_COMMAND_REQ_T;
struct CANOPEN_MASTER_PACKET_NODE_NMT_COMMAND_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_NODE_NMT_COMMAND_REQ_DATA_T tData; /** packet request data. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000281A CANOPEN_MASTER_NODE_NMT_COMMAND_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_NODE_NMT_COMMAND_REQ_DATA_T
ulNodeId UINT32 1..127 Node ID of the node to be accessed
ulNmtState UINT32 See Table 86: NMT States
Table 87: CANOPEN_MASTER_PACKET_NODE_NMT_COMMAND_REQ_T – Set NMT State Request
struct CANOPEN_MASTER_PACKET_NODE_NMT_COMMAND_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x0000281B CANOPEN_MASTER_NODE_NMT_COMMAND_CNF - Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Table 88: CANOPEN_MASTER_PACKET_NODE_NMT_COMMAND_CNF_T – Set NMT State Confirmation
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
Note: This packet is used by the AP-Task only and will not be routed from the user
application to the CANopen Master task
struct CANOPEN_MASTER_PACKET_SET_WATCHDOG_FAIL_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 QUE_CANOPE Destination Queue-Handle of CANopen Master-Task Process Queue
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task.
ulCmd UINT32 0x000028AA CANOPEN_MASTER_SET_WATCHDOG_FAIL_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Table 89: CANOPEN_MASTER_PACKET_SET_WATCHDOG_FAIL_REQ_T – Set Watchdog Fail Request
Packet Status/Error
Definition / (Value) Description
TLR_S_OK Status ok
(0x00000000)
Table 90: CANOPEN_MASTER_SET_WATCHDOG_FAIL_REQ – Packet Status/Error
struct CANOPEN_MASTER_PACKET_SET_WATCHDOG_FAIL_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x000028AB CANOPEN_MASTER_SET_WATCHDOG_FAIL_CNF– Command
ulExt UINT32 Extension, reserved
ulRout UINT32 Routing information, do not change
Table 91: CANOPEN_MASTER_PACKET_SET_WATCHDOG_FAIL_CNF_T – Set Watchdog Fail Confirmation
/*************************************************************************************/
/** type of CANOPEN_MASTER_SLAVE_ACTIVATE_REQ_DATA_Ttag */
typedef struct CANOPEN_MASTER_SLAVE_ACTIVATE_REQ_DATA_Ttag
CANOPEN_MASTER_SLAVE_ACTIVATE_REQ_DATA_T;
struct CANOPEN_MASTER_SLAVE_ACTIVATE_REQ_DATA_Ttag
{
TLR_UINT32 ulNodeId;
TLR_UINT32 ulMode;
struct CANOPEN_MASTER_PACKET_SLAVE_ACTIVATE_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SLAVE_ACTIVATE_REQ_DATA_T tData; /** packet data */
};
/*************************************************************************************/
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPE
NMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENM Destination End Point Identifier, specifying the final receiver of the
ST0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 0 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x000028AC CANOPEN_MASTER_SLAVE_ACTIVATE_REQ - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_NODE_NMT_COMMAND_REQ_DATA_T
ulNodeId UINT32 1..127 Node ID of the node to be accessed
ulMode UINT32 1,2 Activate / deactivate node
1: Activate node
2: Deactivate node
Table 92: CANOPEN_MASTER_PACKET_SLAVE_ACTIVATE_REQ_T – Slave Activate Request
struct CANOPEN_MASTER_PACKET_SLAVE_ACTIVATE_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle, untouched
ulSrc UINT32 Source Queue-Handle, untouched
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, untouched
ulSrcId UINT32 ulCANOPENM Source End Point Identifier, untouched
ST0Id
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x000028AD CANOPEN_MASTER_SLAVE_ACTIVATE_CNF - Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Table 93: CANOPEN_MASTER_PACKET_SLAVE_ACTIVATE_CNF_T – Confirmation to Slave Activate Request
5.2.16 CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_REQ/CNF –
Enable/Disable PDO Counter
This packet allows to enable (ulMode= CANOPEN_MASTER_ENABLE_PDO_COUNTER=1) or to
disable (ulMode= CANOPEN_MASTER_DISABLE_PDO_COUNTER=0) the PDO counter.
The confirmation packet additionally returns a handle to the PDO counter buffer
(hPdoCounterBuffer).
};
/*************************************************************************************/
/** type of CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_REQ_Ttag */
typedef struct CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_REQ_Ttag
CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_REQ_T;
struct CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_T tData; /** packet data */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle
QUE_CANO
PENMST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle
ulDestId UINT32 ulCANOPEN Destination End Point Identifier, specifying the final receiver of the
MST0Id packet within the Destination Process. Set to 0 for the Initialization
Packet
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 4 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task.
ulCmd UINT32 0x28AE CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_REQ -
Command
ulExt UINT32 0 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 x Routing, do not touch
Structure CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_REQ_DATA_T
ulMode UINT32 0,1 Mode
0: Disable PDO Counter
1: Enable PDO Counter
Table 94: CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_REQ –Enable/Disable PDO Counter Request
/*************************************************************************************/
/** type of CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_CNF_Ttag */
typedef struct CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_CNF_Ttag
CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_CNF_T;
struct CANOPEN_MASTER_PACKET_ENABLE_DISABLE_PDO_COUNTER_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_CNF_DATA_T tData; /** packet data */
};
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle
ulSrc UINT32 Source Queue-Handle
ulDestId UINT32 ulAPMS0Id Destination End Point Identifier, specifying the final receiver of the
packet within the Destination Process. Set to 0 for the Initialization
Packet
ulSrcId UINT32 ulCANOPEN Source End Point Identifier, specifying the origin of the packet inside
MST0Id the Source Process
ulLen UINT32 8 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task.
ulCmd UINT32 0x28AF CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_CNF -
Command
ulExt UINT32 0 Extension not in use, set to zero for compatibility reasons
ulRout UINT32 x Routing, do not touch
Structure CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_CNF_DATA_T
ulMode UINT32 0,1 Mode
0: Disable PDO Counter
1: Enable PDO Counter
hPdoCounterBuff TLR_HAN Handle to PDO Counter buffer
er DLE
Table 95: CANOPEN_MASTER_ENABLE_DISABLE_PDO_COUNTER_CNF – Confirmation of Enable/Disable PDO Counter
Request
struct CANOPEN_MASTER_PACKET_SET_COMPARE_IMAGE_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SET_COMPARE_IMAGE_REQ_DATA_T tData; /** packet data */
};
/*************************************************************************************/
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPEN
MST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENMS Destination End Point Identifier, specifying the final receiver of the
T0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 10 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x000028B0 CANOPEN_MASTER_SET_COMPARE_IMAGE_REQ – Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SET_COMPARE_IMAGE_REQ_DATA_T
usPdoNummer UINT16 0 PDO-Number (Currently all PDOs (0) is supported only)
abPdoData[] UINT8[C Value to be used for comparison
ANOPE
N_MAS
TER_PD
O_MAX
_LEN]
Table 96: CANOPEN_MASTER_PACKET_SET_COMPARE_IMAGE_REQ_T – Force compare values
struct CANOPEN_MASTER_PACKET_SET_COMPARE_IMAGE_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure Information Type: Confirmation
CANOPEN_MASTER_PACKET_SET_COMPARE_IMAGE_CNF_T
Structure TLR_PACKET_HEADER_T
Destination Queue-Handle, untouched
ulDest UINT32
Source Queue-Handle, untouched
ulSrc UINT32
ulAPMS0Id Destination End Point Identifier, untouched
ulDestId UINT32
ulCANOPENMS Source End Point Identifier, untouched
ulSrcId UINT32
T0Id
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
This packet can be used to configure the SYNC trigger. There are three trigger modes available
which can be set in parameter bSyncTrigger:
Mode Value Meaning
CANOPEN_MASTER_SYNC_ 0 Time-controlled trigger mode
TRIGGER_TIME_CONTROLLED
Triggering is done time-controlled, i.e. it takes place in
regular time intervals. No indications are sent on the
occurance of the SYNC trigger event.
CANOPEN_MASTER_SYNC_ 1 Time-controlled trigger mode with notification
TRIGGER_NOTIFIED_TIME_CONTROLLED
Triggering is done time-controlled with indication (see
section CANOPEN_MASTER_SYNC_IND/RES – SYNC
Indication on page 140).
CANOPEN_MASTER_SYNC_ 2 Application-controlled trigger mode
TRIGGER_APPLICATION_TRIGGERED
Triggering is controlled exclusively by the application (see
section CANOPEN_MASTER_SEND_SYNC_REQ/CNF –
Send SYNC on page 138). The configured time interval is
not used at all.
Table 98: Possible values of bSyncTrigger
If you send this packet to set the trigger mode, this setting will be effective until the next
CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ packet is sent. The cycle time is set by
ulSyncTimer (see section CANOPEN_MASTER_SET_BUSPARAM_REQ/CNF – Set Bus Parameters
on page 80) or by SYCON.net.
/*************************************************************************************/
/** type of CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ_DATA_Ttag */
typedef struct CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ_DATA_Ttag
CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ_DATA_T;
struct CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ_DATA_Ttag
{
TLR_UINT8 bSyncTrigger;
};
/*************************************************************************************/
/** type of CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_REQ_Ttag */
typedef struct CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_REQ_Ttag
CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_REQ_T;
struct CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ_DATA_T tData; /** packet data*/
};
/*************************************************************************************/
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPEN
MST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENMS Destination End Point Identifier, specifying the final receiver of the
T0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 1 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x000028B2 CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ – Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Structure CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ_DATA_T
bSyncTrigger UINT8 0…2 SYNC trigger mode (see Table 98: Possible values of bSyncTrigger)
Table 99: CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_REQ_T – Configure SYNC Trigger Request
struct CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure Information Type: Confirmation
CANOPEN_MASTER_PACKET_SET_SYNC_TRIGGER_CNF_T
Structure TLR_PACKET_HEADER_T
Destination Queue-Handle, untouched
ulDest UINT32
Source Queue-Handle, untouched
ulSrc UINT32
ulAPMS0Id Destination End Point Identifier, untouched
ulDestId UINT32
ulCANOPENMS Source End Point Identifier, untouched
ulSrcId UINT32
T0Id
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
This packet can be used to initiate SYNC events from the host application in application-controlled
trigger mode (see preceding section CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ/CNF –
Configure SYNC Trigger on page 135). When the application sends this packet, the SYNC
telegram is sent to the network.
/*************************************************************************************/
/** type of CANOPEN_MASTER_PACKET_SEND_SYNC_REQ_Ttag */
typedef struct CANOPEN_MASTER_PACKET_SEND_SYNC_REQ_Ttag
CANOPEN_MASTER_PACKET_SEND_SYNC_REQ_T;
struct CANOPEN_MASTER_PACKET_SEND_SYNC_REQ_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPEN
MST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENMS Destination End Point Identifier, specifying the final receiver of the
T0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section Codes of the CANopen Master-Task on page 144.
ulCmd UINT32 0x000028B4 CANOPEN_MASTER_SEND_SYNC_REQ – Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Table 101: CANOPEN_MASTER_PACKET_SEND_SYNC_REQ_T – Initialization of CANopen Master Request
struct CANOPEN_MASTER_PACKET_SEND_SYNC_CNF_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure Information CANOPEN_MASTER_PACKET_SEND_SYNC_CNF_T Type: Confirmation
Structure TLR_PACKET_HEADER_T
Destination Queue-Handle, untouched
ulDest UINT32
Source Queue-Handle, untouched
ulSrc UINT32
ulAPMS0Id Destination End Point Identifier, untouched
ulDestId UINT32
ulCANOPENMS Source End Point Identifier, untouched
ulSrcId UINT32
T0Id
Note: Use this packet only when working with linkable object modules. It is not
designed for usage in the context of loadable firmware.
This packet indicates that the SYNC telegram has been sent on the network.
This packet is only sent if the SYNC-Mode has been set to
‚CANOPEN_MASTER_SYNC_TRIGGER_NOTIFIED_TIME_CONTROLLED’ (bSyncTrigger = 1)
using the CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ packet, see section
CANOPEN_MASTER_SET_SYNC_TRIGGER_REQ/CNF – Configure SYNC Trigger on page 135 for
more information.
/*************************************************************************************/
/** type of CANOPEN_MASTER_PACKET_SYNC_IND_Ttag */
typedef struct CANOPEN_MASTER_PACKET_SYNC_IND_Ttag
CANOPEN_MASTER_PACKET_SYNC_IND_T;
struct CANOPEN_MASTER_PACKET_SYNC_IND_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure TLR_PACKET_HEADER_T
ulDest UINT32 0x20/ Destination Queue-Handle of CANopen Master-Task Process Queue
QUE_CANOPEN
MST
32
ulSrc UINT32 0 ... 2 -1 Source Queue-Handle of AP-Task Process Queue
ulDestId UINT32 ulCANOPENMS Destination End Point Identifier, specifying the final receiver of the
T0Id packet within the Destination Process
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
ulLen UINT32 0 Packet Data Length in bytes
32
ulId UINT32 0 ... 2 -1 Packet Identification as unique number generated by the Source
Process of the Packet
ulSta UINT32 See section 6.2 Codes of the CANopen Master-Task
ulCmd UINT32 0x000028B6 CANOPEN_MASTER_SYNC_IND – Command
ulExt UINT32 0 Reserved
ulRout UINT32 x Routing information
Table 103: CANOPEN_MASTER_PACKET_SYNC_IND_T – SYNC Indication
struct CANOPEN_MASTER_PACKET_SYNC_RES_Ttag
{
TLR_PACKET_HEADER_T tHead; /** packet header. */
};
/*************************************************************************************/
Packet Description
Structure Information Type: Response
CANOPEN_MASTER_PACKET_SYNC_RES_T
Variable Type Value / Description
Range
Structure TLR_PACKET_HEADER_T
ulDest UINT32 Destination Queue-Handle of CANopen Master-Task Process Queue
ulDestId UINT32 ulCANOPENMS Destination End Point Identifier, specifying the final receiver of the
T0Id packet within the Destination Process. Set to 0 for the Initialization
Packet
ulSrcId UINT32 ulAPMS0Id Source End Point Identifier, specifying the origin of the packet inside
the Source Process
Description
0x00000000 TLR_S_OK
Status ok
0xC0000001 TLR_E_FAIL
Common error, detailed error information optionally present in the data area of
packet
0xC0490004 TLR_E_CANOPEN_APM_WATCHDOG_PARAMETER
Invalid parameter for watchdog.
0x40490005 TLR_I_CANOPEN_APM_OPEN_DBM_FILE
Database file not found.
0xC0490006 TLR_E_CANOPEN_APM_DATASET
Failed to open configuration dataset.
0xC0490007 TLR_E_CANOPEN_APM_TABLE_GLOBAL
Failed to open GLOBAL configuration dataset.
0xC0490008 TLR_E_CANOPEN_APM_TABLE_BUS_CAN
Failed to open BUS_CAN configuration dataset.
0xC0490009 TLR_E_CANOPEN_APM_TABLE_BUS_CAN_EXT
Failed to open BUS_CAN_EXT configuration dataset.
0xC049000A TLR_E_CANOPEN_APM_
TABLE_NODES
Failed to open NODES configuration dataset.
0xC049000B TLR_E_CANOPEN_APM_WATCHDOG_ACTIVATE
Failed to activate watchdog supervision.
0xC049000C TLR_E_CANOPEN_APM_SIZE_TABLE_BUS_CAN
Invalid size of BUS_CAN configuration dataset.
0xC049000D TLR_E_CANOPEN_APM_SIZE_TABLE_BUS_CAN_EXT
Invalid size of BUS_CAN_EXT configuration dataset.
0xC049000E TLR_E_CANOPEN_APM_NODE_ALREADY_CONFIGURED
Node already configured.
0xC049000F TLR_E_CANOPEN_APM_INVALID_NODE_ID
Invalid Node ID.
0xC0490010 TLR_E_CANOPEN_APM_DATABASE_FOUND
Configuration database found.
0xC0490011 TLR_E_CANOPEN_APM_REQUEST_RUNNING
Request already running.
Table 105: Error Messages of the AP-Task
Description
0x00000000 TLR_S_OK
Status ok
0xC0000001 TLR_E_FAIL
Common error, detailed error information optionally present in the data area of
packet
0xC0420003 TLR_E_CANOPEN_MASTER_DATA_COUNT
Invalid data count.
0xC0420004 TLR_E_CANOPEN_MASTER_DATA_OFFSET
Invalid data offset.
0xC0420005 TLR_E_CANOPEN_MASTER_DATA_COUNT_WITH_OFFSET
Invalid data count in combination with offset.
0xC0420006 TLR_E_CANOPEN_MASTER_MODE
Invalid mode in command.
0xC0420007 TLR_E_CANOPEN_MASTER_STATE
Command is not allowed in current state.
0xC0420008 TLR_E_CANOPEN_MASTER_NO_VALID_BUS_PARAM
No valid bus configuration parameterized.
0xC0420009 TLR_E_CANOPEN_MASTER_REQUEST_RUNNING
A request is already running.
0xC042000A TLR_E_CANOPEN_MASTER_BUS_RUNNING
Command is not allowed because CANopen is running.
0xC042000B TLR_E_CANOPEN_MASTER_BUS_PARAM_ALREADY_SET
Bus parameters are already configured.
0xC042000C TLR_E_CANOPEN_MASTER_LOCAL_NODE_ID
Invalid Node ID for CANopen Master.
xC042000D TLR_E_CANOPEN_MASTER_BAUDRATE
Invalid Baud rate.
0xC042000E TLR_E_CANOPEN_MASTER_29BIT_SELECTOR
Invalid parameter for 29 bit selector.
0xC042000F TLR_E_CANOPEN_MASTER_SYNC_TIMER_VALUE
Invalid parameter for SYNC timer.
0xC0420010L TLR_E_CANOPEN_MASTER_COB_ID_SYNC
Invalid parameter for COB-ID SYNC.
0xC0420011 TLR_E_CANOPEN_MASTER_PROD_HEARTBEAT_TIME
Invalid parameter for Producer Heartbeat time.
0xC0420012 TLR_E_CANOPEN_MASTER_PACKET_SEQUENCE
Invalid packet sequence detected.
Description
0xC0420013 TLR_E_CANOPEN_MASTER_NODE_PARAM_SET_SIZE
Invalid size of Node parameter set.
0xC0420014 TLR_E_CANOPEN_MASTER_NODE_PARAM_HEADER_SIZE
Invalid size of Node parameter header.
0xC0420015 TLR_E_CANOPEN_MASTER_NODE_ALREADY_CONFIGURED
Node is already configured.
0xC0420016 TLR_E_CANOPEN_MASTER_SLAVE_NODE_ID
Invalid Node ID for Slave.
0xC0420017 TLR_E_CANOPEN_MASTER_NODE_ID_EQUAL
Node ID of Slave is equal to Master Node ID.
0xC0420018 TLR_E_CANOPEN_MASTER_PARAMETER_SET_LENGTH
Length of parameter set is different from length in parameter header.
0xC0420019 TLR_E_CANOPEN_MASTER_SDO_PARAMETER_SET_LENGTH
Invalid size of SDO parameter set.
0xC042001A TLR_E_CANOPEN_MASTER_PDO_PARAMETER_SET_LENGTH
Invalid size of PDO parameter set.
0xC042001B TLR_E_CANOPEN_MASTER_ADDR_TABLE_SET_LENGTH
Invalid size of address table.
0xC042001C TLR_E_CANOPEN_MASTER_ADDR_TABLE_LENGTH_INCONSISTENT
Address table size is inconsistent.
0xC042001E TLR_E_CANOPEN_MASTER_TPDO_CNT
Invalid number of transmitted PDOs.
0xC042001F TLR_E_CANOPEN_MASTER_RPDO_CNT
Invalid number of received PDOs.
0xC0420020 TLR_E_CANOPEN_MASTER_COB_ID_EMCY
Invalid value for COB-ID Emergency.
0xC0420021 TLR_E_CANOPEN_MASTER_COB_ID_GUARD
Invalid value for COB-ID Guard.
0xC0420022 TLR_E_CANOPEN_MEMORY_ALLOCATION
No memory for parameter set.
0xC0420023 TLR_E_CANOPEN_SDO_DATA_CNT
Invalid value for SDO data count.
0xC0420024 TLR_E_CANOPEN_PDO_DATA_CNT
Invalid value for PDO data count.
0xC0420025 TLR_E_CANOPEN_ADDR_TAB_DATA_CNT
Invalid value for address table data count.
0xC0420026 TLR_E_CANOPEN_ADDR_TAB_PDO_CNT
Invalid value for address table PDO count.
0xC0420027 TLR_E_CANOPEN_MASTER_NODE_SDO_TIMEOUT
Timeout during SDO transfer.
0xC0420028 TLR_E_CANOPEN_MASTER_NODE_SDO_ERROR
Error during SDO transfer.
Description
0xC0420029 TLR_E_CANOPEN_MASTER_NO_PDO_AVAILABLE
No further PDO available.
0xC042002A TLR_E_CANOPEN_MASTER_AUTO_CLEAR_ACTIVE
Master is in auto clear state.
0xC042002B TLR_E_CANOPEN_MASTER_WATCHDOG_FAIL
Watchdog failure detected.
0xC042002C TLR_E_CANOPEN_MASTER_INVALID_INDEX
Invalid index for request.
0xC042002D TLR_E_CANOPEN_MASTER_NODE_STATE
Request not possible in current Node state.
0xC042002E TLR_E_CANOPEN_MASTER_NODE_NOT_CONFIGURED
Node is not configured.
0xC042002F TLR_E_CANOPEN_MASTER_SDO_REQUEST_FAILED
SDO request failed.
0x40420030 TLR_I_CANOPEN_MASTER_ALREADY_IN_STATE
Master is already in requested state.
0xC0420031 TLR_E_CANOPEN_MASTER_COB_ID_PDO
Invalid value for PDO COB-ID.
0xC0420032 TLR_E_CANOPEN_MASTER_SEND_EMCY
Send emergency-telegram failed.
0xC0420033 TLR_E_CANOPEN_MASTER_INIT_SDO_REQUEST
Failed to initialize SDO request.
0xC0420034 TLR_E_CANOPEN_MASTER_SET_NMT_STATE
Set NMT state failed.
0xC0420035 TLR_E_CANOPEN_MASTER_ERROR_PASSIVE
CANopen is in error-passive state.
0xC0420036 TLR_E_CANOPEN_MASTER_BUS_OFF
CANopen is in bus-off state.
(0x40420037 TLR_I_CANOPEN_MASTER_NODE_DEACTIVATED
Node is deactivated in configuration.
0xC0420038 TLR_E_CANOPEN_MASTER_DL_REQ_FAILED
CAN-DL request failed.
0xC0420039 TLR_E_CANOPEN_MASTER_PUT_OBJECT_DATA
Failed to write object data.
0xC042003A TLR_E_CANOPEN_MASTER_SET_OBJECT_DATA_VALID
Failed to set object data valid.
0xC042003B TLR_E_CANOPEN_MASTER_INIT_LIB
Failed to initialize CANopen library.
0xC042003C TLR_E_CANOPEN_MASTER_SET_COB_ID_FAILED
COB-ID could not be set.
Description
0xC042003D TLR_E_CANOPEN_MASTER_ADD_REMOTE_NODE_
REQUEST
Failed to add remote Node.
0xC042003E TLR_E_CANOPEN_MASTER_SET_HEARTBEAT_TIME
Heartbeat time could not be set.
0xC042003F TLR_E_CANOPEN_MASTER_DD_GUARDING_SLAVE
Node could not be added to Node guarding list.
0xC0420040 TLR_E_CANOPEN_MASTER_SET_GUARDING_TIME
Node guard time could not be set.
0xC0420041 TLR_E_CANOPEN_MASTER_START_NODE_GUARD
Node guarding could not be started.
0xC0420042 TLR_E_CANOPEN_MASTER_RESET_NODE
Reset Node failed.
0xC0420043 TLR_E_CANOPEN_MASTER_RESET_COMMUNICATION
Failed to reset communication of Node.
0xC0420044 TLR_E_CANOPEN_MASTER_SET_NODE_PREOPERATIONAL
Failed to set Node to preoperational state.
0xC0420045 TLR_E_CANOPEN_MASTER_STOP_NODE
Failed to set Node to stop state.
0xC0420046 TLR_E_CANOPEN_MASTER_START_NODE
Failed to set Node to operational state.
0xC0420047 TLR_E_CANOPEN_MASTER_SET_EMCY_COB_ID
Failed to set Emergency COB-ID.
0xC0420048 TLR_E_CANOPEN_MASTER_START_SYNC
Failed to start SYNC-telegram.
0xC0420049 TLR_E_CANOPEN_MASTER_STOP_SYNC
Failed to stop SYNC-telegram.
0xC042004A TLR_E_CANOPEN_MASTER_NODE_UNEXPECTED_STATE
Node is not in expected state.
0xC042004B TLR_E_CANOPEN_MASTER_NODE_LOST_CONNECTION
Connection to Node lost.
0xC042004C TLR_E_CANOPEN_MASTER_NODE_GUARDING_ERROR
Node guarding error.
0xC042004D TLR_E_CANOPEN_MASTER_NODE_HEARTBEAT_ERROR
Heartbeat error.
0x4042004E TLR_I_CANOPEN_MASTER_NODE_HEARTBEAT_STARTED
Heartbeat supervision of Node started
0xC042004F TLR_E_CANOPEN_MASTER_NODE_UNEXPECTED_BOOTUP
Unexpected Boot up message from Node received.
0xC0420050 TLR_E_CANOPEN_MASTER_WRITE_PDO_REQ
Failed to transmit PDO.
Description
0xC0420051 TLR_E_CANOPEN_MASTER_READ_PDO_REQ
Failed to request PDO.
0xC0420052 TLR_E_CANOPEN_MASTER_INIT_BUFFER
Initialization of buffer failed
0x40420053 TLR_I_CANOPEN_MASTER_NODE_STATE_NOT_
HANDLED
State of Node not handled.
0xC0420054 TLR_E_CANOPEN_MASTER_NODE_DEVICE_TYPE
Node Device Type unequal to configured Device Type.
0x40420055 TLR_I_CANOPEN_MASTER_NODE_EMERGENCY_RECEIVED
Emergency message received from Node
0x40420056 TLR_I_CANOPEN_MASTER_INITIALIZE
Master is initializing.
0x40420057 TLR_I_CANOPEN_MASTER_NODE_BOOTUP
Boot up message from Node received.
Table 106: Error Messages of the CANopen Master-Task
7 Appendix
7.1 List of Tables
Table 1: List of Revisions .................................................................................................................................................... 4
Table 2: Terms, Abbreviations and Definitions .................................................................................................................... 8
Table 3: References ............................................................................................................................................................ 8
Table 4: ASCII Queue Name............................................................................................................................................. 12
Table 5: Meaning of Source- and Destination-related Parameters.................................................................................... 12
Table 6: Destination Queue Handle .................................................................................................................................. 14
Table 7: Using ulSrc and ulSrcId ................................................................................................................................ 16
Table 8: Input Data Image ................................................................................................................................................. 22
Table 9: Output Data Image .............................................................................................................................................. 22
Table 10: General Structure of Messages or Packets for Non-Cyclic Data Exchange ...................................................... 24
Table 11: Channel Mailboxes ............................................................................................................................................ 28
Table 12: Common Status Structure Definition ................................................................................................................. 30
Table 13: Communication State of Change....................................................................................................................... 31
Table 14: Meaning of Communication Change of State Flags .......................................................................................... 32
Table 15: Master Status Structure Definition ..................................................................................................................... 35
Table 16: Status and Error Codes ..................................................................................................................................... 36
Table 17: Extended Status Block ...................................................................................................................................... 37
Table 18: Extended Status Block for CANopen Master ..................................................................................................... 38
Table 19: Global Status Block ........................................................................................................................................... 38
Table 20: The bGlobalBits Parameter ............................................................................................................................... 39
Table 21: CAN State ......................................................................................................................................................... 39
Table 22: Table explaining the Relation between Node Address and the abListProjectedNodes Bit ....................... 40
Table 23: Table explaining the Relation between Node Address and the abListActivatedNodes Bit ....................... 40
Table 24: Table explaining the Relationship between Node Address and the abListDiagnosticNodes Bit .............. 41
Table 25: Relationship between the abListDiagnosticNodes bit and the abListDiagnosticNodes bit................ 41
Table 26: Additional Info Block .......................................................................................................................................... 42
Table 27: Additional Info Flags .......................................................................................................................................... 43
Table 28: Extended Status Block for CANopen-Master – Second part (State Field Definition Block definition of the bit list
state fields for CANopen Master). ............................................................................................................................ 46
Table 29: Communication Control Block ........................................................................................................................... 47
Table 30: Overview about essential Functionality (Cyclic and acyclic Data Transfer and Alarm Handling)....................... 48
Table 31: Mapping of Input Data ....................................................................................................................................... 51
Table 32: Mapping of Output Data .................................................................................................................................... 51
Table 33: CANOPEN_MASTER_NODE_DIAG_T - Node Diagnostic Structure ...................................................... 53
Table 34: Node Diagnostic Flags ...................................................................................................................................... 54
Table 35: Internal NMT State of Node ............................................................................................................................... 55
Table 36: APM-Task Process Queue ................................................................................................................................ 56
Table 37: Overview over the Packets of the APM-Task of the CANopen Master Protocol Stack ...................................... 56
Table 38: CANOPEN_APM_PCK_GET_STATE_REQ_T – Get State of AP-Task Request .................................................... 57
Table 39: CANOPEN_APM_PCK_GET_STATE_CNF_T – Get State of AP-Task Confirmation ............................................. 58
Table 40: CANOPEN_APM_PCK_WARMSTART_REQ – Set Warmstart Parameter Request ................................................. 60
Table 41: CANOPEN_APM_PCK_WARMSTART_CNF_T – Set Warmstart Parameter Confirmation ...................................... 62
Table 42: CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_REQ –Enable/Disable PDO Counter Request ................ 64
Table 43: CANOPEN_APM_ENABLE_DISABLE_PDO_COUNTER_CNF – Confirmation of Enable/Disable PDO Counter
Request ................................................................................................................................................................... 65
Table 44 CANopen Master-Task Process Queue ............................................................................................................. 66
Table 45: Overview over the Packets of the CANopen Master -Task of the CANopen Master Protocol Stack ................. 67
Table 46: CANOPEN_MASTER_PACKET_REGISTER_REQ_T – Register Application Request ........................................... 69
Table 47: CANOPEN_MASTER_REGISTER_REQ – Packet Status/Error ............................................................................. 69
Table 48: CANOPEN_MASTER_PACKET_REGISTER_CNF_T – Register Application Confirmation .................................... 70
Table 49: CANOPEN_MASTER_REGISTER_CNF – Packet Status/Error ............................................................................. 70
Table 50: CANOPEN_MASTER_PACKET_EXCHANGE_DATA_REQ_T – Exchange Data Request........................................ 72
Table 51: CANOPEN_MASTER_PACKET_EXCHANGE_DATA_CNF_T –Exchange Data Confirmation.................................. 74
Table 52: CANOPEN_MASTER_PACKET_STARTSTOP_REQ_T – Start/Stop CANopen Network Request .......................... 75
Table 53: CANOPEN_MASTER_PACKET_STARTSTOP_CNF_T – Start/Stop CANopen Network Confirmation ................... 76
Table 54: CANOPEN_MASTER_PACKET_INITIALIZE_REQ_T – Initialization of CANopen Master Request ................... 78
Table 55: CANOPEN_MASTER_INITIALIZE_REQ – Packet Status/Error ........................................................................ 78
Table 56: CANOPEN_MASTER_PACKET_INITIALIZE_CNF_T – Initialization of CANopen Master Confirmation ............ 79
Table 57: CANOPEN_MASTER_CFG_BUS_PARAM_T - Bus Parameter Configuration......................................................... 81
Table 58: Codes and Corresponding Baud Rates of CANopen Network .......................................................................... 82
Table 59: CANOPEN_MASTER_SET_BUSPARAM_REQ_DATA_T – Set Bus Parameter Request ........................................ 84
7.3 Contacts
Headquarters
Germany
Hilscher Gesellschaft für
Systemautomation mbH
Rheinstrasse 15
65795 Hattersheim
Phone: +49 (0) 6190 9907-0
Fax: +49 (0) 6190 9907-50
E-Mail: info@hilscher.com
Support
Phone: +49 (0) 6190 9907-99
E-Mail: de.support@hilscher.com
Subsidiaries
China Japan
Hilscher Systemautomation (Shanghai) Co. Ltd. Hilscher Japan KK
200010 Shanghai Tokyo, 160-0022
Phone: +86 (0) 21-6355-5161 Phone: +81 (0) 3-5362-0521
E-Mail: info@hilscher.cn E-Mail: info@hilscher.jp
Support Support
Phone: +86 (0) 21-6355-5161 Phone: +81 (0) 3-5362-0521
E-Mail: cn.support@hilscher.com E-Mail: jp.support@hilscher.com
France Korea
Hilscher France S.a.r.l. Hilscher Korea Inc.
69500 Bron Seongnam, Gyeonggi, 463-400
Phone: +33 (0) 4 72 37 98 40 Phone: +82 (0) 31-789-3715
E-Mail: info@hilscher.fr E-Mail: info@hilscher.kr
Support
Phone: +33 (0) 4 72 37 98 40 Switzerland
E-Mail: fr.support@hilscher.com Hilscher Swiss GmbH
4500 Solothurn
India Phone: +41 (0) 32 623 6633
Hilscher India Pvt. Ltd. E-Mail: info@hilscher.ch
Pune, Delhi, Mumbai Support
Phone: +91 8888 750 777 Phone: +49 (0) 6190 9907-99
E-Mail: info@hilscher.in E-Mail: ch.support@hilscher.com
Italy USA
Hilscher Italia S.r.l. Hilscher North America, Inc.
20090 Vimodrone (MI) Lisle, IL 60532
Phone: +39 02 25007068 Phone: +1 630-505-5301
E-Mail: info@hilscher.it E-Mail: info@hilscher.us
Support Support
Phone: +39 02 25007068 Phone: +1 630-505-5301
E-Mail: it.support@hilscher.com E-Mail: us.support@hilscher.com