TPDO Event#
The TPDO component provides an interface to the CANopen PDO transmission triggers.
Module Context#
classDiagram
CO_NODE o-- CO_TPDO
CO_OBJ o-- CO_TPDO : Map
class CO_TPDO {
-uint32_t Identifier
-int16_t EvTmr
-uint16_t Event
-int16_t InTmr
-uint16_t Inhibit
-uint8_t Flags
-uint8_t ObjNum
-uint8_t Size[]
+COTPdoTrigObj(obj)
+COTPdoTrigPdo(num)
}
Structure Data#
The class CO_TPDO
is defined within co_tpdo.h
and is responsible for the CANopen transmit process data objects (TPDO). The following data members are in this class:
Data Member | Type | Description |
---|---|---|
Event | uint16_t |
event time in timer ticks |
EvTmr | int16_t |
event timer identifier |
Flags | uint8_t |
transmit status flags |
Identifier | uint32_t |
CAN message identifier |
Inhibit | uint16_t |
inhibit timer in timer ticks |
InTmr | int16_t |
inhibit timer identifier |
Map[] | CO_OBJ* |
pointer list to mapped object entries |
Size[] | uint8_t* |
size of mapped values in PDO payload |
Node | CO_NODE* |
pointer to parent node |
ObjNum | uint8_t |
number of mapped object entries |
Info
The data within this structure must never be manipulated without the corresponding class member functions. This can lead to unpredictable behavior of the node.
Member Functions#
The following table describes the API functions of the CANopen transmit PDO module. These functions are implemented within the source file: co_tpdo.c/h
COTPdoTrigObj()#
The event will be distributed to all TPDOs, which holds an active mapping entry to this object entry.
Prototype
void COTPdoTrigObj(CO_TPDO *pdo, CO_OBJ *obj);
Arguments
Parameter | Description |
---|---|
pdo | pointer to start of TPDO array |
obj | pointer to object entry |
Returned Value
- none
Example
The following example triggers the transmission of all TPDOs of the CANopen node AppNode, which contains the hypothetical object directory entry "[1234:56]".
CO_OBJ *entry;
:
entry = CODirFind(&(AppNode.Dir), CO_DEV(0x1234, 0x56));
COTPdoTrigObj(&(AppNode.TPdo[0]), entry);
:
COTPdoTrigPdo()#
The function call will immediately initiate the TPDO transmission, independent on the TPDO communication type settings in the object dictionary.
Prototype
void COTPdoTrigPdo(CO_TPDO *pdo, uint16_t num);
Arguments
Parameter | Description |
---|---|
pdo | pointer to start of TPDO array |
num | number of TPDO (0..511) |
Returned Value
- none
Example
The following example triggers the transmission of TPDO #3 of the CANopen node AppNode.
:
COTPdoTrigPdo(&(AppNode.TPdo[0]), 3);
: