Add festo

This commit is contained in:
2024-11-21 13:22:11 +01:00
parent 72983fa874
commit d464b887ac
5 changed files with 22 additions and 88 deletions

View File

@@ -19,7 +19,7 @@ axis:
# positioning: 1 # Allow positioning
epics:
name: Axis1 # Axis anme
name: M1 # Axis anme
precision: 3 # Decimal count
description: Festo drive test # Axis description
unit: deg # Unit
@@ -27,7 +27,7 @@ epics:
drive:
numerator: 360 # Fastest speed in engineering units
denominator: 15100000 # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET
denominator: 16777216 # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET
#denominator: 16777216 # I/O range for ECMC_EC_ALIAS_DRV_VELO_SET
type: 1 # Stepper: 0. DS402: 1 (DS402 = servos and advanced stepper drives)
control: ec0.s$(DRV_ID).driveControl01 # Control word ethercat entry
@@ -49,7 +49,7 @@ drive:
encoder:
numerator: 360 # Scaling numerator example 360 deg/rev
denominator: 15100000 # Scaling denominator example 16777216 ticks per 360 degree
denominator: 16777216 # Scaling denominator example 16777216 ticks per 360 degree
#denominator: 16777216 # Scaling denominator example 16777216 ticks per 360 degree
type: 1 # Type: 0=Incremental, 1=Absolute
bits: 32 # Total bit count of encoder raw data
@@ -96,12 +96,12 @@ encoder:
# ready: ec0.. # Ethercat entry for readinf drive internal homing seq ready (seq id 26)
controller:
Kp: 15 # Kp proportinal gain
Ki: 0.1 # Ki integral gain
Kd: 0 # Kd derivative gain
Kp: 15 # Kp proportinal gain
Ki: 0.1 # Ki integral gain
Kd: 0 # Kd derivative gain
# Kff: 1 # Feed forward gain
deadband:
tol: 0.01 # Stop control if within this distance from target for the below time
tol: 0.01 # Stop control if within this distance from target for the below time
time: 100
# limits:
# minOutput: -100 # Minimum controller output
@@ -117,9 +117,9 @@ controller:
trajectory:
type: 1 # Default 0 = trapetz, 1 = S-curve (ruckig)
axis:
velocity: 360 # Default velo for axis
acceleration: 360 # Default acc for axis
deceleration: 360 # Default dec for axis
velocity: 720 # Default velo for axis
acceleration: 720 # Default acc for axis
deceleration: 720 # Default dec for axis
# emergencyDeceleration: 0.05 # Deceleration when axis in error state
jerk: 1000 # Default jerk for axis
jog:
@@ -168,7 +168,7 @@ monitoring:
time: 100 # Allowed time outside tolerance
target:
enable: true # Enable at target monitoring (needs to be enabled if using motor record)
tolerance: 0.5 # Allowed tolerance
tolerance: 5 # Allowed tolerance
time: 10 # Filter time inside tolerance to be at target
velocity:
enable: false # Enable velocity monitoring

View File

@@ -1,32 +0,0 @@
# ecmc test system
# Anders Sandström
require ecmccfg sandst_a "MASTER_ID=0,ENG_MODE=1"
require ecmccomp sandst_a
epicsEnvSet("IOC" ,"$(IOC="c6025a")")
epicsEnvSet("SCRIPTEXEC" ,"$(SCRIPTEXEC="iocshLoad")")
# Configuration loaded via FoE
epicsEnvSet(DRV_ID,20)
${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=${DRV_ID}, HW_DESC=Festo-CMMT-ST"
${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Motor-Phytron-pyhBasic-42-1-1.5,MACROS='U_NOM_MV=24000,MAX_RPM=1800,NOM_RPM=1000,COMMUTATION=2'"
${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Encoder-RLS-LA11-26bit-BISS-C,MACROS='CLK_FRQ_KHZ=6000,ST_BITS=12,MT_BITS=14,INV_DIR=0'"
ecmcConfigOrDie "Cfg.EcApplyConfig(1)"
# To check mode:
${SCRIPTEXEC} ${ecmccfg_DIR}addEcSdoRT.cmd, "SLAVE_ID=${DRV_ID},INDEX=0x6060,SUBINDEX=0x0,DT=U8,NAME=DrvMode"
# Configure Motion
epicsEnvSet("DEV", "$(IOC)")
${SCRIPTEXEC} ${ECMC_CONFIG_ROOT}loadYamlAxis.cmd, "FILE=./cfg/axis_CSV_OL_EMMS-ST_INCREMENTS.yaml"
# Other
ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)"
ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)"
ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)"
# go active
$(SCRIPTEXEC) $(ecmccfg_DIR)setAppMode.cmd

View File

@@ -1,14 +1,11 @@
# ecmc test system
# Anders Sandström
require ecmccfg "MASTER_ID=0,ENG_MODE=1"
require ecmccfg "MASTER_ID=1,ENG_MODE=1"
require ecmccomp
epicsEnvSet("IOC" ,"$(IOC="c6025a")")
epicsEnvSet("SCRIPTEXEC" ,"$(SCRIPTEXEC="iocshLoad")")
# Configuration loaded via FoE
epicsEnvSet(DRV_ID,0)
epicsEnvSet(DRV_ID,20)
${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=${DRV_ID}, HW_DESC=Festo-CMMT-ST_PV"
${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Motor-Generic-2Phase-Stepper,MACROS=U_NOM_MV=24000,MAX_RPM=1740,NOM_RPM=800,COMMUTATION=2,I_MAX_MA=1000,I_STDBY_MA=500,R_COIL_MOHM=8000,L_COIL_UH=12000,I_CTRL_GAIN_REACT_CURR=10,I_CTRL_GAIN_ACT_CURR=10"
#-d I_CTRL_GAIN_REACT_CURR : P1.80.0.0 Current controller amplification gain reactive current (50.0)
@@ -27,4 +24,4 @@ ${SCRIPTEXEC} ${ECMC_CONFIG_ROOT}loadYamlAxis.cmd, "FILE=./cfg/axis_PV_PURE_OL_E
# go active
${SCRIPTEXEC} ${ecmccfg_DIR}applyConfig.cmd
$(SCRIPTEXEC) ($(ecmccfg_DIR)setAppMode.cmd)
$(SCRIPTEXEC) $(ecmccfg_DIR)setAppMode.cmd

View File

@@ -1,39 +0,0 @@
# ecmc test system
# Anders Sandström
require ecmccfg "MASTER_ID=0,ENG_MODE=1"
require ecmccomp sandst_a
epicsEnvSet("IOC" ,"$(IOC="c6025a")")
epicsEnvSet("SCRIPTEXEC" ,"$(SCRIPTEXEC="iocshLoad")")
# Configuration loaded via FoE
epicsEnvSet(DRV_ID,15)
${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=${DRV_ID}, HW_DESC=Festo-CMMT-ST_PV"
${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Motor-Generic-2Phase-Stepper,MACROS=U_NOM_MV=24000,MAX_RPM=1740,NOM_RPM=800,COMMUTATION=2,I_MAX_MA=500,I_STDBY_MA=500,R_COIL_MOHM=10000,L_COIL_UH=2000,I_CTRL_GAIN_REACT_CURR=10,I_CTRL_GAIN_ACT_CURR=10"
#-d I_CTRL_GAIN_REACT_CURR : P1.80.0.0 Current controller amplification gain reactive current (50.0)
#-d I_CTRL_INT_REACT_CURR : P1.81.0.0 Current controller integartion constant reactive current (10000.0)
#-d I_CTRL_GAIN_ACT_CURR : P1.82.0.0 Current controller amplification gain active current (50.0)
#-d I_CTRL_INT_ACT_CURR : P1.83.0.0 Current controller integartion constant active current (10000.0)
${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Encoder-Generic-OPENLOOP,MACROS=''"
ecmcConfigOrDie "Cfg.EcApplyConfig(1)"
# To check mode:
${SCRIPTEXEC} ${ecmccfg_DIR}addEcSdoRT.cmd, "SLAVE_ID=${DRV_ID},INDEX=0x6060,SUBINDEX=0x0,DT=U8,NAME=DrvMode"
# Configure Motion
epicsEnvSet("DEV", "$(IOC)")
${SCRIPTEXEC} ${ECMC_CONFIG_ROOT}loadYamlAxis.cmd, "FILE=./cfg/axis_PV_PURE_OL_EMMS-ST_INCREMENTS.yaml"
# Other
ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)"
ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)"
ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)"
# go active
$(SCRIPTEXEC) ($(ecmccfg_DIR)setAppMode.cmd)

View File

@@ -121,3 +121,11 @@ ecmcConfigOrDie "Cfg.EcAddSdo(${ECMC_EC_SLAVE_NUM},0x8010,0x5,500,2)"
```
similar max speed, also approx, 2350.
## Festo in PV
* sc30, 1720deg/s
* sc31, 720
* sc32, 0.1 deg/s
* sc33, 2800deg/s no osc
Works roughly up to 3000deg/s but osc