Works, sends Voltage during free-run to Twincat.
This commit is contained in:
Binary file not shown.
@@ -1,10 +1,10 @@
|
|||||||
:2000000080060344640000000000000000001400AA0A000000600000020000000100000084
|
:2000000080060344640000000000000000001400D0D1BED0007000000200000001000000F9
|
||||||
:20002000000000000000000000000000000000000010000200120002040000000000000096
|
:20002000000000000000000000000000000000000010000200120002040000000000000096
|
||||||
:200040000000000000000000000000000000000000000000000000000000000000000000A0
|
:200040000000000000000000000000000000000000000000000000000000000000000000A0
|
||||||
:20006000000000000000000000000000000000000000000000000000000000000F00010070
|
:20006000000000000000000000000000000000000000000000000000000000000F00010070
|
||||||
:200080000A002000040D456173657243415420363030300E4D616368696E65436F6E7472AE
|
:200080000A002000040D456173657243415420373030300E4D616368696E65436F6E7472AD
|
||||||
:2000A0006F6C06494D474342591A4D6574616C4D7573696E677320456173657243415420A9
|
:2000A0006F6C06494D474342591A4D6574616C4D7573696E677320456173657243415420A9
|
||||||
:2000C000363030301E001000020301040013000000000000000000001100000000000000FE
|
:2000C000373030301E001000020301040013000000000000000000001100000000000000FD
|
||||||
:2000E000000000000000000028000200010203002900100000100002260001010012000249
|
:2000E000000000000000000028000200010203002900100000100002260001010012000249
|
||||||
:20010000220001020016000024000103001A000020000104FFFFFFFFFFFFFFFFFFFFFFFF49
|
:20010000220001020016000024000103001A000020000104FFFFFFFFFFFFFFFFFFFFFFFF49
|
||||||
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
|
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"form": {
|
"form": {
|
||||||
"VendorName": "MetalMusings",
|
"VendorName": "MetalMusings",
|
||||||
"VendorID": "0xaaa",
|
"VendorID": "0xd0bed1d0",
|
||||||
"ProductCode": "0x6000",
|
"ProductCode": "0x7000",
|
||||||
"ProfileNo": "5001",
|
"ProfileNo": "5001",
|
||||||
"RevisionNumber": "0x002",
|
"RevisionNumber": "0x002",
|
||||||
"SerialNumber": "0x001",
|
"SerialNumber": "0x001",
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
"TextGroupType": "MachineControl",
|
"TextGroupType": "MachineControl",
|
||||||
"TextGroupName5": "Plasma cutter",
|
"TextGroupName5": "Plasma cutter",
|
||||||
"ImageName": "IMGCBY",
|
"ImageName": "IMGCBY",
|
||||||
"TextDeviceType": "EaserCAT 6000",
|
"TextDeviceType": "EaserCAT 7000",
|
||||||
"TextDeviceName": "MetalMusings EaserCAT 6000",
|
"TextDeviceName": "MetalMusings EaserCAT 7000",
|
||||||
"Port0Physical": "Y",
|
"Port0Physical": "Y",
|
||||||
"Port1Physical": "Y",
|
"Port1Physical": "Y",
|
||||||
"Port2Physical": " ",
|
"Port2Physical": " ",
|
||||||
@@ -36,12 +36,12 @@
|
|||||||
"sdo": {
|
"sdo": {
|
||||||
"2000": {
|
"2000": {
|
||||||
"otype": "VAR",
|
"otype": "VAR",
|
||||||
"name": "VelocityScale",
|
"name": "VoltageScale",
|
||||||
"access": "RO",
|
"access": "RO",
|
||||||
"dtype": "REAL32",
|
"dtype": "REAL32",
|
||||||
"value": "0",
|
"value": "1",
|
||||||
"isSDOitem": true,
|
"isSDOitem": true,
|
||||||
"data": "&Obj.VelocityScale"
|
"data": "&Obj.VoltageScale"
|
||||||
},
|
},
|
||||||
"A": {
|
"A": {
|
||||||
"otype": "RECORD",
|
"otype": "RECORD",
|
||||||
@@ -83,25 +83,25 @@
|
|||||||
},
|
},
|
||||||
"6001": {
|
"6001": {
|
||||||
"otype": "VAR",
|
"otype": "VAR",
|
||||||
"name": "Velocity",
|
"name": "ArcVoltage",
|
||||||
"access": "RO",
|
"access": "RO",
|
||||||
"pdo_mappings": [
|
"pdo_mappings": [
|
||||||
"txpdo"
|
"txpdo"
|
||||||
],
|
],
|
||||||
"dtype": "REAL32",
|
"dtype": "REAL32",
|
||||||
"value": "0",
|
"value": "0",
|
||||||
"data": "&Obj.Velocity"
|
"data": "&Obj.ArcVoltage"
|
||||||
},
|
},
|
||||||
"6002": {
|
"6002": {
|
||||||
"otype": "VAR",
|
"otype": "VAR",
|
||||||
"name": "Frequency",
|
"name": "Voltage",
|
||||||
"access": "RO",
|
"access": "RO",
|
||||||
"pdo_mappings": [
|
"pdo_mappings": [
|
||||||
"txpdo"
|
"txpdo"
|
||||||
],
|
],
|
||||||
"dtype": "UNSIGNED32",
|
"dtype": "REAL32",
|
||||||
"value": "0",
|
"value": "0",
|
||||||
"data": "&Obj.Frequency"
|
"data": "&Obj.Voltage"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rxpdo": {
|
"rxpdo": {
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ static const char acName1600_01[] = "Output4";
|
|||||||
static const char acName1A00[] = "Input12";
|
static const char acName1A00[] = "Input12";
|
||||||
static const char acName1A00_00[] = "Max SubIndex";
|
static const char acName1A00_00[] = "Max SubIndex";
|
||||||
static const char acName1A00_01[] = "Input12";
|
static const char acName1A00_01[] = "Input12";
|
||||||
static const char acName1A01[] = "Velocity";
|
static const char acName1A01[] = "ArcVoltage";
|
||||||
static const char acName1A01_00[] = "Max SubIndex";
|
static const char acName1A01_00[] = "Max SubIndex";
|
||||||
static const char acName1A01_01[] = "Velocity";
|
static const char acName1A01_01[] = "ArcVoltage";
|
||||||
static const char acName1A02[] = "Frequency";
|
static const char acName1A02[] = "Voltage";
|
||||||
static const char acName1A02_00[] = "Max SubIndex";
|
static const char acName1A02_00[] = "Max SubIndex";
|
||||||
static const char acName1A02_01[] = "Frequency";
|
static const char acName1A02_01[] = "Voltage";
|
||||||
static const char acName1C00[] = "Sync Manager Communication Type";
|
static const char acName1C00[] = "Sync Manager Communication Type";
|
||||||
static const char acName1C00_00[] = "Max SubIndex";
|
static const char acName1C00_00[] = "Max SubIndex";
|
||||||
static const char acName1C00_01[] = "Communications Type SM0";
|
static const char acName1C00_01[] = "Communications Type SM0";
|
||||||
@@ -39,10 +39,10 @@ static const char acName1C13_00[] = "Max SubIndex";
|
|||||||
static const char acName1C13_01[] = "PDO Mapping";
|
static const char acName1C13_01[] = "PDO Mapping";
|
||||||
static const char acName1C13_02[] = "PDO Mapping";
|
static const char acName1C13_02[] = "PDO Mapping";
|
||||||
static const char acName1C13_03[] = "PDO Mapping";
|
static const char acName1C13_03[] = "PDO Mapping";
|
||||||
static const char acName2000[] = "VelocityScale";
|
static const char acName2000[] = "VoltageScale";
|
||||||
static const char acName6000[] = "Input12";
|
static const char acName6000[] = "Input12";
|
||||||
static const char acName6001[] = "Velocity";
|
static const char acName6001[] = "ArcVoltage";
|
||||||
static const char acName6002[] = "Frequency";
|
static const char acName6002[] = "Voltage";
|
||||||
static const char acName7000[] = "Output4";
|
static const char acName7000[] = "Output4";
|
||||||
|
|
||||||
const _objd SDO1000[] =
|
const _objd SDO1000[] =
|
||||||
@@ -51,7 +51,7 @@ const _objd SDO1000[] =
|
|||||||
};
|
};
|
||||||
const _objd SDO1008[] =
|
const _objd SDO1008[] =
|
||||||
{
|
{
|
||||||
{0x0, DTYPE_VISIBLE_STRING, 208, ATYPE_RO, acName1008, 0, "MetalMusings EaserCAT 6000"},
|
{0x0, DTYPE_VISIBLE_STRING, 208, ATYPE_RO, acName1008, 0, "MetalMusings EaserCAT 7000"},
|
||||||
};
|
};
|
||||||
const _objd SDO1009[] =
|
const _objd SDO1009[] =
|
||||||
{
|
{
|
||||||
@@ -64,8 +64,8 @@ const _objd SDO100A[] =
|
|||||||
const _objd SDO1018[] =
|
const _objd SDO1018[] =
|
||||||
{
|
{
|
||||||
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1018_00, 4, NULL},
|
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1018_00, 4, NULL},
|
||||||
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_01, 2730, NULL},
|
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_01, 3502166480, NULL},
|
||||||
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_02, 24576, NULL},
|
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_02, 28672, NULL},
|
||||||
{0x03, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_03, 2, NULL},
|
{0x03, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_03, 2, NULL},
|
||||||
{0x04, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_04, 1, &Obj.serial},
|
{0x04, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_04, 1, &Obj.serial},
|
||||||
};
|
};
|
||||||
@@ -111,7 +111,7 @@ const _objd SDO1C13[] =
|
|||||||
};
|
};
|
||||||
const _objd SDO2000[] =
|
const _objd SDO2000[] =
|
||||||
{
|
{
|
||||||
{0x0, DTYPE_REAL32, 32, ATYPE_RO, acName2000, 0x00000000, &Obj.VelocityScale},
|
{0x0, DTYPE_REAL32, 32, ATYPE_RO, acName2000, 0x3f800000, &Obj.VoltageScale},
|
||||||
};
|
};
|
||||||
const _objd SDO6000[] =
|
const _objd SDO6000[] =
|
||||||
{
|
{
|
||||||
@@ -119,11 +119,11 @@ const _objd SDO6000[] =
|
|||||||
};
|
};
|
||||||
const _objd SDO6001[] =
|
const _objd SDO6001[] =
|
||||||
{
|
{
|
||||||
{0x0, DTYPE_REAL32, 32, ATYPE_RO | ATYPE_TXPDO, acName6001, 0x00000000, &Obj.Velocity},
|
{0x0, DTYPE_REAL32, 32, ATYPE_RO | ATYPE_TXPDO, acName6001, 0x00000000, &Obj.ArcVoltage},
|
||||||
};
|
};
|
||||||
const _objd SDO6002[] =
|
const _objd SDO6002[] =
|
||||||
{
|
{
|
||||||
{0x0, DTYPE_UNSIGNED32, 32, ATYPE_RO | ATYPE_TXPDO, acName6002, 0, &Obj.Frequency},
|
{0x0, DTYPE_REAL32, 32, ATYPE_RO | ATYPE_TXPDO, acName6002, 0x00000000, &Obj.Voltage},
|
||||||
};
|
};
|
||||||
const _objd SDO7000[] =
|
const _objd SDO7000[] =
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ typedef struct
|
|||||||
/* Inputs */
|
/* Inputs */
|
||||||
|
|
||||||
int32_t Input12;
|
int32_t Input12;
|
||||||
float Velocity;
|
float ArcVoltage;
|
||||||
uint32_t Frequency;
|
float Voltage;
|
||||||
|
|
||||||
/* Outputs */
|
/* Outputs */
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ typedef struct
|
|||||||
|
|
||||||
/* Parameters */
|
/* Parameters */
|
||||||
|
|
||||||
float VelocityScale;
|
float VoltageScale;
|
||||||
} _Objects;
|
} _Objects;
|
||||||
|
|
||||||
extern _Objects Obj;
|
extern _Objects Obj;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ debug_build_flags = -O0 -g -ggdb
|
|||||||
monitor_port = COM15
|
monitor_port = COM15
|
||||||
monitor_filters = send_on_enter, time, colorize, log2file
|
monitor_filters = send_on_enter, time, colorize, log2file
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
build_flags = -Wl,--no-warn-rwx-segment
|
build_flags = -Wl,--no-warn-rwx-segment -DECAT
|
||||||
lib_deps =
|
lib_deps =
|
||||||
SPI
|
SPI
|
||||||
robtillaart/ADS1X15@^0.5.1
|
robtillaart/ADS1X15@^0.5.1
|
||||||
|
|||||||
@@ -40,12 +40,13 @@ void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < sizeof(inputPin); i++)
|
for (int i = 0; i < sizeof(inputPin); i++)
|
||||||
Obj.Input12 = digitalRead(inputPin[i]) == HIGH ? bitset(Obj.Input12, i) : bitclear(Obj.Input12, i);
|
Obj.Input12 = digitalRead(inputPin[i]) == HIGH ? bitset(Obj.Input12, i) : bitclear(Obj.Input12, i);
|
||||||
float scale = Obj.VelocityScale;
|
|
||||||
|
float scale = Obj.VoltageScale;
|
||||||
if (scale == 0.0)
|
if (scale == 0.0)
|
||||||
scale = 1.0;
|
scale = 1.0;
|
||||||
float ADCvoltage = ADS.getValue(ADS.toVoltage(value));
|
float ADCvoltage = ADS.toVoltage(ADS.getValue());
|
||||||
Obj.ArcVoltage = scale * ADCvoltage; // Scaled voltage, supposedly to give Plasma voltage
|
Obj.ArcVoltage = scale*ADCvoltage; // * ADCvoltage; // Scaled voltage, to give Plasma arc voltage
|
||||||
Obj.Voltage = ADCvoltage; // Raw voltage, read by ADC
|
Obj.Voltage = ADCvoltage; // Raw voltage, read by ADC
|
||||||
}
|
}
|
||||||
|
|
||||||
void ESC_interrupt_enable(uint32_t mask);
|
void ESC_interrupt_enable(uint32_t mask);
|
||||||
@@ -67,10 +68,10 @@ static esc_cfg_t config =
|
|||||||
.post_object_download_hook = NULL,
|
.post_object_download_hook = NULL,
|
||||||
.rxpdo_override = NULL,
|
.rxpdo_override = NULL,
|
||||||
.txpdo_override = NULL,
|
.txpdo_override = NULL,
|
||||||
.esc_hw_interrupt_enable = ESC_interrupt_enable,
|
.esc_hw_interrupt_enable = NULL, // ESC_interrupt_enable,
|
||||||
.esc_hw_interrupt_disable = ESC_interrupt_disable,
|
.esc_hw_interrupt_disable = NULL, // ESC_interrupt_disable,
|
||||||
.esc_hw_eep_handler = NULL,
|
.esc_hw_eep_handler = NULL,
|
||||||
.esc_check_dc_handler = dc_checker,
|
.esc_check_dc_handler = NULL, // dc_checker,
|
||||||
};
|
};
|
||||||
|
|
||||||
volatile byte serveIRQ = 0;
|
volatile byte serveIRQ = 0;
|
||||||
@@ -107,14 +108,14 @@ void setup(void)
|
|||||||
ADS.setWireClock(400000UL); // 400 kHz
|
ADS.setWireClock(400000UL); // 400 kHz
|
||||||
ADS.readADC(0); // first read to trigger settings
|
ADS.readADC(0); // first read to trigger settings
|
||||||
|
|
||||||
#if 0
|
#ifdef ECAT
|
||||||
ecat_slv_init(&config);
|
ecat_slv_init(&config);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop(void)
|
void loop(void)
|
||||||
{
|
{
|
||||||
#if 0
|
#ifdef ECAT
|
||||||
uint64_t dTime;
|
uint64_t dTime;
|
||||||
if (serveIRQ)
|
if (serveIRQ)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user