84 lines
4.2 KiB
Plaintext
84 lines
4.2 KiB
Plaintext
##############################################################################
|
|
## Example: Configuraftion for running ecmc FFT plugin
|
|
##############################################################################
|
|
|
|
## Initiation:
|
|
epicsEnvSet("IOC" ,"$(IOC="IOC_TEST")")
|
|
epicsEnvSet("ECMCCFG_INIT" ,"") #Only run startup once (auto at PSI, need call at ESS), variable set to "#" in startup.cmd
|
|
epicsEnvSet("SCRIPTEXEC" ,"$(SCRIPTEXEC="iocshLoad")")
|
|
|
|
require ecmccfg "develop"
|
|
|
|
##############################################################################
|
|
###### Startup
|
|
require ecmc "6.2.3"
|
|
require stream "${stream_VER=2.8.10}"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
#- define default PATH for scripts and database/templates
|
|
epicsEnvSet("SCRIPTEXEC", "${SCRIPTEXEC=iocshLoad}")
|
|
epicsEnvSet("ECMC_CONFIG_ROOT", "${ecmccfg_DIR}")
|
|
epicsEnvSet("STREAM_PROTOCOL_PATH", "${STREAM_PROTOCOL_PATH=""}:${ECMC_CONFIG_ROOT}:${ecmccfg_DB}")
|
|
|
|
#-
|
|
#-------------------------------------------------------------------------------
|
|
#- define IOC Prefix
|
|
epicsEnvSet("SM_PREFIX", "${IOC}:") # colon added since IOC is _not_ PREFIX
|
|
#-
|
|
#-------------------------------------------------------------------------------
|
|
#- call init-script, defaults to 'initAll'
|
|
ecmcFileExist("${ecmccfg_DIR}${INIT=initAll}.cmd",1)
|
|
${SCRIPTEXEC} "${ecmccfg_DIR}${INIT=initAll}.cmd"
|
|
#-
|
|
#-------------------------------------------------------------------------------
|
|
|
|
epicsEnvSet("ECMC_SAMPLE_RATE_MS" ,100) # Records update period
|
|
epicsEnvSet("ECMC_EC_SAMPLE_RATE" ,100) # Realtime loop sample rate
|
|
ecmcConfigOrDie "Cfg.SetSampleRate(${ECMC_EC_SAMPLE_RATE})"
|
|
|
|
##############################################################################
|
|
## Configure hardware.
|
|
# No EtherCAT hardware..
|
|
|
|
##############################################################################
|
|
require ecmcPlugin_FFT master # te get access to db file..
|
|
epicsEnvSet("FFT_NELM", 1024)
|
|
|
|
########################################################################s######
|
|
## Load plugin: FFT
|
|
epicsEnvSet(ECMC_PLUGIN_FILNAME,"/home/pi/epics/base-7.0.4/require/3.2.0/siteMods/ecmcPlugin_FFT/master/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmcPlugin_FFT.so")
|
|
epicsEnvSet(ECMC_PLUGIN_CONFIG,"SOURCE=plcs.plc0.static.sineval;DBG_PRINT=0;NFFT=1024;RATE=100;DC_REMOVE=1;SCALE=1;MODE=CONT;ENABLE=1;")
|
|
${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=0,FILE=${ECMC_PLUGIN_FILNAME},CONFIG='${ECMC_PLUGIN_CONFIG}', REPORT=1"
|
|
# Note: INDEX is the index of FFT object in FFT plugin and not PLUGIN_ID. In this case the same
|
|
dbLoadRecords(ecmcPluginFFT.template,"P=$(IOC):,INDEX=0, NELM=${FFT_NELM}")
|
|
|
|
########################################################################s######
|
|
## Load plugin: FFT again (will create a new FFT object in the same namespace)
|
|
epicsEnvSet(ECMC_PLUGIN_FILNAME,"/home/pi/epics/base-7.0.4/require/3.2.0/siteMods/ecmcPlugin_FFT/master/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmcPlugin_FFT.so")
|
|
epicsEnvSet(ECMC_PLUGIN_CONFIG,"SOURCE=ecmc.thread.latency.max;DBG_PRINT=0;NFFT=1024;ENABLE=1;")
|
|
${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=1,FILE=${ECMC_PLUGIN_FILNAME},CONFIG='${ECMC_PLUGIN_CONFIG}', REPORT=1"
|
|
# Note: INDEX is the index of FFT object in FFT plugin and not PLUGIN_ID. In this case the same
|
|
dbLoadRecords(ecmcPluginFFT.template,"P=$(IOC):,INDEX=1, NELM=${FFT_NELM}")
|
|
epicsEnvUnset(ECMC_PLUGIN_FILNAME)
|
|
epicsEnvUnset(ECMC_PLUGIN_CONFIG)
|
|
|
|
##############################################################################
|
|
## PLC 0: Generate a sine wave at 10Hz
|
|
$(SCRIPTEXEC) $(ecmccfg_DIR)loadPLCFile.cmd, "PLC_ID=0, SAMPLE_RATE_MS=10,FILE=./plc/plc_no_ec_fft_sin.plc, PLC_MACROS='FREQ=5'")
|
|
|
|
##############################################################################
|
|
############# Configure diagnostics:
|
|
|
|
# go active
|
|
ecmcFileExist("${ecmccfg_DIR}generalDiagnostics.cmd",1)
|
|
${SCRIPTEXEC} ${ecmccfg_DIR}generalDiagnostics.cmd ECMC_TSE=0
|
|
ecmcFileExist("ecmcGeneral.db",1,1)
|
|
dbLoadRecords("ecmcGeneral.db","P=${ECMC_PREFIX},PORT=${ECMC_ASYN_PORT},ADDR=0,TIMEOUT=1,T_SMP_MS=10,TSE=${ECMC_TSE=0}")
|
|
# Nice commands for info ecmcReport <level> or asynReport <level>
|
|
# ecmcReport 3
|
|
|
|
ecmcConfigOrDie "Cfg.SetAppMode(1)"
|
|
|
|
iocInit
|
|
|