EtherCAT slave that reads 3 Xsens IMU's connected to a Xbus Master

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Committer:
vsluiter
Date:
Fri Mar 06 08:27:52 2015 +0000
Revision:
20:ad13d4f5fd98
Parent:
16:bfc7ea6bd1af
Child:
23:2b2cdba08259
Receiver working, but data on EtherCAT side is garbled. Just changed to signed values.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsluiter 2:3dd1240eb938 1 /*
vsluiter 2:3dd1240eb938 2 * SOES Simple Open EtherCAT Slave
vsluiter 2:3dd1240eb938 3 *
vsluiter 2:3dd1240eb938 4 * File : objectlist.h
vsluiter 2:3dd1240eb938 5 * Version : 0.9.2
vsluiter 2:3dd1240eb938 6 * Date : 22-02-2010
vsluiter 2:3dd1240eb938 7 * Copyright (C) 2007-2010 Arthur Ketels
vsluiter 2:3dd1240eb938 8 *
vsluiter 2:3dd1240eb938 9 * SOES is free software; you can redistribute it and/or modify it under
vsluiter 2:3dd1240eb938 10 * the terms of the GNU General Public License version 2 as published by the Free
vsluiter 2:3dd1240eb938 11 * Software Foundation.
vsluiter 2:3dd1240eb938 12 *
vsluiter 2:3dd1240eb938 13 * SOES is distributed in the hope that it will be useful, but WITHOUT ANY
vsluiter 2:3dd1240eb938 14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
vsluiter 2:3dd1240eb938 15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
vsluiter 2:3dd1240eb938 16 * for more details.
vsluiter 2:3dd1240eb938 17 *
vsluiter 2:3dd1240eb938 18 * As a special exception, if other files instantiate templates or use macros
vsluiter 2:3dd1240eb938 19 * or inline functions from this file, or you compile this file and link it
vsluiter 2:3dd1240eb938 20 * with other works to produce a work based on this file, this file does not
vsluiter 2:3dd1240eb938 21 * by itself cause the resulting work to be covered by the GNU General Public
vsluiter 2:3dd1240eb938 22 * License. However the source code for this file must still be made available
vsluiter 2:3dd1240eb938 23 * in accordance with section (3) of the GNU General Public License.
vsluiter 2:3dd1240eb938 24 *
vsluiter 2:3dd1240eb938 25 * This exception does not invalidate any other reasons why a work based on
vsluiter 2:3dd1240eb938 26 * this file might be covered by the GNU General Public License.
vsluiter 2:3dd1240eb938 27 *
vsluiter 2:3dd1240eb938 28 * The EtherCAT Technology, the trade name and logo "EtherCAT" are the intellectual
vsluiter 2:3dd1240eb938 29 * property of, and protected by Beckhoff Automation GmbH.
vsluiter 2:3dd1240eb938 30 */
vsluiter 2:3dd1240eb938 31 #ifndef __objectlist__
vsluiter 2:3dd1240eb938 32 #define __objectlist__
vsluiter 2:3dd1240eb938 33
vsluiter 2:3dd1240eb938 34 /**
vsluiter 2:3dd1240eb938 35 For info about this file, please check http://bitbucket.org/utwente_bss/soes_arm/wiki/objectlist_h
vsluiter 2:3dd1240eb938 36 */
vsluiter 2:3dd1240eb938 37 typedef const struct
vsluiter 2:3dd1240eb938 38 {
vsluiter 2:3dd1240eb938 39 uint16 subindex;
vsluiter 2:3dd1240eb938 40 uint16 datatype;
vsluiter 2:3dd1240eb938 41 uint16 bitlength;
vsluiter 2:3dd1240eb938 42 uint16 access;
vsluiter 2:3dd1240eb938 43 char const *name;
vsluiter 2:3dd1240eb938 44 uint32 value;
vsluiter 2:3dd1240eb938 45 void *data;
vsluiter 2:3dd1240eb938 46 } _objd;
vsluiter 2:3dd1240eb938 47
vsluiter 2:3dd1240eb938 48 typedef const struct
vsluiter 2:3dd1240eb938 49 {
vsluiter 2:3dd1240eb938 50 uint16 index;
vsluiter 2:3dd1240eb938 51 uint16 objtype;
vsluiter 2:3dd1240eb938 52 uint8 maxsub;
vsluiter 2:3dd1240eb938 53 uint8 pad1;
vsluiter 2:3dd1240eb938 54 char const *name;
vsluiter 2:3dd1240eb938 55 _objd const *objdesc;
vsluiter 2:3dd1240eb938 56 } _objectlist;
vsluiter 2:3dd1240eb938 57
vsluiter 2:3dd1240eb938 58 #define OBJH_READ 0
vsluiter 2:3dd1240eb938 59 #define OBJH_WRITE 1
vsluiter 2:3dd1240eb938 60
vsluiter 2:3dd1240eb938 61 #define _ac const char
vsluiter 2:3dd1240eb938 62 #define nil 0
vsluiter 2:3dd1240eb938 63
vsluiter 2:3dd1240eb938 64 //Described in Table 63 & Table 64 of ETG1000.6
vsluiter 2:3dd1240eb938 65 #define OTYPE_DOMAIN 0x0002
vsluiter 2:3dd1240eb938 66 #define OTYPE_DEFTYPE 0x0005
vsluiter 2:3dd1240eb938 67 #define OTYPE_DEFSTRUCT 0x0006
vsluiter 2:3dd1240eb938 68 #define OTYPE_VAR 0x0007
vsluiter 2:3dd1240eb938 69 #define OTYPE_ARRAY 0x0008
vsluiter 2:3dd1240eb938 70 #define OTYPE_RECORD 0x0009
vsluiter 2:3dd1240eb938 71
vsluiter 2:3dd1240eb938 72 //Described in Table 70 of ETG1000.6
vsluiter 2:3dd1240eb938 73 #define DTYPE_BOOLEAN 0x0001
vsluiter 2:3dd1240eb938 74 #define DTYPE_INTEGER8 0x0002
vsluiter 2:3dd1240eb938 75 #define DTYPE_INTEGER16 0x0003
vsluiter 2:3dd1240eb938 76 #define DTYPE_INTEGER32 0x0004
vsluiter 2:3dd1240eb938 77 #define DTYPE_UNSIGNED8 0x0005
vsluiter 2:3dd1240eb938 78 #define DTYPE_UNSIGNED16 0x0006
vsluiter 2:3dd1240eb938 79 #define DTYPE_UNSIGNED32 0x0007
vsluiter 2:3dd1240eb938 80 #define DTYPE_REAL32 0x0008
vsluiter 2:3dd1240eb938 81 #define DTYPE_VISIBLE_STRING 0x0009
vsluiter 2:3dd1240eb938 82 #define DTYPE_OCTET_STRING 0x000A
vsluiter 2:3dd1240eb938 83 #define DTYPE_UNICODE_STRING 0x000B
vsluiter 2:3dd1240eb938 84 #define DTYPE_INTEGER24 0x0010
vsluiter 2:3dd1240eb938 85 #define DTYPE_UNSIGNED24 0x0016
vsluiter 2:3dd1240eb938 86 #define DTYPE_INTEGER64 0x0015
vsluiter 2:3dd1240eb938 87 #define DTYPE_UNSIGNED64 0x001B
vsluiter 2:3dd1240eb938 88 #define DTYPE_REAL64 0x0011
vsluiter 2:3dd1240eb938 89 #define DTYPE_PDO_MAPPING 0x0021
vsluiter 2:3dd1240eb938 90 #define DTYPE_IDENTITY 0x0023
vsluiter 2:3dd1240eb938 91 #define DTYPE_BIT1 0x0030
vsluiter 2:3dd1240eb938 92 #define DTYPE_BIT2 0x0031
vsluiter 2:3dd1240eb938 93 #define DTYPE_BIT3 0x0032
vsluiter 2:3dd1240eb938 94 #define DTYPE_BIT4 0x0033
vsluiter 2:3dd1240eb938 95 #define DTYPE_BIT5 0x0034
vsluiter 2:3dd1240eb938 96 #define DTYPE_BIT6 0x0035
vsluiter 2:3dd1240eb938 97 #define DTYPE_BIT7 0x0036
vsluiter 2:3dd1240eb938 98 #define DTYPE_BIT8 0x0037
vsluiter 2:3dd1240eb938 99
vsluiter 2:3dd1240eb938 100 //See 'Object Access' in Table 47 of ETG1000.6
vsluiter 2:3dd1240eb938 101 #define ATYPE_R 0x07
vsluiter 2:3dd1240eb938 102 #define ATYPE_RW 0x3F
vsluiter 2:3dd1240eb938 103 #define ATYPE_RWpre 0x0F
vsluiter 2:3dd1240eb938 104 #define ATYPE_RXPDO 0x40
vsluiter 2:3dd1240eb938 105 #define ATYPE_TXPDO 0x80
vsluiter 0:a8daa9348a67 106
vsluiter 2:3dd1240eb938 107 /** Mapping of parameters is according to ETG.5000 document, and ETG.1000.6
vsluiter 2:3dd1240eb938 108 */
vsluiter 2:3dd1240eb938 109 _ac acName1000[]="Device Type";
vsluiter 2:3dd1240eb938 110 _ac acName1008[]="Manufacturer Device Name";
vsluiter 2:3dd1240eb938 111 _ac acName1009[]="Manufacturer Hardware Version";
vsluiter 2:3dd1240eb938 112 _ac acName100A[]="Manufacturer Software Version";
vsluiter 2:3dd1240eb938 113 _ac acName1018[]="Identity Object";
vsluiter 2:3dd1240eb938 114 /*Subindexes for Identity Object*/
vsluiter 2:3dd1240eb938 115 _ac acName1018_01[]="Vendor ID";
vsluiter 2:3dd1240eb938 116 _ac acName1018_02[]="Product Code";
vsluiter 2:3dd1240eb938 117 _ac acName1018_03[]="Revision Number";
vsluiter 2:3dd1240eb938 118 _ac acName1018_04[]="Serial Number";
vsluiter 2:3dd1240eb938 119 /*End of subindexes for Identity Object*/
vsluiter 2:3dd1240eb938 120 _ac acNameMO[]="Mapped object";
vsluiter 2:3dd1240eb938 121 _ac acName1600[]="Receive PDO mapping";
vsluiter 15:b8d72679e644 122 _ac acName1A00[]="Transmit PDO mapping - First IMU";
vsluiter 15:b8d72679e644 123 _ac acName1A01[]="Transmit PDO mapping - Second IMU";
vsluiter 15:b8d72679e644 124 _ac acName1A02[]="Transmit PDO mapping - Third IMU";
vsluiter 2:3dd1240eb938 125 _ac acName1C00[]="Sync Manager Communication type";
vsluiter 2:3dd1240eb938 126 /*Subindexes for Sync Manager Communication type*/
vsluiter 2:3dd1240eb938 127 _ac acName1C00_01[]="Communications type SM0";
vsluiter 2:3dd1240eb938 128 _ac acName1C00_02[]="Communications type SM1";
vsluiter 2:3dd1240eb938 129 _ac acName1C00_03[]="Communications type SM2";
vsluiter 2:3dd1240eb938 130 _ac acName1C00_04[]="Communications type SM3";
vsluiter 2:3dd1240eb938 131 /*End of subindexes for Sync Manager Communication type*/
vsluiter 2:3dd1240eb938 132 _ac acName1C10[]="Sync Manager 0 PDO Assignment";
vsluiter 2:3dd1240eb938 133 _ac acName1C11[]="Sync Manager 1 PDO Assignment";
vsluiter 2:3dd1240eb938 134 _ac acName1C12[]="Sync Manager 2 PDO Assignment";
vsluiter 2:3dd1240eb938 135 _ac acName1C13[]="Sync Manager 3 PDO Assignment";
vsluiter 2:3dd1240eb938 136 _ac acNameNOE[]="Number of entries";
vsluiter 15:b8d72679e644 137 _ac acName6000[]="First IMU";
vsluiter 2:3dd1240eb938 138 /*Subindexes for Digital Inputs*/
vsluiter 15:b8d72679e644 139 _ac acName6000_01[]="Accelerometer X";
vsluiter 15:b8d72679e644 140 _ac acName6000_02[]="Accelerometer Y";
vsluiter 15:b8d72679e644 141 _ac acName6000_03[]="Accelerometer Z";
vsluiter 16:bfc7ea6bd1af 142 _ac acName6000_04[]="Gyroscope X";
vsluiter 16:bfc7ea6bd1af 143 _ac acName6000_05[]="Gyroscope Y";
vsluiter 16:bfc7ea6bd1af 144 _ac acName6000_06[]="Gyroscope Z";
vsluiter 16:bfc7ea6bd1af 145 _ac acName6000_07[]="Magnetometer X";
vsluiter 16:bfc7ea6bd1af 146 _ac acName6000_08[]="Magnetometer Y";
vsluiter 16:bfc7ea6bd1af 147 _ac acName6000_09[]="Magnetometer Z";
vsluiter 16:bfc7ea6bd1af 148 _ac acName6000_0A[]="Temperature";
vsluiter 2:3dd1240eb938 149 /*End of subindexes for Digital Inputs*/
vsluiter 15:b8d72679e644 150 _ac acName6001[]="Second IMU";
vsluiter 15:b8d72679e644 151 _ac acName6002[]="Third IMU";
vsluiter 2:3dd1240eb938 152 /*End of subindexes for Analog inputs*/
vsluiter 2:3dd1240eb938 153 _ac acName7000[]="Outputs";
vsluiter 2:3dd1240eb938 154 /*Subindexes of Outputs*/
vsluiter 5:6d75f432a41f 155 _ac acName7000_01[]="Correct Offset";
vsluiter 2:3dd1240eb938 156 /*End of subindexes for Outputs*/
vsluiter 11:166353137b95 157 _ac acName8000[]="Configuration";
vsluiter 2:3dd1240eb938 158 /*Subindexes of configuration*/
vsluiter 11:166353137b95 159 _ac acName8000_01[]="Settings 8";
vsluiter 5:6d75f432a41f 160 //_ac acName8000_02[]="Settings 16";
vsluiter 2:3dd1240eb938 161 /*End of subindexes of configuration*/
vsluiter 2:3dd1240eb938 162
vsluiter 2:3dd1240eb938 163 /////////////////////////////////////////////////////////////////////////////////////
vsluiter 2:3dd1240eb938 164 /** Definiton of Device Name */
vsluiter 12:cac4e7c2bd0f 165 char ac1008_00[]="EtherCAT Xbus Master Interface (3 slaves)";
vsluiter 2:3dd1240eb938 166 /** Definition of Hardware version*/
vsluiter 2:3dd1240eb938 167 char ac1009_00[]="0.0.1";
vsluiter 2:3dd1240eb938 168 /** Definition of Software version*/
vsluiter 2:3dd1240eb938 169 char ac100A_00[]="0.0.1";
vsluiter 2:3dd1240eb938 170 /** Service Data Object 1000: Device Type */
vsluiter 2:3dd1240eb938 171 const _objd SDO1000[]=
vsluiter 2:3dd1240eb938 172 {{0x00,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1000[0],0x00000000}};
vsluiter 2:3dd1240eb938 173 /** Service Data Object 1008: Device Name */
vsluiter 2:3dd1240eb938 174 const _objd SDO1008[]=
vsluiter 2:3dd1240eb938 175 {{0x00,DTYPE_VISIBLE_STRING,sizeof(ac1008_00)<<3,ATYPE_R,&acName1008[0],0,&ac1008_00[0]}};
vsluiter 2:3dd1240eb938 176 /** Service Data Object 1009: Hardware Version */
vsluiter 2:3dd1240eb938 177 const _objd SDO1009[]=
vsluiter 2:3dd1240eb938 178 {{0x00,DTYPE_VISIBLE_STRING,sizeof(ac1009_00)<<3,ATYPE_R,&acName1009[0],0,&ac1009_00[0]}};
vsluiter 2:3dd1240eb938 179 /** Service Data Object 100A: Software Version */
vsluiter 2:3dd1240eb938 180 const _objd SDO100A[]=
vsluiter 2:3dd1240eb938 181 {{0x00,DTYPE_VISIBLE_STRING,sizeof(ac100A_00)<<3,ATYPE_R,&acName100A[0],0,&ac100A_00[0]}};
vsluiter 2:3dd1240eb938 182 const _objd SDO1018[]= //See ETG.1000.6 'Identity Object'
vsluiter 2:3dd1240eb938 183 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04}, //Number of Entries
vsluiter 2:3dd1240eb938 184 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_01[0],0x500}, //Vendor ID
vsluiter 12:cac4e7c2bd0f 185 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_02[0],005 }, //Product Code
vsluiter 12:cac4e7c2bd0f 186 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_03[0],0x01}, //Revision Number
vsluiter 3:3761315146ec 187 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_04[0],0x001} //Serial Number
vsluiter 2:3dd1240eb938 188 };
vsluiter 3:3761315146ec 189
vsluiter 12:cac4e7c2bd0f 190
vsluiter 2:3dd1240eb938 191 /////////////////////////////////////////////////////////////////////////////////////////////
vsluiter 2:3dd1240eb938 192 const _objd SDO1600[]= //RxPDO mapping (objects from master to slave)
vsluiter 5:6d75f432a41f 193 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of RxPDOs
vsluiter 5:6d75f432a41f 194 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x70000108} //First Object, pointing to object 7001:01
vsluiter 2:3dd1240eb938 195 };
vsluiter 2:3dd1240eb938 196 const _objd SDO1A00[]= //TxPDO mapping (objects from slave to master)
vsluiter 15:b8d72679e644 197 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A}, //Number of TxPDOs
vsluiter 15:b8d72679e644 198 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000110}, //First Object, pointing to object 6000:01
vsluiter 15:b8d72679e644 199 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000210}, //Second Object, pointing to object 6000:02 //..
vsluiter 15:b8d72679e644 200 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000310},
vsluiter 15:b8d72679e644 201 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000410},
vsluiter 15:b8d72679e644 202 {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000510},
vsluiter 15:b8d72679e644 203 {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000610},
vsluiter 15:b8d72679e644 204 {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000710},
vsluiter 15:b8d72679e644 205 {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000810},
vsluiter 15:b8d72679e644 206 {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000910},
vsluiter 15:b8d72679e644 207 {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000A10}
vsluiter 2:3dd1240eb938 208 };
vsluiter 15:b8d72679e644 209
vsluiter 15:b8d72679e644 210 const _objd SDO1A01[]= //TxPDO mapping (objects from slave to master)
vsluiter 15:b8d72679e644 211 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A}, //Number of TxPDOs
vsluiter 15:b8d72679e644 212 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010110}, //First Object, pointing to object 6001:01
vsluiter 15:b8d72679e644 213 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010210}, //Second Object, pointing to object 6001:02 //..
vsluiter 15:b8d72679e644 214 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010310},
vsluiter 15:b8d72679e644 215 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010410},
vsluiter 15:b8d72679e644 216 {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010510},
vsluiter 15:b8d72679e644 217 {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010610},
vsluiter 15:b8d72679e644 218 {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010710},
vsluiter 15:b8d72679e644 219 {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010810},
vsluiter 15:b8d72679e644 220 {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010910},
vsluiter 15:b8d72679e644 221 {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010A10}
vsluiter 2:3dd1240eb938 222 };
vsluiter 15:b8d72679e644 223
vsluiter 15:b8d72679e644 224 const _objd SDO1A02[]= //TxPDO mapping (objects from slave to master)
vsluiter 15:b8d72679e644 225 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A}, //Number of TxPDOs
vsluiter 15:b8d72679e644 226 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020110}, //First Object, pointing to object 6002:01
vsluiter 15:b8d72679e644 227 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020210}, //Second Object, pointing to object 6002:02 //..
vsluiter 15:b8d72679e644 228 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020310},
vsluiter 15:b8d72679e644 229 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020410},
vsluiter 15:b8d72679e644 230 {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020510},
vsluiter 15:b8d72679e644 231 {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020610},
vsluiter 15:b8d72679e644 232 {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020710},
vsluiter 15:b8d72679e644 233 {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020810},
vsluiter 15:b8d72679e644 234 {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020910},
vsluiter 15:b8d72679e644 235 {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020A10}
vsluiter 15:b8d72679e644 236 };
vsluiter 15:b8d72679e644 237
vsluiter 2:3dd1240eb938 238 const _objd SDO1C00[]= //Sync Manager
vsluiter 2:3dd1240eb938 239 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04}, //Number of used Sync Manager channels
vsluiter 2:3dd1240eb938 240 {0x01,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_01[0],0x01}, //Sync Manager 0: Mailbox Receive (master->slave)
vsluiter 2:3dd1240eb938 241 {0x02,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_02[0],0x02}, //Sync Manager 1: Mailbos send (slave->master)
vsluiter 2:3dd1240eb938 242 {0x03,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_03[0],0x03}, //Process Data Output (or Inputs if no Outputs are used)
vsluiter 2:3dd1240eb938 243 {0x04,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_04[0],0x04} //Process Data Input
vsluiter 2:3dd1240eb938 244 };
vsluiter 2:3dd1240eb938 245 const _objd SDO1C10[]= //Sync Manager 0 PDO Assignment
vsluiter 2:3dd1240eb938 246 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C10[0],0x00}};
vsluiter 2:3dd1240eb938 247 const _objd SDO1C11[]= //Sync Manager 1 PDO Assignment
vsluiter 2:3dd1240eb938 248 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C11[0],0x00}};
vsluiter 2:3dd1240eb938 249 const _objd SDO1C12[]= //RxPDO Assign objects
vsluiter 2:3dd1240eb938 250 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of Entries
vsluiter 2:3dd1240eb938 251 {0x01,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1600} //Send objects in index 0x1600
vsluiter 2:3dd1240eb938 252 };
vsluiter 2:3dd1240eb938 253 const _objd SDO1C13[]= //TxPDO Assign objects ; CHANGEABLE, thus 'RWpre' mode
vsluiter 15:b8d72679e644 254 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x03}, //Number of Entries
vsluiter 11:166353137b95 255 {0x01,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A00}, //Send objects in index 0x1A00
vsluiter 15:b8d72679e644 256 {0x02,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A01}, //Send objects in index 0x1A10
vsluiter 15:b8d72679e644 257 {0x03,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A02},
vsluiter 2:3dd1240eb938 258 };
vsluiter 15:b8d72679e644 259
vsluiter 2:3dd1240eb938 260 const _objd SDO6000[]= //TxPDO module
vsluiter 15:b8d72679e644 261 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x0A}, //Number of elements
vsluiter 20:ad13d4f5fd98 262 {0x01,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.first.acc[0])},//6000:01 is acc X
vsluiter 20:ad13d4f5fd98 263 {0x02,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.first.acc[1])},//6000:02 is acc Y
vsluiter 20:ad13d4f5fd98 264 {0x03,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.first.acc[2])},//6000:03 is acc Z
vsluiter 20:ad13d4f5fd98 265 {0x04,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.first.gyr[0])},//6000:04 is gyr X
vsluiter 20:ad13d4f5fd98 266 {0x05,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.first.gyr[1])},//6000:05 is gyr Y
vsluiter 20:ad13d4f5fd98 267 {0x06,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.first.gyr[2])},//6000:06 is gyr Z
vsluiter 20:ad13d4f5fd98 268 {0x07,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.first.mag[0])},//6000:07 is mag X
vsluiter 20:ad13d4f5fd98 269 {0x08,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.first.mag[1])},//6000:08 is mag Y
vsluiter 20:ad13d4f5fd98 270 {0x09,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.first.mag[2])},//6000:09 is mag Z
vsluiter 20:ad13d4f5fd98 271 {0x0A,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.first.temp)} //6000:0A is imu temperature
vsluiter 2:3dd1240eb938 272 };
vsluiter 15:b8d72679e644 273
vsluiter 15:b8d72679e644 274 const _objd SDO6001[]= //TxPDO module
vsluiter 15:b8d72679e644 275 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x0A}, //Number of elements
vsluiter 20:ad13d4f5fd98 276 {0x01,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.second.acc[0])},//6001:01 is acc X
vsluiter 20:ad13d4f5fd98 277 {0x02,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.second.acc[1])},//6001:02 is acc Y
vsluiter 20:ad13d4f5fd98 278 {0x03,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.second.acc[2])},//6001:03 is acc Z
vsluiter 20:ad13d4f5fd98 279 {0x04,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.second.gyr[0])},//6001:04 is gyr X
vsluiter 20:ad13d4f5fd98 280 {0x05,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.second.gyr[1])},//6001:05 is gyr Y
vsluiter 20:ad13d4f5fd98 281 {0x06,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.second.gyr[2])},//6001:06 is gyr Z
vsluiter 20:ad13d4f5fd98 282 {0x07,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.second.mag[0])},//6001:07 is mag X
vsluiter 20:ad13d4f5fd98 283 {0x08,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.second.mag[1])},//6001:08 is mag Y
vsluiter 20:ad13d4f5fd98 284 {0x09,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.second.mag[2])},//6001:09 is mag Z
vsluiter 20:ad13d4f5fd98 285 {0x0A,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.second.temp)} //6001:0A is imu temperature
vsluiter 15:b8d72679e644 286 };
vsluiter 15:b8d72679e644 287
vsluiter 15:b8d72679e644 288 const _objd SDO6002[]= //TxPDO module
vsluiter 15:b8d72679e644 289 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x0A}, //Number of elements
vsluiter 20:ad13d4f5fd98 290 {0x01,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.third.acc[0])},//6002:01 is acc X
vsluiter 20:ad13d4f5fd98 291 {0x02,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.third.acc[1])},//6002:02 is acc Y
vsluiter 20:ad13d4f5fd98 292 {0x03,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.third.acc[2])},//6002:03 is acc Z
vsluiter 20:ad13d4f5fd98 293 {0x04,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.third.gyr[0])},//6002:04 is gyr X
vsluiter 20:ad13d4f5fd98 294 {0x05,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.third.gyr[1])},//6002:05 is gyr Y
vsluiter 20:ad13d4f5fd98 295 {0x06,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.third.gyr[2])},//6002:06 is gyr Z
vsluiter 20:ad13d4f5fd98 296 {0x07,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.third.mag[0])},//6002:07 is mag X
vsluiter 20:ad13d4f5fd98 297 {0x08,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.third.mag[1])},//6002:08 is mag Y
vsluiter 20:ad13d4f5fd98 298 {0x09,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.third.mag[2])},//6002:09 is mag Z
vsluiter 20:ad13d4f5fd98 299 {0x0A,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.third.temp)} //6002:0A is imu temperature
vsluiter 15:b8d72679e644 300 };
vsluiter 15:b8d72679e644 301
vsluiter 16:bfc7ea6bd1af 302
vsluiter 2:3dd1240eb938 303 const _objd SDO7000[]= //RxPDO module
vsluiter 5:6d75f432a41f 304 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of elements
vsluiter 5:6d75f432a41f 305 {0x01,DTYPE_UNSIGNED8 ,8,ATYPE_RW,&acName7000_01[0],0,&(Wb.correct_offset)} //7001:02 is correct_offset
vsluiter 2:3dd1240eb938 306 };
vsluiter 11:166353137b95 307 const _objd SDO8000[]= //Configuration mailbox
vsluiter 11:166353137b95 308 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x01}, //number of elements
vsluiter 11:166353137b95 309 {0x01,DTYPE_UNSIGNED8 ,8,ATYPE_RW,&acName8000_01[0],0,&(Eb.setting8)} //8000:01 is setting8
vsluiter 11:166353137b95 310 //{0x02,DTYPE_UNSIGNED16 ,16,ATYPE_RW,&acName8000_02[0],0,&(Eb.setting16)} //8000:02 is setting16
vsluiter 11:166353137b95 311 };
vsluiter 2:3dd1240eb938 312 /** Object list; all objects used in EtherCAT slave */
vsluiter 2:3dd1240eb938 313 const _objectlist SDOobjects[]=
vsluiter 2:3dd1240eb938 314 {{0x1000,OTYPE_VAR , 0,0,&acName1000[0],&SDO1000[0]}, //Device Type
vsluiter 2:3dd1240eb938 315 {0x1008,OTYPE_VAR , 0,0,&acName1008[0],&SDO1008[0]}, //Device Name
vsluiter 2:3dd1240eb938 316 {0x1009,OTYPE_VAR , 0,0,&acName1009[0],&SDO1009[0]}, //Hardware Version
vsluiter 2:3dd1240eb938 317 {0x100A,OTYPE_VAR , 0,0,&acName100A[0],&SDO100A[0]}, //Software Version
vsluiter 2:3dd1240eb938 318 {0x1018,OTYPE_RECORD , 4,0,&acName1018[0],&SDO1018[0]}, //Identity
vsluiter 5:6d75f432a41f 319 {0x1600,OTYPE_RECORD , 0x01,0,&acName1600[0],&SDO1600[0]}, //RxPDO mapping
vsluiter 15:b8d72679e644 320 {0x1A00,OTYPE_RECORD , 10,0,&acName1A00[0],&SDO1A00[0]}, //TxPDO mapping
vsluiter 15:b8d72679e644 321 {0x1A01,OTYPE_RECORD , 10,0,&acName1A01[0],&SDO1A01[0]}, //TxPDO mapping
vsluiter 15:b8d72679e644 322 {0x1A02,OTYPE_RECORD , 10,0,&acName1A02[0],&SDO1A02[0]}, //TxPDO mapping
vsluiter 2:3dd1240eb938 323 {0x1C00,OTYPE_ARRAY , 4,0,&acName1C00[0],&SDO1C00[0]}, //Sync Manager configuration
vsluiter 2:3dd1240eb938 324 {0x1C10,OTYPE_ARRAY , 0,0,&acName1C10[0],&SDO1C10[0]}, //Sync Manager 0 PDO assignment
vsluiter 2:3dd1240eb938 325 {0x1C11,OTYPE_ARRAY , 0,0,&acName1C11[0],&SDO1C11[0]}, //Sync Manager 1 PDO assignment
vsluiter 2:3dd1240eb938 326 {0x1C12,OTYPE_ARRAY , 1,0,&acName1C12[0],&SDO1C12[0]}, //RxPDO objects
vsluiter 15:b8d72679e644 327 {0x1C13,OTYPE_ARRAY , 3,0,&acName1C13[0],&SDO1C13[0]}, //TxPDO objects
vsluiter 15:b8d72679e644 328 {0x6000,OTYPE_ARRAY , 10,0,&acName6000[0],&SDO6000[0]}, //TxPDO module
vsluiter 15:b8d72679e644 329 {0x6001,OTYPE_ARRAY , 10,0,&acName6001[0],&SDO6001[0]}, //TxPDO module
vsluiter 15:b8d72679e644 330 {0x6002,OTYPE_ARRAY , 10,0,&acName6002[0],&SDO6002[0]}, //TxPDO module
vsluiter 5:6d75f432a41f 331 {0x7000,OTYPE_ARRAY , 0x01,0,&acName7000[0],&SDO7000[0]}, //RxPDO module
vsluiter 11:166353137b95 332 {0x8000,OTYPE_ARRAY , 0x01,0,&acName8000[0],&SDO8000[0]}, //RxPDO module
vsluiter 2:3dd1240eb938 333 {0xffff,0xff,0xff,0xff,nil,nil}
vsluiter 2:3dd1240eb938 334 };
vsluiter 2:3dd1240eb938 335
vsluiter 2:3dd1240eb938 336 #endif
vsluiter 2:3dd1240eb938 337