Works, sends Voltage during free-run to Twincat.
This commit is contained in:
Binary file not shown.
@@ -1,10 +1,10 @@
|
||||
:2000000080060344640000000000000000001400AA0A000000600000020000000100000084
|
||||
:2000000080060344640000000000000000001400D0D1BED0007000000200000001000000F9
|
||||
:20002000000000000000000000000000000000000010000200120002040000000000000096
|
||||
:200040000000000000000000000000000000000000000000000000000000000000000000A0
|
||||
:20006000000000000000000000000000000000000000000000000000000000000F00010070
|
||||
:200080000A002000040D456173657243415420363030300E4D616368696E65436F6E7472AE
|
||||
:200080000A002000040D456173657243415420373030300E4D616368696E65436F6E7472AD
|
||||
:2000A0006F6C06494D474342591A4D6574616C4D7573696E677320456173657243415420A9
|
||||
:2000C000363030301E001000020301040013000000000000000000001100000000000000FE
|
||||
:2000C000373030301E001000020301040013000000000000000000001100000000000000FD
|
||||
:2000E000000000000000000028000200010203002900100000100002260001010012000249
|
||||
:20010000220001020016000024000103001A000020000104FFFFFFFFFFFFFFFFFFFFFFFF49
|
||||
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"form": {
|
||||
"VendorName": "MetalMusings",
|
||||
"VendorID": "0xaaa",
|
||||
"ProductCode": "0x6000",
|
||||
"VendorID": "0xd0bed1d0",
|
||||
"ProductCode": "0x7000",
|
||||
"ProfileNo": "5001",
|
||||
"RevisionNumber": "0x002",
|
||||
"SerialNumber": "0x001",
|
||||
@@ -17,8 +17,8 @@
|
||||
"TextGroupType": "MachineControl",
|
||||
"TextGroupName5": "Plasma cutter",
|
||||
"ImageName": "IMGCBY",
|
||||
"TextDeviceType": "EaserCAT 6000",
|
||||
"TextDeviceName": "MetalMusings EaserCAT 6000",
|
||||
"TextDeviceType": "EaserCAT 7000",
|
||||
"TextDeviceName": "MetalMusings EaserCAT 7000",
|
||||
"Port0Physical": "Y",
|
||||
"Port1Physical": "Y",
|
||||
"Port2Physical": " ",
|
||||
@@ -36,12 +36,12 @@
|
||||
"sdo": {
|
||||
"2000": {
|
||||
"otype": "VAR",
|
||||
"name": "VelocityScale",
|
||||
"name": "VoltageScale",
|
||||
"access": "RO",
|
||||
"dtype": "REAL32",
|
||||
"value": "0",
|
||||
"value": "1",
|
||||
"isSDOitem": true,
|
||||
"data": "&Obj.VelocityScale"
|
||||
"data": "&Obj.VoltageScale"
|
||||
},
|
||||
"A": {
|
||||
"otype": "RECORD",
|
||||
@@ -83,25 +83,25 @@
|
||||
},
|
||||
"6001": {
|
||||
"otype": "VAR",
|
||||
"name": "Velocity",
|
||||
"name": "ArcVoltage",
|
||||
"access": "RO",
|
||||
"pdo_mappings": [
|
||||
"txpdo"
|
||||
],
|
||||
"dtype": "REAL32",
|
||||
"value": "0",
|
||||
"data": "&Obj.Velocity"
|
||||
"data": "&Obj.ArcVoltage"
|
||||
},
|
||||
"6002": {
|
||||
"otype": "VAR",
|
||||
"name": "Frequency",
|
||||
"name": "Voltage",
|
||||
"access": "RO",
|
||||
"pdo_mappings": [
|
||||
"txpdo"
|
||||
],
|
||||
"dtype": "UNSIGNED32",
|
||||
"dtype": "REAL32",
|
||||
"value": "0",
|
||||
"data": "&Obj.Frequency"
|
||||
"data": "&Obj.Voltage"
|
||||
}
|
||||
},
|
||||
"rxpdo": {
|
||||
|
||||
@@ -19,12 +19,12 @@ static const char acName1600_01[] = "Output4";
|
||||
static const char acName1A00[] = "Input12";
|
||||
static const char acName1A00_00[] = "Max SubIndex";
|
||||
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_01[] = "Velocity";
|
||||
static const char acName1A02[] = "Frequency";
|
||||
static const char acName1A01_01[] = "ArcVoltage";
|
||||
static const char acName1A02[] = "Voltage";
|
||||
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_00[] = "Max SubIndex";
|
||||
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_02[] = "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 acName6001[] = "Velocity";
|
||||
static const char acName6002[] = "Frequency";
|
||||
static const char acName6001[] = "ArcVoltage";
|
||||
static const char acName6002[] = "Voltage";
|
||||
static const char acName7000[] = "Output4";
|
||||
|
||||
const _objd SDO1000[] =
|
||||
@@ -51,7 +51,7 @@ const _objd SDO1000[] =
|
||||
};
|
||||
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[] =
|
||||
{
|
||||
@@ -64,8 +64,8 @@ const _objd SDO100A[] =
|
||||
const _objd SDO1018[] =
|
||||
{
|
||||
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1018_00, 4, NULL},
|
||||
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_01, 2730, NULL},
|
||||
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_02, 24576, NULL},
|
||||
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_01, 3502166480, NULL},
|
||||
{0x02, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_02, 28672, NULL},
|
||||
{0x03, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_03, 2, NULL},
|
||||
{0x04, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1018_04, 1, &Obj.serial},
|
||||
};
|
||||
@@ -111,7 +111,7 @@ const _objd SDO1C13[] =
|
||||
};
|
||||
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[] =
|
||||
{
|
||||
@@ -119,11 +119,11 @@ const _objd SDO6000[] =
|
||||
};
|
||||
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[] =
|
||||
{
|
||||
{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[] =
|
||||
{
|
||||
|
||||
@@ -14,8 +14,8 @@ typedef struct
|
||||
/* Inputs */
|
||||
|
||||
int32_t Input12;
|
||||
float Velocity;
|
||||
uint32_t Frequency;
|
||||
float ArcVoltage;
|
||||
float Voltage;
|
||||
|
||||
/* Outputs */
|
||||
|
||||
@@ -23,7 +23,7 @@ typedef struct
|
||||
|
||||
/* Parameters */
|
||||
|
||||
float VelocityScale;
|
||||
float VoltageScale;
|
||||
} _Objects;
|
||||
|
||||
extern _Objects Obj;
|
||||
|
||||
@@ -18,7 +18,7 @@ debug_build_flags = -O0 -g -ggdb
|
||||
monitor_port = COM15
|
||||
monitor_filters = send_on_enter, time, colorize, log2file
|
||||
monitor_speed = 115200
|
||||
build_flags = -Wl,--no-warn-rwx-segment
|
||||
build_flags = -Wl,--no-warn-rwx-segment -DECAT
|
||||
lib_deps =
|
||||
SPI
|
||||
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++)
|
||||
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)
|
||||
scale = 1.0;
|
||||
float ADCvoltage = ADS.getValue(ADS.toVoltage(value));
|
||||
Obj.ArcVoltage = scale * ADCvoltage; // Scaled voltage, supposedly to give Plasma voltage
|
||||
Obj.Voltage = ADCvoltage; // Raw voltage, read by ADC
|
||||
float ADCvoltage = ADS.toVoltage(ADS.getValue());
|
||||
Obj.ArcVoltage = scale*ADCvoltage; // * ADCvoltage; // Scaled voltage, to give Plasma arc voltage
|
||||
Obj.Voltage = ADCvoltage; // Raw voltage, read by ADC
|
||||
}
|
||||
|
||||
void ESC_interrupt_enable(uint32_t mask);
|
||||
@@ -67,10 +68,10 @@ static esc_cfg_t config =
|
||||
.post_object_download_hook = NULL,
|
||||
.rxpdo_override = NULL,
|
||||
.txpdo_override = NULL,
|
||||
.esc_hw_interrupt_enable = ESC_interrupt_enable,
|
||||
.esc_hw_interrupt_disable = ESC_interrupt_disable,
|
||||
.esc_hw_interrupt_enable = NULL, // ESC_interrupt_enable,
|
||||
.esc_hw_interrupt_disable = NULL, // ESC_interrupt_disable,
|
||||
.esc_hw_eep_handler = NULL,
|
||||
.esc_check_dc_handler = dc_checker,
|
||||
.esc_check_dc_handler = NULL, // dc_checker,
|
||||
};
|
||||
|
||||
volatile byte serveIRQ = 0;
|
||||
@@ -107,14 +108,14 @@ void setup(void)
|
||||
ADS.setWireClock(400000UL); // 400 kHz
|
||||
ADS.readADC(0); // first read to trigger settings
|
||||
|
||||
#if 0
|
||||
#ifdef ECAT
|
||||
ecat_slv_init(&config);
|
||||
#endif
|
||||
}
|
||||
|
||||
void loop(void)
|
||||
{
|
||||
#if 0
|
||||
#ifdef ECAT
|
||||
uint64_t dTime;
|
||||
if (serveIRQ)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user