diff --git a/GNUmakefile b/GNUmakefile index da417af..4357ce3 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -27,3 +27,4 @@ SOURCES += $(SRC_DIR)/ecmcDAQDataChannel.cpp SOURCES += $(SRC_DIR)/ecmcDAQWrap.cpp TEMPLATES += $(wildcard $(DB_DIR)/*.template) +SCRIPTS += ./startup.cmd \ No newline at end of file diff --git a/iocsh/test.script b/iocsh/test.script new file mode 100644 index 0000000..abd70d3 --- /dev/null +++ b/iocsh/test.script @@ -0,0 +1,67 @@ +############################################################################## +## test config for ecmc_plugin_daq +## +## In this config the interface to safety system is liked to simulated ethercat entries: +## * To allow motion: +## caput c6025a:m0s013-Zero 3 +## * To simulate interlock from safety system: +## caput c6025a:m0s013-Zero 0 +## +## Monitor status with: +## camon c6025a:SS1-first-Err c6025a:SS1-first-RmpDwnCmdAct c6025a:SS1-first-AxsStndStllAct +## + +epicsEnvSet(IOC,c6025a) +require ecmccfg "ENG_MODE=1" + +############################################################################## +## Load components lib +# +require ecmccomp + +############################################################################## +## Configure hardware + +epicsEnvSet("DRV_SLAVE", "13") +${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=$(DRV_SLAVE), HW_DESC=EL7041-0052" +${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Motor-Generic-2Phase-Stepper,MACROS='I_STDBY_MA=200,I_MAX_MA=1000,R_COIL_MOHM=1700'" + +epicsEnvSet("ENC_SLAVE", "14") +${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=$(ENC_SLAVE), HW_DESC=EL5042" +${SCRIPTEXEC} ${ecmccomp_DIR}applyComponent.cmd "COMP=Encoder-RLS-LA11-24bit-BISS-C" + +#Apply hardware configuration +ecmcConfigOrDie "Cfg.EcApplyConfig(1)" + +############################################################################## +## AXIS 1 +# +epicsEnvSet("DEV", "$(IOC)") +epicsEnvSet("PLC_PATH", "/ioc/c6025a5a/ecmccfg/examples/test/ecmccomp/plc/") +${SCRIPTEXEC} ${ECMC_CONFIG_ROOT}loadYamlAxis.cmd, "FILE=./cfg/axis.yaml,LIMIT=1000,TYPE=0" + +############################################################################## +## Load daq plugin +# +require ecmc_plugin_daq "PLUGIN_ID=0" + +ecmcAddDAQArray("test",PLUGIN.DAQ.test) +ecmcAddDAQChannel(123) +ecmcAddDAQItem(ec0.s13.positionActual01,0) +ecmcAddDAQItem(ax1.enc.posact,0) + + +############################################################################## +## Configure diagnostics: +# +ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)" +ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)" +ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)" +ecmcConfigOrDie "Cfg.SetDiagAxisIndex(1)" +ecmcConfigOrDie "Cfg.SetDiagAxisFreq(2)" +ecmcConfigOrDie "Cfg.SetDiagAxisEnable(0)" + +############################################################################## +## go active +# +$(SCRIPTEXEC) ($(ecmccfg_DIR)setAppMode.cmd) diff --git a/iocsh/test_plugin_scope.script b/iocsh/test_plugin_scope.script deleted file mode 100644 index e98ffaa..0000000 --- a/iocsh/test_plugin_scope.script +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################## -# Test to make a triggered scope - -############################################################################## -## 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 - -# run module startup.cmd (only needed at ESS PSI auto call at require) -$(ECMCCFG_INIT)$(SCRIPTEXEC) ${ecmccfg_DIR}startup.cmd, "IOC=$(IOC),ECMC_VER=develop,stream_VER=2.8.10, EC_RATE=1000" - -############################################################################## -## Config hardware: - -## Sampel rate in milliseconds -epicsEnvSet("ECMC_SAMPLE_RATE_MS", "${RATE="1"}") - -# Choose sample rate (2, 10 or 100) -epicsEnvSet("ECMC_OVER_SMP", "${OVERSAMP="100"}") - -# EL1252: trigger on pos edge timestamp -epicsEnvSet("SLAVE_NUM_TRIGG", "6") -${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=$(SLAVE_NUM_TRIGG), HW_DESC=EL1252" - -# EL3702: Note: Set NELM to define oversampling rate -epicsEnvSet("SLAVE_NUM_AI", "11") -${SCRIPTEXEC} ${ecmccfg_DIR}addSlave.cmd, "SLAVE_ID=$(SLAVE_NUM_AI), HW_DESC=EL3702, NELM=${ECMC_OVER_SMP}" - -#ecmcConfigOrDie "Cfg.EcSelectReferenceDC(0,$(SLAVE_NUM_TRIGG))" - -#Apply hardware configuration -ecmcConfigOrDie "Cfg.EcApplyConfig(1)" - -########################################################################s###### -## Load plugin: Scope - -require ecmc_plugin_scope master # to get access to db file.. - -epicsEnvSet(RESULT_NELM, 500) -epicsEnvSet(ECMC_PLUGIN_FILNAME,"${HOME}/epics/base-7.0.4/require/3.3.0/siteMods/ecmc_plugin_scope/master/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmcPlugin_Scope.so") -epicsEnvSet(ECMC_PLUGIN_CONFIG,"SOURCE=ec0.s${SLAVE_NUM_AI}.mm.CH1_ARRAY;DBG_PRINT=0;TRIGG=ec0.s${SLAVE_NUM_TRIGG}.CH1_LATCH_POS;SOURCE_NEXTTIME=ec0.s${SLAVE_NUM_AI}.NEXT_TIME;RESULT_ELEMENTS=${RESULT_NELM};") -${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=1,FILE=${ECMC_PLUGIN_FILNAME},CONFIG='${ECMC_PLUGIN_CONFIG}', REPORT=1" -epicsEnvUnset(ECMC_PLUGIN_FILNAME) -epicsEnvUnset(ECMC_PLUGIN_CONFIG) - -dbLoadRecords("ecmcPluginScope.template","P=$(IOC):,PORT=${ECMC_ASYN_PORT},INDEX=0,RESULT_NELM=${RESULT_NELM},RESULT_DTYP=asynInt16ArrayIn,RESULT_FTVL=SHORT") -epicsEnvUnset(RESULT_NELM, 1024) - -############################################################################## -############# Configure diagnostics: - -ecmcConfigOrDie "Cfg.EcSetDiagnostics(1)" -ecmcConfigOrDie "Cfg.EcEnablePrintouts(0)" -ecmcConfigOrDie "Cfg.EcSetDomainFailedCyclesLimit(100)" - -# go active -$(SCRIPTEXEC) ($(ecmccfg_DIR)setAppMode.cmd) - -iocInit() -dbl > pvs.log diff --git a/startup.cmd b/startup.cmd new file mode 100644 index 0000000..80ee9df --- /dev/null +++ b/startup.cmd @@ -0,0 +1,20 @@ + +#============================================================================== +# startup.cmd +#-------------- Information: +#- Description: ecmc_plugin_daq startup.cmd +#- +#- by Anders Sandström, Paul Scherrer Institute, 2023 +#- email: anders.sandstroem@psi.ch +#- +#-############################################################################### +#- +#- Arguments +#- PLUGIN_ID : Id of plugin to load (mandatory) +#- +################################################################################# + +#- Load plugin: +epicsEnvSet(ECMC_PLUGIN_FILNAME,"$(ecmc_plugin_daq_DIR)/lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_daq.so") +epicsEnvSet(ECMC_PLUGIN_CONFIG,"DBG_PRINT=1;") +ecmcConfigOrDie "Cfg.LoadPlugin(${PLUGIN_ID}${ECMC_PLUGIN_FILNAME},${ECMC_PLUGIN_CONFIG=""})"