diff --git a/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml b/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml
index 4428c6e..917deff 100755
--- a/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml
+++ b/Firmware/lib/soes/MetalMusings_EaserCAT_2000.xml
@@ -191,40 +191,6 @@
-
- DT1604
- 144
-
- 0
- Max SubIndex
- USINT
- 8
- 0
-
- ro
-
-
-
- 1
- Enable1
- ULINT
- 64
- 16
-
- ro
-
-
-
- 2
- Padding 1
- ULINT
- 64
- 80
-
- ro
-
-
-
DT1A00
80
@@ -393,6 +359,102 @@
+
+ DT1A07
+ 80
+
+ 0
+ Max SubIndex
+ USINT
+ 8
+ 0
+
+ ro
+
+
+
+ 1
+ D1
+ ULINT
+ 64
+ 16
+
+ ro
+
+
+
+
+ DT1A08
+ 80
+
+ 0
+ Max SubIndex
+ USINT
+ 8
+ 0
+
+ ro
+
+
+
+ 1
+ D2
+ ULINT
+ 64
+ 16
+
+ ro
+
+
+
+
+ DT1A09
+ 80
+
+ 0
+ Max SubIndex
+ USINT
+ 8
+ 0
+
+ ro
+
+
+
+ 1
+ D3
+ ULINT
+ 64
+ 16
+
+ ro
+
+
+
+
+ DT1A0A
+ 80
+
+ 0
+ Max SubIndex
+ USINT
+ 8
+ 0
+
+ ro
+
+
+
+ 1
+ D4
+ ULINT
+ 64
+ 16
+
+ ro
+
+
+
DT1C00ARR
USINT
@@ -428,15 +490,15 @@
DT1C12ARR
UINT
- 80
+ 64
1
- 5
+ 4
DT1C12
- 96
+ 80
0
Max SubIndex
@@ -450,7 +512,7 @@
Elements
DT1C12ARR
- 80
+ 64
16
ro
@@ -460,15 +522,15 @@
DT1C13ARR
UINT
- 112
+ 176
1
- 7
+ 11
DT1C13
- 128
+ 192
0
Max SubIndex
@@ -482,7 +544,7 @@
Elements
DT1C13ARR
- 112
+ 176
16
ro
@@ -647,10 +709,6 @@
INT
16
-
- BOOL
- 1
-
-
+
+
+
+
-
- PDO Mapping
-
- #x1604
-
-
ro
@@ -1130,12 +1245,12 @@
#x1C13
Sync Manager 3 PDO Assignment
DT1C13
- 128
+ 192
Max SubIndex
- 7
+ 11
@@ -1180,6 +1295,30 @@
#x1A06
+
+ PDO Mapping
+
+ #x1A07
+
+
+
+ PDO Mapping
+
+ #x1A08
+
+
+
+ PDO Mapping
+
+ #x1A09
+
+
+
+ PDO Mapping
+
+ #x1A0A
+
+
ro
@@ -1296,6 +1435,58 @@
ro
+
+
+
+
-
@@ -1461,22 +1639,6 @@
INT
-
- #x1604
- Enable1
-
- #x7004
- #x0
- 1
- Enable1
- BOOL
-
-
- 0
- 0
- 7
-
-
#x1A00
EncPos
@@ -1554,6 +1716,50 @@
LREAL
+
+ #x1A07
+ D1
+
+ #x6007
+ #x0
+ 32
+ D1
+ DINT
+
+
+
+ #x1A08
+ D2
+
+ #x6008
+ #x0
+ 32
+ D2
+ DINT
+
+
+
+ #x1A09
+ D3
+
+ #x6009
+ #x0
+ 32
+ D3
+ DINT
+
+
+
+ #x1A0A
+ D4
+
+ #x600A
+ #x0
+ 32
+ D4
+ DINT
+
+
@@ -1571,7 +1777,7 @@
2048
- 80060344640000
+ 8006034C640000
diff --git a/Firmware/lib/soes/ecat_options.h b/Firmware/lib/soes/ecat_options.h
index 990fb28..bdea3f1 100755
--- a/Firmware/lib/soes/ecat_options.h
+++ b/Firmware/lib/soes/ecat_options.h
@@ -33,8 +33,8 @@
#define SM3_smc 0x20
#define SM3_act 1
-#define MAX_MAPPINGS_SM2 8
-#define MAX_MAPPINGS_SM3 7
+#define MAX_MAPPINGS_SM2 6
+#define MAX_MAPPINGS_SM3 11
#define MAX_RXPDO_SIZE 512
#define MAX_TXPDO_SIZE 512
diff --git a/Firmware/lib/soes/eeprom.bin b/Firmware/lib/soes/eeprom.bin
index 47287ef..1156cd1 100755
Binary files a/Firmware/lib/soes/eeprom.bin and b/Firmware/lib/soes/eeprom.bin differ
diff --git a/Firmware/lib/soes/eeprom.hex b/Firmware/lib/soes/eeprom.hex
index 4291203..fd705c7 100755
--- a/Firmware/lib/soes/eeprom.hex
+++ b/Firmware/lib/soes/eeprom.hex
@@ -1,4 +1,4 @@
-:2000000080060344640000000000000000001400AA0A0000CCBCBB000200000001000000A1
+:200000008006034C64000000000000000000EC00AA0A0000CCBCBB000200000001000000C1
:20002000000000000000000000000000000000000010000200120002040000000000000096
:200040000000000000000000000000000000000000000000000000000000000000000000A0
:20006000000000000000000000000000000000000000000000000000000000000F00010070
diff --git a/Firmware/lib/soes/esi.json b/Firmware/lib/soes/esi.json
index 3324c97..c330457 100755
--- a/Firmware/lib/soes/esi.json
+++ b/Firmware/lib/soes/esi.json
@@ -144,6 +144,50 @@
"pdo_mappings": [
"txpdo"
]
+ },
+ "6007": {
+ "otype": "VAR",
+ "name": "D1",
+ "access": "RO",
+ "pdo_mappings": [
+ "txpdo"
+ ],
+ "dtype": "INTEGER32",
+ "value": "0",
+ "data": "&Obj.D1"
+ },
+ "6008": {
+ "otype": "VAR",
+ "name": "D2",
+ "access": "RO",
+ "pdo_mappings": [
+ "txpdo"
+ ],
+ "dtype": "INTEGER32",
+ "value": "0",
+ "data": "&Obj.D2"
+ },
+ "6009": {
+ "otype": "VAR",
+ "name": "D3",
+ "access": "RO",
+ "pdo_mappings": [
+ "txpdo"
+ ],
+ "dtype": "INTEGER32",
+ "value": "0",
+ "data": "&Obj.D3"
+ },
+ "600A": {
+ "otype": "VAR",
+ "name": "D4",
+ "access": "RO",
+ "pdo_mappings": [
+ "txpdo"
+ ],
+ "dtype": "INTEGER32",
+ "value": "0",
+ "data": "&Obj.D4"
}
},
"rxpdo": {
@@ -223,17 +267,6 @@
"rxpdo"
]
},
- "7004": {
- "otype": "VAR",
- "name": "Enable1",
- "access": "RO",
- "pdo_mappings": [
- "rxpdo"
- ],
- "dtype": "BOOLEAN",
- "value": "0",
- "data": "&Obj.Enable1"
- },
"60664": {
"otype": "VAR",
"name": "ActualPosition",
diff --git a/Firmware/lib/soes/objectlist.c b/Firmware/lib/soes/objectlist.c
index af63550..6603d45 100755
--- a/Firmware/lib/soes/objectlist.c
+++ b/Firmware/lib/soes/objectlist.c
@@ -27,10 +27,6 @@ static const char acName1603[] = "StepGenIn2";
static const char acName1603_00[] = "Max SubIndex";
static const char acName1603_01[] = "CommandedPosition";
static const char acName1603_02[] = "StepsPerMM";
-static const char acName1604[] = "Enable1";
-static const char acName1604_00[] = "Max SubIndex";
-static const char acName1604_01[] = "Enable1";
-static const char acName1604_02[] = "Padding 1";
static const char acName1A00[] = "EncPos";
static const char acName1A00_00[] = "Max SubIndex";
static const char acName1A00_01[] = "EncPos";
@@ -52,6 +48,18 @@ static const char acName1A05_01[] = "ActualPosition";
static const char acName1A06[] = "StepGenOut2";
static const char acName1A06_00[] = "Max SubIndex";
static const char acName1A06_01[] = "ActualPosition";
+static const char acName1A07[] = "D1";
+static const char acName1A07_00[] = "Max SubIndex";
+static const char acName1A07_01[] = "D1";
+static const char acName1A08[] = "D2";
+static const char acName1A08_00[] = "Max SubIndex";
+static const char acName1A08_01[] = "D2";
+static const char acName1A09[] = "D3";
+static const char acName1A09_00[] = "Max SubIndex";
+static const char acName1A09_01[] = "D3";
+static const char acName1A0A[] = "D4";
+static const char acName1A0A_00[] = "Max SubIndex";
+static const char acName1A0A_01[] = "D4";
static const char acName1C00[] = "Sync Manager Communication Type";
static const char acName1C00_00[] = "Max SubIndex";
static const char acName1C00_01[] = "Communications Type SM0";
@@ -64,7 +72,6 @@ static const char acName1C12_01[] = "PDO Mapping";
static const char acName1C12_02[] = "PDO Mapping";
static const char acName1C12_03[] = "PDO Mapping";
static const char acName1C12_04[] = "PDO Mapping";
-static const char acName1C12_05[] = "PDO Mapping";
static const char acName1C13[] = "Sync Manager 3 PDO Assignment";
static const char acName1C13_00[] = "Max SubIndex";
static const char acName1C13_01[] = "PDO Mapping";
@@ -74,6 +81,10 @@ static const char acName1C13_04[] = "PDO Mapping";
static const char acName1C13_05[] = "PDO Mapping";
static const char acName1C13_06[] = "PDO Mapping";
static const char acName1C13_07[] = "PDO Mapping";
+static const char acName1C13_08[] = "PDO Mapping";
+static const char acName1C13_09[] = "PDO Mapping";
+static const char acName1C13_10[] = "PDO Mapping";
+static const char acName1C13_11[] = "PDO Mapping";
static const char acName6000[] = "EncPos";
static const char acName6001[] = "EncFrequency";
static const char acName6002[] = "DiffT";
@@ -85,6 +96,10 @@ static const char acName6005_01[] = "ActualPosition";
static const char acName6006[] = "StepGenOut2";
static const char acName6006_00[] = "Max SubIndex";
static const char acName6006_01[] = "ActualPosition";
+static const char acName6007[] = "D1";
+static const char acName6008[] = "D2";
+static const char acName6009[] = "D3";
+static const char acName600A[] = "D4";
static const char acName7000[] = "EncPosScale";
static const char acName7001[] = "IndexLatchEnable";
static const char acName7002[] = "StepGenIn1";
@@ -95,7 +110,6 @@ static const char acName7003[] = "StepGenIn2";
static const char acName7003_00[] = "Max SubIndex";
static const char acName7003_01[] = "CommandedPosition";
static const char acName7003_02[] = "StepsPerMM";
-static const char acName7004[] = "Enable1";
const _objd SDO1000[] =
{
@@ -143,12 +157,6 @@ const _objd SDO1603[] =
{0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1603_01, 0x70030140, NULL},
{0x02, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1603_02, 0x70030210, NULL},
};
-const _objd SDO1604[] =
-{
- {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1604_00, 2, NULL},
- {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1604_01, 0x70040001, NULL},
- {0x02, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1604_02, 0x00000007, NULL},
-};
const _objd SDO1A00[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A00_00, 1, NULL},
@@ -184,6 +192,26 @@ const _objd SDO1A06[] =
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A06_00, 1, NULL},
{0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A06_01, 0x60060140, NULL},
};
+const _objd SDO1A07[] =
+{
+ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A07_00, 1, NULL},
+ {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A07_01, 0x60070020, NULL},
+};
+const _objd SDO1A08[] =
+{
+ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A08_00, 1, NULL},
+ {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A08_01, 0x60080020, NULL},
+};
+const _objd SDO1A09[] =
+{
+ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A09_00, 1, NULL},
+ {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A09_01, 0x60090020, NULL},
+};
+const _objd SDO1A0A[] =
+{
+ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A0A_00, 1, NULL},
+ {0x01, DTYPE_UNSIGNED64, 64, ATYPE_RO, acName1A0A_01, 0x600A0020, NULL},
+};
const _objd SDO1C00[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C00_00, 4, NULL},
@@ -194,16 +222,15 @@ const _objd SDO1C00[] =
};
const _objd SDO1C12[] =
{
- {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C12_00, 5, NULL},
+ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C12_00, 4, NULL},
{0x01, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_01, 0x1600, NULL},
{0x02, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_02, 0x1601, NULL},
{0x03, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_03, 0x1602, NULL},
{0x04, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_04, 0x1603, NULL},
- {0x05, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_05, 0x1604, NULL},
};
const _objd SDO1C13[] =
{
- {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C13_00, 7, NULL},
+ {0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C13_00, 11, NULL},
{0x01, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_01, 0x1A00, NULL},
{0x02, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_02, 0x1A01, NULL},
{0x03, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_03, 0x1A02, NULL},
@@ -211,6 +238,10 @@ const _objd SDO1C13[] =
{0x05, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_05, 0x1A04, NULL},
{0x06, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_06, 0x1A05, NULL},
{0x07, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_07, 0x1A06, NULL},
+ {0x08, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_08, 0x1A07, NULL},
+ {0x09, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_09, 0x1A08, NULL},
+ {0x10, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_10, 0x1A09, NULL},
+ {0x11, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_11, 0x1A0A, NULL},
};
const _objd SDO6000[] =
{
@@ -242,6 +273,22 @@ const _objd SDO6006[] =
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName6006_00, 1, NULL},
{0x01, DTYPE_REAL64, 64, ATYPE_RO, acName6006_01, 0, &Obj.StepGenOut2.ActualPosition},
};
+const _objd SDO6007[] =
+{
+ {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName6007, 0, &Obj.D1},
+};
+const _objd SDO6008[] =
+{
+ {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName6008, 0, &Obj.D2},
+};
+const _objd SDO6009[] =
+{
+ {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName6009, 0, &Obj.D3},
+};
+const _objd SDO600A[] =
+{
+ {0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_TXPDO, acName600A, 0, &Obj.D4},
+};
const _objd SDO7000[] =
{
{0x0, DTYPE_INTEGER32, 32, ATYPE_RO | ATYPE_RXPDO, acName7000, 0, &Obj.EncPosScale},
@@ -262,10 +309,6 @@ const _objd SDO7003[] =
{0x01, DTYPE_REAL64, 64, ATYPE_RO, acName7003_01, 0, &Obj.StepGenIn2.CommandedPosition},
{0x02, DTYPE_INTEGER16, 16, ATYPE_RO, acName7003_02, 0, &Obj.StepGenIn2.StepsPerMM},
};
-const _objd SDO7004[] =
-{
- {0x0, DTYPE_BOOLEAN, 1, ATYPE_RO | ATYPE_RXPDO, acName7004, 0, &Obj.Enable1},
-};
const _objectlist SDOobjects[] =
{
@@ -278,7 +321,6 @@ const _objectlist SDOobjects[] =
{0x1601, OTYPE_RECORD, 1, 0, acName1601, SDO1601},
{0x1602, OTYPE_RECORD, 2, 0, acName1602, SDO1602},
{0x1603, OTYPE_RECORD, 2, 0, acName1603, SDO1603},
- {0x1604, OTYPE_RECORD, 2, 0, acName1604, SDO1604},
{0x1A00, OTYPE_RECORD, 1, 0, acName1A00, SDO1A00},
{0x1A01, OTYPE_RECORD, 1, 0, acName1A01, SDO1A01},
{0x1A02, OTYPE_RECORD, 1, 0, acName1A02, SDO1A02},
@@ -286,9 +328,13 @@ const _objectlist SDOobjects[] =
{0x1A04, OTYPE_RECORD, 1, 0, acName1A04, SDO1A04},
{0x1A05, OTYPE_RECORD, 1, 0, acName1A05, SDO1A05},
{0x1A06, OTYPE_RECORD, 1, 0, acName1A06, SDO1A06},
+ {0x1A07, OTYPE_RECORD, 1, 0, acName1A07, SDO1A07},
+ {0x1A08, OTYPE_RECORD, 1, 0, acName1A08, SDO1A08},
+ {0x1A09, OTYPE_RECORD, 1, 0, acName1A09, SDO1A09},
+ {0x1A0A, OTYPE_RECORD, 1, 0, acName1A0A, SDO1A0A},
{0x1C00, OTYPE_ARRAY, 4, 0, acName1C00, SDO1C00},
- {0x1C12, OTYPE_ARRAY, 5, 0, acName1C12, SDO1C12},
- {0x1C13, OTYPE_ARRAY, 7, 0, acName1C13, SDO1C13},
+ {0x1C12, OTYPE_ARRAY, 4, 0, acName1C12, SDO1C12},
+ {0x1C13, OTYPE_ARRAY, 11, 0, acName1C13, SDO1C13},
{0x6000, OTYPE_VAR, 0, 0, acName6000, SDO6000},
{0x6001, OTYPE_VAR, 0, 0, acName6001, SDO6001},
{0x6002, OTYPE_VAR, 0, 0, acName6002, SDO6002},
@@ -296,10 +342,13 @@ const _objectlist SDOobjects[] =
{0x6004, OTYPE_VAR, 0, 0, acName6004, SDO6004},
{0x6005, OTYPE_RECORD, 1, 0, acName6005, SDO6005},
{0x6006, OTYPE_RECORD, 1, 0, acName6006, SDO6006},
+ {0x6007, OTYPE_VAR, 0, 0, acName6007, SDO6007},
+ {0x6008, OTYPE_VAR, 0, 0, acName6008, SDO6008},
+ {0x6009, OTYPE_VAR, 0, 0, acName6009, SDO6009},
+ {0x600A, OTYPE_VAR, 0, 0, acName600A, SDO600A},
{0x7000, OTYPE_VAR, 0, 0, acName7000, SDO7000},
{0x7001, OTYPE_VAR, 0, 0, acName7001, SDO7001},
{0x7002, OTYPE_RECORD, 2, 0, acName7002, SDO7002},
{0x7003, OTYPE_RECORD, 2, 0, acName7003, SDO7003},
- {0x7004, OTYPE_VAR, 0, 0, acName7004, SDO7004},
{0xffff, 0xff, 0xff, 0xff, NULL, NULL}
};
diff --git a/Firmware/lib/soes/utypes.h b/Firmware/lib/soes/utypes.h
index cd93b85..97fcd62 100755
--- a/Firmware/lib/soes/utypes.h
+++ b/Firmware/lib/soes/utypes.h
@@ -26,6 +26,10 @@ typedef struct
{
double ActualPosition;
} StepGenOut2;
+ int32_t D1;
+ int32_t D2;
+ int32_t D3;
+ int32_t D4;
/* Outputs */
@@ -41,7 +45,6 @@ typedef struct
double CommandedPosition;
int16_t StepsPerMM;
} StepGenIn2;
- uint8_t Enable1;
} _Objects;