www.pudn.com > ethercat-slave-source-code.rar > ecatsoe.h, change:2013-05-03,size:5134b
/** * \addtogroup SoE Servo Drive Profile over EtherCAT * @{ */ /** \file ecatsoe.h \author EthercatSSC@beckhoff.com \brief SoE structures and defines \version 5.01 <br>Changes to version - :<br> V5.01 : Start file change log */ #ifndef _ECATSOE_H_ #define _ECATSOE_H_ /*----------------------------------------------------------------------------------------- ------ ------ Includes ------ -----------------------------------------------------------------------------------------*/ #include "mailbox.h" /*----------------------------------------------------------------------------------------- ------ ------ Defines and Types ------ -----------------------------------------------------------------------------------------*/ /*--------------------------------------------- - Error Codes -----------------------------------------------*/ #define ERROR_SOEINVALIDSERVICE 0x1001 /**< \brief SoE Error Code : Invalid service*/ #define ERROR_SOENOTSUPPORTED 0x1002 /**< \brief SoE Error Code : Not supported*/ /*--------------------------------------------- - SOE services -----------------------------------------------*/ #define ECAT_SOE_OPCODE_RRQ 1 /**< \brief SoE Read Request*/ #define ECAT_SOE_OPCODE_RRS 2 /**< \brief SoE Read Response*/ #define ECAT_SOE_OPCODE_WRQ 3 /**< \brief SoE Write Request*/ #define ECAT_SOE_OPCODE_WRS 4 /**< \brief SoE Write Response*/ #define ECAT_SOE_OPCODE_NFC 5 /**< \brief SoE Notification Request*/ #define ECAT_SOE_OPCODE_EMCY 6 /**< \brief SoE Emergency*/ /*--------------------------------------------- - SOE Structures -----------------------------------------------*/ /** \brief SoE Header*/ typedef struct MBX_STRUCT_PACKED_START { union MBX_STRUCT_PACKED_START { UINT16 Word; /**< \brief Flags buffer*/ #define SOEFLAGS_OPCODE 0x0007 /**< \brief SoE Flags*/ /**< * 0 = unused<br> * 1 = readReq<br> * 2 = readRes<br> * 3 = writeReq<br> * 4 = writeRes<br> * 5 = notification (command changed notification)*/ #define SOEFLAGS_INCOMPLETE 0x0008 /**< \brief more follows*/ #define SOEFLAGS_ERROR 0x0010 /**< \brief an error word follows*/ #define SOEFLAGS_DRIVENO 0x00E0 /**< \brief drive number*/ #define SOEFLAGS_DATASTATE 0x0100 /**< \brief Data state follows or requested*/ #define SOEFLAGS_NAME 0x0200 /**< \brief Name follows or requested*/ #define SOEFLAGS_ATTRIBUTE 0x0400 /**< \brief Attribute follows or requested*/ #define SOEFLAGS_UNIT 0x0800 /**< \brief Unit follows or requested*/ #define SOEFLAGS_MIN 0x1000 /**< \brief Min value follows or requested*/ #define SOEFLAGS_MAX 0x2000 /**< \brief Max value follows or requested*/ #define SOEFLAGS_VALUE 0x4000 /**< \brief Value follows or requested*/ #define SOEFLAGS_DEFAULT 0x8000 /**< \brief Default value*/ }MBX_STRUCT_PACKED_END Flags;/**< \brief Flags variable*/ UINT16 IDN_Frag; /**< \brief IDN fragments * * if (InComplete==0) SERCOS IDN else FragmentsLeft */ }MBX_STRUCT_PACKED_END TSOEHEADER; #define SOE_HEADER_SIZE SIZEOF(TSOEHEADER) /**< \brief Sdo header size*/ /** *Complete SoE Datagram including mailbox header, SoE header data */ typedef struct MBX_STRUCT_PACKED_START { TMBXHEADER MbxHeader; /**< \brief Mailbox header*/ TSOEHEADER SoeHeader; /**< \brief SoE header*/ UINT8 Data[(MAX_MBX_SIZE) - SOE_HEADER_SIZE]; /**< \brief buffer for SoE data*/ }MBX_STRUCT_PACKED_END TSOEMBX; #endif //_ECATSOE_H_ /*----------------------------------------------------------------------------------------- ------ ------ Global Variables ------ -----------------------------------------------------------------------------------------*/ #if _ECATSOE_ #define PROTO #else #define PROTO extern #endif /*----------------------------------------------------------------------------------------- ------ ------ Global Functions ------ -----------------------------------------------------------------------------------------*/ PROTO void SOE_Init(void); PROTO UINT8 SOE_ServiceInd(TMBX MBXMEM *pReceiveMbx); PROTO void SOE_ContinueInd(TMBX MBXMEM * pMbx); PROTO void SOE_ReadInd(TSOEMBX MBXMEM *pSoeMbx); PROTO void SOE_WriteInd(TSOEMBX MBXMEM *pSoeMbx); PROTO UINT16 SOE_NotificationReq(UINT16 idn, UINT16 channel, UINT16 dataState); #undef PROTO /** @}*/