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 Sep 11 15:33:31 2015 +0000
Revision:
42:ef78d11f2bd7
Parent:
40:0528d79e63f2
Also implemented samplecounter

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 23:2b2cdba08259 125 _ac acName1A03[]="Transmit PDO mapping - Timestamp";
vsluiter 2:3dd1240eb938 126 _ac acName1C00[]="Sync Manager Communication type";
vsluiter 2:3dd1240eb938 127 /*Subindexes for Sync Manager Communication type*/
vsluiter 2:3dd1240eb938 128 _ac acName1C00_01[]="Communications type SM0";
vsluiter 2:3dd1240eb938 129 _ac acName1C00_02[]="Communications type SM1";
vsluiter 2:3dd1240eb938 130 _ac acName1C00_03[]="Communications type SM2";
vsluiter 2:3dd1240eb938 131 _ac acName1C00_04[]="Communications type SM3";
vsluiter 2:3dd1240eb938 132 /*End of subindexes for Sync Manager Communication type*/
vsluiter 2:3dd1240eb938 133 _ac acName1C10[]="Sync Manager 0 PDO Assignment";
vsluiter 2:3dd1240eb938 134 _ac acName1C11[]="Sync Manager 1 PDO Assignment";
vsluiter 2:3dd1240eb938 135 _ac acName1C12[]="Sync Manager 2 PDO Assignment";
vsluiter 2:3dd1240eb938 136 _ac acName1C13[]="Sync Manager 3 PDO Assignment";
vsluiter 2:3dd1240eb938 137 _ac acNameNOE[]="Number of entries";
vsluiter 15:b8d72679e644 138 _ac acName6000[]="First IMU";
vsluiter 37:d00717883d98 139 /*Subindexes for IMUs*/
vsluiter 37:d00717883d98 140 _ac acName6000_01[]="Quaternion q0";
vsluiter 37:d00717883d98 141 _ac acName6000_02[]="Quaternion q1";
vsluiter 37:d00717883d98 142 _ac acName6000_03[]="Quaternion q2";
vsluiter 37:d00717883d98 143 _ac acName6000_04[]="Quaternion q3";
vsluiter 40:0528d79e63f2 144 _ac acName6000_05[]="Timestamp";
vsluiter 37:d00717883d98 145 /*_ac acName6000_01[]="Accelerometer X";
vsluiter 15:b8d72679e644 146 _ac acName6000_02[]="Accelerometer Y";
vsluiter 15:b8d72679e644 147 _ac acName6000_03[]="Accelerometer Z";
vsluiter 16:bfc7ea6bd1af 148 _ac acName6000_04[]="Gyroscope X";
vsluiter 16:bfc7ea6bd1af 149 _ac acName6000_05[]="Gyroscope Y";
vsluiter 16:bfc7ea6bd1af 150 _ac acName6000_06[]="Gyroscope Z";
vsluiter 16:bfc7ea6bd1af 151 _ac acName6000_07[]="Magnetometer X";
vsluiter 16:bfc7ea6bd1af 152 _ac acName6000_08[]="Magnetometer Y";
vsluiter 16:bfc7ea6bd1af 153 _ac acName6000_09[]="Magnetometer Z";
vsluiter 37:d00717883d98 154 _ac acName6000_0A[]="Temperature";*/
vsluiter 2:3dd1240eb938 155 /*End of subindexes for Digital Inputs*/
vsluiter 15:b8d72679e644 156 _ac acName6001[]="Second IMU";
vsluiter 15:b8d72679e644 157 _ac acName6002[]="Third IMU";
vsluiter 23:2b2cdba08259 158 _ac acName6003[]="Timestamp";
vsluiter 23:2b2cdba08259 159 _ac acName6003_01[]="Timestamp";
vsluiter 2:3dd1240eb938 160 /*End of subindexes for Analog inputs*/
vsluiter 2:3dd1240eb938 161 _ac acName7000[]="Outputs";
vsluiter 2:3dd1240eb938 162 /*Subindexes of Outputs*/
vsluiter 5:6d75f432a41f 163 _ac acName7000_01[]="Correct Offset";
vsluiter 2:3dd1240eb938 164 /*End of subindexes for Outputs*/
vsluiter 11:166353137b95 165 _ac acName8000[]="Configuration";
vsluiter 2:3dd1240eb938 166 /*Subindexes of configuration*/
vsluiter 11:166353137b95 167 _ac acName8000_01[]="Settings 8";
vsluiter 5:6d75f432a41f 168 //_ac acName8000_02[]="Settings 16";
vsluiter 2:3dd1240eb938 169 /*End of subindexes of configuration*/
vsluiter 2:3dd1240eb938 170
vsluiter 2:3dd1240eb938 171 /////////////////////////////////////////////////////////////////////////////////////
vsluiter 2:3dd1240eb938 172 /** Definiton of Device Name */
vsluiter 12:cac4e7c2bd0f 173 char ac1008_00[]="EtherCAT Xbus Master Interface (3 slaves)";
vsluiter 2:3dd1240eb938 174 /** Definition of Hardware version*/
vsluiter 2:3dd1240eb938 175 char ac1009_00[]="0.0.1";
vsluiter 2:3dd1240eb938 176 /** Definition of Software version*/
vsluiter 38:d56ed19956d7 177 char ac100A_00[]="0.0.2";
vsluiter 2:3dd1240eb938 178 /** Service Data Object 1000: Device Type */
vsluiter 2:3dd1240eb938 179 const _objd SDO1000[]=
vsluiter 2:3dd1240eb938 180 {{0x00,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1000[0],0x00000000}};
vsluiter 2:3dd1240eb938 181 /** Service Data Object 1008: Device Name */
vsluiter 2:3dd1240eb938 182 const _objd SDO1008[]=
vsluiter 2:3dd1240eb938 183 {{0x00,DTYPE_VISIBLE_STRING,sizeof(ac1008_00)<<3,ATYPE_R,&acName1008[0],0,&ac1008_00[0]}};
vsluiter 2:3dd1240eb938 184 /** Service Data Object 1009: Hardware Version */
vsluiter 2:3dd1240eb938 185 const _objd SDO1009[]=
vsluiter 2:3dd1240eb938 186 {{0x00,DTYPE_VISIBLE_STRING,sizeof(ac1009_00)<<3,ATYPE_R,&acName1009[0],0,&ac1009_00[0]}};
vsluiter 2:3dd1240eb938 187 /** Service Data Object 100A: Software Version */
vsluiter 2:3dd1240eb938 188 const _objd SDO100A[]=
vsluiter 2:3dd1240eb938 189 {{0x00,DTYPE_VISIBLE_STRING,sizeof(ac100A_00)<<3,ATYPE_R,&acName100A[0],0,&ac100A_00[0]}};
vsluiter 2:3dd1240eb938 190 const _objd SDO1018[]= //See ETG.1000.6 'Identity Object'
vsluiter 2:3dd1240eb938 191 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04}, //Number of Entries
vsluiter 2:3dd1240eb938 192 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_01[0],0x500}, //Vendor ID
vsluiter 12:cac4e7c2bd0f 193 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_02[0],005 }, //Product Code
vsluiter 12:cac4e7c2bd0f 194 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_03[0],0x01}, //Revision Number
vsluiter 3:3761315146ec 195 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acName1018_04[0],0x001} //Serial Number
vsluiter 2:3dd1240eb938 196 };
vsluiter 3:3761315146ec 197
vsluiter 12:cac4e7c2bd0f 198
vsluiter 2:3dd1240eb938 199 /////////////////////////////////////////////////////////////////////////////////////////////
vsluiter 2:3dd1240eb938 200 const _objd SDO1600[]= //RxPDO mapping (objects from master to slave)
vsluiter 5:6d75f432a41f 201 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of RxPDOs
vsluiter 5:6d75f432a41f 202 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x70000108} //First Object, pointing to object 7001:01
vsluiter 2:3dd1240eb938 203 };
vsluiter 2:3dd1240eb938 204 const _objd SDO1A00[]= //TxPDO mapping (objects from slave to master)
vsluiter 40:0528d79e63f2 205 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x05}, //Number of TxPDOs
vsluiter 31:d0532aa7f631 206 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000120}, //First Object, pointing to object 6000:01
vsluiter 31:d0532aa7f631 207 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000220}, //Second Object, pointing to object 6000:02 //..
vsluiter 31:d0532aa7f631 208 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000320},
vsluiter 40:0528d79e63f2 209 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000420},
vsluiter 40:0528d79e63f2 210 {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000510}
vsluiter 2:3dd1240eb938 211 };
vsluiter 15:b8d72679e644 212
vsluiter 15:b8d72679e644 213 const _objd SDO1A01[]= //TxPDO mapping (objects from slave to master)
vsluiter 40:0528d79e63f2 214 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x05}, //Number of TxPDOs
vsluiter 31:d0532aa7f631 215 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010120}, //First Object, pointing to object 6001:01
vsluiter 31:d0532aa7f631 216 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010220}, //Second Object, pointing to object 6001:02 //..
vsluiter 31:d0532aa7f631 217 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010320},
vsluiter 40:0528d79e63f2 218 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010420},
vsluiter 40:0528d79e63f2 219 {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010510}
vsluiter 2:3dd1240eb938 220 };
vsluiter 15:b8d72679e644 221
vsluiter 15:b8d72679e644 222 const _objd SDO1A02[]= //TxPDO mapping (objects from slave to master)
vsluiter 40:0528d79e63f2 223 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x05}, //Number of TxPDOs
vsluiter 31:d0532aa7f631 224 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020120}, //First Object, pointing to object 6002:01
vsluiter 31:d0532aa7f631 225 {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020220}, //Second Object, pointing to object 6002:02 //..
vsluiter 31:d0532aa7f631 226 {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020320},
vsluiter 40:0528d79e63f2 227 {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020420},
vsluiter 40:0528d79e63f2 228 {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020510}
vsluiter 15:b8d72679e644 229 };
vsluiter 15:b8d72679e644 230
vsluiter 23:2b2cdba08259 231 const _objd SDO1A03[]= //TxPDO mapping (objects from slave to master)
vsluiter 23:2b2cdba08259 232 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of TxPDOs
vsluiter 23:2b2cdba08259 233 {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60030110} //First Object, pointing to object 6003:01
vsluiter 23:2b2cdba08259 234 };
vsluiter 23:2b2cdba08259 235
vsluiter 2:3dd1240eb938 236 const _objd SDO1C00[]= //Sync Manager
vsluiter 2:3dd1240eb938 237 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04}, //Number of used Sync Manager channels
vsluiter 2:3dd1240eb938 238 {0x01,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_01[0],0x01}, //Sync Manager 0: Mailbox Receive (master->slave)
vsluiter 2:3dd1240eb938 239 {0x02,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_02[0],0x02}, //Sync Manager 1: Mailbos send (slave->master)
vsluiter 2:3dd1240eb938 240 {0x03,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_03[0],0x03}, //Process Data Output (or Inputs if no Outputs are used)
vsluiter 2:3dd1240eb938 241 {0x04,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C00_04[0],0x04} //Process Data Input
vsluiter 2:3dd1240eb938 242 };
vsluiter 2:3dd1240eb938 243 const _objd SDO1C10[]= //Sync Manager 0 PDO Assignment
vsluiter 2:3dd1240eb938 244 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C10[0],0x00}};
vsluiter 2:3dd1240eb938 245 const _objd SDO1C11[]= //Sync Manager 1 PDO Assignment
vsluiter 2:3dd1240eb938 246 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acName1C11[0],0x00}};
vsluiter 2:3dd1240eb938 247 const _objd SDO1C12[]= //RxPDO Assign objects
vsluiter 2:3dd1240eb938 248 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of Entries
vsluiter 2:3dd1240eb938 249 {0x01,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1600} //Send objects in index 0x1600
vsluiter 2:3dd1240eb938 250 };
vsluiter 2:3dd1240eb938 251 const _objd SDO1C13[]= //TxPDO Assign objects ; CHANGEABLE, thus 'RWpre' mode
vsluiter 23:2b2cdba08259 252 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x04}, //Number of Entries
vsluiter 11:166353137b95 253 {0x01,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A00}, //Send objects in index 0x1A00
vsluiter 15:b8d72679e644 254 {0x02,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A01}, //Send objects in index 0x1A10
vsluiter 15:b8d72679e644 255 {0x03,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A02},
vsluiter 23:2b2cdba08259 256 {0x04,DTYPE_UNSIGNED16,16,ATYPE_R,&acNameMO[0],0x1A03}
vsluiter 2:3dd1240eb938 257 };
vsluiter 15:b8d72679e644 258
vsluiter 2:3dd1240eb938 259 const _objd SDO6000[]= //TxPDO module
vsluiter 40:0528d79e63f2 260 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x05}, //Number of elements
vsluiter 39:8c5329c37de1 261 {0x01,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.xsens_imu[0].q0)},//6000:01 is q0
vsluiter 39:8c5329c37de1 262 {0x02,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.xsens_imu[0].q1)},//6000:02 is q1
vsluiter 39:8c5329c37de1 263 {0x03,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.xsens_imu[0].q2)},//6000:03 is q2
vsluiter 39:8c5329c37de1 264 {0x04,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_04[0],0,&(Rb.xsens_imu[0].q3)},//6000:04 is q3
vsluiter 40:0528d79e63f2 265 {0x05,DTYPE_UNSIGNED16, 16,ATYPE_R,&acName6000_05[0],0,&(Rb.xsens_imu[0].samplecounter)}//6000:05 is timestamp
vsluiter 2:3dd1240eb938 266 };
vsluiter 15:b8d72679e644 267
vsluiter 15:b8d72679e644 268 const _objd SDO6001[]= //TxPDO module
vsluiter 40:0528d79e63f2 269 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x05}, //Number of elements
vsluiter 39:8c5329c37de1 270 {0x01,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.xsens_imu[1].q0)},//6001:01 is q0
vsluiter 39:8c5329c37de1 271 {0x02,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.xsens_imu[1].q1)},//6001:02 is q1
vsluiter 39:8c5329c37de1 272 {0x03,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.xsens_imu[1].q2)},//6001:03 is q2
vsluiter 39:8c5329c37de1 273 {0x04,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_04[0],0,&(Rb.xsens_imu[1].q3)},//6001:04 is q3
vsluiter 40:0528d79e63f2 274 {0x05,DTYPE_UNSIGNED16, 16,ATYPE_R,&acName6000_05[0],0,&(Rb.xsens_imu[1].samplecounter)}//6000:05 is timestamp
vsluiter 15:b8d72679e644 275 };
vsluiter 15:b8d72679e644 276
vsluiter 35:32659533e0ef 277
vsluiter 15:b8d72679e644 278 const _objd SDO6002[]= //TxPDO module
vsluiter 40:0528d79e63f2 279 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x05}, //Number of elements
vsluiter 39:8c5329c37de1 280 {0x01,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.xsens_imu[2].q0)},//6002:01 is q0
vsluiter 39:8c5329c37de1 281 {0x02,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.xsens_imu[2].q1)},//6002:02 is q1
vsluiter 39:8c5329c37de1 282 {0x03,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.xsens_imu[2].q2)},//6002:03 is q2
vsluiter 40:0528d79e63f2 283 {0x04,DTYPE_REAL32 ,32,ATYPE_R,&acName6000_04[0],0,&(Rb.xsens_imu[2].q3)},//6002:04 is q3
vsluiter 40:0528d79e63f2 284 {0x05,DTYPE_UNSIGNED16, 16,ATYPE_R,&acName6000_05[0],0,&(Rb.xsens_imu[2].samplecounter)}//6002:05 is timestamp
vsluiter 15:b8d72679e644 285 };
vsluiter 15:b8d72679e644 286
vsluiter 23:2b2cdba08259 287 const _objd SDO6003[]= //TxPDO module
vsluiter 23:2b2cdba08259 288 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of elements
vsluiter 39:8c5329c37de1 289 {0x01,DTYPE_UNSIGNED16 ,16,ATYPE_R,&acName6003_01[0],0,&(Rb.xsens_imu[0].samplecounter)},//6003:01 is timestamp
vsluiter 23:2b2cdba08259 290 };
vsluiter 16:bfc7ea6bd1af 291
vsluiter 2:3dd1240eb938 292 const _objd SDO7000[]= //RxPDO module
vsluiter 5:6d75f432a41f 293 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x01}, //Number of elements
vsluiter 5:6d75f432a41f 294 {0x01,DTYPE_UNSIGNED8 ,8,ATYPE_RW,&acName7000_01[0],0,&(Wb.correct_offset)} //7001:02 is correct_offset
vsluiter 2:3dd1240eb938 295 };
vsluiter 11:166353137b95 296 const _objd SDO8000[]= //Configuration mailbox
vsluiter 11:166353137b95 297 {{0x00,DTYPE_UNSIGNED8 ,8,ATYPE_R,&acNameNOE[0],0x01}, //number of elements
vsluiter 11:166353137b95 298 {0x01,DTYPE_UNSIGNED8 ,8,ATYPE_RW,&acName8000_01[0],0,&(Eb.setting8)} //8000:01 is setting8
vsluiter 11:166353137b95 299 //{0x02,DTYPE_UNSIGNED16 ,16,ATYPE_RW,&acName8000_02[0],0,&(Eb.setting16)} //8000:02 is setting16
vsluiter 11:166353137b95 300 };
vsluiter 2:3dd1240eb938 301 /** Object list; all objects used in EtherCAT slave */
vsluiter 2:3dd1240eb938 302 const _objectlist SDOobjects[]=
vsluiter 2:3dd1240eb938 303 {{0x1000,OTYPE_VAR , 0,0,&acName1000[0],&SDO1000[0]}, //Device Type
vsluiter 2:3dd1240eb938 304 {0x1008,OTYPE_VAR , 0,0,&acName1008[0],&SDO1008[0]}, //Device Name
vsluiter 2:3dd1240eb938 305 {0x1009,OTYPE_VAR , 0,0,&acName1009[0],&SDO1009[0]}, //Hardware Version
vsluiter 2:3dd1240eb938 306 {0x100A,OTYPE_VAR , 0,0,&acName100A[0],&SDO100A[0]}, //Software Version
vsluiter 2:3dd1240eb938 307 {0x1018,OTYPE_RECORD , 4,0,&acName1018[0],&SDO1018[0]}, //Identity
vsluiter 5:6d75f432a41f 308 {0x1600,OTYPE_RECORD , 0x01,0,&acName1600[0],&SDO1600[0]}, //RxPDO mapping
vsluiter 40:0528d79e63f2 309 {0x1A00,OTYPE_RECORD , 5,0,&acName1A00[0],&SDO1A00[0]}, //TxPDO mapping
vsluiter 40:0528d79e63f2 310 {0x1A01,OTYPE_RECORD , 5,0,&acName1A01[0],&SDO1A01[0]}, //TxPDO mapping
vsluiter 40:0528d79e63f2 311 {0x1A02,OTYPE_RECORD , 5,0,&acName1A02[0],&SDO1A02[0]}, //TxPDO mapping
vsluiter 23:2b2cdba08259 312 {0x1A03,OTYPE_RECORD , 1,0,&acName1A03[0],&SDO1A03[0]}, //TxPDO mapping
vsluiter 2:3dd1240eb938 313 {0x1C00,OTYPE_ARRAY , 4,0,&acName1C00[0],&SDO1C00[0]}, //Sync Manager configuration
vsluiter 2:3dd1240eb938 314 {0x1C10,OTYPE_ARRAY , 0,0,&acName1C10[0],&SDO1C10[0]}, //Sync Manager 0 PDO assignment
vsluiter 2:3dd1240eb938 315 {0x1C11,OTYPE_ARRAY , 0,0,&acName1C11[0],&SDO1C11[0]}, //Sync Manager 1 PDO assignment
vsluiter 2:3dd1240eb938 316 {0x1C12,OTYPE_ARRAY , 1,0,&acName1C12[0],&SDO1C12[0]}, //RxPDO objects
vsluiter 23:2b2cdba08259 317 {0x1C13,OTYPE_ARRAY , 4,0,&acName1C13[0],&SDO1C13[0]}, //TxPDO objects
vsluiter 40:0528d79e63f2 318 {0x6000,OTYPE_ARRAY , 5,0,&acName6000[0],&SDO6000[0]}, //TxPDO module
vsluiter 40:0528d79e63f2 319 {0x6001,OTYPE_ARRAY , 5,0,&acName6001[0],&SDO6001[0]}, //TxPDO module
vsluiter 40:0528d79e63f2 320 {0x6002,OTYPE_ARRAY , 5,0,&acName6002[0],&SDO6002[0]}, //TxPDO module
vsluiter 23:2b2cdba08259 321 {0x6003,OTYPE_ARRAY , 1,0,&acName6003[0],&SDO6003[0]}, //TxPDO module
vsluiter 5:6d75f432a41f 322 {0x7000,OTYPE_ARRAY , 0x01,0,&acName7000[0],&SDO7000[0]}, //RxPDO module
vsluiter 11:166353137b95 323 {0x8000,OTYPE_ARRAY , 0x01,0,&acName8000[0],&SDO8000[0]}, //RxPDO module
vsluiter 2:3dd1240eb938 324 {0xffff,0xff,0xff,0xff,nil,nil}
vsluiter 2:3dd1240eb938 325 };
vsluiter 2:3dd1240eb938 326
vsluiter 2:3dd1240eb938 327 #endif
vsluiter 2:3dd1240eb938 328