############################################################################## ## 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 "6.3.0" ############################################################################## ###### Startup require ecmc "6.3.0" #------------------------------------------------------------------------------- #- 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 ecmc_plugin_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.3.0/siteMods/ecmc_plugin_fft/master/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_fft.so") epicsEnvSet(ECMC_PLUGIN_CONFIG,"SOURCE=plcs.plc0.static.sineval;DBG_PRINT=0;NFFT=1024;RATE=100;RM_DC=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}, AMP_DESC='Sine amplitude',AMP_EGU='',RAW_DESC='Sine',AMP_EGU='', TITLE='FFT of sinus in 5Hz'") ########################################################################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.3.0/siteMods/ecmc_plugin_fft/master/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_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}, AMP_DESC='Latency amplitude',AMP_EGU='ns',RAW_DESC='Latency',AMP_EGU='ns',TITLE='FFT of ecmc latencny'") epicsEnvUnset(ECMC_PLUGIN_FILNAME) epicsEnvUnset(ECMC_PLUGIN_CONFIG) ############################################################################## ## PLC 0: Generate a sine wave at 5Hz $(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 or asynReport # ecmcReport 3 ecmcConfigOrDie "Cfg.SetAppMode(1)" iocInit dbl > pvs.log