/**
* \addtogroup EL9800Appl EL9800 application
* @{
* This application includes three functional modules:<br>
* Digital Input<br>
* Digital Outputs<br>
* Analog Input<br>
* The objects of the modules are defined according the ETG.5001.<br>
*/
/**
\file el9800appl.h
\author EthercatSSC@beckhoff.com
\brief EL9800 Application defines, typedefs and global variables
\version 5.01
<br>Changes to version - :<br>
V5.01 : Start file change log
*/
#ifndef _EL9800APPL_H_
#define _EL9800APPL_H_
/*-----------------------------------------------------------------------------------------
------
------ Includes
------
-----------------------------------------------------------------------------------------*/
#include "ecatappl.h"
/*-----------------------------------------------------------------------------------------
------
------ Defines and Typedef
------
-----------------------------------------------------------------------------------------*/
/**
* \addtogroup PdoMappingObjects PDO Mapping Objects
*
* Digital Input PDO mapping : 0x1A00<br>
* Digital Output PDO mapping : 0x1601<br>
* Analog Input PDO mapping : 0x1A02
* @{
*/
/** \brief 0x1601 (Digital output RxPDO) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
UINT32 aEntries[32]; /**< \brief Entry buffer*/
} OBJ_STRUCT_PACKED_END
TOBJ1601;
/** \brief 0x1A00 (Digital input TxPDO) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
UINT32 aEntries[32]; /**< \brief Entry buffer*/
} OBJ_STRUCT_PACKED_END
TOBJ1A00;
/** \brief 0x1A02 (Analog input TxPDO) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
UINT32 aEntries[8]; /**< \brief Entry buffer*/
} OBJ_STRUCT_PACKED_END
TOBJ1A02;
/** @}*/
/**
* \addtogroup SmAssignObjects SyncManager Assignment Objects
* SyncManager 2 : 0x1C12
* <br>SyncManager 3 : 0x1C13
* @{
*/
/** \brief 0x1C12 (SyncManager 2 assignment) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
UINT16 aEntries[1]; /**< \brief Entry buffer*/
} OBJ_STRUCT_PACKED_END
TOBJ1C12;
/** \brief 0x1C13 (SyncManager 3 assignment) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
UINT16 aEntries[2]; /**< \brief Entry buffer*/
} OBJ_STRUCT_PACKED_END
TOBJ1C13;
/** @}*/
/**
* \addtogroup PDO Process Data Objects
* Digital Inputs : 0x6000<br>
* Analog Inputs : 0x6010<br>
* Digital Outputs : 0x7020
* @{
*/
/** \brief 0x6000 (Digital input object) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
BOOLEAN(bSwitch1); /**< \brief Switch 1*/
BOOLEAN(bSwitch2); /**< \brief Switch 2*/
BOOLEAN(bSwitch3); /**< \brief Switch 3*/
BOOLEAN(bSwitch4); /**< \brief Switch 4*/
BOOLEAN(bSwitch5); /**< \brief Switch 5*/
BOOLEAN(bSwitch6); /**< \brief Switch 6*/
BOOLEAN(bSwitch7); /**< \brief Switch 7*/
BOOLEAN(bSwitch8); /**< \brief Switch 8*/
BOOLEAN(bSwitch9); /**< \brief Switch 1*/
BOOLEAN(bSwitch10); /**< \brief Switch 2*/
BOOLEAN(bSwitch11); /**< \brief Switch 3*/
BOOLEAN(bSwitch12); /**< \brief Switch 4*/
BOOLEAN(bSwitch13); /**< \brief Switch 5*/
BOOLEAN(bSwitch14); /**< \brief Switch 6*/
BOOLEAN(bSwitch15); /**< \brief Switch 7*/
BOOLEAN(bSwitch16); /**< \brief Switch 8*/
BOOLEAN(bSwitch17); /**< \brief Switch 1*/
BOOLEAN(bSwitch18); /**< \brief Switch 2*/
BOOLEAN(bSwitch19); /**< \brief Switch 3*/
BOOLEAN(bSwitch20); /**< \brief Switch 4*/
BOOLEAN(bSwitch21); /**< \brief Switch 5*/
BOOLEAN(bSwitch22); /**< \brief Switch 6*/
BOOLEAN(bSwitch23); /**< \brief Switch 7*/
BOOLEAN(bSwitch24); /**< \brief Switch 8*/
BOOLEAN(bSwitch25); /**< \brief Switch 1*/
BOOLEAN(bSwitch26); /**< \brief Switch 2*/
BOOLEAN(bSwitch27); /**< \brief Switch 3*/
BOOLEAN(bSwitch28); /**< \brief Switch 4*/
BOOLEAN(bSwitch29); /**< \brief Switch 5*/
BOOLEAN(bSwitch30); /**< \brief Switch 6*/
BOOLEAN(bSwitch31); /**< \brief Switch 7*/
BOOLEAN(bSwitch32); /**< \brief Switch 8*/
// ALIGN8(SubIndex009) /**< \brief 8Bit alignment*/
} OBJ_STRUCT_PACKED_END
TOBJ6000;
/** \brief 0x6020 (Analog input object) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
BOOLEAN(bUnderrange); /**< \brief (SI1) Analog input under range*/
BOOLEAN(bOverrange); /**< \brief (SI2) Analog input over range*/
BIT2(b2Limit1); /**< \brief (SI3) Analog input 1st limit*/
BIT2(b2Limit2); /**< \brief (SI5) Analog input 2nd limit*/
ALIGN2(SubIndex006) /**< \brief 2Bit alignment*/
ALIGN6(SubIndex007) /**< \brief 2Bit alignment*/
BOOLEAN(bTxPDOState); /**< \brief (SI15) TxPdo state*/
BOOLEAN(bTxPDOToggle); /**< \brief (SI16) TxPdo toggle*/
INT16 i16Analoginput; /**< \brief (SI17) Analog input value*/
} OBJ_STRUCT_PACKED_END
TOBJ6020;
/** \brief 0x7010 (Digital output object) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
BOOLEAN(bLED1); /**< \brief LED 1*/
BOOLEAN(bLED2); /**< \brief LED 2*/
BOOLEAN(bLED3); /**< \brief LED 3*/
BOOLEAN(bLED4); /**< \brief LED 4*/
BOOLEAN(bLED5); /**< \brief LED 5*/
BOOLEAN(bLED6); /**< \brief LED 6*/
BOOLEAN(bLED7); /**< \brief LED 7*/
BOOLEAN(bLED8); /**< \brief LED 8*/
BOOLEAN(bLED9); /**< \brief LED 1*/
BOOLEAN(bLED10); /**< \brief LED 2*/
BOOLEAN(bLED11); /**< \brief LED 3*/
BOOLEAN(bLED12); /**< \brief LED 4*/
BOOLEAN(bLED13); /**< \brief LED 5*/
BOOLEAN(bLED14); /**< \brief LED 6*/
BOOLEAN(bLED15); /**< \brief LED 7*/
BOOLEAN(bLED16); /**< \brief LED 8*/
BOOLEAN(bLED17); /**< \brief LED 1*/
BOOLEAN(bLED18); /**< \brief LED 2*/
BOOLEAN(bLED19); /**< \brief LED 3*/
BOOLEAN(bLED20); /**< \brief LED 4*/
BOOLEAN(bLED21); /**< \brief LED 5*/
BOOLEAN(bLED22); /**< \brief LED 6*/
BOOLEAN(bLED23); /**< \brief LED 7*/
BOOLEAN(bLED24); /**< \brief LED 8*/
BOOLEAN(bLED25); /**< \brief LED 1*/
BOOLEAN(bLED26); /**< \brief LED 2*/
BOOLEAN(bLED27); /**< \brief LED 3*/
BOOLEAN(bLED28); /**< \brief LED 4*/
BOOLEAN(bLED29); /**< \brief LED 5*/
BOOLEAN(bLED30); /**< \brief LED 6*/
BOOLEAN(bLED31); /**< \brief LED 7*/
BOOLEAN(bLED32); /**< \brief LED 8*/
// ALIGN8(SubIndex008) /**< \brief 8Bit alignment*/
} OBJ_STRUCT_PACKED_END
TOBJ7010;
/** @}*/
/**
* \addtogroup ConfigObjects Configuration Objects
* Analog input settings: 0x8020
* @{
*/
/** \brief 0x8020 (Analog input settings object) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex 0*/
BOOLEAN(bEnableuserscale); /**< \brief Enable user scaling*/
BIT3(b3Presentation); /**< \brief Value presentation*/
ALIGN2(SubIndex005) /**< \brief 2Bit Alignment*/
BOOLEAN(bEnablelimit1); /**< \brief Enable limit 1*/
BOOLEAN(bEnablelimit2); /**< \brief Enable limit 2*/
ALIGN8(SubIndex009) /**< \brief 8Bit Alignment*/
INT16 i16Offset; /**< \brief Value offset*/
INT32 i32Gain; /**< \brief Value gain*/
INT16 i16Limit1; /**< \brief Value limit 1*/
INT16 i16Limit2; /**< \brief Value limit 2*/
} OBJ_STRUCT_PACKED_END
TOBJ8020;
/** @}*/
/**
* \addtogroup DeviceParaObjects Device Parameter Objects
* Modular Device Profile: 0xF000
* @{
*/
/** \brief 0xF000 (Modular Device Profile) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex0*/
UINT16 u16Moduleindexdistance; /**< \brief Module Index distance
*
* Index distance between two modules (maximum number of objects per module and area)<br>
* Default: 0x10*/
UINT16 u16Maximumnumberofmodules; /**< \brief Maximum number of modules*/
} OBJ_STRUCT_PACKED_END
TOBJF000;
/** \brief 0xF010 (Module Profile List) data structure*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief SubIndex0*/
UINT32 aEntries[3]; /**< \brief Module profile information buffer
*
* Bit 0..15: Profile number of the module on position 1<br>
* Bit 16..31: Profile specific*/
} OBJ_STRUCT_PACKED_END
TOBJF010;
/** @}*/
#endif //_EL9800APPL_H_
#ifdef _EVALBOARD_
#define PROTO
#else
#define PROTO extern
#endif
#ifdef _OBJD_
/**
* \addtogroup SmAssignObjects SyncManager Assignment Objects
* @{
*/
/**
* \brief Entry descriptions of SyncManager assign objects
*
* SubIndex0<br>
* SubIndex1 (for all other entries the same description will be used (because the object code is ARRAY))
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asPDOAssignEntryDesc[] = {
{DEFTYPE_UNSIGNED8, 0x08, ACCESS_READ},
{DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ}};
/** @}*/
/**
* \addtogroup EnumObjects Enum Objects
* @{
* Presentation (Signed/Unsigned) : 0x800
*/
/*---------------------------------------------
- 0x0800: ENUM (Signed/Unsigned Presentation)
-----------------------------------------------*/
CHAR sEnum0800_Value00[] = "\000\000\000\000Signed presentation"; /**< \brief Value = 0x00, Text = Signed presentation */
CHAR sEnum0800_Value01[] = "\001\000\000\000Unsigned presentation"; /**< \brief Value = 0x01, Text = Unsigned presentation */
CHAR *apEnum0800[2] = { sEnum0800_Value00, sEnum0800_Value01};/**< \brief List of Enum (0x800) values*/
/**
* \brief Enum entry description
*
* SubIndex0<br>
* Enum (Signed Presentation)
* enum (Unsigned Presentation)
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x0800[] =
{{DEFTYPE_UNSIGNED8, 8, ACCESS_READ | OBJACCESS_NOPDOMAPPING},
{DEFTYPE_OCTETSTRING, 8*SIZEOF(sEnum0800_Value00), ACCESS_READ | OBJACCESS_NOPDOMAPPING},
{DEFTYPE_OCTETSTRING, 8*SIZEOF(sEnum0800_Value01), ACCESS_READ | OBJACCESS_NOPDOMAPPING}};
/** @}*/
/**
* \addtogroup PdoMappingObjects PDO Mapping Objects
* @{
*/
/**
* \brief Object 0x1601 (Digital output RxPDO) entry descriptions
*
* SubIndex 0 : read only<br>
* SubIndex x : read only<br>
* (x > 0)
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1601[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ },
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}
};
/**
* \brief Object 0x1601 (Digital output RxPDO) name
*
* In this example no specific entry name is defined ("SubIndex xxx" is used)
*/
OBJCONST UCHAR OBJMEM aName0x1601[] = "DO RxPDO-Map\000\377";
#endif //#ifdef _OBJD_
/**
* \brief Object 0x1601 (Digital output RxPDO) variable to handle object data
*
* SubIndex 0 : 1<br>
* SubIndex 1 : 0x7010.1 1bit (Reference to LED1)<br>
* SubIndex 2 : 0x7010.1 1bit (Reference to LED2)<br>
* SubIndex 3 : 0x7010.1 1bit (Reference to LED3)<br>
* SubIndex 4 : 0x7010.1 1bit (Reference to LED4)<br>
* SubIndex 5 : 0x7010.1 1bit (Reference to LED5), only for PIC24<br>
* SubIndex 6 : 0x7010.1 1bit (Reference to LED6), only for PIC24<br>
* SubIndex 7 : 0x7010.1 1bit (Reference to LED7), only for PIC24<br>
* SubIndex 8 : 0x7010.1 1bit (Reference to LED8), only for PIC24
*/
PROTO TOBJ1601 sDORxPDOMap
#ifdef _EVALBOARD_
= {32, {0x70100101, 0x70100201, 0x70100301, 0x70100401,0x70100501, 0x70100601, 0x70100701, 0x70100801, 0x70100901, 0x70101001, 0x70101101, 0x70101201, 0x70101301, 0x70101401, 0x70101501, 0x70101601, 0x70101701, 0x70101801, 0x70101901, 0x70102001, 0x70102101, 0x70102201, 0x70102301, 0x70102401, 0x70102501, 0x70102601, 0x70102701, 0x70102801, 0x70102901, 0x70103001, 0x70103101, 0x70103201}}
#endif
;
/** @}*/
/**
* \addtogroup PdoParameter PDO Parameter
* @{
*
* Parameter for PDO mapping object 0x1A02 : 0x1802
*/
#ifdef _OBJD_
/**
* \brief Entry descriptions of TxPDO Parameter object (0x1802)
*
* Subindex 0<br>
* SubIndex 1 - 5 : not defined<br>
* SubIndex 6 : Exclude TxPDOs<br>
* SubIndex 7 : TxPDO State<br>
* SubIndex 8 : not defined<br>
* SubIndex 9 : TxPDO Toggle
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1802[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ },
{0, 0x0, 0},
{0, 0x0, 0},
{0, 0x0, 0},
{0, 0x0, 0},
{0, 0x0, 0},
{DEFTYPE_OCTETSTRING, 0x00, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{0, 0x0, 0},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}};
/**
* \brief Object 0x1802 (TxPDO Parameter) object and entry names
*/
OBJCONST UCHAR OBJMEM aName0x1802[] = "TxPDO Parameter\000\000\000\000\000\000Exclude TxPDOs\000TxPDOState\000\000TxPDO Toggle\000\377";
#endif //#ifdef _OBJD_
/**
* \brief Object 0x1802 (TxPDO Parameter) variable to handle object data
*
* Only Subindex0 for this Object is stored here (all values are stored in other structures, see "ReadObject0x1802" for more details)
*/
PROTO UINT16 TxPDO1802Subindex0
#ifdef _EVALBOARD_
= 9
#endif
;
/** @}*/
/**
* \addtogroup PdoMapping PDO Mapping Objects
* @{
*/
/**
* \brief Object 0x1A00 (Digital input TxPDO) entry descriptions
*
* SubIndex 0 : read only<br>
* SubIndex x : read only<br>
* (x > 0)
*/
#ifdef _OBJD_
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1A00[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ },
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}
};
/**
* \brief Object 0x1A00 (Digital input TxPDO) object and entry names
*
* In this example no specific entry name is defined ("SubIndex xxx" is used)
*/
OBJCONST UCHAR OBJMEM aName0x1A00[] = "DI TxPDO-Map\000\377";
#endif //#ifdef _OBJD_
/**
* \brief Object 0x1A00 (Digital Input TxPDO) variable to handle object data
*
* SubIndex 0 : 1<br>
* SubIndex 1 : 0x6000.1 1bit (Reference to SWITCH1)<br>
* SubIndex 2 : 0x6000.1 1bit (Reference to SWITCH2)<br>
* SubIndex 3 : 0x6000.1 1bit (Reference to SWITCH3)<br>
* SubIndex 4 : 0x6000.1 1bit (Reference to SWITCH4)<br>
* SubIndex 5 : 0x6000.1 1bit (Reference to SWITCH5), only for PIC24<br>
* SubIndex 6 : 0x6000.1 1bit (Reference to SWITCH6), only for PIC24<br>
* SubIndex 7 : 0x6000.1 1bit (Reference to SWITCH7), only for PIC24<br>
* SubIndex 8 : 0x6000.1 1bit (Reference to SWITCH8), only for PIC24
*/
PROTO TOBJ1A00 sDITxPDOMap
#ifdef _EVALBOARD_
= {32, {0x60000101, 0x60000201, 0x60000301, 0x60000401,0x60000501, 0x60000601, 0x60000701, 0x60000801, 0x60000901, 0x60001001, 0x60001101, 0x60001201, 0x60001301, 0x60001401, 0x60001501, 0x60001601, 0x60001701, 0x60001801, 0x60001901, 0x60002001, 0x60002101, 0x60002201, 0x60002301, 0x60002401, 0x60002501, 0x60002601, 0x60002701, 0x60002801, 0x60002901, 0x60003001, 0x60003101, 0x60003201}}
#endif
;
/**
* \brief Object 0x1A02 (Analog input TxPDO) entry descriptions
*
* SubIndex 0 : read only<br>
* SubIndex x : read only<br>
* (x > 0)
*/
#ifdef _OBJD_
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1A02[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 001: SubIndex 001 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 002: SubIndex 002 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 003: SubIndex 003 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 004: SubIndex 004 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 005: SubIndex 005 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 006: SubIndex 006 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 007: SubIndex 007 */
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}}; /* SubIndex 008: SubIndex 008 */
/**
* \brief Object 0x1A02 (Analog input TxPDO) object and entry names
*
* In this example no specific entry name is defined ("SubIndex xxx" is used)
*/
OBJCONST UCHAR OBJMEM aName0x1A02[] = "AI TxPDO-Map\000\377";
#endif //#ifdef _OBJD_
/**
* \brief Object 0x1A02 (Analog Input TxPDO) variable to handle object data
*
* SubIndex 0 : 1<br>
* SubIndex 1 : 0x6020.1 1bit (Reference to Analog under range)<br>
* SubIndex 2 : 0x6020.2 1bit (Reference to Analog over range)<br>
* SubIndex 3 : 0x6020.3 2bit (Reference to limit 1)<br>
* SubIndex 4 : 0x6020.5 2bit (Reference to limit 2)<br>
* SubIndex 5 : 8Bit Alignment<br>
* SubIndex 6 : 0x1802.7 1bit (Reference to TxPDO State (stored in analog input struct))<br>
* SubIndex 7 : 0x1802.9 1bit (Reference to TxPDO Toggle (stored in analog input struct))<br>
* SubIndex 8 : 0x6020.17 16bit (Reference to Analog input value)
*/
PROTO TOBJ1A02 sAITxPDOMap
#ifdef _EVALBOARD_
= {8, {0x60200101, 0x60200201, 0x60200302, 0x60200502, 0x08, 0x18020701, 0x18020901, 0x60201110}}
#endif
;
/** @}*/
/**
* \addtogroup SmAssignObjects SyncManager Assignment Objects
* @{
*/
#ifdef _OBJD_
/**
* \brief 0x1C12 (SyncManager 2 assignment) object name
*
* No entry names defined because the object code is ARRAY and all entry names are "SubIndex 000"
*/
OBJCONST UCHAR OBJMEM aName0x1C12[] = "RxPDO assign";
#endif //#ifdef _OBJD_
/**
* \brief 0x1C12 (SyncManager 2 assignment) variable to handle object data
*
* SubIndex 0 : 1<br>
* SubIndex 1 : 0x1601
*/
PROTO TOBJ1C12 sRxPDOassign
#ifdef _EVALBOARD_
= {0x01, {0x1601}}
#endif
;
#ifdef _OBJD_
/**
* \brief 0x1C13 (SyncManager 3 assignment) object name
*
* No entry names defined because the object code is ARRAY and all entry names are "SubIndex 000"
*/
OBJCONST UCHAR OBJMEM aName0x1C13[] = "TxPDO assign";
#endif //#ifdef _OBJD_
/**
* \brief 0x1C13 (SyncManager 3 assignment) variable to handle object data
*
* SubIndex 0 : 1<br>
* SubIndex 1 : 0x1A00<br>
* SubIndex 2 : 0x1A02
*/
PROTO TOBJ1C13 sTxPDOassign
#ifdef _EVALBOARD_
= {0x02, {0x1A00, 0x1A02}}
#endif
;
/** @}*/
/**
* \addtogroup PDO Process Data Objects
* @{
*/
#ifdef _OBJD_
/**
* \brief Object 0x6000 (Digital input object) entry descriptions
*
* SubIndex 0 : read only<br>
* SubIndex x : (One description for each switch) read only and TxPdo mappable<br>
* (x > 0)
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x6000[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 001: Switch 1 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 002: Switch 2 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 003: Switch 3 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 004: Switch 4 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 005: Switch 5 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 006: Switch 6 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 007: Switch 7 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 008: Switch 8 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 001: Switch 1 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 002: Switch 2 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 003: Switch 3 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 004: Switch 4 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 005: Switch 5 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 006: Switch 6 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 007: Switch 7 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 008: Switch 8 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 001: Switch 1 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 002: Switch 2 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 003: Switch 3 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 004: Switch 4 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 005: Switch 5 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 006: Switch 6 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 007: Switch 7 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 008: Switch 8 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 001: Switch 1 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 002: Switch 2 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 003: Switch 3 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 004: Switch 4 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 005: Switch 5 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 006: Switch 6 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 007: Switch 7 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING}, /* SubIndex 008: Switch 8 */
// {0x0000, 0x08, 0}
}; /* Subindex 009 for align */
/**
* \brief 0x6000 (Digital input object) object and entry names
*/
OBJCONST UCHAR OBJMEM aName0x6000[] = "DI Inputs\000Switch 1\000Switch 2\000Switch 3\000Switch 4\000Switch 5\000Switch 6\000Switch 7\000Switch 8\000Switch 9\000Switch 10\000Switch 11\000Switch 12\000Switch 13\000Switch 14\000Switch 15\000Switch 16\000Switch 17\000Switch 18\000Switch 19\000Switch 20\000Switch 21\000Switch 22\000Switch 23\000Switch 24\000Switch 25\000Switch 26\000Switch 27\000Switch 28\000Switch 29\000Switch 30\000Switch 31\000Switch 32\000\377";
#endif //#ifdef _OBJD_
/**
* \brief 0x6000 (Digital input object) variable to handle object data
*
* SubIndex 0 : 1<br>
* SubIndex x : every switch value is 0 by default
*/
PROTO TOBJ6000 sDIInputs
#ifdef _EVALBOARD_
= {32, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#endif
;
#ifdef _OBJD_
/**
* \brief Object 0x6020 (Analog input object) entry descriptions
*
* SubIndex 0 : read only<br>
* SubIndex 001: Underrange<br>
* SubIndex 002: Overrange<br>
* SubIndex 003: Limit 1<br>
* Subindex 004: doesn't exist<br>
* SubIndex 005: Limit 2<br>
* Subindex 006: 2Bit Alignment<br>
* Subindex 007: 6Bit Alignment<br>
* Subindex 008: doesn't exist<br>
* Subindex 009: doesn't exist<br>
* Subindex 010: doesn't exist<br>
* Subindex 011: doesn't exist<br>
* Subindex 012: doesn't exist<br>
* Subindex 013: doesn't exist<br>
* Subindex 014: doesn't exist<br>
* SubIndex 015: TxPDO State<br>
* SubIndex 016: TxPDO Toggle<br>
* SubIndex 017: Analog input
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x6020[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ },
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{DEFTYPE_BIT2, 0x02, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{0x0000, 0, 0},
{DEFTYPE_BIT2, 0x02, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{0x0000, 0x02, 0},
{0x0000, 0x06, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_TXPDOMAPPING},
{DEFTYPE_INTEGER16, 0x10, ACCESS_READ | OBJACCESS_TXPDOMAPPING}};
/**
* \brief 0x6020 (Analog input object) object and entry names
*/
OBJCONST UCHAR OBJMEM aName0x6020[] = "AI Inputs\000Underrange\000Overrange\000Limit 1\000\000Limit 2\000\000\000\000\000\000\000\000\000\000TxPDO State\000TxPDO Toggle\000Analog input\000\377";
#endif //#ifdef _OBJD_
/**
* \brief 0x6020 (Analog input object) variable to handle object data
*
*/
PROTO TOBJ6020 sAIInputs
#ifdef _EVALBOARD_
= {17, 0x00, 0x00, 0x00, 0x00, 0, 0, 0x00, 0x00, 0x7FFF}
#endif
;
/**
* \brief Object 0x7010 (Digital output object) entry descriptions
*
* SubIndex 0 : read only<br>
* SubIndex x : (One description for each led) read only and RxPdo mappable<br>
* (x > 0)
*/
#ifdef _OBJD_
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x7010[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 001: LED 1 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 002: LED 2 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 003: LED 3 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 004: LED 4 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 005: LED 5 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 006: LED 6 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 007: LED 7 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 008: LED 8 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 009: LED 9 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 010: LED 10 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 011: LED 11 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 012: LED 12 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 013: LED 13 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 014: LED 14 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 015: LED 15 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 016: LED 16 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 001: LED 1 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 002: LED 2 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 003: LED 3 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 004: LED 4 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 005: LED 5 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 006: LED 6 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 007: LED 7 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 008: LED 8 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 009: LED 9 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 010: LED 10 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 011: LED 11 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 012: LED 12 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 013: LED 13 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 014: LED 14 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 015: LED 15 */
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READ | OBJACCESS_RXPDOMAPPING}, /* SubIndex 016: LED 16 */
// {0x0000, 0x08, 0}
}; /* Subindex 008 for align */
/**
* \brief 0x6000 (Digital input object) object and entry names
*/
OBJCONST UCHAR OBJMEM aName0x7010[] = "DO Outputs\000LED 1\000LED 2\000LED 3\000LED 4\000LED 5\000LED 6\000LED 7\000LED 8\000LED 9\000LED 10\000LED 11\000LED 12\000LED 13\000LED 14\000LED 15\000LED 16\000LED 17\000LED 18\000LED 19\000LED 20\000LED 21\000LED 22\000LED 23\000LED 24\000LED 25\000LED 26\000LED 27\000LED 28\000LED 29\000LED 30\000LED 31\000LED 32\000\377";
#endif //#ifdef _OBJD_
/**
* \brief 0x6020 (Analog input object) variable to handle object data
*
*/
PROTO TOBJ7010 sDOOutputs
#ifdef _EVALBOARD_
= {32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#endif
;
/** @}*/
/**
* \addtogroup ConfigObjects Configuration Objects
* @{
*/
/**
* \brief Object 0x8020 (Analog input settings) entry descriptions
*
* SubIndex 0<br>
* SubIndex 001: Enable user scale<br>
* SubIndex 002: Presentation<br>
* Subindex 003 doesn't exist<br>
* Subindex 004 doesn't exist<br>
* Subindex 005 for align<br>
* Subindex 006 doesn't exist<br>
* SubIndex 007: Enable limit 1<br>
* SubIndex 008: Enable limit 2<br>
* Subindex 009 for align<br>
* Subindex 010 doesn't exist<br>
* Subindex 011 doesn't exist<br>
* Subindex 012 doesn't exist<br>
* Subindex 013 doesn't exist<br>
* Subindex 014 doesn't exist<br>
* Subindex 015 doesn't exist<br>
* Subindex 016 doesn't exist<br>
* SubIndex 017: Offset<br>
* SubIndex 018: Gain<br>
* SubIndex 019: Limit 1<br>
* SubIndex 020: Limit 2
*/
#ifdef _OBJD_
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x8020[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ },
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{0x0800, 0x03, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0x02, 0},
{0x0000, 0, 0},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{DEFTYPE_BOOLEAN, 0x01, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{0x0000, 0x08, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{0x0000, 0, 0},
{DEFTYPE_INTEGER16, 0x10, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{DEFTYPE_INTEGER32, 0x20, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{DEFTYPE_INTEGER16, 0x10, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS},
{DEFTYPE_INTEGER16, 0x10, ACCESS_READWRITE | OBJACCESS_BACKUP | OBJACCESS_SETTINGS}};
/** \brief Object 0x8020 (Analog input settings) object and entry names*/
OBJCONST UCHAR OBJMEM aName0x8020[] = "AI Settings\000Enable user scale\000Presentation\000\000\000\000\000Enable limit 1\000Enable limit 2\000\000\000\000\000\000\000\000\000Offset\000Gain\000Limit 1\000Limit 2\000\377";
#endif //#ifdef _OBJD_
/** \brief Object 0x8020 (Analog input settings) variable*/
PROTO TOBJ8020 sAISettings
#ifdef _EVALBOARD_
= {20, 0x00, 0x00, 0, 0x00, 0x00, 0, 0x00, 0x00, 0x00, 0x00}
#endif
;
/** @}*/
/**
* \addtogroup DeviceParaObjects Device Parameter Objects
* @{
*/
#ifdef _OBJD_
/**
* \brief 0xF000 (Modular Device Profile) entry descriptions
*
* Subindex 000<br>
* SubIndex 001: Module index distance<br>
* SubIndex 002: Maximum number of modules<br>
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0xF000[] = {
{DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ },
{DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ},
{DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ}};
/** \brief 0xF000 (Modular Device Profile) object and entry names*/
OBJCONST UCHAR OBJMEM aName0xF000[] = "Modular device profile\000Module index distance\000Maximum number of modules\000\377";
#endif
/**
* \brief 0xF000 (Modular Device Profile) variable to handle the object data
*
* SubIndex 0
* SubIndex 1 (Module Index distance) : 0x10
* SubIndex 2 (Maximum number of Modules) : 3
*/
/******************************************************************************
* Object 0xF000
******************************************************************************/
PROTO TOBJF000 sModulardeviceprofile
#ifdef _EVALBOARD_
= {2, 0x10, 0x03}
#endif
;
#ifdef _OBJD_
/**
* \brief 0xF010 (Module profile list) entry descriptions
*
* Subindex 0<br>
* SubIndex x
* (x > 0)
*/
OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0xF010[] = {
{DEFTYPE_UNSIGNED8, 0x08, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ},
{DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}};
/**
* \brief 0xF010 (Module profile list) object name
*
* no entry names defined because the object is an array (for every entry > 0 "SubIndex xxx" is returned)
*/
OBJCONST UCHAR OBJMEM aName0xF010[] = "Module profile list";
#endif
/**
*\brief 0xF010 (Module profile list) variable to handle object data
*
* SubIndex 0 : 3
* SubIndex 1 : 100 (Digital Input SubProfile)
* SubIndex 2 : 200 (Digital Output SubProfile)
* SubIndex 3 : 300 (Analog Input SubProfile)
*/
PROTO TOBJF010 sModulelist
#ifdef _EVALBOARD_
= {0x03,{0x64, 0xC8, 0x12C}}
#endif
;
/** @}*/
#ifdef _OBJD_
PROTO UINT8 ReadObject0x1802( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM * pData, UINT8 bCompleteAccess );
/*if _PIC18 is enabled the object dictionary is fixed defined in coeappl.c*/
/**
*\brief EL9800 Application specific object dictionary
*
*/
TOBJECT OBJMEM ApplicationObjDic[] = {
/* Enum 0x0800 */
{NULL,NULL, 0x0800, {DEFTYPE_ENUM, 0x02 | (OBJCODE_REC << 8)}, asEntryDesc0x0800, 0, apEnum0800 },
/* Object 0x1601 */
{NULL,NULL, 0x1601, {DEFTYPE_PDOMAPPING, 32 | (OBJCODE_REC << 8)}, asEntryDesc0x1601, aName0x1601, &sDORxPDOMap, NULL, NULL, 0x0000 },
/* Object 0x1802 */
{NULL,NULL, 0x1802, {DEFTYPE_RECORD, 9 | (OBJCODE_REC << 8)}, asEntryDesc0x1802, aName0x1802,&TxPDO1802Subindex0, ReadObject0x1802, NULL, 0x0000 },
/* Object 0x1A00 */
{NULL,NULL, 0x1A00, {DEFTYPE_PDOMAPPING, 32 | (OBJCODE_REC << 8)}, asEntryDesc0x1A00, aName0x1A00, &sDITxPDOMap, NULL, NULL, 0x0000 },
/* Object 0x1A02 */
{NULL,NULL, 0x1A02, {DEFTYPE_PDOMAPPING, 8 | (OBJCODE_REC << 8)}, asEntryDesc0x1A02, aName0x1A02, &sAITxPDOMap, NULL, NULL, 0x0000 },
/* Object 0x1C12 */
{NULL,NULL, 0x1C12, {DEFTYPE_UNSIGNED16, 1 | (OBJCODE_ARR << 8)}, asPDOAssignEntryDesc, aName0x1C12, &sRxPDOassign, NULL, NULL, 0x0000 },
/* Object 0x1C13 */
{NULL,NULL, 0x1C13, {DEFTYPE_UNSIGNED16, 2 | (OBJCODE_ARR << 8)}, asPDOAssignEntryDesc, aName0x1C13, &sTxPDOassign, NULL, NULL, 0x0000 },
/* Object 0x6000 */
{NULL,NULL, 0x6000, {DEFTYPE_RECORD, 32 | (OBJCODE_REC << 8)}, asEntryDesc0x6000, aName0x6000, &sDIInputs, NULL, NULL, 0x0000 },
/* Object 0x6020 */
{NULL,NULL, 0x6020, {DEFTYPE_RECORD, 17 | (OBJCODE_REC << 8)}, asEntryDesc0x6020, aName0x6020, &sAIInputs, NULL, NULL, 0x0000 },
/* Object 0x7010 */
{NULL,NULL, 0x7010, {DEFTYPE_RECORD, 32 | (OBJCODE_REC << 8)}, asEntryDesc0x7010, aName0x7010, &sDOOutputs, NULL, NULL, 0x0000 },
/* Object 0x8020 */
{NULL,NULL, 0x8020, {DEFTYPE_RECORD, 20 | (OBJCODE_REC << 8)}, asEntryDesc0x8020, aName0x8020, &sAISettings, NULL, NULL, 0x0008 },
/* Object 0xF000 */
{NULL,NULL, 0xF000, {DEFTYPE_RECORD, 2 | (OBJCODE_REC << 8)}, asEntryDesc0xF000, aName0xF000, &sModulardeviceprofile, NULL, NULL, 0x0000 },
/* Object 0xF010 */
{NULL,NULL, 0xF010, {DEFTYPE_UNSIGNED32, 3 | (OBJCODE_ARR << 8)}, asEntryDesc0xF010, aName0xF010, &sModulelist, NULL, NULL, 0x0000 },
{NULL,NULL, 0xFFFF, {0, 0}, NULL, NULL, NULL, NULL}};
#endif //#ifdef _OBJD_
PROTO void APPL_Application(void);
PROTO void APPL_AckErrorInd(UINT16 stateTrans);
PROTO UINT16 APPL_StartMailboxHandler(void);
PROTO UINT16 APPL_StopMailboxHandler(void);
PROTO UINT16 APPL_StartInputHandler(UINT16 *pIntMask);
PROTO UINT16 APPL_StopInputHandler(void);
PROTO UINT16 APPL_StartOutputHandler(void);
PROTO UINT16 APPL_StopOutputHandler(void);
PROTO UINT16 APPL_GenerateMapping(UINT16 *pInputSize,UINT16 *pOutputSize);
PROTO void APPL_InputMapping(UINT16* pData);
PROTO void APPL_OutputMapping(UINT16* pData);
PROTO int ECT_main(void);
#undef PROTO
/** @}*/