From 242d58e64acdf6309e870ed77389d2fea4d361d3 Mon Sep 17 00:00:00 2001 From: Joao Paulo Martins <joaopaulo.martins@ess.eu> Date: Fri, 2 Oct 2020 19:06:22 +0200 Subject: [PATCH] First version running in TS2 --- cmds/evm-simple.cmd | 51 ------------------ cmds/evr-test.cmd | 25 +++++++++ cmds/llrflab.cmd | 48 +++++++++++++---- cmds/ts2.cmd | 53 ++++++++++++++----- configure/CONFIG_MODULE | 2 +- tools/ioc@ts2evm.service | 39 ++++++++++++++ .../ts2evmApp/Db/ts2_evm_controls.template | 18 +++---- 7 files changed, 149 insertions(+), 87 deletions(-) delete mode 100755 cmds/evm-simple.cmd create mode 100644 cmds/evr-test.cmd create mode 100644 tools/ioc@ts2evm.service diff --git a/cmds/evm-simple.cmd b/cmds/evm-simple.cmd deleted file mode 100755 index edd4758..0000000 --- a/cmds/evm-simple.cmd +++ /dev/null @@ -1,51 +0,0 @@ -# .cmd -require "mrfioc2" "2.2.1rc1" -#require "supercycleEngine" "master" -require ts2evm,develop - -epicsEnvSet(REFTABS_DIR, "/home/iocuser/timing/reftabs") - -epicsEnvSet(PREFIX, "TD-RFLAB:TS-EVG-01") -epicsEnvSet(PSCE, "TD-RFLAB:TS-SCE-01") -epicsEnvSet(PEVG, "TD-RFLAB:TS-EVG-01") - -# Load standard timing modules environment -iocshLoad "$(mrfioc2_DIR)/mtca.iocsh" -iocshLoad "$(mrfioc2_DIR)/ts.iocsh" -iocshLoad "$(mrfioc2_DIR)/evm.iocsh" "P=$(PREFIX), OBJ=EVM, PCIID=09:00.0, U=:EVRU-, D=:EVRD-" - -dbLoadRecords("ts2_evm_controls.template", "P=$(PREFIX):, EVGPREFIX=$(PREFIX):") - -iocInit - -iocshLoad "$(mrfioc2_DIR)/evgr.iocsh" "P=$(PEVG), INTRF=, INTPPS=" - -dbpf $(PREFIX):Enable-Sel "Ena Master" -dbpf $(PREFIX):1ppsInp-Sel "Sys Clk" - -# Set MXC0 to generate 14 Hz -dbpf $(PREFIX):Mxc0-Prescaler-SP 6289464 -dbpf $(PREFIX):Mxc0-Polarity-Sel "Orginal" - -# Generate event 14 upon trigger on Mxc0 -dbpf $(PREFIX):TrigEvt0-EvtCode-SP 14 -dbpf $(PREFIX):TrigEvt0-TrigSrc-Sel "Mxc0" - -# Configure sequencers -dbpf $(PREFIX):SoftSeq0-RunMode-Sel "Normal" -dbpf $(PREFIX):SoftSeq0-TsResolution-Sel "uSec" -dbpf $(PREFIX):SoftSeq0-TrigSrc-0-Sel "Mxc0" -dbpf $(PREFIX):SoftSeq0-Load-Cmd "1" - -dbpf $(PREFIX):SoftSeq1-RunMode-Sel "Normal" -dbpf $(PREFIX):SoftSeq1-TsResolution-Sel "uSec" -dbpf $(PREFIX):SoftSeq1-TrigSrc-0-Sel "Mxc0" -dbpf $(PREFIX):SoftSeq1-Load-Cmd "1" - -dbpf $(PREFIX):SoftSeq2-RunMode-Sel "Single" -dbpf $(PREFIX):SoftSeq2-TsResolution-Sel "uSec" -dbpf $(PREFIX):SoftSeq2-TrigSrc-0-Sel "Mxc0" -dbpf $(PREFIX):SoftSeq2-Load-Cmd "1" - -# Start sequencers -dbpf $(PREFIX):SeqSelecCalc.PROC "1" diff --git a/cmds/evr-test.cmd b/cmds/evr-test.cmd new file mode 100644 index 0000000..24ae3e3 --- /dev/null +++ b/cmds/evr-test.cmd @@ -0,0 +1,25 @@ +require mrfioc2,2.2.1rc3 + +#- Channel Access environment configuration +epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES","10000000") + +#- Example MACROS +epicsEnvSet("SYSSUB", "TD-TS2") +epicsEnvSet("DISDEVID", "TS-EVR-001") +epicsEnvSet("PREFIX", "$(SYSSUB):$(DISDEVID):") + +#- EVR PCI address +epicsEnvSet("PCIID", "08:00.0") + +# Not use in this script, but it is needed for the expansion. +epicsEnvSet("MainEvtCODE" "14") + +# +# Record names follows the template "$(P)$(R=)$(S=:)Signal-SD" +# "P" is mandatory, "R" is optional (default empty), "S" is optional (defaul separator ":") +# "DEV" is a unique identifier of the EVR card used by mrfioc2 device support layer +# +iocshLoad("$(mrfioc2_DIR)/evr-mtca-300.iocsh", "P=$(PREFIX), S=, DEV=$(DISDEVID), PCIID=$(PCIID)") + +iocInit() + diff --git a/cmds/llrflab.cmd b/cmds/llrflab.cmd index 341302d..5d13093 100755 --- a/cmds/llrflab.cmd +++ b/cmds/llrflab.cmd @@ -3,31 +3,61 @@ require mrfioc2,2.2.1rc3 require busy,1.7.2_c596e1c require ts2evm,develop +# - Standard modules +require iocStats,3.1.16 +require autosave,5.10.0 +require caPutLog,b544f92 +require recsync,1.3.0-9705e52 +require ess,0.0.1 + epicsEnvSet(PREFIX, "TD-RFLAB:TS-EVG-01") -# Load standard timing modules environment +# - Load standard timing modules environment iocshLoad "$(mrfioc2_DIR)/mtca.iocsh" iocshLoad "$(mrfioc2_DIR)/ts.iocsh" iocshLoad "$(mrfioc2_DIR)/evm.iocsh" "P=$(PREFIX), OBJ=EVM, PCIID=09:00.0, U=:EVRU-, D=:EVRD-" +# - Load TS2 EVM application dbLoadRecords("ts2_evm_controls.template", "P=$(PREFIX):, EVGPREFIX=$(PREFIX):") +# - Load standard ESS modules +iocshLoad("$(iocStats_DIR)/iocStats.iocsh", "IOCNAME=$(PREFIX)") + +var(reccastTimeout, 5.0) +var(reccastMaxHoldoff, 5.0) +epicsEnvSet("RECSYNCPREFIX", "$(PREFIX)") +iocshLoad("$(recsync_DIR)/recsync.iocsh", "IOCNAME=$(RECSYNCPREFIX)") + +epicsEnvSet("AS_REMOTE", "/opt/autosave") +epicsEnvSet("AS_FOLDER", "$(PREFIX)") +iocshLoad("$(autosave_DIR)/autosave.iocsh", "AS_TOP=$(AS_REMOTE),IOCNAME=$(AS_FOLDER)") + +## Logging environment variables +epicsEnvSet("LOG_SERVER_NAME", "$(LOG_SERVER_NAME=localhost)") +epicsEnvSet("ERRORLOG_SERVER_PORT", "$(ERRORLOG_SERVER_PORT=9001)") +epicsEnvSet("CAPUTLOG_SERVER_PORT", "$(CAPUTLOG_SERVER_PORT=9001)") +epicsEnvSet("FACNAME", "$(FACNAME=)") +#iocshLoad("$(ess_DIR)/iocLog.iocsh", "LOG_INET=$(LOG_SERVER_NAME),LOG_INET_PORT=$(ERRORLOG_SERVER_PORT),FACNAME=$(FACILITY_NAME=),IOCNAME=$(PREFIX)") +#iocshLoad("$(caPutLog_DIR)/caPutLog.iocsh", "LOG_INET=$(LOG_SERVER_NAME),LOG_INET_PORT=$(CAPUTLOG_SERVER_PORT)") + +# - Start IOC iocInit -iocshLoad "$(mrfioc2_DIR)/evgr.iocsh" "P=$(PREFIX), INTRF=, INTPPS=" +# - Load EVM standard after init snippet +iocshLoad("$(mrfioc2_DIR)/evgr.iocsh","P=$(PREFIX), INTRF=, INTPPS=") dbpf $(PREFIX):Enable-Sel "Ena Master" dbpf $(PREFIX):1ppsInp-Sel "Sys Clk" -# Set MXC0 to generate 14 Hz +# - Set MXC0 to generate 14 Hz dbpf $(PREFIX):Mxc0-Prescaler-SP 6289464 dbpf $(PREFIX):Mxc0-Polarity-Sel "Orginal" -# Generate event 14 upon trigger on Mxc0 +# - Generate event 14 upon trigger on Mxc0 dbpf $(PREFIX):TrigEvt0-EvtCode-SP 14 dbpf $(PREFIX):TrigEvt0-TrigSrc-Sel "Mxc0" -# Configure sequencers +# - Configure sequencers dbpf $(PREFIX):SoftSeq0-RunMode-Sel "Normal" dbpf $(PREFIX):SoftSeq0-TsResolution-Sel "uSec" dbpf $(PREFIX):SoftSeq0-TrigSrc-0-Sel "Mxc0" @@ -38,10 +68,6 @@ dbpf $(PREFIX):SoftSeq1-TsResolution-Sel "uSec" dbpf $(PREFIX):SoftSeq1-TrigSrc-0-Sel "Mxc0" dbpf $(PREFIX):SoftSeq1-Load-Cmd "1" -dbpf $(PREFIX):SoftSeq2-RunMode-Sel "Single" -dbpf $(PREFIX):SoftSeq2-TsResolution-Sel "uSec" -dbpf $(PREFIX):SoftSeq2-TrigSrc-0-Sel "Mxc0" -dbpf $(PREFIX):SoftSeq2-Load-Cmd "1" - -# Start sequencers +# - Start sequencers dbpf $(PREFIX):SeqSelecCalc.PROC "1" + diff --git a/cmds/ts2.cmd b/cmds/ts2.cmd index 1babd02..baf6907 100755 --- a/cmds/ts2.cmd +++ b/cmds/ts2.cmd @@ -1,32 +1,63 @@ # - Required modules -require mrfioc2,2.2.1rc1 -require ts2evm,develop +require mrfioc2,2.2.1rc3 +require busy,1.7.2_c596e1c +require ts2evm,1.0.0 + +# - Standard modules +require iocStats,3.1.16 +require autosave,5.10.0 +require caPutLog,b544f92 +require recsync,1.3.0-9705e52 +require ess,0.0.1 epicsEnvSet(PREFIX, "TD-TS2:TS-EVM-01") -# Load standard timing modules environment +# - Load standard timing modules environment iocshLoad "$(mrfioc2_DIR)/mtca.iocsh" iocshLoad "$(mrfioc2_DIR)/ts.iocsh" iocshLoad "$(mrfioc2_DIR)/evm.iocsh" "P=$(PREFIX), OBJ=EVM, PCIID=09:00.0, U=:EVRU-, D=:EVRD-" +# - Load TS2 EVM application dbLoadRecords("ts2_evm_controls.template", "P=$(PREFIX):, EVGPREFIX=$(PREFIX):") +# - Load standard ESS modules +iocshLoad("$(iocStats_DIR)/iocStats.iocsh", "IOCNAME=$(PREFIX)") + +var(reccastTimeout, 5.0) +var(reccastMaxHoldoff, 5.0) +epicsEnvSet("RECSYNCPREFIX", "$(PREFIX)") +iocshLoad("$(recsync_DIR)/recsync.iocsh", "IOCNAME=$(RECSYNCPREFIX)") + +epicsEnvSet("AS_REMOTE", "/opt/autosave") +epicsEnvSet("AS_FOLDER", "$(PREFIX)") +iocshLoad("$(autosave_DIR)/autosave.iocsh", "AS_TOP=$(AS_REMOTE),IOCNAME=$(AS_FOLDER)") + +## Logging environment variables +epicsEnvSet("LOG_SERVER_NAME", "$(LOG_SERVER_NAME=localhost)") +epicsEnvSet("ERRORLOG_SERVER_PORT", "$(ERRORLOG_SERVER_PORT=9001)") +epicsEnvSet("CAPUTLOG_SERVER_PORT", "$(CAPUTLOG_SERVER_PORT=9001)") +epicsEnvSet("FACNAME", "$(FACNAME=)") +#iocshLoad("$(ess_DIR)/iocLog.iocsh", "LOG_INET=$(LOG_SERVER_NAME),LOG_INET_PORT=$(ERRORLOG_SERVER_PORT),FACNAME=$(FACILITY_NAME=),IOCNAME=$(PREFIX)") +#iocshLoad("$(caPutLog_DIR)/caPutLog.iocsh", "LOG_INET=$(LOG_SERVER_NAME),LOG_INET_PORT=$(CAPUTLOG_SERVER_PORT)") + +# - Start IOC iocInit -iocshLoad "$(mrfioc2_DIR)/evgr.iocsh" "P=$(PREFIX), INTRF=, INTPPS=" +# - Load EVM standard after init snippet +iocshLoad("$(mrfioc2_DIR)/evgr.iocsh","P=$(PREFIX), INTRF=, INTPPS=") dbpf $(PREFIX):Enable-Sel "Ena Master" dbpf $(PREFIX):1ppsInp-Sel "Sys Clk" -# Set MXC0 to generate 14 Hz +# - Set MXC0 to generate 14 Hz dbpf $(PREFIX):Mxc0-Prescaler-SP 6289464 dbpf $(PREFIX):Mxc0-Polarity-Sel "Orginal" -# Generate event 14 upon trigger on Mxc0 +# - Generate event 14 upon trigger on Mxc0 dbpf $(PREFIX):TrigEvt0-EvtCode-SP 14 dbpf $(PREFIX):TrigEvt0-TrigSrc-Sel "Mxc0" -# Configure sequencers +# - Configure sequencers dbpf $(PREFIX):SoftSeq0-RunMode-Sel "Normal" dbpf $(PREFIX):SoftSeq0-TsResolution-Sel "uSec" dbpf $(PREFIX):SoftSeq0-TrigSrc-0-Sel "Mxc0" @@ -37,10 +68,6 @@ dbpf $(PREFIX):SoftSeq1-TsResolution-Sel "uSec" dbpf $(PREFIX):SoftSeq1-TrigSrc-0-Sel "Mxc0" dbpf $(PREFIX):SoftSeq1-Load-Cmd "1" -dbpf $(PREFIX):SoftSeq2-RunMode-Sel "Single" -dbpf $(PREFIX):SoftSeq2-TsResolution-Sel "uSec" -dbpf $(PREFIX):SoftSeq2-TrigSrc-0-Sel "Mxc0" -dbpf $(PREFIX):SoftSeq2-Load-Cmd "1" - -# Start sequencers +# - Start sequencers dbpf $(PREFIX):SeqSelecCalc.PROC "1" + diff --git a/configure/CONFIG_MODULE b/configure/CONFIG_MODULE index b67b41e..bb0419c 100644 --- a/configure/CONFIG_MODULE +++ b/configure/CONFIG_MODULE @@ -3,7 +3,7 @@ EPICS_MODULE_NAME:=ts2evm EPICS_MODULE_TAG:=master # -E3_MODULE_VERSION:=develop +E3_MODULE_VERSION:=1.0.0 # DEPENDENT MODULE VERSION # For Example, diff --git a/tools/ioc@ts2evm.service b/tools/ioc@ts2evm.service new file mode 100644 index 0000000..38e5156 --- /dev/null +++ b/tools/ioc@ts2evm.service @@ -0,0 +1,39 @@ +[Unit] +Description=IOC: ts2-evm +ConditionHost=ts2-evm-cpu.tn.esss.lu.se +After=multi-user.target +Requires=multi-user.target + +[Service] +User=iocuser +Type=simple + +# workaround for problem with require 3.2.0 +Environment="EPICS_BASE=/epics/base-7.0.4" +Environment="EPICS_HOST_ARCH=linux-x86_64" +Environment="EPICS_DRIVER_PATH=/epics/base-7.0.4/require/3.2.0/siteMods:/epics/base-7.0.4/require/3.2.0/siteApps" + +Environment="E3_REQUIRE_NAME=require" +Environment="E3_SITELIBS_PATH=/epics/base-7.0.4/require/3.2.0/siteLibs" +Environment="E3_REQUIRE_INC=/epics/base-7.0.4/require/3.2.0/include" +Environment="E3_REQUIRE_VERSION=3.2.0" +Environment="E3_REQUIRE_LOCATION=/epics/base-7.0.4/require/3.2.0" +Environment="E3_REQUIRE_LIB=/epics/base-7.0.4/require/3.2.0/lib" +Environment="E3_REQUIRE_BIN=/epics/base-7.0.4/require/3.2.0/bin" +Environment="E3_SITEAPPS_PATH=/epics/base-7.0.4/require/3.2.0/siteApps" +Environment="E3_SITEMODS_PATH=/epics/base-7.0.4/require/3.2.0/siteMods" +Environment="E3_REQUIRE_DB=/epics/base-7.0.4/require/3.2.0/db" +Environment="E3_REQUIRE_DBD=/epics/base-7.0.4/require/3.2.0/dbd" + +Environment="PATH=/epics/base-7.0.4/require/3.2.0/bin:/epics/base-7.0.4/bin/linux-x86_64:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/iocuser/.local/bin:/home/iocuser/bin:/home/iocuser/.local/bin:/home/iocuser/bin" +Environment="LD_LIBRARY_PATH=/epics/base-7.0.4/lib/linux-x86_64:/epics/base-7.0.4/require/3.2.0/lib/linux-x86_64:/epics/base-7.0.4/require/3.2.0/siteLibs/linux-x86_64" + +ExecStart=/usr/bin/procServ \ + -f \ + -i ^C^D \ + 2000 \ + /epics/base-7.0.4/require/3.2.0/bin/iocsh.bash \ + /home/iocuser/devspace/e3-ts2evm/cmds/ts2.cmd +[Install] +WantedBy=multi-user.target + diff --git a/ts2evm-loc/ts2evmApp/Db/ts2_evm_controls.template b/ts2evm-loc/ts2evmApp/Db/ts2_evm_controls.template index 559684a..8baa360 100644 --- a/ts2evm-loc/ts2evmApp/Db/ts2_evm_controls.template +++ b/ts2evm-loc/ts2evmApp/Db/ts2_evm_controls.template @@ -8,6 +8,7 @@ record(ao, "$(P)$(R=)CycleFreq-SP") { field(DRVL, "0") field(DRVH, "14") field(EGU, "Hz") + info(autosaveFields_pass0, "VAL") field(FLNK, "$(P)$(R=)RFFreq-Divider PP") } @@ -31,6 +32,7 @@ record(ao, "$(P)$(R=)RFPulseLen-SP") { field(DRVL, "404") field(DRVH, "3600") field(EGU, "us") + info(autosaveFields_pass0, "VAL") field(FLNK, "$(P)$(R=)SeqSelecCalc PP") } @@ -40,17 +42,6 @@ record(ai, "$(P)$(R=)RFPulseLen-RB") { field(EGU, "us") } -# record(ao, "$(P)$(R=)RFPulseDelay-SP") { -# field(DESC, "RF Pulse Delay from cycle init") -# field(VAL, "10000") -# field(DRVL, "1") -# field(DRVH, "10000000") -# field(EGU, "us") -# field(DISA, "1") - -# field(FLNK, "$(P)$(R=)SeqSelecCalc PP") -# } - record(ai, "$(P)$(R=)RFPulseDelay-RB") { field(DESC, "RF Pulse Delay RB") field(EGU, "us") @@ -66,6 +57,7 @@ record(ao, "$(P)$(R=)PBLen-SP") { field(DRVL, "1") field(DRVH, "2863") field(EGU, "us") + info(autosaveFields_pass0, "VAL") field(FLNK, "$(P)$(R=)SeqSelecCalc PP") } @@ -81,6 +73,7 @@ record(ao, "$(P)$(R=)PBDelay-SP") { field(DRVL, "400") field(DRVH, "10000000") field(EGU, "us") + info(autosaveFields_pass0, "VAL") field(FLNK, "$(P)$(R=)SeqSelecCalc PP") } @@ -99,6 +92,7 @@ record(ao, "$(P)$(R=)PulseCmDelay-SP") { field(DRVL, "100") field(DRVH, "10000000") field(EGU, "us") + info(autosaveFields_pass0, "VAL") field(FLNK, "$(P)$(R=)SeqSelecCalc PP") } @@ -373,6 +367,8 @@ record(bo, "$(P)$(R=)Mode") { field(ZNAM, "Free Running") field(ONAM, "On Demand") field(FLNK, "$(P)$(R=)SeqDisableMode PP") + + info(autosaveFields_pass0, "VAL") } # Trigger actions based on operation mode -- GitLab