Works, sends Voltage during free-run to Twincat.

This commit is contained in:
Hakan Bastedt
2025-02-08 21:48:26 +01:00
parent dda9d3bf20
commit ada1b8aa05
7 changed files with 42 additions and 41 deletions

View File

@@ -1,10 +1,10 @@
:2000000080060344640000000000000000001400AA0A000000600000020000000100000084
:2000000080060344640000000000000000001400D0D1BED0007000000200000001000000F9
:20002000000000000000000000000000000000000010000200120002040000000000000096
:200040000000000000000000000000000000000000000000000000000000000000000000A0
:20006000000000000000000000000000000000000000000000000000000000000F00010070
:200080000A002000040D456173657243415420363030300E4D616368696E65436F6E7472AE
:200080000A002000040D456173657243415420373030300E4D616368696E65436F6E7472AD
:2000A0006F6C06494D474342591A4D6574616C4D7573696E677320456173657243415420A9
:2000C000363030301E001000020301040013000000000000000000001100000000000000FE
:2000C000373030301E001000020301040013000000000000000000001100000000000000FD
:2000E000000000000000000028000200010203002900100000100002260001010012000249
:20010000220001020016000024000103001A000020000104FFFFFFFFFFFFFFFFFFFFFFFF49
:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF

View File

@@ -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": {

View File

@@ -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[] =
{

View File

@@ -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;

View File

@@ -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

View File

@@ -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)
{