THCLIP released

This commit is contained in:
Hakan Bastedt
2025-06-02 14:45:01 +02:00
parent eb1d76ad3f
commit e4c3f14809
12 changed files with 2104 additions and 321 deletions

View File

@@ -34,7 +34,7 @@ volatile double posCmd1, posCmd2, posCmd3, posCmd4;
volatile float posScale1, posScale2, posScale3, posScale4;
volatile float maxAcc1, maxAcc2, maxAcc3, maxAcc4;
volatile uint8_t enable1, enable2, enable3, enable4;
volatile uint32_t basePeriod;
volatile uint32_t basePeriod, newBasePeriod;
volatile uint16_t basePeriodCnt;
volatile uint16_t deltaMakePulsesCnt;
volatile uint64_t makePulsesCnt = 0;
@@ -103,7 +103,7 @@ void cb_set_outputs(void) // Get Master outputs, slave inputs, first operation
enable3 = Obj.Enable3;
enable4 = Obj.Enable4;
if (Obj.BasePeriod != 0) // Use default value from setup() if not set by SDO.
basePeriod = Obj.BasePeriod;
newBasePeriod = Obj.BasePeriod;
}
void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
@@ -197,7 +197,7 @@ void setup(void)
pinMode(PE5, OUTPUT); // Step 4
pinMode(PE4, OUTPUT); // Dir 4
basePeriod = BASE_PERIOD; // Random-ish number, but it should work
basePeriod = newBasePeriod = BASE_PERIOD; // Random-ish number, but it should work. Change through sdos
baseTimer = new HardwareTimer(TIM11); // The base period timer
baseTimer->setOverflow(BASE_PERIOD / 1000, MICROSEC_FORMAT); // Or the line above, This one is uncalibrated
@@ -347,6 +347,11 @@ void updateStepperGenerators(void)
enable1, enable2, enable3, enable4,
sync0CycleTime); // Update positions
Step->makeAllPulses(); // Make first step right here
if (newBasePeriod != basePeriod) // Changed via sdos
{
basePeriod = newBasePeriod;
baseTimer->setOverflow(basePeriod / 1000, MICROSEC_FORMAT); // update timer frequency
}
basePeriodCnt = sync0CycleTime / basePeriod; //
baseTimer->refresh(); //
baseTimer->resume();

View File

@@ -8,97 +8,99 @@
{
"name": "PlatformIO",
"includePath": [
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/include",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/src",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes-esi",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/MyMCP3221",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/ADS1X15",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/MCP3X21",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Wire/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SPI/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/cores/arduino/avr",
"/home/debian/.platformio/packages/framework-arduinoststm32/cores/arduino/stm32",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc/LL",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Src",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/STM32F4xx",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/open-amp/lib/include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/libmetal/lib/include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/virtual_driver",
"/home/debian/.platformio/packages/framework-cmsis/CMSIS/Core/Include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc",
"/home/debian/.platformio/packages/framework-cmsis/CMSIS/DSP/Include",
"/home/debian/.platformio/packages/framework-cmsis/CMSIS/DSP/PrivateInclude",
"/home/debian/.platformio/packages/framework-arduinoststm32/cores/arduino",
"/home/debian/.platformio/packages/framework-arduinoststm32/variants/STM32F4xx/F407V(E-G)T_F417V(E-G)T",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/CMSIS_DSP/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/EEPROM/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/IWatchdog/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Keyboard/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Mouse/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/RGB_LED_TLC59731/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Servo/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SoftwareSerial/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SubGhz/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/src",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/include",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/src",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/MyMCP3221",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes-esi",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/ADS1X15",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/MCP3X21",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Wire/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SPI/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/cores/arduino/avr",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/cores/arduino/stm32",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc/LL",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/STM32F4xx",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/open-amp/lib/include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/libmetal/lib/include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/virtual_driver",
"C:/Users/Hakan/.platformio/packages/framework-cmsis/CMSIS/Core/Include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc",
"C:/Users/Hakan/.platformio/packages/framework-cmsis/CMSIS/DSP/Include",
"C:/Users/Hakan/.platformio/packages/framework-cmsis/CMSIS/DSP/PrivateInclude",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/cores/arduino",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/variants/STM32F4xx/F407V(E-G)T_F417V(E-G)T",
"C:/Users/Hakan/.platformio/lib/RunningAverage",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/CMSIS_DSP/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/EEPROM/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/IWatchdog/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Keyboard/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Mouse/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/RGB_LED_TLC59731/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Servo/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SoftwareSerial/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SubGhz/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/src",
""
],
"browse": {
"limitSymbolsToIncludedHeaders": true,
"path": [
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/include",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/src",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes-esi",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/MyMCP3221",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/ADS1X15",
"/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/MCP3X21",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Wire/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SPI/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/cores/arduino/avr",
"/home/debian/.platformio/packages/framework-arduinoststm32/cores/arduino/stm32",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc/LL",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Src",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/STM32F4xx",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/open-amp/lib/include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/libmetal/lib/include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/virtual_driver",
"/home/debian/.platformio/packages/framework-cmsis/CMSIS/Core/Include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"/home/debian/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc",
"/home/debian/.platformio/packages/framework-cmsis/CMSIS/DSP/Include",
"/home/debian/.platformio/packages/framework-cmsis/CMSIS/DSP/PrivateInclude",
"/home/debian/.platformio/packages/framework-arduinoststm32/cores/arduino",
"/home/debian/.platformio/packages/framework-arduinoststm32/variants/STM32F4xx/F407V(E-G)T_F417V(E-G)T",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/CMSIS_DSP/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/EEPROM/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/IWatchdog/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Keyboard/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Mouse/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/RGB_LED_TLC59731/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/Servo/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SoftwareSerial/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/SubGhz/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/src",
"/home/debian/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/src",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/include",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/src",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/MyMCP3221",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes-esi",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/lib/soes",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/ADS1X15",
"Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/libdeps/genericSTM32F407VGT6/MCP3X21",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Wire/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SPI/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/cores/arduino/avr",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/cores/arduino/stm32",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/inc/LL",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32F4xx_HAL_Driver/Src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/STM32F4xx",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Inc",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/ST/STM32_USB_Device_Library/Core/Src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/open-amp/lib/include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/libmetal/lib/include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Middlewares/OpenAMP/virtual_driver",
"C:/Users/Hakan/.platformio/packages/framework-cmsis/CMSIS/Core/Include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/system/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc",
"C:/Users/Hakan/.platformio/packages/framework-cmsis/CMSIS/DSP/Include",
"C:/Users/Hakan/.platformio/packages/framework-cmsis/CMSIS/DSP/PrivateInclude",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/cores/arduino",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/variants/STM32F4xx/F407V(E-G)T_F417V(E-G)T",
"C:/Users/Hakan/.platformio/lib/RunningAverage",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/CMSIS_DSP/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/EEPROM/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/IWatchdog/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Keyboard/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Mouse/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/RGB_LED_TLC59731/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/Servo/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SoftwareSerial/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SrcWrapper/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/SubGhz/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/USBDevice/src",
"C:/Users/Hakan/.platformio/packages/framework-arduinoststm32/libraries/VirtIO/src",
""
]
},
@@ -122,7 +124,7 @@
],
"cStandard": "gnu17",
"cppStandard": "gnu++17",
"compilerPath": "/home/debian/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gcc",
"compilerPath": "C:/Users/Hakan/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gcc.exe",
"compilerArgs": [
"-mcpu=cortex-m4",
"-mthumb",

View File

@@ -12,11 +12,11 @@
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug",
"executable": "/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/build/genericSTM32F407VGT6/firmware.elf",
"executable": "Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/build/genericSTM32F407VGT6/firmware.elf",
"projectEnvName": "genericSTM32F407VGT6",
"toolchainBinDir": "/home/debian/.platformio/packages/toolchain-gccarmnoneeabi/bin",
"toolchainBinDir": "C:/Users/Hakan/.platformio/packages/toolchain-gccarmnoneeabi/bin",
"internalConsoleOptions": "openOnSessionStart",
"svdPath": "/home/debian/.platformio/platforms/ststm32/misc/svd/STM32F40x.svd",
"svdPath": "C:/Users/Hakan/.platformio/platforms/ststm32/misc/svd/STM32F40x.svd",
"preLaunchTask": {
"type": "PlatformIO",
"task": "Pre-Debug"
@@ -26,21 +26,21 @@
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug (skip Pre-Debug)",
"executable": "/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/build/genericSTM32F407VGT6/firmware.elf",
"executable": "Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/build/genericSTM32F407VGT6/firmware.elf",
"projectEnvName": "genericSTM32F407VGT6",
"toolchainBinDir": "/home/debian/.platformio/packages/toolchain-gccarmnoneeabi/bin",
"toolchainBinDir": "C:/Users/Hakan/.platformio/packages/toolchain-gccarmnoneeabi/bin",
"internalConsoleOptions": "openOnSessionStart",
"svdPath": "/home/debian/.platformio/platforms/ststm32/misc/svd/STM32F40x.svd"
"svdPath": "C:/Users/Hakan/.platformio/platforms/ststm32/misc/svd/STM32F40x.svd"
},
{
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug (without uploading)",
"executable": "/mnt/server/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/build/genericSTM32F407VGT6/firmware.elf",
"executable": "Z:/src/MyOwnEtherCATDevice/Cards/EaserCAT-7000-DIO+I2C/Firmware/.pio/build/genericSTM32F407VGT6/firmware.elf",
"projectEnvName": "genericSTM32F407VGT6",
"toolchainBinDir": "/home/debian/.platformio/packages/toolchain-gccarmnoneeabi/bin",
"toolchainBinDir": "C:/Users/Hakan/.platformio/packages/toolchain-gccarmnoneeabi/bin",
"internalConsoleOptions": "openOnSessionStart",
"svdPath": "/home/debian/.platformio/platforms/ststm32/misc/svd/STM32F40x.svd",
"svdPath": "C:/Users/Hakan/.platformio/platforms/ststm32/misc/svd/STM32F40x.svd",
"loadMode": "manual"
}
]

View File

@@ -171,6 +171,78 @@
</Flags>
</SubItem>
</DataType>
<DataType>
<Name>DT1604</Name>
<BitSize>48</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>Max SubIndex</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<BitOffs>0</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
<SubItem>
<SubIdx>1</SubIdx>
<Name>EnableOhmicSensing</Name>
<Type>UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
</DataType>
<DataType>
<Name>DT1605</Name>
<BitSize>48</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>Max SubIndex</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<BitOffs>0</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
<SubItem>
<SubIdx>1</SubIdx>
<Name>OhmicSensingSetupTime</Name>
<Type>UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
</DataType>
<DataType>
<Name>DT1606</Name>
<BitSize>48</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>Max SubIndex</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<BitOffs>0</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
<SubItem>
<SubIdx>1</SubIdx>
<Name>OhmicSensingVoltageLimit</Name>
<Type>UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
</DataType>
<DataType>
<Name>DT1A00</Name>
<BitSize>48</BitSize>
@@ -291,6 +363,30 @@
</Flags>
</SubItem>
</DataType>
<DataType>
<Name>DT1A05</Name>
<BitSize>48</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>Max SubIndex</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<BitOffs>0</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
<SubItem>
<SubIdx>1</SubIdx>
<Name>OhmicSensingSensed</Name>
<Type>UDINT</Type>
<BitSize>32</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>ro</Access>
</Flags>
</SubItem>
</DataType>
<DataType>
<Name>DT1C00ARR</Name>
<BaseType>USINT</BaseType>
@@ -326,15 +422,15 @@
<DataType>
<Name>DT1C12ARR</Name>
<BaseType>UINT</BaseType>
<BitSize>64</BitSize>
<BitSize>112</BitSize>
<ArrayInfo>
<LBound>1</LBound>
<Elements>4</Elements>
<Elements>7</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name>DT1C12</Name>
<BitSize>80</BitSize>
<BitSize>128</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>Max SubIndex</Name>
@@ -348,7 +444,7 @@
<SubItem>
<Name>Elements</Name>
<Type>DT1C12ARR</Type>
<BitSize>64</BitSize>
<BitSize>112</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>ro</Access>
@@ -358,15 +454,15 @@
<DataType>
<Name>DT1C13ARR</Name>
<BaseType>UINT</BaseType>
<BitSize>80</BitSize>
<BitSize>96</BitSize>
<ArrayInfo>
<LBound>1</LBound>
<Elements>5</Elements>
<Elements>6</Elements>
</ArrayInfo>
</DataType>
<DataType>
<Name>DT1C13</Name>
<BitSize>96</BitSize>
<BitSize>112</BitSize>
<SubItem>
<SubIdx>0</SubIdx>
<Name>Max SubIndex</Name>
@@ -380,7 +476,7 @@
<SubItem>
<Name>Elements</Name>
<Type>DT1C13ARR</Type>
<BitSize>80</BitSize>
<BitSize>96</BitSize>
<BitOffs>16</BitOffs>
<Flags>
<Access>ro</Access>
@@ -595,6 +691,72 @@
<Flags>
</Flags>
</Object>
<Object>
<Index>#x1604</Index>
<Name>EnableOhmicSensing</Name>
<Type>DT1604</Type>
<BitSize>48</BitSize>
<Info>
<SubItem>
<Name>Max SubIndex</Name>
<Info>
<DefaultValue>1</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>EnableOhmicSensing</Name>
<Info>
<DefaultValue>#x70040008</DefaultValue>
</Info>
</SubItem>
</Info>
<Flags>
</Flags>
</Object>
<Object>
<Index>#x1605</Index>
<Name>OhmicSensingSetupTime</Name>
<Type>DT1605</Type>
<BitSize>48</BitSize>
<Info>
<SubItem>
<Name>Max SubIndex</Name>
<Info>
<DefaultValue>1</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>OhmicSensingSetupTime</Name>
<Info>
<DefaultValue>#x70050020</DefaultValue>
</Info>
</SubItem>
</Info>
<Flags>
</Flags>
</Object>
<Object>
<Index>#x1606</Index>
<Name>OhmicSensingVoltageLimit</Name>
<Type>DT1606</Type>
<BitSize>48</BitSize>
<Info>
<SubItem>
<Name>Max SubIndex</Name>
<Info>
<DefaultValue>1</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>OhmicSensingVoltageLimit</Name>
<Info>
<DefaultValue>#x70060020</DefaultValue>
</Info>
</SubItem>
</Info>
<Flags>
</Flags>
</Object>
<Object>
<Index>#x1A00</Index>
<Name>Input12</Name>
@@ -705,6 +867,28 @@
<Flags>
</Flags>
</Object>
<Object>
<Index>#x1A05</Index>
<Name>OhmicSensingSensed</Name>
<Type>DT1A05</Type>
<BitSize>48</BitSize>
<Info>
<SubItem>
<Name>Max SubIndex</Name>
<Info>
<DefaultValue>1</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>OhmicSensingSensed</Name>
<Info>
<DefaultValue>#x60050008</DefaultValue>
</Info>
</SubItem>
</Info>
<Flags>
</Flags>
</Object>
<Object>
<Index>#x1C00</Index>
<Name>Sync Manager Communication Type</Name>
@@ -749,12 +933,12 @@
<Index>#x1C12</Index>
<Name>Sync Manager 2 PDO Assignment</Name>
<Type>DT1C12</Type>
<BitSize>80</BitSize>
<BitSize>128</BitSize>
<Info>
<SubItem>
<Name>Max SubIndex</Name>
<Info>
<DefaultValue>4</DefaultValue>
<DefaultValue>7</DefaultValue>
</Info>
</SubItem>
<SubItem>
@@ -781,6 +965,24 @@
<DefaultValue>#x1603</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>PDO Mapping</Name>
<Info>
<DefaultValue>#x1604</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>PDO Mapping</Name>
<Info>
<DefaultValue>#x1605</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>PDO Mapping</Name>
<Info>
<DefaultValue>#x1606</DefaultValue>
</Info>
</SubItem>
</Info>
<Flags>
</Flags>
@@ -789,12 +991,12 @@
<Index>#x1C13</Index>
<Name>Sync Manager 3 PDO Assignment</Name>
<Type>DT1C13</Type>
<BitSize>96</BitSize>
<BitSize>112</BitSize>
<Info>
<SubItem>
<Name>Max SubIndex</Name>
<Info>
<DefaultValue>5</DefaultValue>
<DefaultValue>6</DefaultValue>
</Info>
</SubItem>
<SubItem>
@@ -827,6 +1029,12 @@
<DefaultValue>#x1A04</DefaultValue>
</Info>
</SubItem>
<SubItem>
<Name>PDO Mapping</Name>
<Info>
<DefaultValue>#x1A05</DefaultValue>
</Info>
</SubItem>
</Info>
<Flags>
</Flags>
@@ -932,6 +1140,19 @@
<PdoMapping>T</PdoMapping>
</Flags>
</Object>
<Object>
<Index>#x6005</Index>
<Name>OhmicSensingSensed</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<Info>
<DefaultValue>0</DefaultValue>
</Info>
<Flags>
<Access>ro</Access>
<PdoMapping>T</PdoMapping>
</Flags>
</Object>
<Object>
<Index>#x7000</Index>
<Name>Output4</Name>
@@ -984,6 +1205,45 @@
<PdoMapping>R</PdoMapping>
</Flags>
</Object>
<Object>
<Index>#x7004</Index>
<Name>EnableOhmicSensing</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<Info>
<DefaultValue>0</DefaultValue>
</Info>
<Flags>
<Access>ro</Access>
<PdoMapping>R</PdoMapping>
</Flags>
</Object>
<Object>
<Index>#x7005</Index>
<Name>OhmicSensingSetupTime</Name>
<Type>UDINT</Type>
<BitSize>32</BitSize>
<Info>
<DefaultValue>0</DefaultValue>
</Info>
<Flags>
<Access>ro</Access>
<PdoMapping>R</PdoMapping>
</Flags>
</Object>
<Object>
<Index>#x7006</Index>
<Name>OhmicSensingVoltageLimit</Name>
<Type>REAL</Type>
<BitSize>32</BitSize>
<Info>
<DefaultValue>0</DefaultValue>
</Info>
<Flags>
<Access>ro</Access>
<PdoMapping>R</PdoMapping>
</Flags>
</Object>
</Objects>
</Dictionary>
</Profile>
@@ -1038,6 +1298,39 @@
<DataType>REAL</DataType>
</Entry>
</RxPdo>
<RxPdo Fixed="true" Mandatory="true" Sm="2">
<Index>#x1604</Index>
<Name>EnableOhmicSensing</Name>
<Entry>
<Index>#x7004</Index>
<SubIndex>#x0</SubIndex>
<BitLen>8</BitLen>
<Name>EnableOhmicSensing</Name>
<DataType>USINT</DataType>
</Entry>
</RxPdo>
<RxPdo Fixed="true" Mandatory="true" Sm="2">
<Index>#x1605</Index>
<Name>OhmicSensingSetupTime</Name>
<Entry>
<Index>#x7005</Index>
<SubIndex>#x0</SubIndex>
<BitLen>32</BitLen>
<Name>OhmicSensingSetupTime</Name>
<DataType>UDINT</DataType>
</Entry>
</RxPdo>
<RxPdo Fixed="true" Mandatory="true" Sm="2">
<Index>#x1606</Index>
<Name>OhmicSensingVoltageLimit</Name>
<Entry>
<Index>#x7006</Index>
<SubIndex>#x0</SubIndex>
<BitLen>32</BitLen>
<Name>OhmicSensingVoltageLimit</Name>
<DataType>REAL</DataType>
</Entry>
</RxPdo>
<TxPdo Fixed="true" Mandatory="true" Sm="3">
<Index>#x1A00</Index>
<Name>Input12</Name>
@@ -1093,6 +1386,17 @@
<DataType>REAL</DataType>
</Entry>
</TxPdo>
<TxPdo Fixed="true" Mandatory="true" Sm="3">
<Index>#x1A05</Index>
<Name>OhmicSensingSensed</Name>
<Entry>
<Index>#x6005</Index>
<SubIndex>#x0</SubIndex>
<BitLen>8</BitLen>
<Name>OhmicSensingSensed</Name>
<DataType>USINT</DataType>
</Entry>
</TxPdo>
<Mailbox DataLinkLayer="true">
<CoE SdoInfo="true" PdoAssign="false" PdoConfig="false" PdoUpload="true" CompleteAccess="false" />
</Mailbox>

View File

@@ -33,8 +33,8 @@
#define SM3_smc 0x20
#define SM3_act 1
#define MAX_MAPPINGS_SM2 4
#define MAX_MAPPINGS_SM3 5
#define MAX_MAPPINGS_SM2 7
#define MAX_MAPPINGS_SM3 6
#define MAX_RXPDO_SIZE 512
#define MAX_TXPDO_SIZE 512

View File

@@ -142,6 +142,17 @@
"dtype": "REAL32",
"value": "0",
"data": "&Obj.LowpassFilteredVoltage"
},
"6005": {
"otype": "VAR",
"name": "OhmicSensingSensed",
"access": "RO",
"pdo_mappings": [
"txpdo"
],
"dtype": "UNSIGNED8",
"value": "0",
"data": "&Obj.OhmicSensingSensed"
}
},
"rxpdo": {
@@ -189,6 +200,39 @@
"value": "0",
"data": "&Obj.LowPassFilterThresholdVoltage"
},
"7004": {
"otype": "VAR",
"name": "EnableOhmicSensing",
"access": "RO",
"pdo_mappings": [
"rxpdo"
],
"dtype": "UNSIGNED8",
"value": "0",
"data": "&Obj.EnableOhmicSensing"
},
"7005": {
"otype": "VAR",
"name": "OhmicSensingSetupTime",
"access": "RO",
"pdo_mappings": [
"rxpdo"
],
"dtype": "UNSIGNED32",
"value": "0",
"data": "&Obj.OhmicSensingSetupTime"
},
"7006": {
"otype": "VAR",
"name": "OhmicSensingVoltageLimit",
"access": "RO",
"pdo_mappings": [
"rxpdo"
],
"dtype": "REAL32",
"value": "0",
"data": "&Obj.OhmicSensingVoltageLimit"
},
"60664": {
"otype": "VAR",
"name": "ActualPosition",

View File

@@ -25,6 +25,15 @@ static const char acName1602_01[] = "VoltageOffset";
static const char acName1603[] = "LowPassFilterThresholdVoltage";
static const char acName1603_00[] = "Max SubIndex";
static const char acName1603_01[] = "LowPassFilterThresholdVoltage";
static const char acName1604[] = "EnableOhmicSensing";
static const char acName1604_00[] = "Max SubIndex";
static const char acName1604_01[] = "EnableOhmicSensing";
static const char acName1605[] = "OhmicSensingSetupTime";
static const char acName1605_00[] = "Max SubIndex";
static const char acName1605_01[] = "OhmicSensingSetupTime";
static const char acName1606[] = "OhmicSensingVoltageLimit";
static const char acName1606_00[] = "Max SubIndex";
static const char acName1606_01[] = "OhmicSensingVoltageLimit";
static const char acName1A00[] = "Input12";
static const char acName1A00_00[] = "Max SubIndex";
static const char acName1A00_01[] = "Input12";
@@ -40,6 +49,9 @@ static const char acName1A03_01[] = "Status";
static const char acName1A04[] = "LowpassFilteredVoltage";
static const char acName1A04_00[] = "Max SubIndex";
static const char acName1A04_01[] = "LowpassFilteredVoltage";
static const char acName1A05[] = "OhmicSensingSensed";
static const char acName1A05_00[] = "Max SubIndex";
static const char acName1A05_01[] = "OhmicSensingSensed";
static const char acName1C00[] = "Sync Manager Communication Type";
static const char acName1C00_00[] = "Max SubIndex";
static const char acName1C00_01[] = "Communications Type SM0";
@@ -52,6 +64,9 @@ 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 acName1C12_06[] = "PDO Mapping";
static const char acName1C12_07[] = "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";
@@ -59,6 +74,7 @@ static const char acName1C13_02[] = "PDO Mapping";
static const char acName1C13_03[] = "PDO Mapping";
static const char acName1C13_04[] = "PDO Mapping";
static const char acName1C13_05[] = "PDO Mapping";
static const char acName1C13_06[] = "PDO Mapping";
static const char acName2000[] = "I2C_devicetype";
static const char acName2001[] = "I2C_address";
static const char acName2002[] = "LowpassFilterPoleFrequency";
@@ -67,10 +83,14 @@ static const char acName6001[] = "RawData";
static const char acName6002[] = "CalculatedVoltage";
static const char acName6003[] = "Status";
static const char acName6004[] = "LowpassFilteredVoltage";
static const char acName6005[] = "OhmicSensingSensed";
static const char acName7000[] = "Output4";
static const char acName7001[] = "VoltageScale";
static const char acName7002[] = "VoltageOffset";
static const char acName7003[] = "LowPassFilterThresholdVoltage";
static const char acName7004[] = "EnableOhmicSensing";
static const char acName7005[] = "OhmicSensingSetupTime";
static const char acName7006[] = "OhmicSensingVoltageLimit";
const _objd SDO1000[] =
{
@@ -116,6 +136,21 @@ const _objd SDO1603[] =
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1603_00, 1, NULL},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1603_01, 0x70030020, NULL},
};
const _objd SDO1604[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1604_00, 1, NULL},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1604_01, 0x70040008, NULL},
};
const _objd SDO1605[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1605_00, 1, NULL},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1605_01, 0x70050020, NULL},
};
const _objd SDO1606[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1606_00, 1, NULL},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1606_01, 0x70060020, NULL},
};
const _objd SDO1A00[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A00_00, 1, NULL},
@@ -141,6 +176,11 @@ const _objd SDO1A04[] =
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A04_00, 1, NULL},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1A04_01, 0x60040020, NULL},
};
const _objd SDO1A05[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1A05_00, 1, NULL},
{0x01, DTYPE_UNSIGNED32, 32, ATYPE_RO, acName1A05_01, 0x60050008, NULL},
};
const _objd SDO1C00[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C00_00, 4, NULL},
@@ -151,20 +191,24 @@ const _objd SDO1C00[] =
};
const _objd SDO1C12[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C12_00, 4, NULL},
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C12_00, 7, 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},
{0x06, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_06, 0x1605, NULL},
{0x07, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C12_07, 0x1606, NULL},
};
const _objd SDO1C13[] =
{
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C13_00, 5, NULL},
{0x00, DTYPE_UNSIGNED8, 8, ATYPE_RO, acName1C13_00, 6, 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},
{0x04, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_04, 0x1A03, NULL},
{0x05, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_05, 0x1A04, NULL},
{0x06, DTYPE_UNSIGNED16, 16, ATYPE_RO, acName1C13_06, 0x1A05, NULL},
};
const _objd SDO2000[] =
{
@@ -198,6 +242,10 @@ const _objd SDO6004[] =
{
{0x0, DTYPE_REAL32, 32, ATYPE_RO | ATYPE_TXPDO, acName6004, 0x00000000, &Obj.LowpassFilteredVoltage},
};
const _objd SDO6005[] =
{
{0x0, DTYPE_UNSIGNED8, 8, ATYPE_RO | ATYPE_TXPDO, acName6005, 0, &Obj.OhmicSensingSensed},
};
const _objd SDO7000[] =
{
{0x0, DTYPE_UNSIGNED8, 8, ATYPE_RO | ATYPE_RXPDO, acName7000, 0, &Obj.Output4},
@@ -214,6 +262,18 @@ const _objd SDO7003[] =
{
{0x0, DTYPE_REAL32, 32, ATYPE_RO | ATYPE_RXPDO, acName7003, 0x00000000, &Obj.LowPassFilterThresholdVoltage},
};
const _objd SDO7004[] =
{
{0x0, DTYPE_UNSIGNED8, 8, ATYPE_RO | ATYPE_RXPDO, acName7004, 0, &Obj.EnableOhmicSensing},
};
const _objd SDO7005[] =
{
{0x0, DTYPE_UNSIGNED32, 32, ATYPE_RO | ATYPE_RXPDO, acName7005, 0, &Obj.OhmicSensingSetupTime},
};
const _objd SDO7006[] =
{
{0x0, DTYPE_REAL32, 32, ATYPE_RO | ATYPE_RXPDO, acName7006, 0x00000000, &Obj.OhmicSensingVoltageLimit},
};
const _objectlist SDOobjects[] =
{
@@ -226,14 +286,18 @@ const _objectlist SDOobjects[] =
{0x1601, OTYPE_RECORD, 1, 0, acName1601, SDO1601},
{0x1602, OTYPE_RECORD, 1, 0, acName1602, SDO1602},
{0x1603, OTYPE_RECORD, 1, 0, acName1603, SDO1603},
{0x1604, OTYPE_RECORD, 1, 0, acName1604, SDO1604},
{0x1605, OTYPE_RECORD, 1, 0, acName1605, SDO1605},
{0x1606, OTYPE_RECORD, 1, 0, acName1606, SDO1606},
{0x1A00, OTYPE_RECORD, 1, 0, acName1A00, SDO1A00},
{0x1A01, OTYPE_RECORD, 1, 0, acName1A01, SDO1A01},
{0x1A02, OTYPE_RECORD, 1, 0, acName1A02, SDO1A02},
{0x1A03, OTYPE_RECORD, 1, 0, acName1A03, SDO1A03},
{0x1A04, OTYPE_RECORD, 1, 0, acName1A04, SDO1A04},
{0x1A05, OTYPE_RECORD, 1, 0, acName1A05, SDO1A05},
{0x1C00, OTYPE_ARRAY, 4, 0, acName1C00, SDO1C00},
{0x1C12, OTYPE_ARRAY, 4, 0, acName1C12, SDO1C12},
{0x1C13, OTYPE_ARRAY, 5, 0, acName1C13, SDO1C13},
{0x1C12, OTYPE_ARRAY, 7, 0, acName1C12, SDO1C12},
{0x1C13, OTYPE_ARRAY, 6, 0, acName1C13, SDO1C13},
{0x2000, OTYPE_VAR, 0, 0, acName2000, SDO2000},
{0x2001, OTYPE_VAR, 0, 0, acName2001, SDO2001},
{0x2002, OTYPE_VAR, 0, 0, acName2002, SDO2002},
@@ -242,9 +306,13 @@ const _objectlist SDOobjects[] =
{0x6002, OTYPE_VAR, 0, 0, acName6002, SDO6002},
{0x6003, OTYPE_VAR, 0, 0, acName6003, SDO6003},
{0x6004, OTYPE_VAR, 0, 0, acName6004, SDO6004},
{0x6005, OTYPE_VAR, 0, 0, acName6005, SDO6005},
{0x7000, OTYPE_VAR, 0, 0, acName7000, SDO7000},
{0x7001, OTYPE_VAR, 0, 0, acName7001, SDO7001},
{0x7002, OTYPE_VAR, 0, 0, acName7002, SDO7002},
{0x7003, OTYPE_VAR, 0, 0, acName7003, SDO7003},
{0x7004, OTYPE_VAR, 0, 0, acName7004, SDO7004},
{0x7005, OTYPE_VAR, 0, 0, acName7005, SDO7005},
{0x7006, OTYPE_VAR, 0, 0, acName7006, SDO7006},
{0xffff, 0xff, 0xff, 0xff, NULL, NULL}
};

View File

@@ -18,6 +18,7 @@ typedef struct
float CalculatedVoltage;
uint8_t Status;
float LowpassFilteredVoltage;
uint8_t OhmicSensingSensed;
/* Outputs */
@@ -25,6 +26,9 @@ typedef struct
float VoltageScale;
float VoltageOffset;
float LowPassFilterThresholdVoltage;
uint8_t EnableOhmicSensing;
uint32_t OhmicSensingSetupTime;
float OhmicSensingVoltageLimit;
/* Parameters */

View File

@@ -15,7 +15,7 @@ board = genericSTM32F407VGT6
upload_protocol = stlink
debug_tool = stlink
debug_build_flags = -O0 -g -ggdb
monitor_port = COM21
monitor_port = COM4
monitor_filters = send_on_enter, time, colorize, log2file
monitor_speed = 115200
build_flags = -Wl,--no-warn-rwx-segment -DECAT

View File

@@ -56,8 +56,11 @@ void cb_set_outputs(void) // Get Master outputs, slave inputs, first operation
}
float oldLowPassGain = 0;
float oldLowPassFilteredVoltage = 0;
uint32_t oldLowpassFilterPoleFrequency = 0;
uint32_t timeSinceOhmicSensingEnabled = 0;
void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
{
static float validData0 = 0.0, validVoltage0 = 0.0;
@@ -150,14 +153,32 @@ void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
float gain = oldLowPassGain;
if (oldLowpassFilterPoleFrequency != Obj.LowpassFilterPoleFrequency)
{
gain = 1 - expf(-2.0 * M_PI * Obj.LowpassFilterPoleFrequency * 1.0e-9 * ESC_SYNC0cycletime());
gain = 1 - expf(-2.0 * M_PI * Obj.LowpassFilterPoleFrequency * 0.001 /*1.0e-9 * ESC_SYNC0cycletime()*/);
oldLowPassGain = gain;
oldLowpassFilterPoleFrequency = Obj.LowpassFilterPoleFrequency;
}
if (Obj.CalculatedVoltage < Obj.LowPassFilterThresholdVoltage)
Obj.LowpassFilteredVoltage = Obj.CalculatedVoltage; // Just forward
else
Obj.LowpassFilteredVoltage += (Obj.CalculatedVoltage - Obj.LowpassFilteredVoltage) * gain;
Obj.LowpassFilteredVoltage = oldLowPassFilteredVoltage + (Obj.CalculatedVoltage - oldLowPassFilteredVoltage) * gain;
oldLowPassFilteredVoltage = Obj.LowpassFilteredVoltage;
Obj.OhmicSensingSensed = 0;
if (Obj.EnableOhmicSensing && stat == 0)
{
timeSinceOhmicSensingEnabled++; // Lazy and just use iterations now.
if (timeSinceOhmicSensingEnabled >= Obj.OhmicSensingSetupTime) // Let's check
{ //
if (Obj.CalculatedVoltage < Obj.OhmicSensingVoltageLimit) // Limit hit, set output
{
Obj.OhmicSensingSensed = 1;
}
}
}
else
{
timeSinceOhmicSensingEnabled = 0;
}
}
void ESC_interrupt_enable(uint32_t mask);

File diff suppressed because it is too large Load Diff

View File

@@ -172,6 +172,15 @@ Pay attention to the polarity when connecting the plasma voltage leads the THTIC
The experience with these cards has been very good so far. I have used the THTIC the most, cutting for at least an hour of cutting time, with THC enabled and active. A status variable shows that it has been working the whole time, no stops or resets. The THTIC2 has been used much less, but it behaves the same as the THTIC card, meaning it just works.
## THCLIP Enable ohmic sensing with the IPTM-60 torch
This is for the torches known as IPT-60 PT-60 S45 IPTM-60 IPTM-80 and many more that have blowback start with the torch tip exposed and normally shortened to the torch electrode. Normally this torch can't use ohmic sensing since all parts are connected to ground. At least on my machine, a Herocut 8000, the blowback start cable from the torch can be cut during sensing. This enables ohmic sensing and it continues to operate in other situations.
![THCLIP](Utils/Pictures/THCLIP1.png)
![THCLIP](Utils/Pictures/THCLIP2.png)
I have made an adaptation to the EaserCAT 7000 to handle the contact. There is a short setup time needed to make sure the relay is activated before starting to watch for contact, a tenth of a second seems enough. Then it watches for a shift from some 7V to a settable limit, say 4V, to indicate contact. Works like a charm.
The Trafimet torch hose connectors are called FY0022 and FY0023. The relay is a 24V 40A standard car relay. Check out the Kicad schematics for the other parts.
## License
Don't violate the original licenses. No warranties. Use it any way you like.\