canopennode/CO_OD.h

409 lines
17 KiB
C

/*******************************************************************************
File: CO_OD.h
CANopen Object Dictionary.
Copyright (C) 2004-2008 Janez Paternoster
License: GNU Lesser General Public License (LGPL).
<http://canopennode.sourceforge.net>
(For more information see <CO_SDO.h>.)
*/
/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Author: Janez Paternoster
This file was automatically generated with CANopenNode Object
Dictionary Editor. DON'T EDIT THIS FILE MANUALLY !!!!
*******************************************************************************/
#ifndef _CO_OD_H
#define _CO_OD_H
/*******************************************************************************
CANopen DATA DYPES
*******************************************************************************/
typedef uint8_t UNSIGNED8;
typedef uint16_t UNSIGNED16;
typedef uint32_t UNSIGNED32;
typedef uint64_t UNSIGNED64;
typedef int8_t INTEGER8;
typedef int16_t INTEGER16;
typedef int32_t INTEGER32;
typedef int64_t INTEGER64;
typedef float32_t REAL32;
typedef float64_t REAL64;
typedef char_t VISIBLE_STRING;
typedef oChar_t OCTET_STRING;
typedef domain_t DOMAIN;
/*******************************************************************************
FILE INFO:
FileName: IO
FileVersion: 3.0
CreationTime: 13:23:28
CreationDate: 2013-03-09
CreatedBy: -
*******************************************************************************/
/*******************************************************************************
DEVICE INFO:
VendorName: Paternoster
VendorNumber: 0
ProductName: CANopenNode
ProductNumber: 0
*******************************************************************************/
/*******************************************************************************
FEATURES
*******************************************************************************/
#define CO_NO_SYNC 1 //Associated objects: 1005, 1006, 1007, 2103, 2104
#define CO_NO_EMERGENCY 1 //Associated objects: 1014, 1015
#define CO_NO_SDO_SERVER 1 //Associated objects: 1200
#define CO_NO_SDO_CLIENT 0
#define CO_NO_RPDO 4 //Associated objects: 1400, 1401, 1402, 1403, 1600, 1601, 1602, 1603
#define CO_NO_TPDO 4 //Associated objects: 1800, 1801, 1802, 1803, 1A00, 1A01, 1A02, 1A03
#define CO_NO_NMT_MASTER 0
/*******************************************************************************
OBJECT DICTIONARY
*******************************************************************************/
#define CO_OD_NoOfElements 54
/*******************************************************************************
TYPE DEFINITIONS FOR RECORDS
*******************************************************************************/
/*1018 */ typedef struct{
UNSIGNED8 maxSubIndex;
UNSIGNED32 vendorID;
UNSIGNED32 productCode;
UNSIGNED32 revisionNumber;
UNSIGNED32 serialNumber;
} OD_identity_t;
/*1200[1] */ typedef struct{
UNSIGNED8 maxSubIndex;
UNSIGNED32 COB_IDClientToServer;
UNSIGNED32 COB_IDServerToClient;
} OD_SDOServerParameter_t;
/*1400[4] */ typedef struct{
UNSIGNED8 maxSubIndex;
UNSIGNED32 COB_IDUsedByRPDO;
UNSIGNED8 transmissionType;
} OD_RPDOCommunicationParameter_t;
/*1600[4] */ typedef struct{
UNSIGNED8 numberOfMappedObjects;
UNSIGNED32 mappedObject1;
UNSIGNED32 mappedObject2;
UNSIGNED32 mappedObject3;
UNSIGNED32 mappedObject4;
UNSIGNED32 mappedObject5;
UNSIGNED32 mappedObject6;
UNSIGNED32 mappedObject7;
UNSIGNED32 mappedObject8;
} OD_RPDOMappingParameter_t;
/*1800[4] */ typedef struct{
UNSIGNED8 maxSubIndex;
UNSIGNED32 COB_IDUsedByTPDO;
UNSIGNED8 transmissionType;
UNSIGNED16 inhibitTime;
UNSIGNED8 compatibilityEntry;
UNSIGNED16 eventTimer;
UNSIGNED8 SYNCStartValue;
} OD_TPDOCommunicationParameter_t;
/*1A00[4] */ typedef struct{
UNSIGNED8 numberOfMappedObjects;
UNSIGNED32 mappedObject1;
UNSIGNED32 mappedObject2;
UNSIGNED32 mappedObject3;
UNSIGNED32 mappedObject4;
UNSIGNED32 mappedObject5;
UNSIGNED32 mappedObject6;
UNSIGNED32 mappedObject7;
UNSIGNED32 mappedObject8;
} OD_TPDOMappingParameter_t;
/*2120 */ typedef struct{
UNSIGNED8 maxSubIndex;
INTEGER64 I64;
UNSIGNED64 U64;
REAL32 R32;
REAL64 R64;
DOMAIN domain;
} OD_testVar_t;
/*******************************************************************************
STRUCTURES FOR VARIABLES IN DIFFERENT MEMORY LOCATIONS
*******************************************************************************/
#define CO_OD_FIRST_LAST_WORD 0x55 //Any value from 0x01 to 0xFE. If changed, EEPROM will be reinitialized.
/***** Structure for RAM variables ********************************************/
struct sCO_OD_RAM{
UNSIGNED32 FirstWord;
/*1001 */ UNSIGNED8 errorRegister;
/*1002 */ UNSIGNED32 manufacturerStatusRegister;
/*1003 */ UNSIGNED32 preDefinedErrorField[8];
/*1010 */ UNSIGNED32 storeParameters[1];
/*1011 */ UNSIGNED32 restoreDefaultParameters[1];
/*2100 */ OCTET_STRING errorStatusBits[10];
/*2103 */ UNSIGNED16 SYNCCounter;
/*2104 */ UNSIGNED16 SYNCTime;
/*2107 */ UNSIGNED16 performance[5];
/*2108 */ INTEGER16 temperature[1];
/*2109 */ INTEGER16 voltage[1];
/*2110 */ INTEGER32 variableInt32[16];
/*2120 */ OD_testVar_t testVar;
/*6000 */ UNSIGNED8 readInput8Bit[8];
/*6200 */ UNSIGNED8 writeOutput8Bit[8];
/*6401 */ INTEGER16 readAnalogueInput16Bit[12];
/*6411 */ INTEGER16 writeAnalogueOutput16Bit[8];
UNSIGNED32 LastWord;
};
/***** Structure for EEPROM variables *****************************************/
struct sCO_OD_EEPROM{
UNSIGNED32 FirstWord;
/*2106 */ UNSIGNED32 powerOnCounter;
/*2112 */ INTEGER32 variableNVInt32[16];
UNSIGNED32 LastWord;
};
/***** Structure for ROM variables ********************************************/
struct sCO_OD_ROM{
UNSIGNED32 FirstWord;
/*1000 */ UNSIGNED32 deviceType;
/*1005 */ UNSIGNED32 COB_ID_SYNCMessage;
/*1006 */ UNSIGNED32 communicationCyclePeriod;
/*1007 */ UNSIGNED32 synchronousWindowLength;
/*1008 */ VISIBLE_STRING manufacturerDeviceName[11];
/*1009 */ VISIBLE_STRING manufacturerHardwareVersion[4];
/*100A */ VISIBLE_STRING manufacturerSoftwareVersion[4];
/*1014 */ UNSIGNED32 COB_ID_EMCY;
/*1015 */ UNSIGNED16 inhibitTimeEMCY;
/*1016 */ UNSIGNED32 consumerHeartbeatTime[4];
/*1017 */ UNSIGNED16 producerHeartbeatTime;
/*1018 */ OD_identity_t identity;
/*1019 */ UNSIGNED8 synchronousCounterOverflowValue;
/*1029 */ UNSIGNED8 errorBehavior[6];
/*1200[1] */ OD_SDOServerParameter_t SDOServerParameter[1];
/*1400[4] */ OD_RPDOCommunicationParameter_t RPDOCommunicationParameter[4];
/*1600[4] */ OD_RPDOMappingParameter_t RPDOMappingParameter[4];
/*1800[4] */ OD_TPDOCommunicationParameter_t TPDOCommunicationParameter[4];
/*1A00[4] */ OD_TPDOMappingParameter_t TPDOMappingParameter[4];
/*1F80 */ UNSIGNED32 NMTStartup;
/*2101 */ UNSIGNED8 CANNodeID;
/*2102 */ UNSIGNED16 CANBitRate;
/*2111 */ INTEGER32 variableROMInt32[16];
UNSIGNED32 LastWord;
};
/***** Declaration of Object Dictionary variables *****************************/
extern struct sCO_OD_RAM CO_OD_RAM;
extern struct sCO_OD_EEPROM CO_OD_EEPROM;
extern struct sCO_OD_ROM CO_OD_ROM;
/*******************************************************************************
ALIASES FOR OBJECT DICTIONARY VARIABLES
*******************************************************************************/
/*1000, Data Type: UNSIGNED32 */
#define OD_deviceType CO_OD_ROM.deviceType
/*1001, Data Type: UNSIGNED8 */
#define OD_errorRegister CO_OD_RAM.errorRegister
/*1002, Data Type: UNSIGNED32 */
#define OD_manufacturerStatusRegister CO_OD_RAM.manufacturerStatusRegister
/*1003, Data Type: UNSIGNED32, Array[8] */
#define OD_preDefinedErrorField CO_OD_RAM.preDefinedErrorField
#define ODL_preDefinedErrorField_arrayLength 8
/*1005, Data Type: UNSIGNED32 */
#define OD_COB_ID_SYNCMessage CO_OD_ROM.COB_ID_SYNCMessage
/*1006, Data Type: UNSIGNED32 */
#define OD_communicationCyclePeriod CO_OD_ROM.communicationCyclePeriod
/*1007, Data Type: UNSIGNED32 */
#define OD_synchronousWindowLength CO_OD_ROM.synchronousWindowLength
/*1008, Data Type: VISIBLE_STRING, Array[11] */
#define OD_manufacturerDeviceName CO_OD_ROM.manufacturerDeviceName
#define ODL_manufacturerDeviceName_stringLength 11
/*1009, Data Type: VISIBLE_STRING, Array[4] */
#define OD_manufacturerHardwareVersion CO_OD_ROM.manufacturerHardwareVersion
#define ODL_manufacturerHardwareVersion_stringLength 4
/*100A, Data Type: VISIBLE_STRING, Array[4] */
#define OD_manufacturerSoftwareVersion CO_OD_ROM.manufacturerSoftwareVersion
#define ODL_manufacturerSoftwareVersion_stringLength 4
/*1010, Data Type: UNSIGNED32, Array[1] */
#define OD_storeParameters CO_OD_RAM.storeParameters
#define ODL_storeParameters_arrayLength 1
#define ODA_storeParameters_saveAllParameters 0
/*1011, Data Type: UNSIGNED32, Array[1] */
#define OD_restoreDefaultParameters CO_OD_RAM.restoreDefaultParameters
#define ODL_restoreDefaultParameters_arrayLength 1
#define ODA_restoreDefaultParameters_restoreAllDefaultParameters 0
/*1014, Data Type: UNSIGNED32 */
#define OD_COB_ID_EMCY CO_OD_ROM.COB_ID_EMCY
/*1015, Data Type: UNSIGNED16 */
#define OD_inhibitTimeEMCY CO_OD_ROM.inhibitTimeEMCY
/*1016, Data Type: UNSIGNED32, Array[4] */
#define OD_consumerHeartbeatTime CO_OD_ROM.consumerHeartbeatTime
#define ODL_consumerHeartbeatTime_arrayLength 4
/*1017, Data Type: UNSIGNED16 */
#define OD_producerHeartbeatTime CO_OD_ROM.producerHeartbeatTime
/*1018, Data Type: OD_identity_t */
#define OD_identity CO_OD_ROM.identity
/*1019, Data Type: UNSIGNED8 */
#define OD_synchronousCounterOverflowValue CO_OD_ROM.synchronousCounterOverflowValue
/*1029, Data Type: UNSIGNED8, Array[6] */
#define OD_errorBehavior CO_OD_ROM.errorBehavior
#define ODL_errorBehavior_arrayLength 6
#define ODA_errorBehavior_communication 0
#define ODA_errorBehavior_communicationOther 1
#define ODA_errorBehavior_communicationPassive 2
#define ODA_errorBehavior_generic 3
#define ODA_errorBehavior_deviceProfile 4
#define ODA_errorBehavior_manufacturerSpecific 5
/*1200[1], Data Type: OD_SDOServerParameter_t, Array[1] */
#define OD_SDOServerParameter CO_OD_ROM.SDOServerParameter
/*1400[4], Data Type: OD_RPDOCommunicationParameter_t, Array[4] */
#define OD_RPDOCommunicationParameter CO_OD_ROM.RPDOCommunicationParameter
/*1600[4], Data Type: OD_RPDOMappingParameter_t, Array[4] */
#define OD_RPDOMappingParameter CO_OD_ROM.RPDOMappingParameter
/*1800[4], Data Type: OD_TPDOCommunicationParameter_t, Array[4] */
#define OD_TPDOCommunicationParameter CO_OD_ROM.TPDOCommunicationParameter
/*1A00[4], Data Type: OD_TPDOMappingParameter_t, Array[4] */
#define OD_TPDOMappingParameter CO_OD_ROM.TPDOMappingParameter
/*1F80, Data Type: UNSIGNED32 */
#define OD_NMTStartup CO_OD_ROM.NMTStartup
/*2100, Data Type: OCTET_STRING, Array[10] */
#define OD_errorStatusBits CO_OD_RAM.errorStatusBits
#define ODL_errorStatusBits_stringLength 10
/*2101, Data Type: UNSIGNED8 */
#define OD_CANNodeID CO_OD_ROM.CANNodeID
/*2102, Data Type: UNSIGNED16 */
#define OD_CANBitRate CO_OD_ROM.CANBitRate
/*2103, Data Type: UNSIGNED16 */
#define OD_SYNCCounter CO_OD_RAM.SYNCCounter
/*2104, Data Type: UNSIGNED16 */
#define OD_SYNCTime CO_OD_RAM.SYNCTime
/*2106, Data Type: UNSIGNED32 */
#define OD_powerOnCounter CO_OD_EEPROM.powerOnCounter
/*2107, Data Type: UNSIGNED16, Array[5] */
#define OD_performance CO_OD_RAM.performance
#define ODL_performance_arrayLength 5
#define ODA_performance_cyclesPerSecond 0
#define ODA_performance_timerCycleTime 1
#define ODA_performance_timerCycleMaxTime 2
#define ODA_performance_mainCycleTime 3
#define ODA_performance_mainCycleMaxTime 4
/*2108, Data Type: INTEGER16, Array[1] */
#define OD_temperature CO_OD_RAM.temperature
#define ODL_temperature_arrayLength 1
#define ODA_temperature_mainPCB 0
/*2109, Data Type: INTEGER16, Array[1] */
#define OD_voltage CO_OD_RAM.voltage
#define ODL_voltage_arrayLength 1
#define ODA_voltage_mainPCBSupply 0
/*2110, Data Type: INTEGER32, Array[16] */
#define OD_variableInt32 CO_OD_RAM.variableInt32
#define ODL_variableInt32_arrayLength 16
/*2111, Data Type: INTEGER32, Array[16] */
#define OD_variableROMInt32 CO_OD_ROM.variableROMInt32
#define ODL_variableROMInt32_arrayLength 16
/*2112, Data Type: INTEGER32, Array[16] */
#define OD_variableNVInt32 CO_OD_EEPROM.variableNVInt32
#define ODL_variableNVInt32_arrayLength 16
/*2120, Data Type: OD_testVar_t */
#define OD_testVar CO_OD_RAM.testVar
/*6000, Data Type: UNSIGNED8, Array[8] */
#define OD_readInput8Bit CO_OD_RAM.readInput8Bit
#define ODL_readInput8Bit_arrayLength 8
/*6200, Data Type: UNSIGNED8, Array[8] */
#define OD_writeOutput8Bit CO_OD_RAM.writeOutput8Bit
#define ODL_writeOutput8Bit_arrayLength 8
/*6401, Data Type: INTEGER16, Array[12] */
#define OD_readAnalogueInput16Bit CO_OD_RAM.readAnalogueInput16Bit
#define ODL_readAnalogueInput16Bit_arrayLength 12
/*6411, Data Type: INTEGER16, Array[8] */
#define OD_writeAnalogueOutput16Bit CO_OD_RAM.writeAnalogueOutput16Bit
#define ODL_writeAnalogueOutput16Bit_arrayLength 8
#endif