Main use cases for Technosoft drives at PSI are applications requiring:
Technosoft drives are powerful, but interfacing them is not easy. Many configurations are not exposed as simple CoE SDOs, so a base configuration in one of the Technosoft software tools needs to be generated and downloaded before the drive is used the first time (only needed once). These configurations contain the main part of the setup, and only small tweaks can be made over SDOs by the EtherCAT master.
These configurations can be transferred in several ways:
Easy Motion Studio 2 -> Export -> FoE -> Complete Config)In order to avoid downloading configs to each drive via local RS232, a few generic configurations have been developed and FoE and/or CoE configurations have been generated:
These configuration files can be found in ecmccfg/hardware/Technosoft_slaves/config/.
Note: These configurations are very basic and do not allow use of all hardware supported by the drive. Not supported:
NOTE: The configuration is only needed to be downloaded once before first use of drive!
Requirements from Technosoft CoE manual (https://technosoftmotion.com/wp-content/uploads/2019/10/P091.064.EtherCAT.iPOS_.UM.pdf):
ecmccfg/hardware/Technosoft_slaves/config/1 to 0x210c 0x0: ethercat download -m<masterid> -p<slaveid> 0x210c 0x0 1ethercat states -m<masterid> -p<slaveid> BOOTethercat -m<masterid> -p<slaveid> foe_write <filename>Example for:
# 2. Allow FoE in state BOOT
ethercat download -m0 -p21 0x210c 0x0 1
# 3a. Set slave into state BOOT
ethercat states -m0 -p21 BOOT
# 3b. Check that slave is in boot state
ethercat slaves
# 4. Download configuration file
ethercat foe_write -m0 -p21 FOESW_OL48.bin
# 5. Now power cycle drive
NOTE 1: Normally upload of the configuration is not needed!
ethercat -m<masterid> -p<slaveid> foe_read <filename> > <output filename>Note: It seems -o or --output-file is not working.
ethercat -m0 -p0 foe_read FOESW_8020.bin > test.bin
ecmccfg/hardware/Technosoft_slaves/config/FoE/<suitable_dir_name>/<suitable_file_name>README.md file in ecmccfg/hardware/Technosoft_slaves/config/FoE/<suitable_dir_name>/ describing the config:require ecmccfg "ENG_MODE=1"
#- Note the "_2" in iPOS4808BX_2
${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=21, HW_DESC=iPOS4808BX_2"
epicsEnvSet("ECMC_EC_SLAVE_NUM_DRIVE", "$(ECMC_EC_SLAVE_NUM)")
#- NOTE USE HW_DESC = iPOS4808BX_2 (iPOS4808BX is for legacy)
#- Apply component: Oriental motor PKE244A
#- For IPOS4808 some macros are mandatory:
#- * I_CTRL_GAIN : Current loop gain
#- * I_CTRL_INT : Current loop integrator gain
#- * I_MAX_MA : Mandatory if Motor-Generic-2Phase-Stepper is used
#- * I_STDBY_MA : Mandatory if Motor-Generic-2Phase-Stepper is used
#- The values can be taken from EasyMotionStudio or by trial and error (coil resistance and inductance are not used in the iPOS cfgs)
#- After running a tuning test in EasyMotionStudio, a reset is needed (from Easy Motion Studio or over SDO; see motor cfg scripts).
${SCRIPTEXEC} ${ecmccfg_DIR}applyComponent.cmd "COMP=Motor-Generic-2Phase-Stepper, MACROS='I_MAX_MA=1000,I_STDBY_MA=100,CURR_KP=1.0,CURR_TI=0.26'"
#- #############################################################################
#- AXIS 1
#- The reduced current will be applied automatically by the iPOS4808 (no links needed in axis cfgs)
#- $(SCRIPTEXEC) ($(ecmccfg_DIR)configureAxis.cmd, CONFIG=./cfg/ipos4808_1.ax)
${SCRIPTEXEC} ${ecmccfg_DIR}loadYamlAxis.cmd, "FILE=./cfg/axis.yaml, DEV=${IOC}, AX_NAME=M1, AXIS_ID=1, DRV_SID=${ECMC_EC_SLAVE_NUM}"