From 841727637853ea98b39dcc8fcbd02fad1242da19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Wed, 8 Apr 2020 18:56:06 +0200 Subject: [PATCH] Add test startup scripts. --- iocsh/plc/plc_no_ec_fft_sin.plc | 9 ++++ iocsh/test_plugin_FFT.script | 83 +++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 iocsh/plc/plc_no_ec_fft_sin.plc create mode 100644 iocsh/test_plugin_FFT.script diff --git a/iocsh/plc/plc_no_ec_fft_sin.plc b/iocsh/plc/plc_no_ec_fft_sin.plc new file mode 100644 index 0000000..3491427 --- /dev/null +++ b/iocsh/plc/plc_no_ec_fft_sin.plc @@ -0,0 +1,9 @@ +############################################################################################### +# For help on syntax, variables and functions, please read the file: "plcSyntaxHelp.plc" +# +# PLC Functionality Demo: +# No hardware related variables +# + +static.time:=ec_get_time()/1E9; +static.sineval:=sin(2*pi*${FREQ=10}*static.time); diff --git a/iocsh/test_plugin_FFT.script b/iocsh/test_plugin_FFT.script new file mode 100644 index 0000000..95daab2 --- /dev/null +++ b/iocsh/test_plugin_FFT.script @@ -0,0 +1,83 @@ +############################################################################## +## 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 master + +############################################################################## +###### Startup +require ecmc "master" +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,"/epics/base-7.0.3.1/require/3.1.2/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;APPLY_SCALE=1;MODE=CONT;") +${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):,PORT=MC_CPU1,INDEX=0, NELM=${FFT_NELM}") + +########################################################################s###### +## Load plugin: FFT again (will create a new FFT object in the same namespace) +epicsEnvSet(ECMC_PLUGIN_FILNAME,"/epics/base-7.0.3.1/require/3.1.2/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;") +${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):,PORT=MC_CPU1,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 or asynReport +# ecmcReport 3 + +ecmcConfigOrDie "Cfg.SetAppMode(1)" + +iocInit +