Add test startup scripts.

This commit is contained in:
Anders Sandström
2020-04-08 18:56:06 +02:00
parent a82eb97190
commit 8417276378
2 changed files with 92 additions and 0 deletions

View File

@@ -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);

View File

@@ -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 <level> or asynReport <level>
# ecmcReport 3
ecmcConfigOrDie "Cfg.SetAppMode(1)"
iocInit