From 4bfb5ea148b42f8b8df03a09e9c3f0870bad69e7 Mon Sep 17 00:00:00 2001 From: bernardo carvalho Date: Fri, 25 Sep 2020 19:17:29 +0100 Subject: [PATCH 01/17] added RPi2 IOC --- epics/README.md | 49 ++++++-- .../ISTTOKrpi2App/Db/ISTTOKpfeiffer.db | 115 ++++++++++++++++++ .../iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile | 19 +++ .../ISTTOKrpi2App/Db/pfeiffer.proto | 40 ++++++ .../ISTTOKrpi2/ISTTOKrpi2App/src/Makefile | 46 +++++++ .../ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd | 34 ++++++ epics/iocs/RELEASE.local | 19 +++ 7 files changed, 309 insertions(+), 13 deletions(-) create mode 100644 epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db create mode 100644 epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile create mode 100644 epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto create mode 100644 epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile create mode 100755 epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd create mode 100644 epics/iocs/RELEASE.local diff --git a/epics/README.md b/epics/README.md index 86d6b73..d17d03f 100644 --- a/epics/README.md +++ b/epics/README.md @@ -17,12 +17,12 @@ All software stored in IPFN GIT [server](https://git.ipfn.tecnico.ulisboa.pt/sum - **Humberto Figueiredo** (ISTTOK Session Leader) - **Hugo Alves** (ISTTOK Session Leader, State Machine development) - **Tiago Pereira** (dsPIC development, RS232 protocol/ Sensor Interface/ Wiring) -- **Paulo F. Carvalho** ( Epics Applications), CS-S Gui Panels) ## System description -Presently there are two instances of EPICS IOC Server implemented. +Presently there are two/three instances of EPICS IOC Server implemented. One responsible for the Temperature Node. And a second one, installed in a Raspberry Pi, implemented in the new control unit launched at ISTTOK for the remote control of the vacuum pumps, named Central Node. +A third one is dedicated for readind the Vacuum Sensore through the RS484 Interface ### Temperature/Vacuum Node: Temperature Sensors and ELCO Voltage Measurement Systems - Thermocouple Sensor @@ -227,22 +227,45 @@ Process Variables in this IOC Server: | ISTTOK:central:Shot-TorPSCurrentImage"| ai | ch3 | no | ---------- +* Connected to RS485 Bus (Not yet) + +|PV Name |PV Type |Archive| +|:----------|-------|---:| +|ISTTOK:central:RPump1-Pressure | ai | yes | +|ISTTOK:central:RPump2-Pressure | ai | yes | +|ISTTOK:central:TMPump1-PressureAdmission | ai | yes | +|ISTTOK:central:VVessel-Pressure | ai | yes | +---------- + + +### Central Control/Vacuum Node +- Vacuum Pfeiffer Sensors (RS485) + +#### Hardware Platform +1. A Raspberry Pi 3, running a linux distribution.. + * Has a USB/RS485 port for monitoring pressure + +#### Process Variables +Process Variables in this IOC Server: + * Connected to RS485 Bus |PV Name |PV Type |Archive| |:----------|-------|---:| -| ISTTOK:central:RPump1-Pressure | ai | yes | -|ISTTOK:central:RPump2-Pressure | ai | yes | -|ISTTOK:central:TMPump1-PressureAdmission | ai | yes | -ISTTOK:central:VVessel-Pressure | ai | yes +| ISTTOK:vacuum:RPump1-Pressure | ai | yes | +|ISTTOK:vacuum:RPump2-Pressure | ai | yes | +|ISTTOK:vacuum:TMPump1-PressureAdmission | ai | yes | +|ISTTOK:vacuum:VVessel-Pressure | ai | yes | +---------- +#### Software Platform +[//]: # (This may be the most platform independent comment) -##### Start the IOC on power up - 1. Make sure `screen` is installed in Linux - 2. Include following Line in /etc/rc.local - * `screen -dm bash -c "cd [..]/ISTTOKrpi/iocBoot/iocISTTOKrpi; ../../bin/linux-arm/ISTTOKrpi st.cmd"` - 3. To access EPICS console run - * `sudo screen -r` +1. Linux Raspian "buster" (user :pi): + * IP addr: 192.168.1.120 ( ISTTOK private network) + * NTP/timedatectl time conected to IPFN Gps NTP/PPS server IP:10.136.227.237 193.136.136.129 + (this is mandatory, Rpi does not have a Real Time clock see https://www.raspberrypi.org/forums/viewtopic.php?t=178763) + * EPICS 7. To install follow [EPICS Docs](https://docs.epics-controls.org/projects/how-tos/en/latest/getting-started/installation.html) ## Download and configure CS-Studio @@ -266,7 +289,7 @@ ISTTOK:central:VVessel-Pressure | ai | yes ### EPICS Channel Access Configuration ``` -export EPICS_CA_ADDR_LIST="192.168.1.110 192.168.1.152" +export EPICS_CA_ADDR_LIST=""192.168.1.110 192.168.1.120 192.168.1.152" export EPICS_CA_AUTO_ADDR_LIST="NO" ``` diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db new file mode 100644 index 0000000..577e88b --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db @@ -0,0 +1,115 @@ +record (longin, "$(P)$(R)P001:M") +{ + field (DESC, "getPressure001 $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure001($(P)$(R)P001:E) $(bus)") + field (SCAN, "1 second") + field (FLNK, "$(P)$(R)VVessel-Pressure") +} +record (longin, "$(P)$(R)P001:E") +{ + field (DESC, "Pressure001 exponent $(bus)") +} +record (calc, "$(P)$(R)VVessel-Pressure") +{ + field (DESC, "ISTTOK:central:VVessel-Pressure") + field(INPA, "$(P)$(R)P001:M") + field(INPB, "$(P)$(R)P001:E") + field(CALC, "(A*0.001)*10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") +} + +record (longin, "$(P)$(R)P002:M") +{ + field (DESC, "getPressure002 $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure002($(P)$(R)P002:E) $(bus)") + field (SCAN, "2 second") + field (FLNK, "$(P)$(R)RPump1-Pressure") +} +record (longin, "$(P)$(R)P002:E") +{ + field (DESC, "Pressure002 exponent $(bus)") +} +record (calc, "$(P)$(R)RPump1-Pressure") +{ + field (DESC, "ISTTOK:central:RPump1-Pressure") + field(INPA, "$(P)$(R)P002:M") + field(INPB, "$(P)$(R)P002:E") + field(CALC, "(A*0.001)*10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") +# field(HIHI,"1.0e-1") +# field(HIGH,"5.0e-3") +# field(LOW, "20.0") +# field(LOLO,"0.0") + field(HHSV,"MAJOR") + field(HSV, "MINOR") +# field(LSV, "MINOR") +# field(LLSV,"MAJOR") +} + +record (longin, "$(P)$(R)P003:M") +{ + field (DESC, "getPressure003 Mantissa $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure003($(P)$(R)P003:E) $(bus)") + field (SCAN, "1 second") +# field (SCAN, "I/O Intr") + field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") +} + +record (longin, "$(P)$(R)P003:E") +{ + field (DESC, "Pressure003 Exponent $(bus)") +} +record (calc, "$(P)$(R)TMPump1-PressureAdmission") +{ + field(DESC, "ISTTOK:central:TMPump1-PressureAdmission") + field(INPA, "$(P)$(R)P003:M") + field(INPB, "$(P)$(R)P003:E") + field(CALC, "(A*0.001)* 10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") +} + + +record (longin, "$(P)$(R)P004:M") +{ + field (DESC, "getPressure004 Mantissa $(bus)") + field (DTYP, "stream") + field (INP, "@pfeiffer.proto getPressure004($(P)$(R)P004:E) $(bus)") + field (SCAN, "1 second") + field (FLNK, "$(P)$(R)RPump2-Pressure") +} +record (longin, "$(P)$(R)P004:E") +{ + field (DESC, "Pressure004 Exponent $(bus)") +} + +record (calc, "$(P)$(R)RPump2-Pressure") +{ + field(DESC, "ISTTOK:central:RPump2-Pressure") + field(INPA, "$(P)$(R)P004:M") + field(INPB, "$(P)$(R)P004:E") + field(CALC, "(A*0.001)* 10.0**(B-20)") + field(PREC, "3") + field(EGU, "mBar") +# field(HIHI,"1.0e-1") +# field(HIGH,"5.0e-3") +# field(LOW, "20.0") +# field(LOLO,"0.0") + field(HHSV,"MAJOR") + field(HSV, "MINOR") +# field(LSV, "MINOR") +# field(LLSV,"MAJOR") +} + +record(stringout,"$(P)$(R)RS485Debug") { + field(DESC, "") + field(DTYP, "stream") + field(OUT, "@pfeiffer.proto debug $(bus)") + field(VAL,"") +} + diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile new file mode 100644 index 0000000..af95e8b --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile @@ -0,0 +1,19 @@ +TOP=../.. +include $(TOP)/configure/CONFIG +#---------------------------------------- +# ADD MACRO DEFINITIONS AFTER THIS LINE + +#---------------------------------------------------- +# Create and install (or just install) into /db +# databases, templates, substitutions like this +DB += ISTTOKpfeiffer.db +DB += pfeiffer.proto + +#---------------------------------------------------- +# If .db template is not named *.template add +# _template = + +include $(TOP)/configure/RULES +#---------------------------------------- +# ADD RULES AFTER THIS LINE + diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto new file mode 100644 index 0000000..527ef03 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto @@ -0,0 +1,40 @@ +Terminator=CR; +MaxInput = 20; + +# in millisecond +#ReadTimeout = 2000; +ReplyTimeout = 250; + +# Using redirection to read 2 records, mantissa and exponent +getPressure001 { + out "0010074002=?106"; + in "0011074006%4u%(\$1)2u%+"; +} +getPressure002 { + out "0020074002=?107"; + in "0021074006%4u%(\$1)2u%+"; +} +getPressure003 { + out "0030074002=?108"; + in "0031074006%4u%(\$1)2u%+"; +} +getPressure004 { + out "0040074002=?109"; + in "0041074006%4u%(\$1)2u%+"; +} +# +# in "0031074006%4u%(\$1)2u%*3u"; +# +#getPressureE003 { +# in "0031074006%*4u%2u%*3u"; +#} + +# Connect a stringout record to this to get +# a generic command interface. +# After processing finishes, the record contains the reply. + +debug { + ExtraInput = Ignore; + out "%s"; in "%39c" +} + diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile new file mode 100644 index 0000000..13b302e --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile @@ -0,0 +1,46 @@ +TOP=../.. + +include $(TOP)/configure/CONFIG +#---------------------------------------- +# ADD MACRO DEFINITIONS AFTER THIS LINE +#============================= + +#============================= +# Build the IOC application + +PROD_IOC = ISTTOKrpi2 +# ISTTOKrpi2.dbd will be created and installed +DBD += ISTTOKrpi2.dbd + +# ISTTOKrpi2.dbd will be made up from these files: +ISTTOKrpi2_DBD += base.dbd + +# Include dbd files from all support applications: +#ISTTOKrpi2_DBD += xxx.dbd +ISTTOKrpi2_DBD += asyn.dbd +ISTTOKrpi2_DBD += stream.dbd +ISTTOKrpi2_DBD += drvAsynSerialPort.dbd + +# Add all the support libraries needed by this IOC +ISTTOKrpi2_LIBS += asyn +ISTTOKrpi2_LIBS += stream + +# ISTTOKrpi2_registerRecordDeviceDriver.cpp derives from ISTTOKrpi2.dbd +ISTTOKrpi2_SRCS += ISTTOKrpi2_registerRecordDeviceDriver.cpp + +# Build the main IOC entry point on workstation OSs. +ISTTOKrpi2_SRCS_DEFAULT += ISTTOKrpi2Main.cpp +ISTTOKrpi2_SRCS_vxWorks += -nil- + +# Add support from base/src/vxWorks if needed +#ISTTOKrpi2_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary + +# Finally link to the EPICS Base libraries +ISTTOKrpi2_LIBS += $(EPICS_BASE_IOC_LIBS) + +#=========================== + +include $(TOP)/configure/RULES +#---------------------------------------- +# ADD RULES AFTER THIS LINE + diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd new file mode 100755 index 0000000..c553ca0 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd @@ -0,0 +1,34 @@ +#!../../bin/linux-arm/ISTTOKrpi2 + +#- You may have to change ISTTOKrpi2 to something else +#- everywhere it appears in this file + +< envPaths +epicsEnvSet( "STREAM_PROTOCOL_PATH", "$(TOP)/db" ) + +cd "${TOP}" + +## Register all support components +dbLoadDatabase "dbd/ISTTOKrpi2.dbd" +ISTTOKrpi2_registerRecordDeviceDriver pdbbase + +## Load record instances +#dbLoadRecords("db/xxx.db","user=pi") +## Load Serial drivers +drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") +#drvAsynSerialPortConfigure("RS0","/dev/ttyAMA0") + +asynSetOption("RS0", 0, "baud", "9600") +asynSetOption("RS0", 0, "bits", "8") +asynSetOption("RS0", 0, "parity", "none") +asynSetOption("RS0", 0, "stop", "1") +asynSetOption("RS0", 0, "clocal", "Y") +asynSetOption("RS0", 0, "crtscts", "N") + +dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=vacuum:,bus=RS0") + +cd "${TOP}/iocBoot/${IOC}" +iocInit + +## Start any sequence programs +#seq sncxxx,"user=pi" diff --git a/epics/iocs/RELEASE.local b/epics/iocs/RELEASE.local new file mode 100644 index 0000000..b8d208f --- /dev/null +++ b/epics/iocs/RELEASE.local @@ -0,0 +1,19 @@ +#RELEASE Location of external products +HOME=/home/pi +SUPPORT=$(HOME)/Apps/epics7/support +# +# +ASYN=$(SUPPORT)/asyn +STREAM=$(SUPPORT)/StreamDevice +# IPAC release V2-7 or later is required. +IPAC= +#$(SUPPORT)/ipac-2-15 +# +# # SEQ is required for testIPServer +SNCSEQ= +#$(SUPPORT)/seq-2-2-5 +# +CALC= +PCRE= +# +EPICS_BASE=$(HOME)/Apps/epics7/epics-base From c25f1139bfb714087d243385b438ee341ef9edfc Mon Sep 17 00:00:00 2001 From: bernardo carvalho Date: Fri, 25 Sep 2020 19:20:47 +0100 Subject: [PATCH 02/17] added RPi2 IOC --- epics/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epics/README.md b/epics/README.md index d17d03f..f68f0e8 100644 --- a/epics/README.md +++ b/epics/README.md @@ -238,12 +238,12 @@ Process Variables in this IOC Server: ---------- -### Central Control/Vacuum Node +### Vacuum Node (temporary) - Vacuum Pfeiffer Sensors (RS485) #### Hardware Platform 1. A Raspberry Pi 3, running a linux distribution.. - * Has a USB/RS485 port for monitoring pressure + * Has a USB/RS485 port for monitoring pressure sensors #### Process Variables Process Variables in this IOC Server: From bf0d445031e08f0d22d207c12384e96731adc686 Mon Sep 17 00:00:00 2001 From: bernardo carvalho Date: Fri, 7 May 2021 15:07:37 +0100 Subject: [PATCH 03/17] changeg pfiffer interface --- .../ISTTOKrpi2App/Db/ISTTOKpfeiffer.db | 31 +++++++++++++------ .../ISTTOKrpi2App/Db/pfeiffer.proto | 8 ++--- .../ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd | 6 +++- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db index 577e88b..f2d6a7c 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db @@ -3,7 +3,7 @@ record (longin, "$(P)$(R)P001:M") field (DESC, "getPressure001 $(bus)") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure001($(P)$(R)P001:E) $(bus)") - field (SCAN, "1 second") +# field (SCAN, "1 second") field (FLNK, "$(P)$(R)VVessel-Pressure") } record (longin, "$(P)$(R)P001:E") @@ -18,14 +18,19 @@ record (calc, "$(P)$(R)VVessel-Pressure") field(CALC, "(A*0.001)*10.0**(B-20)") field(PREC, "3") field(EGU, "mBar") + field(HIHI,"1.0e-1") + field(HIGH,"1.0e-2") + field(HHSV,"MAJOR") + field(HSV, "MINOR") } - +# 8/5/2021 Only sensor 2 is working. Running with dspIC record (longin, "$(P)$(R)P002:M") { field (DESC, "getPressure002 $(bus)") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure002($(P)$(R)P002:E) $(bus)") - field (SCAN, "2 second") + field (SCAN, "I/O Intr") +# field (SCAN, "2 second") field (FLNK, "$(P)$(R)RPump1-Pressure") } record (longin, "$(P)$(R)P002:E") @@ -40,8 +45,8 @@ record (calc, "$(P)$(R)RPump1-Pressure") field(CALC, "(A*0.001)*10.0**(B-20)") field(PREC, "3") field(EGU, "mBar") -# field(HIHI,"1.0e-1") -# field(HIGH,"5.0e-3") + field(HIHI,"1.0e-1") + field(HIGH,"5.0e-2") # field(LOW, "20.0") # field(LOLO,"0.0") field(HHSV,"MAJOR") @@ -55,7 +60,7 @@ record (longin, "$(P)$(R)P003:M") field (DESC, "getPressure003 Mantissa $(bus)") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure003($(P)$(R)P003:E) $(bus)") - field (SCAN, "1 second") +# field (SCAN, "1 second") # field (SCAN, "I/O Intr") field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") } @@ -72,6 +77,14 @@ record (calc, "$(P)$(R)TMPump1-PressureAdmission") field(CALC, "(A*0.001)* 10.0**(B-20)") field(PREC, "3") field(EGU, "mBar") + field(HIHI,"1.0e-2") + field(HIGH,"1.0e-3") +# field(LOW, "20.0") +# field(LOLO,"0.0") + field(HHSV,"MAJOR") + field(HSV, "MINOR") +# field(LSV, "MINOR") +# field(LLSV,"MAJOR") } @@ -80,7 +93,7 @@ record (longin, "$(P)$(R)P004:M") field (DESC, "getPressure004 Mantissa $(bus)") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure004($(P)$(R)P004:E) $(bus)") - field (SCAN, "1 second") +# field (SCAN, "1 second") field (FLNK, "$(P)$(R)RPump2-Pressure") } record (longin, "$(P)$(R)P004:E") @@ -100,8 +113,8 @@ record (calc, "$(P)$(R)RPump2-Pressure") # field(HIGH,"5.0e-3") # field(LOW, "20.0") # field(LOLO,"0.0") - field(HHSV,"MAJOR") - field(HSV, "MINOR") +# field(HHSV,"MAJOR") +# field(HSV, "MINOR") # field(LSV, "MINOR") # field(LLSV,"MAJOR") } diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto index 527ef03..bcb4149 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto @@ -1,17 +1,17 @@ Terminator=CR; -MaxInput = 20; +#MaxInput = 20; # in millisecond -#ReadTimeout = 2000; -ReplyTimeout = 250; +ReadTimeout = 1500; +#ReplyTimeout = 250; # Using redirection to read 2 records, mantissa and exponent getPressure001 { out "0010074002=?106"; in "0011074006%4u%(\$1)2u%+"; } +# out "0020074002=?107"; getPressure002 { - out "0020074002=?107"; in "0021074006%4u%(\$1)2u%+"; } getPressure003 { diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd index c553ca0..0f263a6 100755 --- a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd @@ -26,7 +26,11 @@ asynSetOption("RS0", 0, "clocal", "Y") asynSetOption("RS0", 0, "crtscts", "N") dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=vacuum:,bus=RS0") - +# Uncomment to Debug STREAM serial activity +var streamError 1 +var streamDebug 1 +streamSetLogfile("stream_logfile.txt") + cd "${TOP}/iocBoot/${IOC}" iocInit From 807a1ff0e56043ec6a293eb912cd4b08804e7bf5 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 10 May 2021 20:33:35 +0100 Subject: [PATCH 04/17] changed to epics 7 --- .../ISTTOKrpiApp/Db/ISTTOKpcf8591.db | 8 ++-- .../ISTTOKrpiApp/Db/ISTTOKtda8444.db | 2 +- epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile | 5 +++ .../Db}/pcf8574.proto | 0 .../Db}/pcf8591.proto | 9 ++--- .../Db}/pfeiffer.proto | 0 .../Db}/sendmail.proto | 0 .../Db}/tda8444.proto | 0 .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 34 ++++++++++------ .../iocs/ISTTOKrpi/ISTTOKrpiApp/src/Makefile | 39 +++++++++++++++++-- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/Makefile | 1 + .../ISTTOKrpi/iocBoot/iocISTTOKrpi/envPaths | 15 +++---- .../iocBoot/iocISTTOKrpi/iocISTTOKrpi.req | 8 ++-- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 23 ++++++----- 14 files changed, 95 insertions(+), 49 deletions(-) rename epics/iocs/ISTTOKrpi/{protocols => ISTTOKrpiApp/Db}/pcf8574.proto (100%) rename epics/iocs/ISTTOKrpi/{protocols => ISTTOKrpiApp/Db}/pcf8591.proto (98%) rename epics/iocs/ISTTOKrpi/{protocols => ISTTOKrpiApp/Db}/pfeiffer.proto (100%) rename epics/iocs/ISTTOKrpi/{protocols => ISTTOKrpiApp/Db}/sendmail.proto (100%) rename epics/iocs/ISTTOKrpi/{protocols => ISTTOKrpiApp/Db}/tda8444.proto (100%) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db index 00ff57a..0aad50b 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db @@ -10,7 +10,7 @@ # ### macros: ID I2C address of ADC ### # # ### Description: ### # # ### This DB file is using ### # -# ### stream(asynI2C) to read/write ### # +# ### stream(asynI2C) to read/write ### # # ### an PCF8591 ADDA chip ### # ####################################################### @@ -40,7 +40,7 @@ record( ai, "$(P)$(R)TMPump2-Speed" ) { field(DESC, "TMPump2-Speed") field(DTYP, "Raw Soft Channel" ) field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH1 PP NMS") - field(SCAN, "1 second") +# field(SCAN, "1 second") field(ASLO, "16" ) field(AOFF, "0" ) field(EGU, "RPM" ) @@ -66,7 +66,7 @@ record( ai, "$(P)$(R)TMPump2-Current" ) { field(DESC, "TMPump2-Current") field(DTYP, "Raw Soft Channel" ) field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH2 PP NMS") - field(SCAN, "1 second") + # field(SCAN, "1 second") field(ASLO, "0.1" ) field(AOFF, "0" ) field(EGU, "mA" ) @@ -93,7 +93,7 @@ record(ai, "$(P)$(R)Shot-TorPSCurrentImage" ) { field(DESC, "Toroidal Current Image") field(DTYP, "Raw Soft Channel" ) field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH3 PP NMS") - field(SCAN, ".2 second") + # field(SCAN, ".2 second") field(ASLO, "39.215686275" ) field(AOFF, "0.0" ) field(EGU, "A" ) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db index 1977cf6..00a5a3a 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db @@ -7,7 +7,7 @@ # ### ### # # ### Ref 2.0; 2019-10-14 ### # # ### ### # -# ### macros: ID I2C address of ADC ### # +# ### macros: ID I2C address of DAC ### # # ### Description: ### # # ### This DB file is using ### # # ### stream(asynI2C) to write ### # diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile index a72cea7..642dba3 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile @@ -11,6 +11,11 @@ DB += ISTTOKpcf8591.db DB += ISTTOKpfeiffer.db DB += ISTTOKtda8444.db DB += sendmail.db +DB += pcf8591.proto +DB += tda8444.proto +DB += sendmail.proto +DB += pcf8574.proto +DB += pfeiffer.proto # If .db template is not named *.template add # _TEMPLATE = diff --git a/epics/iocs/ISTTOKrpi/protocols/pcf8574.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto similarity index 100% rename from epics/iocs/ISTTOKrpi/protocols/pcf8574.proto rename to epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto diff --git a/epics/iocs/ISTTOKrpi/protocols/pcf8591.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto similarity index 98% rename from epics/iocs/ISTTOKrpi/protocols/pcf8591.proto rename to epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto index d136f30..d66da3e 100644 --- a/epics/iocs/ISTTOKrpi/protocols/pcf8591.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto @@ -5,7 +5,7 @@ ReadTimeout = 100; WriteTimeout = 100; MaxInput = 2; ExtraInput = Error; - + rReg { out ${1}; in "%.1r"; @@ -17,7 +17,7 @@ rReg { # Bits 4,5 ADC configuration . 00 = four single ended channels # Bits 6 : DAC Output enable bit # Bits 7 : =0 - + rConvAdc0 { out ${1} 64; in "%02r"; @@ -34,15 +34,14 @@ rConvAdc3 { out ${1} 67; in "%02r"; } - + ## @init { rReg; } ## wReg { out ${1} "%.1r"; } - + wDac { out ${1} 64 "%.1r"; } - diff --git a/epics/iocs/ISTTOKrpi/protocols/pfeiffer.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pfeiffer.proto similarity index 100% rename from epics/iocs/ISTTOKrpi/protocols/pfeiffer.proto rename to epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pfeiffer.proto diff --git a/epics/iocs/ISTTOKrpi/protocols/sendmail.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/sendmail.proto similarity index 100% rename from epics/iocs/ISTTOKrpi/protocols/sendmail.proto rename to epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/sendmail.proto diff --git a/epics/iocs/ISTTOKrpi/protocols/tda8444.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto similarity index 100% rename from epics/iocs/ISTTOKrpi/protocols/tda8444.proto rename to epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 54c0a5b..74e679d 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -11,12 +11,14 @@ * Copyright (c) : (IPFN-IST) * * Created 5-Mar-2013 - * Revised 01-07-2019 + * Revised 07-May-2021 * Modified 18-Nov-2019 * **/ +//%% #include "errlog.h" program IsttokSeqExec +%{#include "errlog.h"}% /* CONSTANT DECLARATION*/ /*Relays and INPUT (Valleman Board) have negative Logic!*/ short PCF_RELAY_ON = 0; @@ -166,18 +168,22 @@ monitor IsttokTMPump1_Emergency; short IsttokTMPump1_ManualValve; assign IsttokTMPump1_ManualValve to "ISTTOK:central:TMPump1-ManualValve"; monitor IsttokTMPump1_ManualValve; - + +/* short IsttokTMPump2_Emergency; assign IsttokTMPump2_Emergency to "ISTTOK:central:TMPump2-Emergency"; monitor IsttokTMPump2_Emergency; - +*/ + float IsttokRPump1_Pressure; -assign IsttokRPump1_Pressure to "ISTTOK:central:RPump1-Pressure"; +assign IsttokRPump1_Pressure to "ISTTOK:vacuum:RPump1-Pressure"; monitor IsttokRPump1_Pressure; +/* float IsttokRPump2_Pressure; assign IsttokRPump2_Pressure to "ISTTOK:central:RPump2-Pressure"; monitor IsttokRPump2_Pressure; +*/ float IsttokVVesselTemperature; assign IsttokVVesselTemperature to "ISTTOK:temperature:VVessel-Temperature"; @@ -406,13 +412,14 @@ ss PulseSequence { /* Pulse state change to Emergency*/ } state Emergency - when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokRPump2_Pressure) != pvStatOK || - pvStatus(IsttokTMPump1_Emergency) != pvStatOK || pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { + when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokTMPump1_Emergency) != pvStatOK ) { + //when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokRPump2_Pressure) != pvStatOK || + // pvStatus(IsttokTMPump1_Emergency) != pvStatOK || pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ IsttokOPREQ = STOP; pvPut(IsttokOPREQ); //strcpy(sendMail, "Vacuum Emergency while Process"); - sprintf(sendMail, "R1:%1.1e R2:%.1e T1:%d T2:%d",IsttokRPump1_Pressure,IsttokRPump2_Pressure,IsttokTMPump1_Emergency,IsttokTMPump2_Emergency); + sprintf(sendMail, "R1:%1.1e T1:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); pvPut(sendMail); } state Stopping @@ -453,8 +460,9 @@ ss PulseSequence { when (IsttokOPREQ == STOP) {} state Stopping - when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || - pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { + when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) { + //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || + // pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ IsttokOPREQ = STOP; pvPut(IsttokOPREQ); @@ -497,8 +505,9 @@ ss PulseSequence { /* Pulse state change to Stopping */ } state Stopping - when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || - pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { + when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) { + //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || + // pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ IsttokOPREQ = STOP; pvPut(IsttokOPREQ); @@ -677,7 +686,8 @@ ss StartingSequence { STARTINGSTATE = STRST_NonStarting; pvPut(STARTINGSTATE); } state NonStarting - when ( (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokRPump2_Pressure) == pvStatOK)) { + //when ( (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokRPump2_Pressure) == pvStatOK)) { + when ( pvStatus(IsttokRPump1_Pressure) == pvStatOK) { strcpy(msg, "TMP1 MotorOn ON" ); pvPut(msg); diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/Makefile b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/Makefile index 82c5d9c..f4d05bc 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/Makefile +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/Makefile @@ -4,18 +4,38 @@ include $(TOP)/configure/CONFIG #---------------------------------------- # ADD MACRO DEFINITIONS BELOW HERE +# Use typed rset structure (see 3.16.1 release notes) +USR_CPPFLAGS += -DUSE_TYPED_RSET + +# xxxRecord.h will be created from xxxRecord.dbd +#DBDINC += xxxRecord + +# Install xxxSupport.dbd into /dbd +#DBD += xxxSupport.dbd + # Build an IOC support library LIBRARY_IOC += ISTTOKrpiSupport -# Compile and add the code to the support library +# Compile and add code to the support library +#ISTTOKrpiSupport_SRCS += xxxRecord.c +#ISTTOKrpiSupport_SRCS += devXxxSoft.c # Link locally-provided code into the support library, -# rather than directly into the IOC application. -# This is required for Windows DLL builds. +# rather than directly into the IOC application, that +# causes problems on Windows DLL builds +#ISTTOKrpiSupport_SRCS += dbSubExample.c +#ISTTOKrpiSupport_SRCS += devISTTOKrpiVersion.c +#ISTTOKrpiSupport_SRCS += ISTTOKrpiHello.c ISTTOKrpiSupport_SRCS += initTrace.c ISTTOKrpiSupport_LIBS += $(EPICS_BASE_IOC_LIBS) +# Auto-generate a header file containing a version string. +# Version comes from the VCS if available, else date+time. +#GENVERSION = ISTTOKrpiVersion.h +# Macro name +#GENVERSIONMACRO = ISTTOKrpiVERSION + # Build the IOC application PROD_IOC = ISTTOKrpi @@ -27,6 +47,7 @@ ISTTOKrpi_DBD += base.dbd ISTTOKrpi_DBD += initTrace.dbd # Include dbd files from all support applications: ISTTOKrpi_DBD += asyn.dbd +#ISTTOKrpi_DBD += calc.dbd ISTTOKrpi_DBD += stream.dbd ISTTOKrpi_DBD += drvAsynI2C.dbd ISTTOKrpi_DBD += drvAsynSerialPort.dbd @@ -35,6 +56,7 @@ ISTTOKrpi_DBD += asSupport.dbd # Add all the support libraries needed by this IOC ISTTOKrpi_LIBS += asyn +#ISTTOKrpi_LIBS += calc ISTTOKrpi_LIBS += stream ISTTOKrpi_LIBS += drvAsynI2C ISTTOKrpi_LIBS += autosave @@ -52,14 +74,21 @@ ISTTOKrpi_LIBS += ISTTOKrpiSupport # To build SNL programs, SNCSEQ must be defined # in the /configure/RELEASE file ifneq ($(SNCSEQ),) - # Build sncExample into ISTTOKrpiSupport , Safe Mode : +s + # Build sncExample into ISTTOKrpiSupport , Safe Mode : +s IsttokSeqExec_SNCFLAGS += +r +s ISTTOKrpi_DBD += IsttokSeqExec.dbd # A .stt sequence program is *not* pre-processed: ISTTOKrpiSupport_SRCS += IsttokSeqExec.stt ISTTOKrpiSupport_LIBS += seq pv ISTTOKrpi_LIBS += seq pv +endif +# Link QSRV (pvAccess Server) if available +ifdef EPICS_QSRV_MAJOR_VERSION + ISTTOKrpi_LIBS += qsrv + ISTTOKrpi_LIBS += $(EPICS_BASE_PVA_CORE_LIBS) + ISTTOKrpi_DBD += PVAServerRegister.dbd + ISTTOKrpi_DBD += qsrv.dbd endif # Finally link IOC to the EPICS Base libraries @@ -69,3 +98,5 @@ include $(TOP)/configure/RULES #---------------------------------------- # ADD EXTRA GNUMAKE RULES BELOW HERE +# Explicit dependency needed for generated header file +devISTTOKrpiVersion$(DEP): $(COMMON_DIR)/$(GENVERSION) diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/Makefile b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/Makefile index e064d73..e1b9aa4 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/Makefile +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/Makefile @@ -1,4 +1,5 @@ TOP = ../.. include $(TOP)/configure/CONFIG +ARCH = $(EPICS_HOST_ARCH) TARGETS = envPaths include $(TOP)/configure/RULES.ioc diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/envPaths b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/envPaths index 666b481..13171b5 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/envPaths +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/envPaths @@ -1,9 +1,10 @@ epicsEnvSet("IOC","iocISTTOKrpi") epicsEnvSet("TOP","/home/pi/ISTTOK/epics/iocs/ISTTOKrpi") -epicsEnvSet("SUPPORT","/usr/local/epics/base/../synApps_5_8/support") -epicsEnvSet("SNCSEQ","/usr/local/epics/base/../synApps_5_8/support/seq-2-2-1") -epicsEnvSet("ASYN","/usr/local/epics/base/../synApps_5_8/support/asyn-4-26") -epicsEnvSet("STREAM","/usr/local/epics/base/../synApps_5_8/support/stream-2-6a") -epicsEnvSet("AUTOSAVE","/usr/local/epics/base/../synApps_5_8/support/autosave-5-6-1") -epicsEnvSet("DRVASYNI2C","/usr/local/epics/base/../modules/drvAsynI2C") -epicsEnvSet("EPICS_BASE","/usr/local/epics/base") +epicsEnvSet("EPICS_BASE","/home/pi/Apps/epics7/epics-base") +epicsEnvSet("HOME","/home/pi") +epicsEnvSet("SUPPORT","/home/pi/Apps/epics7/support") +epicsEnvSet("ASYN","/home/pi/Apps/epics7/support/asyn") +epicsEnvSet("STREAM","/home/pi/Apps/epics7/support/StreamDevice") +epicsEnvSet("AUTOSAVE","/home/pi/Apps/epics7/support/autosave") +epicsEnvSet("DRVASYNI2C","/home/pi/Apps/epics7/support/drvAsynI2C") +epicsEnvSet("SNCSEQ","/home/pi/Apps/epics7/support/seq-2-2") diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req index 9436041..e382569 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req @@ -11,8 +11,8 @@ ISTTOK:central:TMPump1-ManualValve.VAL ISTTOK:central:Shot-TorPSCurrent #ALARM Limits -ISTTOK:central:RPump1-Pressure.HIGH -ISTTOK:central:RPump1-Pressure.HIHI -ISTTOK:central:RPump2-Pressure.HIGH -ISTTOK:central:RPump2-Pressure.HIHI +ISTTOK:vacuum:RPump1-Pressure.HIGH +ISTTOK:vacuum:RPump1-Pressure.HIHI +#ISTTOK:central:RPump2-Pressure.HIGH +#ISTTOK:central:RPump2-Pressure.HIHI diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index 61ac337..3d56bd1 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,15 +1,14 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 200127-094325 -ISTTOK:central:PULSE-NUMBER.VAL 48422 -ISTTOK:central:LogMessage.VAL Emplastro esteve aqui -ISTTOK:central:LASTOPSTATE.VAL 5 -ISTTOK:central:OPREQ 1 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 210510-201940 +! 2 channel(s) not connected - or not all gets were successful +ISTTOK:central:PULSE-NUMBER.VAL 0 +ISTTOK:central:LogMessage.VAL +ISTTOK:central:LASTOPSTATE.VAL 0 +ISTTOK:central:OPREQ 0 ISTTOK:central:PROCESS-MODE.VAL 0 -ISTTOK:central:CLEANINGMANMODE.VAL 1 +ISTTOK:central:CLEANINGMANMODE.VAL 0 ISTTOK:central:Emergency-UserButton.VAL 0 -ISTTOK:central:TMPump1-ManualValve.VAL 1 -ISTTOK:central:Shot-TorPSCurrent 34 -ISTTOK:central:RPump1-Pressure.HIGH 0 -ISTTOK:central:RPump1-Pressure.HIHI 0 -ISTTOK:central:RPump2-Pressure.HIGH 0 -ISTTOK:central:RPump2-Pressure.HIHI 0 +ISTTOK:central:TMPump1-ManualValve.VAL 0 +ISTTOK:central:Shot-TorPSCurrent 1 +#ISTTOK:vacuum:RPump1-Pressure.HIGH Search Issued +#ISTTOK:vacuum:RPump1-Pressure.HIHI Search Issued From 641da8264229e15e037449ba9d8850c39f71a1f1 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Tue, 11 May 2021 11:20:40 +0100 Subject: [PATCH 05/17] chanegd to epics 7 --- .../ISTTOKrpiApp/src/ISTTOKrpiMain.cpp | 2 +- .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 46 +++++++++---------- epics/iocs/ISTTOKrpi/configure/CONFIG_SITE | 3 +- epics/iocs/ISTTOKrpi/configure/RELEASE | 33 ++++++------- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 2 +- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 21 +++++---- epics/iocs/RELEASE.local | 8 +++- 7 files changed, 57 insertions(+), 58 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/ISTTOKrpiMain.cpp b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/ISTTOKrpiMain.cpp index 86751ff..9818be6 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/ISTTOKrpiMain.cpp +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/ISTTOKrpiMain.cpp @@ -13,7 +13,7 @@ int main(int argc,char *argv[]) { - if(argc>=2) { + if(argc>=2) { iocsh(argv[1]); epicsThreadSleep(.2); } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 74e679d..228ec10 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -114,7 +114,7 @@ monitor STARTINGSTATE; short CLEANINGSTATE; assign CLEANINGSTATE to "ISTTOK:central:CLEANINGSTATE"; monitor CLEANINGSTATE; - + short CLEANINGMANMODE; assign CLEANINGMANMODE to "ISTTOK:central:CLEANINGMANMODE"; monitor CLEANINGMANMODE; @@ -128,48 +128,48 @@ monitor STOPPINGSTATE; short IsttokRPump1_Motor; assign IsttokRPump1_Motor to "ISTTOK:central:RPump1-Motor"; - + short IsttokRPump1_Valve; assign IsttokRPump1_Valve to "ISTTOK:central:RPump1-Valve"; - + short IsttokRPump2_Motor; assign IsttokRPump2_Motor to "ISTTOK:central:RPump2-Motor"; - + short IsttokRPump2_Valve; assign IsttokRPump2_Valve to "ISTTOK:central:RPump2-Valve"; - + short IsttokTMPump1_ControllerOff; assign IsttokTMPump1_ControllerOff to "ISTTOK:central:TMPump1-ControllerOff"; - + short IsttokTMPump1_ControllerOn; assign IsttokTMPump1_ControllerOn to "ISTTOK:central:TMPump1-ControllerOn"; - + short IsttokTMPump1_MotorOff; assign IsttokTMPump1_MotorOff to "ISTTOK:central:TMPump1-MotorOff"; - + short IsttokTMPump1_MotorOn; assign IsttokTMPump1_MotorOn to "ISTTOK:central:TMPump1-MotorOn"; - + short IsttokTMPump2_Motor; assign IsttokTMPump2_Motor to "ISTTOK:central:TMPump2-Motor"; - + short TMPump1NormalOperation; assign TMPump1NormalOperation to "ISTTOK:central:TMPump1-NormalOperation"; monitor TMPump1NormalOperation; - + short IsttokTMPump1_Power; assign IsttokTMPump1_Power to "ISTTOK:central:TMPump1-Power"; monitor IsttokTMPump1_Power; - + short IsttokTMPump1_Emergency; assign IsttokTMPump1_Emergency to "ISTTOK:central:TMPump1-Emergency"; monitor IsttokTMPump1_Emergency; - + short IsttokTMPump1_ManualValve; assign IsttokTMPump1_ManualValve to "ISTTOK:central:TMPump1-ManualValve"; monitor IsttokTMPump1_ManualValve; -/* +/* short IsttokTMPump2_Emergency; assign IsttokTMPump2_Emergency to "ISTTOK:central:TMPump2-Emergency"; monitor IsttokTMPump2_Emergency; @@ -178,8 +178,8 @@ monitor IsttokTMPump2_Emergency; float IsttokRPump1_Pressure; assign IsttokRPump1_Pressure to "ISTTOK:vacuum:RPump1-Pressure"; monitor IsttokRPump1_Pressure; - -/* + +/* float IsttokRPump2_Pressure; assign IsttokRPump2_Pressure to "ISTTOK:central:RPump2-Pressure"; monitor IsttokRPump2_Pressure; @@ -191,25 +191,25 @@ monitor IsttokVVesselTemperature; short IsttokShotBuzzer; assign IsttokShotBuzzer to "ISTTOK:central:Buzzer"; - + short IsttokShotLab_WarningLight; assign IsttokShotLab_WarningLight to "ISTTOK:central:Lab-WarningLight"; - + short IsttokShotGasIS_Valves; assign IsttokShotGasIS_Valves to "ISTTOK:central:GasIS-Valves"; - + short IsttokShotVVessel_Filament; assign IsttokShotVVessel_Filament to "ISTTOK:central:VVessel-Filament"; - + short IsttokShotCapBank_Charge; assign IsttokShotCapBank_Charge to "ISTTOK:central:CapBank-Charge"; - + short IsttokShotCapBank_Discharge; assign IsttokShotCapBank_Discharge to "ISTTOK:central:CapBank-Discharge"; - + short IsttokShotClean_TorContactor; assign IsttokShotClean_TorContactor to "ISTTOK:central:Clean-TorContactor"; - + short IsttokShotClean_TorPneuBreaker; assign IsttokShotClean_TorPneuBreaker to "ISTTOK:central:Clean-TorPneuBreaker"; diff --git a/epics/iocs/ISTTOKrpi/configure/CONFIG_SITE b/epics/iocs/ISTTOKrpi/configure/CONFIG_SITE index 14d5d5b..212485e 100644 --- a/epics/iocs/ISTTOKrpi/configure/CONFIG_SITE +++ b/epics/iocs/ISTTOKrpi/configure/CONFIG_SITE @@ -23,8 +23,7 @@ CHECK_RELEASE = YES # To install files into a location other than $(TOP) define # INSTALL_LOCATION here. -INSTALL_LOCATION=/opt/epics/iocs/ISTTOKrpi -# +#INSTALL_LOCATION= # Set this when the IOC and build host use different paths # to the install location. This may be needed to boot from diff --git a/epics/iocs/ISTTOKrpi/configure/RELEASE b/epics/iocs/ISTTOKrpi/configure/RELEASE index af7a6c3..3576943 100644 --- a/epics/iocs/ISTTOKrpi/configure/RELEASE +++ b/epics/iocs/ISTTOKrpi/configure/RELEASE @@ -1,13 +1,12 @@ # RELEASE - Location of external support modules # -# IF YOU MAKE ANY CHANGES to this file you must subsequently -# do a "gnumake rebuild" in this application's top level -# directory. +# IF YOU CHANGE ANY PATHS in this file or make API changes to +# any modules it refers to, you should do a "make rebuild" in +# this application's top level directory. # -# The build process does not check dependencies against files -# that are outside this application, thus you should do a -# "gnumake rebuild" in the top level directory after EPICS_BASE -# or any other external module pointed to below is rebuilt. +# The EPICS build process does not check dependencies against +# any files from outside the application, so it is safest to +# rebuild it completely if any modules it depends on change. # # Host- or target-specific settings can be given in files named # RELEASE.$(EPICS_HOST_ARCH).Common @@ -15,7 +14,7 @@ # RELEASE.$(EPICS_HOST_ARCH).$(T_A) # # This file is parsed by both GNUmake and an EPICS Perl script, -# so it can ONLY contain definititions of paths to other support +# so it may ONLY contain definititions of paths to other support # modules, variable definitions that are used in module paths, # and include statements that pull in other RELEASE files. # Variables may be used before their values have been set. @@ -23,25 +22,21 @@ # the CONFIG_SITE file. # Variables and paths to dependent modules: -SUPPORT=$(EPICS_BASE)/../synApps_5_8/support +#MODULES = /path/to/modules +#MYMODULE = $(MODULES)/my-module # If using the sequencer, point SNCSEQ at its top directory: -SNCSEQ = $(SUPPORT)/seq-2-2-1 -ASYN = $(SUPPORT)/asyn-4-26 -STREAM = $(SUPPORT)/stream-2-6a -AUTOSAVE = $(SUPPORT)/autosave-5-6-1 -DRVASYNI2C = $(EPICS_BASE)/../modules/drvAsynI2C +#SNCSEQ = $(MODULES)/seq-ver -# # EPICS_BASE should appear last so earlier modules can override stuff: -EPICS_BASE = /usr/local/epics/base +EPICS_BASE = /home/pi/Apps/epics7/epics-base # Set RULES here if you want to use build rules from somewhere # other than EPICS_BASE: #RULES = $(MODULES)/build-rules -# These allow developers to override the RELEASE variable settings -# without having to modify the configure/RELEASE file itself. +# These lines allow developers to override these RELEASE settings +# without having to modify this file directly. -include $(TOP)/../RELEASE.local +-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local -include $(TOP)/configure/RELEASE.local - diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index 3d56bd1..3fce681 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,4 +1,4 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 210510-201940 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 210511-111857 ! 2 channel(s) not connected - or not all gets were successful ISTTOK:central:PULSE-NUMBER.VAL 0 ISTTOK:central:LogMessage.VAL diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 280ab44..3b50392 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -4,9 +4,9 @@ ## everywhere it appears in this file < envPaths -epicsEnvSet( "STREAM_PROTOCOL_PATH", "$(TOP)/protocols" ) +epicsEnvSet( "STREAM_PROTOCOL_PATH", "$(TOP)/db" ) epicsEnvSet( "SAVE_DIR", "$(TOP)/iocBoot/$(IOC)" ) -epicsEnvSet( "EPICS_CA_ADDR_LIST", "localhost 192.168.1.152") +epicsEnvSet( "EPICS_CA_ADDR_LIST", "localhost 192.168.1.120 192.168.1.152") cd "${TOP}" @@ -25,17 +25,18 @@ dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:") dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") ## Load Serial drivers -drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") +#drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") #drvAsynSerialPortConfigure("RS0","/dev/ttyAMA0") -asynSetOption("RS0", 0, "baud", "9600") -asynSetOption("RS0", 0, "bits", "8") -asynSetOption("RS0", 0, "parity", "none") -asynSetOption("RS0", 0, "stop", "1") -asynSetOption("RS0", 0, "clocal", "Y") -asynSetOption("RS0", 0, "crtscts", "N") +#asynSetOption("RS0", 0, "baud", "9600") +#asynSetOption("RS0", 0, "bits", "8") +#asynSetOption("RS0", 0, "parity", "none") +#asynSetOption("RS0", 0, "stop", "1") +#asynSetOption("RS0", 0, "clocal", "Y") +#asynSetOption("RS0", 0, "crtscts", "N") -dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=central:,bus=RS0") +# Pfeiffer sensor are connectoed to other RPI /(192.168.1.120) +#dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=central:,bus=RS0") # connect to the MAIL server mail.ipfn.tecnico.ulisboa.pt # ,priority,noAutoConnect,noProcessEos diff --git a/epics/iocs/RELEASE.local b/epics/iocs/RELEASE.local index b8d208f..d1d65cb 100644 --- a/epics/iocs/RELEASE.local +++ b/epics/iocs/RELEASE.local @@ -5,12 +5,16 @@ SUPPORT=$(HOME)/Apps/epics7/support # ASYN=$(SUPPORT)/asyn STREAM=$(SUPPORT)/StreamDevice +#CALC=$(SUPPORT)/calc +AUTOSAVE = $(SUPPORT)/autosave +DRVASYNI2C =$(SUPPORT)/drvAsynI2C +SNCSEQ=$(SUPPORT)/seq-2-2 + # IPAC release V2-7 or later is required. -IPAC= +#IPAC= #$(SUPPORT)/ipac-2-15 # # # SEQ is required for testIPServer -SNCSEQ= #$(SUPPORT)/seq-2-2-5 # CALC= From 2c0f99e4bee1a8dfb46a04e7ee6c1b64f640fe4f Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Tue, 11 May 2021 11:24:01 +0100 Subject: [PATCH 06/17] Version epics7 --- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt | 95 ++++++++----------- 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt index 8514491..73a0a5a 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt @@ -1,27 +1,3 @@ -ISTTOK:central:CurrentTime -ISTTOK:central:OPCALCSTATE -ISTTOK:central:STARTCALCSTATE -ISTTOK:central:STOPPINGCALCSTATE -ISTTOK:central:CLEANCALCSTATE -ISTTOK:central:WSHOTCALCSTATE -ISTTOK:central:COUNTDOWN -ISTTOK:central:COUNTER -ISTTOK:central:PCF8591:72:BYTE2_CH1 -ISTTOK:central:PCF8591:72:BYTE2_CH2 -ISTTOK:central:PCF8591:72:BYTE2_CH3 -ISTTOK:central:Emergency -ISTTOK:central:VVessel-Pressure -ISTTOK:central:RPump1-Pressure -ISTTOK:central:TMPump1-PressureAdmission -ISTTOK:central:RPump2-Pressure -ISTTOK:central:TMPump2-Speed -ISTTOK:central:TMPump2-Current -ISTTOK:central:Shot-TorPSCurrentImage -ISTTOK:central:PCF8574:56:REGISTER -ISTTOK:central:PCF8574:57:REGISTER -ISTTOK:central:PCF8574:60:REGISTER -ISTTOK:central:PCF8574:61:REGISTER -ISTTOK:central:PCF8591:72:CTRLREGISTER ISTTOK:central:PULSE-NUMBER ISTTOK:central:PCF8591:72:DAC ISTTOK:central:TDA8444:32:DAC_CH0 @@ -40,22 +16,17 @@ ISTTOK:SR_4_State ISTTOK:SR_5_State ISTTOK:SR_6_State ISTTOK:SR_7_State -ISTTOK:central:PCF8591:72:ADC_CH1 -ISTTOK:central:PCF8591:72:ADC_CH2 -ISTTOK:central:PCF8591:72:ADC_CH3 -ISTTOK:central:P001:M -ISTTOK:central:P001:E -ISTTOK:central:P002:M -ISTTOK:central:P002:E -ISTTOK:central:P003:M -ISTTOK:central:P003:E -ISTTOK:central:P004:M -ISTTOK:central:P004:E +ISTTOK:SR_disableMaxSecs ISTTOK:central:OPSTATE ISTTOK:central:STARTINGSTATE ISTTOK:central:CLEANINGSTATE ISTTOK:central:WSHOTINGSTATE ISTTOK:central:STOPPINGSTATE +ISTTOK:central:PCF8574:56:REGISTER:READ +ISTTOK:central:PCF8574:57:REGISTER:READ +ISTTOK:central:PCF8574:60:REGISTER:READ +ISTTOK:central:PCF8574:61:REGISTER:READ +ISTTOK:central:CurrentTime ISTTOK:central:TMPump1-Power ISTTOK:central:TMPump1-Emergency ISTTOK:central:TMPump1-Acceleration @@ -64,12 +35,44 @@ ISTTOK:central:TMPump2-Emergency ISTTOK:central:TMPump2-Acceleration ISTTOK:central:TTSystem-tzero ISTTOK:central:Emergency-PhysButton +ISTTOK:central:PCF8574:56:REGISTER:READ:FNOUT +ISTTOK:central:PCF8574:57:REGISTER:READ:FNOUT ISTTOK:central:TMPump1-ControllerOnInv ISTTOK:central:TMPump1-ControllerOffInv ISTTOK:central:TMPump1-MotorOnInv ISTTOK:central:TMPump1-MotorOffInv ISTTOK:central:BuzzerInv ISTTOK:central:Shot-TorPSTriggerInv +ISTTOK:central:PCF8574:56:REGISTER +ISTTOK:central:PCF8574:57:REGISTER +ISTTOK:central:PCF8574:60:REGISTER +ISTTOK:central:PCF8574:61:REGISTER +ISTTOK:central:PCF8591:72:CTRLREGISTER +ISTTOK:central:OPCALCSTATE +ISTTOK:central:STARTCALCSTATE +ISTTOK:central:STOPPINGCALCSTATE +ISTTOK:central:CLEANCALCSTATE +ISTTOK:central:WSHOTCALCSTATE +ISTTOK:central:COUNTDOWN +ISTTOK:central:COUNTER +ISTTOK:central:PCF8591:72:BYTE2_CH1 +ISTTOK:central:PCF8591:72:BYTE2_CH2 +ISTTOK:central:PCF8591:72:BYTE2_CH3 +ISTTOK:central:Emergency +ISTTOK:central:LASTOPSTATE +ISTTOK:SR_rebootStatus +ISTTOK:SR_status +ISTTOK:SR_0_Status +ISTTOK:SR_1_Status +ISTTOK:SR_2_Status +ISTTOK:SR_3_Status +ISTTOK:SR_4_Status +ISTTOK:SR_5_Status +ISTTOK:SR_6_Status +ISTTOK:SR_7_Status +ISTTOK:central:TMPump2-Speed +ISTTOK:central:TMPump2-Current +ISTTOK:central:Shot-TorPSCurrentImage ISTTOK:central:OPREQ ISTTOK:central:CLEANINGMANMODE ISTTOK:central:FSTriggerStart @@ -102,24 +105,12 @@ ISTTOK:central:TMPump1-ManualValve ISTTOK:SR_heartbeat ISTTOK:SR_i_am_alive ISTTOK:SR_deadIfZero -ISTTOK:central:LASTOPSTATE -ISTTOK:SR_rebootStatus -ISTTOK:SR_status -ISTTOK:SR_0_Status -ISTTOK:SR_1_Status -ISTTOK:SR_2_Status -ISTTOK:SR_3_Status -ISTTOK:SR_4_Status -ISTTOK:SR_5_Status -ISTTOK:SR_6_Status -ISTTOK:SR_7_Status -ISTTOK:central:PCF8574:56:REGISTER:READ -ISTTOK:central:PCF8574:57:REGISTER:READ -ISTTOK:central:PCF8574:60:REGISTER:READ -ISTTOK:central:PCF8574:61:REGISTER:READ +ISTTOK:SR_disable +ISTTOK:central:PCF8591:72:ADC_CH1 +ISTTOK:central:PCF8591:72:ADC_CH2 +ISTTOK:central:PCF8591:72:ADC_CH3 ISTTOK:central:TraceMessage ISTTOK:central:LogMessage -ISTTOK:central:RS485Debug ISTTOK:central:sendmail ISTTOK:SR_recentlyStr ISTTOK:SR_rebootStatusStr @@ -149,5 +140,3 @@ ISTTOK:SR_6_Time ISTTOK:SR_7_Name ISTTOK:SR_7_StatusStr ISTTOK:SR_7_Time -ISTTOK:central:PCF8574:56:REGISTER:READ:FNOUT -ISTTOK:central:PCF8574:57:REGISTER:READ:FNOUT From de3d81fe07d297b172bc3e2db3c633b586829a93 Mon Sep 17 00:00:00 2001 From: bernardo carvalho Date: Tue, 11 May 2021 11:28:32 +0100 Subject: [PATCH 07/17] pre- autosave --- epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd index 0f263a6..6b41ec0 100755 --- a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd @@ -27,9 +27,9 @@ asynSetOption("RS0", 0, "crtscts", "N") dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=vacuum:,bus=RS0") # Uncomment to Debug STREAM serial activity -var streamError 1 -var streamDebug 1 -streamSetLogfile("stream_logfile.txt") +#var streamError 1 +#var streamDebug 1 +#streamSetLogfile("stream_logfile.txt") cd "${TOP}/iocBoot/${IOC}" iocInit From 9bd8504ec2753d5b9cce135acc11e7103872e8da Mon Sep 17 00:00:00 2001 From: bernardo carvalho Date: Tue, 11 May 2021 11:45:16 +0100 Subject: [PATCH 08/17] added autosave for alarm limits --- epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile | 2 ++ .../ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths | 7 +++++++ .../iocBoot/iocISTTOKrpi2/iocISTTOKrpi2.req | 4 ++++ .../iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd | 15 +++++++++++++++ epics/iocs/RELEASE.local | 2 +- 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths create mode 100644 epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/iocISTTOKrpi2.req diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile index 13b302e..2dbf9be 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile @@ -20,10 +20,12 @@ ISTTOKrpi2_DBD += base.dbd ISTTOKrpi2_DBD += asyn.dbd ISTTOKrpi2_DBD += stream.dbd ISTTOKrpi2_DBD += drvAsynSerialPort.dbd +ISTTOKrpi2_DBD += asSupport.dbd # Add all the support libraries needed by this IOC ISTTOKrpi2_LIBS += asyn ISTTOKrpi2_LIBS += stream +ISTTOKrpi2_LIBS += autosave # ISTTOKrpi2_registerRecordDeviceDriver.cpp derives from ISTTOKrpi2.dbd ISTTOKrpi2_SRCS += ISTTOKrpi2_registerRecordDeviceDriver.cpp diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths new file mode 100644 index 0000000..81e5e03 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths @@ -0,0 +1,7 @@ +epicsEnvSet("IOC","iocISTTOKrpi2") +epicsEnvSet("TOP","/home/pi/ISTTOK/epics/iocs/ISTTOKrpi2") +epicsEnvSet("EPICS_BASE","/home/pi/Apps/epics7/epics-base") +epicsEnvSet("HOME","/home/pi") +epicsEnvSet("SUPPORT","/home/pi/Apps/epics7/support") +epicsEnvSet("ASYN","/home/pi/Apps/epics7/support/asyn") +epicsEnvSet("STREAM","/home/pi/Apps/epics7/support/StreamDevice") diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/iocISTTOKrpi2.req b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/iocISTTOKrpi2.req new file mode 100644 index 0000000..9c5542e --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/iocISTTOKrpi2.req @@ -0,0 +1,4 @@ +#ALARM Limits +ISTTOK:vacuum:RPump1-Pressure.HIGH +ISTTOK:vacuum:RPump1-Pressure.HIHI + diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd index 6b41ec0..6c0c55d 100755 --- a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/st.cmd @@ -5,6 +5,7 @@ < envPaths epicsEnvSet( "STREAM_PROTOCOL_PATH", "$(TOP)/db" ) +epicsEnvSet( "SAVE_DIR", "$(TOP)/iocBoot/$(IOC)" ) cd "${TOP}" @@ -30,9 +31,23 @@ dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=vacuum:,bus=RS0") #var streamError 1 #var streamDebug 1 #streamSetLogfile("stream_logfile.txt") + +#save_restoreSet_status_prefix("$(IOC):") +save_restoreSet_status_prefix("ISTTOK:") +set_requestfile_path("$(SAVE_DIR)") +set_savefile_path("$(SAVE_DIR)/save") +save_restoreSet_NumSeqFiles(3) +save_restoreSet_SeqPeriodInSeconds(600) +set_pass0_restoreFile("$(IOC).sav") +set_pass1_restoreFile("$(IOC).sav") +#dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db", "P=ISTTOK:") cd "${TOP}/iocBoot/${IOC}" iocInit +# Create request file and start periodic 'save’ +# makeAutosaveFileFromDbInfo("$(SAVE_DIR)/$(IOC).req", "autosaveFields") +create_monitor_set("$(IOC).req", 30) + ## Start any sequence programs #seq sncxxx,"user=pi" diff --git a/epics/iocs/RELEASE.local b/epics/iocs/RELEASE.local index d1d65cb..b82440a 100644 --- a/epics/iocs/RELEASE.local +++ b/epics/iocs/RELEASE.local @@ -8,7 +8,7 @@ STREAM=$(SUPPORT)/StreamDevice #CALC=$(SUPPORT)/calc AUTOSAVE = $(SUPPORT)/autosave DRVASYNI2C =$(SUPPORT)/drvAsynI2C -SNCSEQ=$(SUPPORT)/seq-2-2 +#SNCSEQ=$(SUPPORT)/seq-2-2 # IPAC release V2-7 or later is required. #IPAC= From 9f1e47c4241ce01a7fa943719a5b412f15d3501e Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Tue, 11 May 2021 17:30:11 +0100 Subject: [PATCH 09/17] fixing I2C --- .../ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db | 18 +++++++++--------- .../ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto | 4 ++-- .../ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto | 2 +- .../ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto | 2 +- .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 6 ++++-- .../iocBoot/iocISTTOKrpi/iocISTTOKrpi.req | 2 -- .../iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav | 7 ++----- .../iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 8 ++++---- 8 files changed, 23 insertions(+), 26 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db index 00a5a3a..03d9fa5 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKtda8444.db @@ -19,15 +19,15 @@ ##################################################### record( longout, "$(P)$(R)TDA8444:32:DAC_CH0") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac0(32) I2C") + field(OUT, "@tda8444.proto wDac0(32) $(BUS)") field(DRVH, "63" ) - field(DRVL, "0" ) + field(DRVL, "0" ) field(VAL, 32) field(PINI,"YES") } record( longout, "$(P)$(R)TDA8444:32:DAC_CH1") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac1(32) I2C") + field(OUT, "@tda8444.proto wDac1(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 32) @@ -35,7 +35,7 @@ record( longout, "$(P)$(R)TDA8444:32:DAC_CH1") { } record( longout, "$(P)$(R)TDA8444:32:DAC_CH2") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac2(32) I2C") + field(OUT, "@tda8444.proto wDac2(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 32) @@ -43,7 +43,7 @@ record( longout, "$(P)$(R)TDA8444:32:DAC_CH2") { } record( longout, "$(P)$(R)TDA8444:32:DAC_CH3") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac3(32) I2C") + field(OUT, "@tda8444.proto wDac3(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 32) @@ -51,7 +51,7 @@ record( longout, "$(P)$(R)TDA8444:32:DAC_CH3") { } record( longout, "$(P)$(R)TDA8444:32:DAC_CH4") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac4(32) I2C") + field(OUT, "@tda8444.proto wDac4(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 32) @@ -59,7 +59,7 @@ record( longout, "$(P)$(R)TDA8444:32:DAC_CH4") { } record( longout, "$(P)$(R)TDA8444:32:DAC_CH5") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac5(32) I2C") + field(OUT, "@tda8444.proto wDac5(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 32) @@ -67,7 +67,7 @@ record( longout, "$(P)$(R)TDA8444:32:DAC_CH5") { } record( longout, "$(P)$(R)TDA8444:32:DAC_CH6") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac6(32) I2C") + field(OUT, "@tda8444.proto wDac6(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 32) @@ -76,7 +76,7 @@ record( longout, "$(P)$(R)TDA8444:32:DAC_CH6") { #record( longout, "$(P)$(R) TDA8444:32:DAC_CH7") { record( longout, "$(P)$(R)Shot-TorPSCurrent") { field(DTYP, "stream") - field(OUT, "@tda8444.proto wDac7(32) I2C") + field(OUT, "@tda8444.proto wDac7(32) $(BUS)") field(DRVH, "63" ) field(DRVL, "0" ) field(VAL, 1) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto index db2730b..305b265 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto @@ -1,5 +1,5 @@ Terminator = ""; -LockTimeout = 500; +LockTimeout = 200; ReplyTimeout = 100; ReadTimeout = 100; WriteTimeout = 100; @@ -8,7 +8,7 @@ ExtraInput = Error; rReg { out ${1}; - in "%.1r"; + in "%01r"; } ## @init { rReg; } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto index d66da3e..7e10313 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto @@ -8,7 +8,7 @@ ExtraInput = Error; rReg { out ${1}; - in "%.1r"; + in "%01r"; } # To read adc write control Byte # Bits 0,1 ADC channel Selection diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto index 772d5dd..58991a2 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/tda8444.proto @@ -1,5 +1,5 @@ Terminator = ""; -LockTimeout = 500; +LockTimeout = 200; ReplyTimeout = 100; ReadTimeout = 100; WriteTimeout = 100; diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 228ec10..8dd5702 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -183,11 +183,11 @@ monitor IsttokRPump1_Pressure; float IsttokRPump2_Pressure; assign IsttokRPump2_Pressure to "ISTTOK:central:RPump2-Pressure"; monitor IsttokRPump2_Pressure; -*/ float IsttokVVesselTemperature; assign IsttokVVesselTemperature to "ISTTOK:temperature:VVessel-Temperature"; monitor IsttokVVesselTemperature; +*/ short IsttokShotBuzzer; assign IsttokShotBuzzer to "ISTTOK:central:Buzzer"; @@ -871,14 +871,16 @@ ss CleaningSequence{ CLEANINGSTATE = CLNST_Cleaning4; pvPut(CLEANINGSTATE); } state Cleaning4 + /* when (pvSeverity(IsttokVVesselTemperature) >= pvSevrMAJOR) { - /* Temperature Limit Pulse state change to Process */ + // Temperature Limit Pulse state change to Process IsttokProcReq = STOP; pvPut(IsttokProcReq); strcpy(msg, "Temperature Limit-> State to Process"); pvPut(msg); errlogSevPrintf(MINOR, "%s\n",msg); } state Cleaning5 +*/ } } diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req index e382569..f2f172c 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req @@ -11,8 +11,6 @@ ISTTOK:central:TMPump1-ManualValve.VAL ISTTOK:central:Shot-TorPSCurrent #ALARM Limits -ISTTOK:vacuum:RPump1-Pressure.HIGH -ISTTOK:vacuum:RPump1-Pressure.HIHI #ISTTOK:central:RPump2-Pressure.HIGH #ISTTOK:central:RPump2-Pressure.HIHI diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index 3fce681..b5bbbba 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,14 +1,11 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 210511-111857 -! 2 channel(s) not connected - or not all gets were successful +# autosave R5.3 Automatically generated - DO NOT MODIFY - 210511-172433 ISTTOK:central:PULSE-NUMBER.VAL 0 ISTTOK:central:LogMessage.VAL -ISTTOK:central:LASTOPSTATE.VAL 0 +ISTTOK:central:LASTOPSTATE.VAL 5 ISTTOK:central:OPREQ 0 ISTTOK:central:PROCESS-MODE.VAL 0 ISTTOK:central:CLEANINGMANMODE.VAL 0 ISTTOK:central:Emergency-UserButton.VAL 0 ISTTOK:central:TMPump1-ManualValve.VAL 0 ISTTOK:central:Shot-TorPSCurrent 1 -#ISTTOK:vacuum:RPump1-Pressure.HIGH Search Issued -#ISTTOK:vacuum:RPump1-Pressure.HIHI Search Issued diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 3b50392..6952723 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -19,9 +19,9 @@ drvAsynI2CConfigure( "I2C", "/dev/i2c-1", 1 ) ## Load record instances dbLoadRecords("db/ISTTOKstates.db","P=ISTTOK:,R=central:") -dbLoadRecords("db/ISTTOKpcf8574.db","P=ISTTOK:,R=central:") -dbLoadRecords("db/ISTTOKpcf8591.db","P=ISTTOK:,R=central:") -dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:") +dbLoadRecords("db/ISTTOKpcf8574.db","P=ISTTOK:,R=central:,BUS=I2C") +dbLoadRecords("db/ISTTOKpcf8591.db","P=ISTTOK:,R=central:,BUS=I2C") +dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") ## Load Serial drivers @@ -47,7 +47,7 @@ dbLoadRecords("db/sendmail.db", "P=ISTTOK:,PORT=L0,R=central:,L=0,A=0") # Uncomment to Debug STREAM serial activity #var streamError 1 #var streamDebug 1 -#streamSetLogfile("logfile.txt") +streamSetLogfile("logfile.txt") ## Run this to trace the stages of iocInit #traceIocInit From 9007221515a7881515c5523daa3f1215369262eb Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Wed, 12 May 2021 11:04:00 +0100 Subject: [PATCH 10/17] drvI2C working ? --- .../ISTTOKrpiApp/Db/ISTTOKmachineControl.db | 385 +++++++++--------- .../ISTTOKrpiApp/Db/ISTTOKpcf8574.db | 32 +- .../ISTTOKrpiApp/Db/ISTTOKpcf8591.db | 56 +-- .../ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto | 2 +- .../ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto | 6 +- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 5 +- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 4 +- 7 files changed, 243 insertions(+), 247 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index d276c99..ae65576 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -1,8 +1,8 @@ ############################################# ## Project : ISTTOK slow Control ## -## File : -## Description : Records for ISTTOK Control I/O channels connected to 2 Velleman board +## File : +## Description : Records for ISTTOK Control I/O channels connected to 2 Velleman board ## ## ## Author : Bernardo Carvalho (IPFN-IST) @@ -23,108 +23,103 @@ ### 24V commands - Optocoupler Out### ##################################### record(bo, "$(P)$(R)TMPump1-ControllerOn" ) { -# field(DESC,"Sinal p/ TMP 1, Liga a alimentação do controlador, vai a HIGH e depois a LOW") -# field( ZNAM, "Off" )record(bo, "$(P)$(R)TMPControllerOn" ) { - field(ZNAM, "Off" ) - field(ONAM, "Pulse" ) - field(HIGH, "2.5") - field(FLNK, "$(P)$(R)TMPump1-ControllerOnInv" ) - field(VAL,"0") - -# field( FLNK, "$(P)$(R)TMPControllerOnInv" ) + field(DESC,"Signal to TMP 1, goes HIGH and LW") + field(ZNAM, "Off" ) + field(ONAM, "Pulse" ) + field(HIGH, "2.5") + field(FLNK, "$(P)$(R)TMPump1-ControllerOnInv" ) + field(VAL,"0") } -record(calcout, "$(P)$(R)TMPump1-ControllerOnInv" ) { -#record(calcout, "$(P)$(R)TMPControllerOnInv" ) { - field( INPA, "$(P)$(R)TMPControllerOn NPP MS" ) - field( OUT, "$(P)$(R)PCF8574:56:REGISTER.B0 PP MS" ) - field( OOPT, "On Change" ) - field( CALC, "A?0:1" ) +record(calcout, "$(P)$(R)TMPump1-ControllerOnInv") { + field(INPA, "$(P)$(R)TMPump1-ControllerOn NPP MS") + field(OUT, "$(P)$(R)PCF8574:56:REGISTER.B0 PP MS") + field(OOPT, "On Change") + field(CALC, "A?0:1") } record(bo, "$(P)$(R)TMPump1-ControllerOff" ) { # field(DESC," Sinal p/ TMP 1, desliga a alimentação do controlador, LOW->HIGH-> LOW") # record(bo, "$(P)$(R)TMPControllerOff" ) { - field(ZNAM, "Off" ) - field(ONAM, "Pulse" ) - field(HIGH, "2.5") - #field( FLNK, "$(P)$(R)TMPControllerOffInv" ) - field(FLNK, "$(P)$(R)TMPump1-ControllerOffInv" ) - field(VAL,"0") + field(ZNAM, "Off" ) + field(ONAM, "Pulse" ) + field(HIGH, "2.5") + field(FLNK, "$(P)$(R)TMPump1-ControllerOffInv" ) + field(VAL,"0") } record(calcout, "$(P)$(R)TMPump1-ControllerOffInv") { - field( INPA, "$(P)$(R)TMPump1-ControllerOff NPP MS" ) - field( OUT, "$(P)$(R)PCF8574:56:REGISTER.B1 PP MS") - field( OOPT, "On Change" ) - field( CALC, "A?0:1" ) + field(INPA, "$(P)$(R)TMPump1-ControllerOff NPP MS" ) + field(OUT, "$(P)$(R)PCF8574:56:REGISTER.B1 PP MS") + field(OOPT, "On Change") + field(CALC, "A?0:1") } record(bo, "$(P)$(R)TMPump1-MotorOn" ) { - field( ZNAM, "Off") - field( ONAM, "Pulse") - field( HIGH, "2.5") - field( FLNK, "$(P)$(R)TMPump1-MotorOnInv") + field( ZNAM, "Off") + field( ONAM, "Pulse") + field( HIGH, "2.5") + field( FLNK, "$(P)$(R)TMPump1-MotorOnInv") } record(calcout, "$(P)$(R)TMPump1-MotorOnInv" ) { - field( INPA, "$(P)$(R)TMPump1-MotorOn NPP MS") - field( OUT, "$(P)$(R)PCF8574:56:REGISTER.B2 PP MS") - field( OOPT, "On Change") - field( CALC, "A?0:1" ) + field( INPA, "$(P)$(R)TMPump1-MotorOn NPP MS") + field( OUT, "$(P)$(R)PCF8574:56:REGISTER.B2 PP MS") + field( OOPT, "On Change") + field( CALC, "A?0:1" ) } record(bo, "$(P)$(R)TMPump1-MotorOff") { - field( ZNAM, "Off") - field( ONAM, "Pulse") - field( HIGH, "2.5") - field( FLNK, "$(P)$(R)TMPump1-MotorOffInv") - field(VAL,"0") + field( ZNAM, "Off") + field( ONAM, "Pulse") + field( HIGH, "2.5") + field( FLNK, "$(P)$(R)TMPump1-MotorOffInv") + field(VAL,"0") } record(calcout, "$(P)$(R)TMPump1-MotorOffInv") { - field( INPA, "$(P)$(R)TMPump1-MotorOff NPP MS") - field( OUT, "$(P)$(R)PCF8574:56:REGISTER.B3 PP MS") - field( OOPT, "On Change") - field( CALC, "A?0:1") + field( INPA, "$(P)$(R)TMPump1-MotorOff NPP MS") + field( OUT, "$(P)$(R)PCF8574:56:REGISTER.B3 PP MS") + field( OOPT, "On Change") + field( CALC, "A?0:1") } ############################# ### TMP1 Controller inputs### ############################# record(fanout, "$(P)$(R)PCF8574:56:REGISTER:READ:FNOUT"){ - field(LNK1, "$(P)$(R)TMPump1-Power") - field(LNK2, "$(P)$(R)TMPump1-Emergency") - field(LNK3, "$(P)$(R)TMPump1-Acceleration") - field(LNK4, "$(P)$(R)TMPump1-NormalOperation") + field(LNK1, "$(P)$(R)TMPump1-Power") + field(LNK2, "$(P)$(R)TMPump1-Emergency") + field(LNK3, "$(P)$(R)TMPump1-Acceleration") + field(LNK4, "$(P)$(R)TMPump1-NormalOperation") } record(bi , "$(P)$(R)TMPump1-Power" ) { - field(DESC," TMP1 – Alimentada 220V ") - field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B4 NPP NMS") - field( ZNAM, "ON" ) - field( ONAM, "OFF" ) + field(DESC," TMP1 – Alimentada 220V ") + field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B4 NPP NMS") + field( ZNAM, "ON" ) + field( ONAM, "OFF" ) } record(bi , "$(P)$(R)TMPump1-Emergency") { - field(DESC," TMP1 – Falha ") - field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B6 NPP NMS") + field(DESC," TMP1 – Falha ") + field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B6 NPP NMS") # field(VAL,"1") - field( ZNAM, "ON" ) - field( ONAM, "OFF" ) - field(ZSV,"MAJOR") + field( ZNAM, "ON" ) + field( ONAM, "OFF" ) + field(ZSV,"MAJOR") } record(bi , "$(P)$(R)TMPump1-Acceleration") { - field(DESC," TMP1 – Motor em aceleração ") - field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B5 NPP NMS") - field( ZNAM, "ON" ) - field( ONAM, "OFF" ) - field(ZSV,"MINOR") + field(DESC," TMP1 – Motor em aceleração ") + field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B5 NPP NMS") + field( ZNAM, "ON" ) + field( ONAM, "OFF" ) + field(ZSV,"MINOR") } record(bi , "$(P)$(R)TMPump1-NormalOperation" ) { - field(DESC," TMP1 – Operação Normal ") - field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B7 NPP NMS") - field( ZNAM, "ON" ) - field(ONAM, "OFF" ) - field(OSV,"MINOR") + field(DESC," TMP1 – Operação Normal ") + field( INP, "$(P)$(R)PCF8574:56:REGISTER:READ.B7 NPP NMS") + field( ZNAM, "ON" ) + field(ONAM, "OFF" ) + field(OSV,"MINOR") } ############### @@ -137,87 +132,87 @@ record(bi , "$(P)$(R)TMPump1-NormalOperation" ) { ### TMP2 Controller Inputs ### ############################## record(fanout, "$(P)$(R)PCF8574:57:REGISTER:READ:FNOUT"){ - field(LNK1, "$(P)$(R)TMPump2-Emergency") - field(LNK2, "$(P)$(R)TMPump2-Acceleration") - field(LNK3, "$(P)$(R)TTSystem-tzero") - field(LNK4, "$(P)$(R)Emergency-PhysButton") + field(LNK1, "$(P)$(R)TMPump2-Emergency") + field(LNK2, "$(P)$(R)TMPump2-Acceleration") + field(LNK3, "$(P)$(R)TTSystem-tzero") + field(LNK4, "$(P)$(R)Emergency-PhysButton") } record(bi , "$(P)$(R)TMPump2-Emergency") { - field(DESC," TMP2 – Falha ") + field(DESC," TMP2 – Falha ") # field(INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B0 NPP NMS") - field(VAL,"1") - field(ZNAM, "ON" ) - field(ONAM, "OFF" ) - field(ZSV,"MAJOR") + field(VAL,"1") + field(ZNAM, "ON" ) + field(ONAM, "OFF" ) + field(ZSV,"MAJOR") } record(bi , "$(P)$(R)TMPump2-Acceleration") { - field(DESC," TMP2 – START until Normal ") - field( INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B1 NPP NMS") - field( ZNAM, "ON" ) - field( ONAM, "OFF" ) + field(DESC," TMP2 – START until Normal ") + field( INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B1 NPP NMS") + field( ZNAM, "ON" ) + field( ONAM, "OFF" ) } #################################### # TIMING TRIGGER ON/OFF # #################################### record(bi , "$(P)$(R)TTSystem-tzero" ) { - field(DESC,"Trigger control 60s before shot") - field(INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B7") + field(DESC,"Trigger control 60s before shot") + field(INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B7") # field(VAL,"1") - field(ZNAM, "OFF" ) - field(ONAM, "ON" ) + field(ZNAM, "OFF" ) + field(ONAM, "ON" ) } ############################### ### TMP2 Controller Outputs ### ############################### record(bo, "$(P)$(R)TMPump2-Motor" ) { - field(DESC," Motor On/Off ") + field(DESC," Motor On/Off ") # record(bo, "$(P)$(R)TMP2MotorOnOff" ) { - field( OUT, "$(P)$(R)PCF8574:57:REGISTER.B2 PP MS") - field( ZNAM, "ON") - field( ONAM, "OFF") + field( OUT, "$(P)$(R)PCF8574:57:REGISTER.B2 PP MS") + field( ZNAM, "ON") + field( ONAM, "OFF") } ############################## # BUZZER ON/OFF # ############################## record(bo, "$(P)$(R)Buzzer" ) { - field(DESC," Lab Buzzer ") - field(ZNAM, "Off" ) - field(ONAM, "Pulse" ) - field(HIGH, "2.5") - field(FLNK, "$(P)$(R)BuzzerInv" ) - field(VAL, "0") + field(DESC," Lab Buzzer ") + field(ZNAM, "Off" ) + field(ONAM, "Pulse" ) + field(HIGH, "2.5") + field(FLNK, "$(P)$(R)BuzzerInv" ) + field(VAL, "0") } record(calcout, "$(P)$(R)BuzzerInv" ) { - field(INPA, "$(P)$(R)Buzzer NPP MS" ) - field(OUT, "$(P)$(R)PCF8574:57:REGISTER.B3 PP MS" ) - field(OOPT, "On Change" ) - field(CALC, "A?0:1" ) + field(INPA, "$(P)$(R)Buzzer NPP MS" ) + field(OUT, "$(P)$(R)PCF8574:57:REGISTER.B3 PP MS" ) + field(OOPT, "On Change" ) + field(CALC, "A?0:1" ) } ############################## # EMERGENCY MODE # ############################## record(bi, "$(P)$(R)Emergency-PhysButton" ) { - field(DESC,"External Physical Emergency Button") - field(INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B4 NPP NMS") - field(ZNAM, "ON") - field(ONAM, "OFF" ) - field(FLNK, "$(P)$(R)Emergency" ) + field(DESC,"External Physical Emergency Button") + field(INP, "$(P)$(R)PCF8574:57:REGISTER:READ.B4 NPP NMS") + field(ZNAM, "ON") + field(ONAM, "OFF" ) + field(FLNK, "$(P)$(R)Emergency" ) } record(bo, "$(P)$(R)Emergency-UserButton" ) { - field(DESC,"Soft User Emergency Button") - field(ZNAM, "OFF" ) - field(ONAM, "ON") - field(FLNK, "$(P)$(R)Emergency" ) + field(DESC,"Soft User Emergency Button") + field(ZNAM, "OFF" ) + field(ONAM, "ON") + field(FLNK, "$(P)$(R)Emergency" ) } record(calc, "$(P)$(R)Emergency" ) { - field(DESC, "Emergency State") - field(INPA, "$(P)$(R)Emergency-PhysButton.RVAL NPP" ) - field(INPB, "$(P)$(R)Emergency-UserButton.RVAL NPP" ) - field(CALC, "A || B" ) # ! Not + field(DESC, "Emergency State") + field(INPA, "$(P)$(R)Emergency-PhysButton.RVAL NPP" ) + field(INPB, "$(P)$(R)Emergency-UserButton.RVAL NPP" ) + field(CALC, "A || B" ) # ! Not } ############ @@ -237,71 +232,71 @@ record(calc, "$(P)$(R)Emergency" ) { # ROTARY1 PUMP # ############################# record( bo, "$(P)$(R)RPump1-Motor" ) { - field(DESC,"Power to Rotatory Pump 1. Relay 5") - field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B0 PP" ) - field(ZNAM, "Off" ) - field(ONAM, "On" ) - field(VAL,"1") - field(ZSV,"MINOR") + field(DESC,"Power to Rotatory Pump 1. Relay 5") + field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B0 PP" ) + field(ZNAM, "Off" ) + field(ONAM, "On" ) + field(VAL,"1") + field(ZSV,"MINOR") } ############################# # ROTARY1 VALVE # ############################# record( bo, "$(P)$(R)RPump1-Valve" ) { - field(DESC,"Abre a valvula da bomba rot. Relay 4") - field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B1 PP" ) - field(ZNAM, "Closed" ) - field(ONAM, "Open" ) - field(VAL,"1") + field(DESC,"Abre a valvula da bomba rot. Relay 4") + field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B1 PP" ) + field(ZNAM, "Closed" ) + field(ONAM, "Open" ) + field(VAL,"1") } ############################# # ROTARY2 PUMP # ############################# record( bo, "$(P)$(R)RPump2-Motor" ) { - field(DESC,"Power On Rotatory Pump 2") - field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B2 PP" ) - field(ZNAM, "Off" ) - field(ONAM, "On" ) - field(VAL,"1") - field(ZSV,"MINOR") + field(DESC,"Power On Rotatory Pump 2") + field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B2 PP" ) + field(ZNAM, "Off" ) + field(ONAM, "On" ) + field(VAL,"1") + field(ZSV,"MINOR") } ############################# # ROTARY2 VALVE # ############################# record( bo, "$(P)$(R)RPump2-Valve" ) { - field(DESC," Abre a valvula da bomba rotatoria 2 ") - field(OUT,"$(P)$(R)PCF8574:60:REGISTER.B3 PP" ) - field(ZNAM,"Closed" ) - field(ONAM,"Open" ) - field(VAL,"1") + field(DESC," Abre a valvula da bomba rotatoria 2 ") + field(OUT,"$(P)$(R)PCF8574:60:REGISTER.B3 PP" ) + field(ZNAM,"Closed" ) + field(ONAM,"Open" ) + field(VAL,"1") } ################################ # FILAMENT ON/OFF # ################################ record(bo, "$(P)$(R)VVessel-Filament" ) { - field(DESC,"Vacuum Vessel Filament power") + field(DESC,"Vacuum Vessel Filament power") # record(bo, "$(P)$(R)FilamentOnOff" ) { - field( OUT, "$(P)$(R)PCF8574:60:REGISTER.B4 PP" ) - field( ZNAM, "On" ) - field( ONAM, "Off" ) - field(VAL,"1") - field(PINI,"YES") + field( OUT, "$(P)$(R)PCF8574:60:REGISTER.B4 PP" ) + field( ZNAM, "On" ) + field( ONAM, "Off" ) + field(VAL,"1") + field(PINI,"YES") } ############################## # LIGHTS ON/OFF # ############################## record(bo, "$(P)$(R)Lab-WarningLight" ) { - field(DESC," Luzes de sinalização, 220V ") + field(DESC," Luzes de sinalização, 220V ") # record(bo, "$(P)$(R)LightsOnOff" ) { - field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B5 PP" ) - field(ZNAM, "On" ) - field(ONAM, "Off" ) - field(VAL,"1") + field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B5 PP" ) + field(ZNAM, "On" ) + field(ONAM, "Off" ) + field(VAL,"1") } ############ @@ -314,10 +309,10 @@ record(bo, "$(P)$(R)Lab-WarningLight" ) { ############################## record(bo, "$(P)$(R)Clean-TorContactor" ) { # field(DESC," Contactor 220V do transformador para a fonte de campo toroidal das descargas de limpeza (500 A) ") - field( OUT, "$(P)$(R)PCF8574:60:REGISTER.B7 PP" ) - field( ZNAM, "On" ) - field( ONAM, "Off" ) - field(VAL,"1") + field( OUT, "$(P)$(R)PCF8574:60:REGISTER.B7 PP" ) + field( ZNAM, "On" ) + field( ONAM, "Off" ) + field(VAL,"1") } ############### @@ -331,34 +326,34 @@ record(bo, "$(P)$(R)Clean-TorContactor" ) { ############################ record(bo, "$(P)$(R)Clean-TorPneuBreaker" ) { ## field(DESC," Interruptor de ar comprimido do transformador para a fonte de campo toroidal das descargas de limpeza (500 A)") - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B0 PP" ) - field( ZNAM, "On" ) - field( ONAM, "Off" ) - field(VAL,"1") + field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B0 PP" ) + field( ZNAM, "On" ) + field( ONAM, "Off" ) + field(VAL,"1") } record(bo, "$(P)$(R)Shot-TorPSDisable" ) { # field(DESC," É desligado na emergência e em qualquer estado que não seja Process ou Wait Shot.") - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B1 PP" ) - field( ZNAM, "Off" ) - field( ONAM, "On" ) - field(VAL,"1") + field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B1 PP" ) + field( ZNAM, "Off" ) + field( ONAM, "On" ) + field(VAL,"1") } record(bo, "$(P)$(R)Shot-TorPSTrigger" ) { - field(DESC," Trigger da FRAEP") - field( ZNAM, "Off" ) - field( ONAM, "Pulse" ) - field( HIGH, "2.5") - field( FLNK, "$(P)$(R)Shot-TorPSTriggerInv" ) - field(VAL,"0") + field(DESC," Trigger da FRAEP") + field( ZNAM, "Off" ) + field( ONAM, "Pulse" ) + field( HIGH, "2.5") + field( FLNK, "$(P)$(R)Shot-TorPSTriggerInv" ) + field(VAL,"0") } record(calcout, "$(P)$(R)Shot-TorPSTriggerInv" ) { # field(DESC," $(R)") - field( INPA, "$(P)$(R)ToroidalShotTriggerOnOff NPP MS" ) - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B2 PP MS" ) - field( OOPT, "On Change" ) - field( CALC, "A?0:1" ) + field( INPA, "$(P)$(R)ToroidalShotTriggerOnOff NPP MS" ) + field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B2 PP MS" ) + field( OOPT, "On Change" ) + field( CALC, "A?0:1" ) } ############################################################ @@ -368,10 +363,10 @@ record(calcout, "$(P)$(R)Shot-TorPSTriggerInv" ) { record(bo, "$(P)$(R)CapBank-Charge" ) { ## field(DESC," Contactor 220V do circuito de carga do banco de condensadores p/ SHOT (ELCO) ") #record(bo, "$(P)$(R)CapBankChargeOnOff" ) { - field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B3 PP" ) - field(ZNAM, "On" ) - field(ONAM, "Off" ) - field(VAL,"1") + field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B3 PP" ) + field(ZNAM, "On" ) + field(ONAM, "Off" ) + field(VAL,"1") } ######################################## @@ -380,10 +375,10 @@ record(bo, "$(P)$(R)CapBank-Charge" ) { record(bo, "$(P)$(R)Clean-PrimContactor" ) { # field(DESC," Contactor 220V do para o primário das descargas de limpeza ") # record(bo, "$(P)$(R)PrimaryCleanContactorOnOff" ) { - field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B4 PP MS" ) - field(ZNAM, "On" ) - field(ONAM, "Off" ) - field(VAL,"1") + field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B4 PP MS" ) + field(ZNAM, "On" ) + field(ONAM, "Off" ) + field(VAL,"1") } #################################### @@ -391,11 +386,11 @@ record(bo, "$(P)$(R)Clean-PrimContactor" ) { #################################### record(bo, "$(P)$(R)Clean-PrimPneuBreaker"){ #record(bo, "$(P)$(R)PrimaryCleanBreakerOnOff"){ - field( DESC, "Primary Cleaning OnOff") - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B5 PP" ) - field( ZNAM, "On") - field( ONAM, "Off") - field(VAL,"1") + field( DESC, "Primary Cleaning OnOff") + field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B5 PP" ) + field( ZNAM, "On") + field( ONAM, "Off") + field(VAL,"1") } ################################## @@ -404,22 +399,22 @@ record(bo, "$(P)$(R)Clean-PrimPneuBreaker"){ record(bo, "$(P)$(R)GasIS-Valves" ) { # field(DESC," 2 válvulas pneumáticas de corte do sistema de injecção de H/D/Ne/He no TOK, 24V out = deixa passar") # record(bo, "$(P)$(R)GISValvesOnOff" ) { - field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B6 PP" ) - field( ZNAM, "On" ) - field( ONAM, "Off" ) - field(VAL,"1") + field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B6 PP" ) + field( ZNAM, "On" ) + field( ONAM, "Off" ) + field(VAL,"1") } ########################################## # CAP BANK DISCHARGE ON/OFF # ########################################## record(bo, "$(P)$(R)CapBank-Discharge" ) { - field(DESC," Liga o circuito de descarga do ELCO ") + field(DESC," Liga o circuito de descarga do ELCO ") # record(bo, "$(P)$(R)CapBankDischargeOnOff" ) { - field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B7 PP" ) - field(ZNAM, "On" ) - field(ONAM, "Off" ) - field(VAL,"1") + field(OUT, "$(P)$(R)PCF8574:61:REGISTER.B7 PP" ) + field(ZNAM, "On" ) + field(ONAM, "Off" ) + field(VAL,"1") } #record(bo,"$(P)$(R)Primary-PressureCondition"){ @@ -431,9 +426,9 @@ record(bo, "$(P)$(R)CapBank-Discharge" ) { record(ai,"$(P)$(R)TMPump2-Speed"){ # field(DESC," ADC Pump speed 0-10V ") #record(ai,"$(P)$(R)Turbo2_Speed"){ - field(PREC,"3") - field(EGU,"RPM") - field(VAL,"0") + field(PREC,"3") + field(EGU,"RPM") + field(VAL,"0") } ####################### @@ -442,8 +437,8 @@ record(ai,"$(P)$(R)TMPump2-Speed"){ record(bo, "$(P)$(R)TMPump1-ManualValve"){ # field(DESC," $(R)") #record(bo, "$(P)$(R)TMPManualValve"){ - info(autosaveFields, "VAL") - field( DESC, "State of manual valve") - field( ZNAM, "Closed") - field( ONAM, "Open") + info(autosaveFields, "VAL") + field( DESC, "State of manual valve") + field( ZNAM, "Closed") + field( ONAM, "Open") } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8574.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8574.db index 08c0df5..aa02137 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8574.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8574.db @@ -18,20 +18,20 @@ # ### Read/Write pcf8574 address 0x38=56 register ### # ################################################### record( mbboDirect, "$(P)$(R)PCF8574:56:REGISTER") { - field(DTYP, "stream") - field(OUT, "@pcf8574.proto wReg(56) I2C") - field(SHFT, "0") - field(NOBT, "8") - field(VAL, 255) + field(DTYP, "stream") + field(OUT, "@pcf8574.proto wReg(56) $(BUS)") + field(SHFT, "0") + field(NOBT, "8") + field(VAL, 255) # field(PINI,"YES") } record( mbbiDirect, "$(P)$(R)PCF8574:56:REGISTER:READ" ) { - field(DTYP, "stream") - field(INP, "@pcf8574.proto rReg(56) I2C") - field(NOBT, "8") - field(SCAN, "1 second") - field(FLNK, "$(P)$(R)PCF8574:56:REGISTER:READ:FNOUT") + field(DTYP, "stream") + field(INP, "@pcf8574.proto rReg(56) $(BUS)") + field(NOBT, "8") + field(SCAN, "1 second") + field(FLNK, "$(P)$(R)PCF8574:56:REGISTER:READ:FNOUT") } ##################################################### @@ -39,7 +39,7 @@ record( mbbiDirect, "$(P)$(R)PCF8574:56:REGISTER:READ" ) { ################################################### record( mbboDirect, "$(P)$(R)PCF8574:57:REGISTER") { field(DTYP, "stream") - field(OUT, "@pcf8574.proto wReg(57) I2C") + field(OUT, "@pcf8574.proto wReg(57) $(BUS)") field(SHFT, "0") field(NOBT, "8") field(VAL, 255) @@ -48,7 +48,7 @@ record( mbboDirect, "$(P)$(R)PCF8574:57:REGISTER") { record( mbbiDirect, "$(P)$(R)PCF8574:57:REGISTER:READ" ) { field(DTYP, "stream") - field(INP, "@pcf8574.proto rReg(57) I2C") + field(INP, "@pcf8574.proto rReg(57) $(BUS)") field(NOBT, "8") field(SCAN, "1 second") field(FLNK, "$(P)$(R)PCF8574:57:REGISTER:READ:FNOUT") @@ -59,7 +59,7 @@ record( mbbiDirect, "$(P)$(R)PCF8574:57:REGISTER:READ" ) { ################################################### record( mbboDirect, "$(P)$(R)PCF8574:60:REGISTER") { field( DTYP, "stream") - field( OUT, "@pcf8574.proto wReg(60) I2C") + field( OUT, "@pcf8574.proto wReg(60) $(BUS)") field( SHFT, "0") field( NOBT, "8") field(VAL, 255) @@ -68,7 +68,7 @@ record( mbboDirect, "$(P)$(R)PCF8574:60:REGISTER") { record( mbbiDirect, "$(P)$(R)PCF8574:60:REGISTER:READ" ) { field( DTYP, "stream") - field( INP, "@pcf8574.proto rReg(60) I2C") + field( INP, "@pcf8574.proto rReg(60) $(BUS)") field(NOBT, "8") field(SCAN, "1 second") # field(FLNK, "$(P)$(R)PCF8574:60:REGISTER:READ:FNOUT") @@ -80,7 +80,7 @@ record( mbbiDirect, "$(P)$(R)PCF8574:60:REGISTER:READ" ) { ################################################### record( mbboDirect, "$(P)$(R)PCF8574:61:REGISTER") { field( DTYP, "stream") - field( OUT, "@pcf8574.proto wReg(61) I2C") + field( OUT, "@pcf8574.proto wReg(61) $(BUS)") field( SHFT, "0") field( NOBT, "8") field(VAL, 255) @@ -89,7 +89,7 @@ record( mbboDirect, "$(P)$(R)PCF8574:61:REGISTER") { record( mbbiDirect, "$(P)$(R)PCF8574:61:REGISTER:READ" ) { field( DTYP, "stream") - field( INP, "@pcf8574.proto rReg(61) I2C") + field( INP, "@pcf8574.proto rReg(61) $(BUS)") field(NOBT, "8") field(SCAN, "1 second") #field(PINI,"YES") diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db index 0aad50b..3ddbfc2 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db @@ -17,18 +17,18 @@ ##################################################### # Read/Write pcf8591 register @ address 0x48=d72 ### # ##################################################### -record( mbboDirect, "$(P)$(R)PCF8591:72:CTRLREGISTER") { - field(DTYP, "stream") - field(OUT, "@pcf8591.proto wReg(72) I2C") - field(SHFT, "0") - field(NOBT, "8") - field(VAL, 255) - field(PINI,"YES") +record(mbboDirect, "$(P)$(R)PCF8591:72:CTRLREGISTER") { + field(DTYP, "stream") + field(OUT, "@pcf8591.proto wReg(72) $(BUS)") + field(SHFT, "0") + field(NOBT, "8") + field(VAL, 255) + field(PINI,"YES") } # Receiving two bytes. last one counts record( longin, "$(P)$(R)PCF8591:72:ADC_CH1" ) { - field(DTYP, "stream") - field(INP, "@pcf8591.proto rConvAdc0(72) I2C") + field(DTYP, "stream") + field(INP, "@pcf8591.proto rConvAdc0(72) $(BUS)") } record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH1" ) { field(INPA, "$(P)$(R)PCF8591:72:ADC_CH1 PP NMS") @@ -37,29 +37,29 @@ record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH1" ) { } record( ai, "$(P)$(R)TMPump2-Speed" ) { - field(DESC, "TMPump2-Speed") - field(DTYP, "Raw Soft Channel" ) - field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH1 PP NMS") + field(DESC, "TMPump2-Speed") + field(DTYP, "Raw Soft Channel" ) + field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH1 PP NMS") # field(SCAN, "1 second") - field(ASLO, "16" ) - field(AOFF, "0" ) - field(EGU, "RPM" ) - field(PREC, "3" ) - field(HOPR, "5000" ) - field(LOPR, "0" ) - field(LOW, "200.0") -# # field(LOLO,"0.0") - field(LSV, "MINOR") -# # field(LLSV,"MAJOR") + field(ASLO, "16" ) + field(AOFF, "0" ) + field(EGU, "RPM" ) + field(PREC, "3" ) + field(HOPR, "5000" ) + field(LOPR, "0" ) + field(LOW, "200.0") +# field(LOLO,"0.0") + field(LSV, "MINOR") +# field(LLSV,"MAJOR") } record( longin, "$(P)$(R)PCF8591:72:ADC_CH2" ) { - field(DTYP, "stream") - field(INP, "@pcf8591.proto rConvAdc1(72) I2C") + field(DTYP, "stream") + field(INP, "@pcf8591.proto rConvAdc1(72) $(BUS)") } record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH2" ) { - field(INPA, "$(P)$(R)PCF8591:72:ADC_CH2 PP NMS") + field(INPA, "$(P)$(R)PCF8591:72:ADC_CH2 PP NMS") # LSB i=last byte received - field(CALC, " (A & 255)" ) + field(CALC, "(A & 255)" ) } record( ai, "$(P)$(R)TMPump2-Current" ) { @@ -82,7 +82,7 @@ record( ai, "$(P)$(R)TMPump2-Current" ) { # Receiving two bytes. last one counts record( longin, "$(P)$(R)PCF8591:72:ADC_CH3" ) { field(DTYP, "stream") - field(INP, "@pcf8591.proto rConvAdc2(72) I2C") + field(INP, "@pcf8591.proto rConvAdc2(72) $(BUS)") } record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH3" ) { field(INPA, "$(P)$(R)PCF8591:72:ADC_CH3 PP NMS") @@ -110,7 +110,7 @@ record(ai, "$(P)$(R)Shot-TorPSCurrentImage" ) { record( longout, "$(P)$(R)PCF8591:72:DAC") { field(DTYP, "stream") - field(OUT, "@pcf8591.proto wDac(72) I2C") + field(OUT, "@pcf8591.proto wDac(72) $(BUS)") field(DRVH, "255" ) field(DRVL, "0" ) field(VAL, 128) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto index 305b265..738bc78 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8574.proto @@ -1,5 +1,5 @@ Terminator = ""; -LockTimeout = 200; +LockTimeout = 500; ReplyTimeout = 100; ReadTimeout = 100; WriteTimeout = 100; diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto index 7e10313..c7765e9 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/pcf8591.proto @@ -1,11 +1,11 @@ Terminator = ""; -LockTimeout = 500; +LockTimeout = 200; ReplyTimeout = 100; ReadTimeout = 100; WriteTimeout = 100; MaxInput = 2; ExtraInput = Error; - + rReg { out ${1}; in "%01r"; @@ -17,7 +17,7 @@ rReg { # Bits 4,5 ADC configuration . 00 = four single ended channels # Bits 6 : DAC Output enable bit # Bits 7 : =0 - + rConvAdc0 { out ${1} 64; in "%02r"; diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index b5bbbba..2ce6435 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,4 +1,5 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 210511-172433 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 210512-110358 +! 1 channel(s) not connected - or not all gets were successful ISTTOK:central:PULSE-NUMBER.VAL 0 ISTTOK:central:LogMessage.VAL ISTTOK:central:LASTOPSTATE.VAL 5 @@ -7,5 +8,5 @@ ISTTOK:central:PROCESS-MODE.VAL 0 ISTTOK:central:CLEANINGMANMODE.VAL 0 ISTTOK:central:Emergency-UserButton.VAL 0 ISTTOK:central:TMPump1-ManualValve.VAL 0 -ISTTOK:central:Shot-TorPSCurrent 1 +#ISTTOK:central:Shot-TorPSCurrent Search Issued diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 6952723..4181440 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -21,7 +21,7 @@ drvAsynI2CConfigure( "I2C", "/dev/i2c-1", 1 ) dbLoadRecords("db/ISTTOKstates.db","P=ISTTOK:,R=central:") dbLoadRecords("db/ISTTOKpcf8574.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKpcf8591.db","P=ISTTOK:,R=central:,BUS=I2C") -dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") +#dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") ## Load Serial drivers @@ -44,7 +44,7 @@ drvAsynIPPortConfigure("L0","193.136.136.3:25",0,1,0) dbLoadRecords("db/sendmail.db", "P=ISTTOK:,PORT=L0,R=central:,L=0,A=0") -# Uncomment to Debug STREAM serial activity +# Uncomment to Debug STREAMDEVICE serial activity #var streamError 1 #var streamDebug 1 streamSetLogfile("logfile.txt") From 4c48cd3848c5b99d46e21e718891bf04dc7d05f8 Mon Sep 17 00:00:00 2001 From: bernardo carvalho Date: Sun, 10 Oct 2021 21:52:32 +0100 Subject: [PATCH 11/17] changed RS485 addreses Signed-off-by: bernardo carvalho --- .../ISTTOKrpi2App/Db/ISTTOKpfeiffer.db | 47 ++++++++++--------- .../ISTTOKrpi2App/Db/pfeiffer.proto | 6 +-- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db index f2d6a7c..15d01fd 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/ISTTOKpfeiffer.db @@ -1,29 +1,35 @@ +# 8/5/2021 Only sensor 2 is working. Running with dspIC +# 20/9/2021 sensors 1,2,3 are working. Running with dspIC record (longin, "$(P)$(R)P001:M") { field (DESC, "getPressure001 $(bus)") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure001($(P)$(R)P001:E) $(bus)") + field (SCAN, "I/O Intr") # field (SCAN, "1 second") - field (FLNK, "$(P)$(R)VVessel-Pressure") + field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") } record (longin, "$(P)$(R)P001:E") { field (DESC, "Pressure001 exponent $(bus)") } -record (calc, "$(P)$(R)VVessel-Pressure") +record (calc, "$(P)$(R)TMPump1-PressureAdmission") { - field (DESC, "ISTTOK:central:VVessel-Pressure") + field(DESC, "ISTTOK:central:TMPump1-PressureAdmission") field(INPA, "$(P)$(R)P001:M") field(INPB, "$(P)$(R)P001:E") - field(CALC, "(A*0.001)*10.0**(B-20)") + field(CALC, "(A*0.001)* 10.0**(B-20)") field(PREC, "3") field(EGU, "mBar") - field(HIHI,"1.0e-1") - field(HIGH,"1.0e-2") - field(HHSV,"MAJOR") - field(HSV, "MINOR") + field(HIHI,"1.0e-2") + field(HIGH,"1.0e-3") +# field(LOW, "20.0") +# field(LOLO,"0.0") + field(HHSV,"MAJOR") + field(HSV, "MINOR") +# field(LSV, "MINOR") +# field(LLSV,"MAJOR") } -# 8/5/2021 Only sensor 2 is working. Running with dspIC record (longin, "$(P)$(R)P002:M") { field (DESC, "getPressure002 $(bus)") @@ -61,30 +67,26 @@ record (longin, "$(P)$(R)P003:M") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure003($(P)$(R)P003:E) $(bus)") # field (SCAN, "1 second") -# field (SCAN, "I/O Intr") - field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") + field (SCAN, "I/O Intr") + field (FLNK, "$(P)$(R)VVessel-Pressure") } record (longin, "$(P)$(R)P003:E") { field (DESC, "Pressure003 Exponent $(bus)") } -record (calc, "$(P)$(R)TMPump1-PressureAdmission") +record (calc, "$(P)$(R)VVessel-Pressure") { - field(DESC, "ISTTOK:central:TMPump1-PressureAdmission") + field (DESC, "ISTTOK:central:VVessel-Pressure") field(INPA, "$(P)$(R)P003:M") field(INPB, "$(P)$(R)P003:E") - field(CALC, "(A*0.001)* 10.0**(B-20)") + field(CALC, "(A*0.001)*10.0**(B-20)") field(PREC, "3") field(EGU, "mBar") - field(HIHI,"1.0e-2") - field(HIGH,"1.0e-3") -# field(LOW, "20.0") -# field(LOLO,"0.0") - field(HHSV,"MAJOR") - field(HSV, "MINOR") -# field(LSV, "MINOR") -# field(LLSV,"MAJOR") + field(HIHI,"1.0e-1") + field(HIGH,"1.0e-2") + field(HHSV,"MAJOR") + field(HSV, "MINOR") } @@ -94,6 +96,7 @@ record (longin, "$(P)$(R)P004:M") field (DTYP, "stream") field (INP, "@pfeiffer.proto getPressure004($(P)$(R)P004:E) $(bus)") # field (SCAN, "1 second") +# field (SCAN, "I/O Intr") field (FLNK, "$(P)$(R)RPump2-Pressure") } record (longin, "$(P)$(R)P004:E") diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto index bcb4149..ff89182 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto @@ -7,7 +7,7 @@ ReadTimeout = 1500; # Using redirection to read 2 records, mantissa and exponent getPressure001 { - out "0010074002=?106"; +# out "0010074002=?106"; in "0011074006%4u%(\$1)2u%+"; } # out "0020074002=?107"; @@ -15,11 +15,11 @@ getPressure002 { in "0021074006%4u%(\$1)2u%+"; } getPressure003 { - out "0030074002=?108"; +# out "0030074002=?108"; in "0031074006%4u%(\$1)2u%+"; } getPressure004 { - out "0040074002=?109"; +# out "0040074002=?109"; in "0041074006%4u%(\$1)2u%+"; } # From fe811ce78400f6d1a95eb5cc5ade81079971afc5 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Sun, 10 Oct 2021 21:58:51 +0100 Subject: [PATCH 12/17] changed RPI Signed-off-by: Bernardo Carvalho --- .../iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile | 1 + .../ISTTOKrpi2/ISTTOKrpi2App/src/Makefile | 1 + .../ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths | 9 ++--- epics/iocs/RELEASE.local | 36 +++++++++++-------- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile index af95e8b..9cb608e 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/Makefile @@ -6,6 +6,7 @@ include $(TOP)/configure/CONFIG #---------------------------------------------------- # Create and install (or just install) into /db # databases, templates, substitutions like this +#DB += xxx.db DB += ISTTOKpfeiffer.db DB += pfeiffer.proto diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile index 2dbf9be..d2ea8cb 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/Makefile @@ -23,6 +23,7 @@ ISTTOKrpi2_DBD += drvAsynSerialPort.dbd ISTTOKrpi2_DBD += asSupport.dbd # Add all the support libraries needed by this IOC +#ISTTOKrpi2_LIBS += xxx ISTTOKrpi2_LIBS += asyn ISTTOKrpi2_LIBS += stream ISTTOKrpi2_LIBS += autosave diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths index 81e5e03..9cb26c0 100644 --- a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/envPaths @@ -1,7 +1,8 @@ epicsEnvSet("IOC","iocISTTOKrpi2") epicsEnvSet("TOP","/home/pi/ISTTOK/epics/iocs/ISTTOKrpi2") -epicsEnvSet("EPICS_BASE","/home/pi/Apps/epics7/epics-base") +epicsEnvSet("EPICS_BASE","/home/pi/EPICS/epics-base") epicsEnvSet("HOME","/home/pi") -epicsEnvSet("SUPPORT","/home/pi/Apps/epics7/support") -epicsEnvSet("ASYN","/home/pi/Apps/epics7/support/asyn") -epicsEnvSet("STREAM","/home/pi/Apps/epics7/support/StreamDevice") +epicsEnvSet("SUPPORT","/home/pi/EPICS/support") +epicsEnvSet("ASYN","/home/pi/EPICS/support/asyn") +epicsEnvSet("STREAM","/home/pi/EPICS/support/stream") +epicsEnvSet("AUTOSAVE","/home/pi/EPICS/support/autosave") diff --git a/epics/iocs/RELEASE.local b/epics/iocs/RELEASE.local index b82440a..1386f4f 100644 --- a/epics/iocs/RELEASE.local +++ b/epics/iocs/RELEASE.local @@ -1,23 +1,29 @@ #RELEASE Location of external products HOME=/home/pi -SUPPORT=$(HOME)/Apps/epics7/support -# -# -ASYN=$(SUPPORT)/asyn -STREAM=$(SUPPORT)/StreamDevice -#CALC=$(SUPPORT)/calc -AUTOSAVE = $(SUPPORT)/autosave -DRVASYNI2C =$(SUPPORT)/drvAsynI2C -#SNCSEQ=$(SUPPORT)/seq-2-2 +SUPPORT=$(HOME)/EPICS/support + +# IPAC is only necessary if support for Greensprings IP488 is required # IPAC release V2-7 or later is required. +# IPAC=$(SUPPORT)/ipac-2-15 #IPAC= -#$(SUPPORT)/ipac-2-15 -# -# # SEQ is required for testIPServer -#$(SUPPORT)/seq-2-2-5 + +ASYN=$(SUPPORT)/asyn +STREAM=$(SUPPORT)/stream +AUTOSAVE = $(SUPPORT)/autosave # +# SEQ is required for testIPServer +#SNCSEQ=$(SUPPORT)/seq-2-2-5 +SNCSEQ= + +## For sCalcout support in asynOctet - applications include asynCalc.dbd +#CALC=$(SUPPORT)/calc-3-7-3 CALC= PCRE= -# -EPICS_BASE=$(HOME)/Apps/epics7/epics-base + +# If CALC was built with SSCAN support then SSCAN must be defined for testEpicsApp +#SSCAN=$(SUPPORT)/sscan-2-11-3 + +# EPICS_BASE 3.14.6 or later is required +EPICS_BASE=/home/pi/EPICS/epics-base + From 3d8c3428fc82f27dbda6ef7c9462cc64721a1025 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 11 Oct 2021 11:10:35 +0100 Subject: [PATCH 13/17] changed PollPeriod = ; param Signed-off-by: Bernardo Carvalho --- epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto index ff89182..9c118b7 100644 --- a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Db/pfeiffer.proto @@ -1,9 +1,14 @@ Terminator=CR; -#MaxInput = 20; +MaxInput = 30; +ExtraInput = Ignore; # in millisecond -ReadTimeout = 1500; -#ReplyTimeout = 250; +#ReadTimeout = 1500; +#ReplyTimeout = 100; +#PollPeriod = $ReplyTimeout; +#Integer. Affects first in command in I/O Intr mode (see chapter Record Processing). +PollPeriod = 250; + # Using redirection to read 2 records, mantissa and exponent getPressure001 { From 514eb82e224779361fbe0844aaaa5c63fd4fd03f Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 11 Oct 2021 11:20:11 +0100 Subject: [PATCH 14/17] added .gitignore and project files Signed-off-by: Bernardo Carvalho --- epics/iocs/ISTTOKrpi2/.gitignore | 6 ++++ epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Makefile | 8 +++++ .../ISTTOKrpi2App/src/ISTTOKrpi2Main.cpp | 23 ++++++++++++++ epics/iocs/ISTTOKrpi2/Makefile | 31 +++++++++++++++++++ epics/iocs/ISTTOKrpi2/iocBoot/Makefile | 6 ++++ .../ISTTOKrpi2/iocBoot/iocISTTOKrpi2/Makefile | 5 +++ .../iocISTTOKrpi2/save/iocISTTOKrpi2.sav | 4 +++ 7 files changed, 83 insertions(+) create mode 100644 epics/iocs/ISTTOKrpi2/.gitignore create mode 100644 epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Makefile create mode 100644 epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/ISTTOKrpi2Main.cpp create mode 100644 epics/iocs/ISTTOKrpi2/Makefile create mode 100644 epics/iocs/ISTTOKrpi2/iocBoot/Makefile create mode 100644 epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/Makefile create mode 100755 epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/save/iocISTTOKrpi2.sav diff --git a/epics/iocs/ISTTOKrpi2/.gitignore b/epics/iocs/ISTTOKrpi2/.gitignore new file mode 100644 index 0000000..c567f5c --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/.gitignore @@ -0,0 +1,6 @@ +O.* +bin/* +iocBoot/iocISTTOKrpi2/save/* +db +dbd +configure diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Makefile b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Makefile new file mode 100644 index 0000000..10e0126 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/Makefile @@ -0,0 +1,8 @@ +TOP = .. +include $(TOP)/configure/CONFIG +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*)) +include $(TOP)/configure/RULES_DIRS + diff --git a/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/ISTTOKrpi2Main.cpp b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/ISTTOKrpi2Main.cpp new file mode 100644 index 0000000..8592f8d --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/ISTTOKrpi2App/src/ISTTOKrpi2Main.cpp @@ -0,0 +1,23 @@ +/* ISTTOKrpi2Main.cpp */ +/* Author: Marty Kraimer Date: 17MAR2000 */ + +#include +#include +#include +#include +#include + +#include "epicsExit.h" +#include "epicsThread.h" +#include "iocsh.h" + +int main(int argc,char *argv[]) +{ + if(argc>=2) { + iocsh(argv[1]); + epicsThreadSleep(.2); + } + iocsh(NULL); + epicsExit(0); + return(0); +} diff --git a/epics/iocs/ISTTOKrpi2/Makefile b/epics/iocs/ISTTOKrpi2/Makefile new file mode 100644 index 0000000..19c9068 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/Makefile @@ -0,0 +1,31 @@ +# Makefile at top of application tree +TOP = . +include $(TOP)/configure/CONFIG + +# Directories to build, any order +DIRS += configure +DIRS += $(wildcard *Sup) +DIRS += $(wildcard *App) +DIRS += $(wildcard *Top) +DIRS += $(wildcard iocBoot) + +# The build order is controlled by these dependency rules: + +# All dirs except configure depend on configure +$(foreach dir, $(filter-out configure, $(DIRS)), \ + $(eval $(dir)_DEPEND_DIRS += configure)) + +# Any *App dirs depend on all *Sup dirs +$(foreach dir, $(filter %App, $(DIRS)), \ + $(eval $(dir)_DEPEND_DIRS += $(filter %Sup, $(DIRS)))) + +# Any *Top dirs depend on all *Sup and *App dirs +$(foreach dir, $(filter %Top, $(DIRS)), \ + $(eval $(dir)_DEPEND_DIRS += $(filter %Sup %App, $(DIRS)))) + +# iocBoot depends on all *App dirs +iocBoot_DEPEND_DIRS += $(filter %App,$(DIRS)) + +# Add any additional dependency rules here: + +include $(TOP)/configure/RULES_TOP diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/Makefile b/epics/iocs/ISTTOKrpi2/iocBoot/Makefile new file mode 100644 index 0000000..91e47d0 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/iocBoot/Makefile @@ -0,0 +1,6 @@ +TOP = .. +include $(TOP)/configure/CONFIG +DIRS += $(wildcard *ioc*) +DIRS += $(wildcard as*) +include $(CONFIG)/RULES_DIRS + diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/Makefile b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/Makefile new file mode 100644 index 0000000..e1b9aa4 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/Makefile @@ -0,0 +1,5 @@ +TOP = ../.. +include $(TOP)/configure/CONFIG +ARCH = $(EPICS_HOST_ARCH) +TARGETS = envPaths +include $(TOP)/configure/RULES.ioc diff --git a/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/save/iocISTTOKrpi2.sav b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/save/iocISTTOKrpi2.sav new file mode 100755 index 0000000..8a0fdb4 --- /dev/null +++ b/epics/iocs/ISTTOKrpi2/iocBoot/iocISTTOKrpi2/save/iocISTTOKrpi2.sav @@ -0,0 +1,4 @@ +# autosave R5.3 Automatically generated - DO NOT MODIFY - 211011-110712 +ISTTOK:vacuum:RPump1-Pressure.HIGH 0.05 +ISTTOK:vacuum:RPump1-Pressure.HIHI 0.1 + From 2743219a13011ebcd668a6512a706a58cedcbcfa Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 29 Nov 2021 09:36:37 +0000 Subject: [PATCH 15/17] working 10/2021 Signed-off-by: Bernardo Carvalho --- .../ISTTOKrpiApp/Db/ISTTOKpcf8591.db | 22 +++++++++--------- epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi | Bin 0 -> 50620 bytes epics/iocs/ISTTOKrpi/bin/linux-arm/sncProgram | Bin 0 -> 9220 bytes .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 2 +- epics/iocs/RELEASE.local | 7 ++++++ 5 files changed, 19 insertions(+), 12 deletions(-) create mode 100755 epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi create mode 100755 epics/iocs/ISTTOKrpi/bin/linux-arm/sncProgram diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db index 3ddbfc2..304a697 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpcf8591.db @@ -90,17 +90,17 @@ record( calc, "$(P)$(R)PCF8591:72:BYTE2_CH3" ) { field(CALC, " (A & 255 )" ) } record(ai, "$(P)$(R)Shot-TorPSCurrentImage" ) { - field(DESC, "Toroidal Current Image") - field(DTYP, "Raw Soft Channel" ) - field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH3 PP NMS") - # field(SCAN, ".2 second") - field(ASLO, "39.215686275" ) - field(AOFF, "0.0" ) - field(EGU, "A" ) - field(PREC, "3" ) - field(HOPR, "10000" ) - field(LOPR, "0" ) - field(MDEL, "20" ) + field(DESC, "Toroidal Current Image") + field(DTYP, "Raw Soft Channel" ) + field(INP, "$(P)$(R)PCF8591:72:BYTE2_CH3 PP NMS") + field(SCAN, ".2 second") + field(ASLO, "39.215686275" ) + field(AOFF, "0.0" ) + field(EGU, "A" ) + field(PREC, "3" ) + field(HOPR, "10000" ) + field(LOPR, "0" ) + field(MDEL, "20" ) # field(LOW, "200.0") # # field(LOLO,"0.0") # field(LSV, "MINOR") diff --git a/epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi b/epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi new file mode 100755 index 0000000000000000000000000000000000000000..78da42845c73a9141d1f00e33b38f174f2437f52 GIT binary patch literal 50620 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 literal 0 HcmV?d00001 diff --git a/epics/iocs/ISTTOKrpi/bin/linux-arm/sncProgram b/epics/iocs/ISTTOKrpi/bin/linux-arm/sncProgram new file mode 100755 index 0000000000000000000000000000000000000000..856e04d9b1cc326f13fba89417244df6e0e51a8f GIT binary patch literal 9220 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 z zz~##rp5*WqdMyM;p{gHjBN-&7O+-6#>3#sAU4tsVs}Cci!CHJ4Ex8T?O|rsZl@VQSO3h9`8+IRHm67|zU1*9I0zo+uXei6PauN%g&hTX7i*HEqyA$E^2%t{FTe|F z0G}K>`s`!vj)3RKgyj0SA*>&w*d Ap#T5? literal 0 HcmV?d00001 diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 4181440..bf1002d 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -21,7 +21,7 @@ drvAsynI2CConfigure( "I2C", "/dev/i2c-1", 1 ) dbLoadRecords("db/ISTTOKstates.db","P=ISTTOK:,R=central:") dbLoadRecords("db/ISTTOKpcf8574.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKpcf8591.db","P=ISTTOK:,R=central:,BUS=I2C") -#dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") +dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") ## Load Serial drivers diff --git a/epics/iocs/RELEASE.local b/epics/iocs/RELEASE.local index d1d65cb..898f199 100644 --- a/epics/iocs/RELEASE.local +++ b/epics/iocs/RELEASE.local @@ -7,6 +7,13 @@ ASYN=$(SUPPORT)/asyn STREAM=$(SUPPORT)/StreamDevice #CALC=$(SUPPORT)/calc AUTOSAVE = $(SUPPORT)/autosave + +## Using this driver in combination with streamDevice +## requires a workaround forbidding read queries with +## a max length of 256 byte. To compile the driver with +## with workaround enabled, uncomment the following line +#in configure/RELEASE +#STREAM_WORKAROUND = 1 DRVASYNI2C =$(SUPPORT)/drvAsynI2C SNCSEQ=$(SUPPORT)/seq-2-2 From 1a43cf78f02236489453d8be1dbb39bc5cef8544 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 29 Nov 2021 17:27:13 +0000 Subject: [PATCH 16/17] added UPS Records --- .../ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db | 18 + .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 308 ++++++++++-------- .../iocBoot/iocISTTOKrpi/access_security.acf | 3 +- .../iocBoot/iocISTTOKrpi/iocISTTOKrpi.req | 1 + .../ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt | 158 ++++----- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 8 +- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 2 +- 7 files changed, 279 insertions(+), 219 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db index 642729b..b4a2706 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db @@ -92,6 +92,24 @@ record(calc, "$(P)$(R)WSHOTCALCSTATE") { # field(SCAN,"1 second") #} +record(bo, "$(P)$(R)UPS-OnBattery") { + info(autosaveFields, "VAL STAT") + field(DESC, "Main APC UPS On Battery status") + field(VAL, "0") + field(ZNAM, "OFF") + field(ONAM, "ON") + field(OSV, "MAJOR") +} + +record(bo, "$(P)$(R)UPS-Shutdown") { + info(autosaveFields, "VAL STAT") + field(DESC, "Main APC UPS Shutdown request") +# field(VAL, "0") + field(ZNAM, "OFF") + field(ONAM, "ON") + field(OSV, "MAJOR") +} + record(bo, "$(P)$(R)OPREQ") { info(autosaveFields, "VAL") field(DESC, "Pulse Sequence Start/Stop") diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 8dd5702..55372d9 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -1,6 +1,7 @@ -/** +/** vim: set filetype=c : + * Use :SyntasticToggleMode * - * Project : ISTTOK slow Control Sequencer + * Project : ISTTOK slow Control Sequencer * Docs: https://www-csr.bessy.de/control/SoftDist/sequencer/ * * File : $Id$ @@ -16,7 +17,7 @@ * **/ //%% #include "errlog.h" - + program IsttokSeqExec %{#include "errlog.h"}% /* CONSTANT DECLARATION*/ @@ -26,7 +27,7 @@ short PCF_RELAY_OFF= 1; short PCF_INPUT_ON = 0; short PCF_INPUT_OFF= 1; short PCF_PULSE_ON = 1; - + short STRST_NonStarting = 0; short STRST_Starting1 = 1; short STRST_Starting2 = 2; @@ -65,12 +66,12 @@ short STPST_StoppingEnd = 4; short POS_Stopped =0; short POS_Starting=1; -short POS_Process =2; +short POS_Idle =2; short POS_Clean =3; short POS_WaitShot=4; short POS_Stopping=5; short POS_Emergency=6; - + short ON=1; short OFF=0; short START=1; @@ -82,31 +83,31 @@ short MINOR=1; short MAJOR=2; short INVALID=3; -/* PV variables */ +/* PV variables */ short IsttokOPSTATE; assign IsttokOPSTATE to "ISTTOK:central:OPSTATE"; monitor IsttokOPSTATE; - + int PulseNumber; assign PulseNumber to "ISTTOK:central:PULSE-NUMBER"; monitor PulseNumber; - + short IsttokLastOPSTATE; assign IsttokLastOPSTATE to "ISTTOK:central:LASTOPSTATE"; monitor IsttokLastOPSTATE; - + short IsttokOPREQ; assign IsttokOPREQ to "ISTTOK:central:OPREQ"; monitor IsttokOPREQ; - + short IsttokProcMode; assign IsttokProcMode to "ISTTOK:central:PROCESS-MODE"; monitor IsttokProcMode; - + short IsttokProcReq; assign IsttokProcReq to "ISTTOK:central:PROCESS-REQ"; monitor IsttokProcReq; - + short STARTINGSTATE; assign STARTINGSTATE to "ISTTOK:central:STARTINGSTATE"; monitor STARTINGSTATE; @@ -121,7 +122,7 @@ monitor CLEANINGMANMODE; short WSHOTINGSTATE; assign WSHOTINGSTATE to "ISTTOK:central:WSHOTINGSTATE"; - + short STOPPINGSTATE; assign STOPPINGSTATE to "ISTTOK:central:STOPPINGSTATE"; monitor STOPPINGSTATE; @@ -150,8 +151,8 @@ assign IsttokTMPump1_MotorOff to "ISTTOK:central:TMPump1-MotorOff"; short IsttokTMPump1_MotorOn; assign IsttokTMPump1_MotorOn to "ISTTOK:central:TMPump1-MotorOn"; -short IsttokTMPump2_Motor; -assign IsttokTMPump2_Motor to "ISTTOK:central:TMPump2-Motor"; +/*short IsttokTMPump2_Motor;*/ +/*assign IsttokTMPump2_Motor to "ISTTOK:central:TMPump2-Motor";*/ short TMPump1NormalOperation; assign TMPump1NormalOperation to "ISTTOK:central:TMPump1-NormalOperation"; @@ -212,37 +213,45 @@ assign IsttokShotClean_TorContactor to "ISTTOK:central:Clean-TorContactor"; short IsttokShotClean_TorPneuBreaker; assign IsttokShotClean_TorPneuBreaker to "ISTTOK:central:Clean-TorPneuBreaker"; - + short IsttokShotShot_TorPSTrigger; assign IsttokShotShot_TorPSTrigger to "ISTTOK:central:Shot-TorPSTrigger"; monitor IsttokShotShot_TorPSTrigger; - + short IsttokShotShot_TorPSDisable; assign IsttokShotShot_TorPSDisable to "ISTTOK:central:Shot-TorPSDisable"; - + short IsttokShotClean_PrimContactor; assign IsttokShotClean_PrimContactor to "ISTTOK:central:Clean-PrimContactor"; - + short IsttokShotClean_PrimPneuBreaker; assign IsttokShotClean_PrimPneuBreaker to "ISTTOK:central:Clean-PrimPneuBreaker"; - + short IsttokShotCountdown; assign IsttokShotCountdown to "ISTTOK:central:COUNTDOWN"; -monitor IsttokShotCountdown; - +monitor IsttokShotCountdown; + string IsttokShotCountdownScan; assign IsttokShotCountdownScan to "ISTTOK:central:COUNTDOWN.SCAN"; - + short IsttokEmergency; assign IsttokEmergency to "ISTTOK:central:Emergency"; monitor IsttokEmergency; - + short IsttokTTSystem_tzero; assign IsttokTTSystem_tzero to "ISTTOK:central:TTSystem-tzero"; monitor IsttokTTSystem_tzero; - + +short IsttokupsBatteryON; +assign IsttokupsBatteryON "{unit}:central:UPS-OnBattery"; +monitor IsttokupsBatteryON; + +short IsttokShutdown; +assign IsttokShutdown "ISTTOK:central:UPS-Shutdown"; +monitor IsttokShutdown; + //string tmp1_stat; - + /* Trace message record limited to 40 characters */ string msg; assign msg to "ISTTOK:central:TraceMessage.VAL"; @@ -258,68 +267,68 @@ ss PulseSequence { strcpy(msg, "INIT: Sequence Entry"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - + strcpy(msg, "Initializing..."); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - + IsttokShotCountdown = 160; pvPut(IsttokShotCountdown); - + // IsttokProcMode = OFF; // UPON POWER-DOWN OR FAILURE PREVENT TO ENTER WAITSHOT ON POWER-UP! // pvPut(IsttokProcMode); - + IsttokShotClean_PrimContactor = PCF_RELAY_OFF; pvPut(IsttokShotClean_PrimContactor); - + IsttokShotClean_PrimPneuBreaker = PCF_RELAY_OFF; pvPut(IsttokShotClean_PrimPneuBreaker); - + IsttokShotBuzzer = PCF_RELAY_OFF; pvPut(IsttokShotBuzzer); - + IsttokShotCapBank_Charge = PCF_RELAY_OFF; pvPut(IsttokShotCapBank_Charge); - + IsttokShotCapBank_Discharge = PCF_RELAY_OFF; pvPut(IsttokShotCapBank_Discharge); - + IsttokShotVVessel_Filament = PCF_RELAY_OFF; pvPut(IsttokShotVVessel_Filament); - + IsttokShotGasIS_Valves = PCF_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); - + IsttokShotLab_WarningLight = PCF_RELAY_OFF; pvPut(IsttokShotLab_WarningLight); - + IsttokShotClean_TorPneuBreaker = PCF_RELAY_OFF; pvPut(IsttokShotClean_TorPneuBreaker); - + IsttokShotClean_TorContactor = PCF_RELAY_OFF; pvPut(IsttokShotClean_TorContactor); - + IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; pvPut(IsttokShotShot_TorPSDisable); - + IsttokShotShot_TorPSTrigger= OFF; pvPut(IsttokShotShot_TorPSTrigger); - + IsttokTMPump1_ControllerOff = OFF; pvPut(IsttokTMPump1_ControllerOff); - + IsttokTMPump1_ControllerOn = OFF; pvPut(IsttokTMPump1_ControllerOn); - + IsttokTMPump1_MotorOff = OFF; pvPut(IsttokTMPump1_MotorOff); - + IsttokTMPump1_MotorOn = OFF; pvPut(IsttokTMPump1_MotorOn); - - IsttokTMPump2_Motor = PCF_RELAY_OFF; - pvPut(IsttokTMPump2_Motor); - + + // IsttokTMPump2_Motor = PCF_RELAY_OFF; + //pvPut(IsttokTMPump2_Motor); + if ((IsttokTMPump1_Power == PCF_INPUT_OFF)) { strcpy(msg, "TMP1 Controller is OFF"); pvPut(msg); @@ -337,7 +346,7 @@ ss PulseSequence { /* State change to Stopping */ // IsttokOPSTATE = POS_Stopping; // pvPut(IsttokOPSTATE); - } state Stopping + } state Stopping when (delay(5) && IsttokOPREQ == START ) { strcpy(msg, "State to Starting"); pvPut(msg); @@ -347,12 +356,13 @@ ss PulseSequence { // pvPut(IsttokOPSTATE); } state Starting } - /* State Stopped */ + +/*********** State Stopped ****************** */ state Stopped { - entry{ + entry{ IsttokLastOPSTATE = POS_Stopped; pvPut(IsttokLastOPSTATE); - } + } when(IsttokEmergency == ON){ strcpy(msg, "Emergency from Stopped"); pvPut(msg); @@ -361,19 +371,21 @@ ss PulseSequence { IsttokOPSTATE = POS_Stopped; pvPut(IsttokOPSTATE); } state Emergency - when (IsttokOPREQ == START) { + + when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON)) { strcpy(msg, "State to Starting"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Starting */ } state Starting } - /* State Starting */ + +/******** State Starting ***********************/ state Starting { - entry{ + entry{ IsttokOPSTATE = POS_Starting; pvPut(IsttokOPSTATE); - } + } when(IsttokEmergency == ON) { strcpy(msg, "Emergency from Starting"); pvPut(msg); @@ -386,40 +398,53 @@ ss PulseSequence { errlogSevPrintf(MINOR, "%s\n",msg); /* Pulse state change to Stopping */ } state Stopping + when (STARTINGSTATE == STRST_StartingEnd ) { - strcpy(msg, "State to Process"); + strcpy(msg, "State to Idle"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - /* Pulse state change to Process*/ - } state Process + /* Pulse state change to Idle*/ + } state Idle } - /* State Process */ - state Process { - entry{ - IsttokOPSTATE = POS_Process; + +/********** State Idle ****************************/ + state Idle { + entry{ + IsttokOPSTATE = POS_Idle; pvPut(IsttokOPSTATE); - IsttokLastOPSTATE = POS_Process; + IsttokLastOPSTATE = POS_Idle; pvPut(IsttokLastOPSTATE); IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; pvPut(IsttokShotShot_TorPSDisable); IsttokProcReq = STOP; pvPut(IsttokProcReq); - } + } + when (IsttokupsBatteryON == ON) { + strcpy(msg, "Power Emergency, go to Stopping"); + pvPut(msg); + errlogSevPrintf(MAJOR, "%s\n",msg); + IsttokOPREQ = STOP; + pvPut(IsttokOPREQ); + /* State change to Stopping */ + IsttokOPSTATE = POS_Stopping; + pvPut(IsttokOPSTATE); + } state Stopping + when(IsttokEmergency == ON){ - strcpy(msg, "Emergency from Process"); + strcpy(msg, "Emergency from Idle"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); /* Pulse state change to Emergency*/ } state Emergency when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokTMPump1_Emergency) != pvStatOK ) { - //when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokRPump2_Pressure) != pvStatOK || + //when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokRPump2_Pressure) != pvStatOK || // pvStatus(IsttokTMPump1_Emergency) != pvStatOK || pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ IsttokOPREQ = STOP; pvPut(IsttokOPREQ); - //strcpy(sendMail, "Vacuum Emergency while Process"); - sprintf(sendMail, "R1:%1.1e T1:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); + //strcpy(sendMail, "Vacuum Emergency while Idle"); + sprintf(sendMail, "Rpump1:%1.1e TMP1:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); pvPut(sendMail); } state Stopping @@ -446,22 +471,23 @@ ss PulseSequence { /* Pulse state change to WaitShot */ } state WaitShot } - /* State Clean */ + +/******* State Clean ***************************/ state Clean { entry{ IsttokOPSTATE = POS_Clean; pvPut(IsttokOPSTATE); - } + } when ((IsttokProcReq==STOP) && (CLEANINGSTATE == CLNST_NonCleaning)) { - strcpy(msg, "State to Process F Clean"); + strcpy(msg, "State to Idle From Clean"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - } state Process + } state Idle when (IsttokOPREQ == STOP) {} state Stopping when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) { - //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || + //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || // pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ IsttokOPREQ = STOP; @@ -478,9 +504,10 @@ ss PulseSequence { /* Pulse state change to Emergency*/ } state Emergency } - /* State WaitShot */ + +/******** State WaitShot *************************/ state WaitShot { - entry{ + entry{ strcpy(msg, "Toroidal Shot Enable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -488,7 +515,17 @@ ss PulseSequence { pvPut(IsttokShotShot_TorPSDisable); IsttokOPSTATE = POS_WaitShot; pvPut(IsttokOPSTATE); - } + } + when (IsttokupsBatteryON == ON) { + strcpy(msg, "Power Emergency, go to Stopping"); + pvPut(msg); + errlogSevPrintf(MAJOR, "%s\n",msg); + IsttokOPREQ = STOP; + pvPut(IsttokOPREQ); + /* State change to Stopping */ + IsttokOPSTATE = POS_Stopping; + pvPut(IsttokOPSTATE); + } state Stopping when(IsttokEmergency == ON){ strcpy(msg, "Emergency from WaitShot"); pvPut(msg); @@ -496,17 +533,17 @@ ss PulseSequence { /* Pulse state change to Emergency*/ } state Emergency when (IsttokProcReq==STOP ) { - strcpy(msg, "State to Process"); + strcpy(msg, "State to Idle"); pvPut(msg); errlogSevPrintf(MINOR, "%s\n",msg); - } state Process + } state Idle when (IsttokOPREQ == STOP) { /* Pulse state change to Stopping */ } state Stopping when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) { - //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || + //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || // pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { /* Vacuum emergency: Pulse state change to Stopping */ IsttokOPREQ = STOP; @@ -516,9 +553,10 @@ ss PulseSequence { errlogSevPrintf(MAJOR, "%s\n",msg); } state Stopping } - /* State Stopping */ + + /* ************** State Stopping *********** */ state Stopping { - entry{ + entry{ /*Just to be sure */ IsttokProcReq = STOP; pvPut(IsttokProcReq); @@ -529,7 +567,7 @@ ss PulseSequence { pvPut(IsttokLastOPSTATE); } - when (IsttokOPREQ == START ) { + when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON) ) { strcpy(msg, "State to Starting"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -552,25 +590,25 @@ ss PulseSequence { errlogSevPrintf(MAJOR, "%s\n",msg); IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; pvPut(IsttokShotShot_TorPSDisable); - + strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBank_Charge = PCF_RELAY_OFF; pvPut(IsttokShotCapBank_Charge); - + strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBank_Discharge = PCF_RELAY_OFF; pvPut(IsttokShotCapBank_Discharge); - + strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGasIS_Valves = PCF_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); - + strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); @@ -578,23 +616,23 @@ ss PulseSequence { pvPut(IsttokShotVVessel_Filament); } when (delay(1.0) && (IsttokEmergency == OFF) && (IsttokOPSTATE == POS_WaitShot || IsttokOPSTATE==POS_Clean) ){ - /* Pulse state change to Process */ - strcpy(msg, "State to Process"); + /* Pulse state change to Idle */ + strcpy(msg, "State to Idle"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokProcReq = STOP; pvPut(IsttokProcReq); - IsttokOPSTATE = POS_Process; + IsttokOPSTATE = POS_Idle; pvPut(IsttokOPSTATE); - } state Process - when (delay(1.0) && (IsttokEmergency == OFF) && (IsttokOPSTATE == POS_Process)){ - /* Pulse state change to Process */ - strcpy(msg, "State to Process"); + } state Idle + when (delay(1.0) && (IsttokEmergency == OFF) && (IsttokOPSTATE == POS_Idle)){ + /* Pulse state change to Idle */ + strcpy(msg, "State to Idle"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokOPSTATE = POS_Process; + IsttokOPSTATE = POS_Idle; pvPut(IsttokOPSTATE); - } state Process + } state Idle when (delay(1.0) && (IsttokEmergency == OFF) && (IsttokOPSTATE == POS_Starting)){ // TODO Check these 2 transictions strcpy(msg, "State to Stopped"); @@ -608,7 +646,7 @@ ss PulseSequence { } state Stopped when (delay(1.0) && (IsttokEmergency == OFF) && (IsttokOPSTATE == POS_Stopped)){ - + strcpy(msg, "State to Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -688,7 +726,7 @@ ss StartingSequence { } state NonStarting //when ( (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokRPump2_Pressure) == pvStatOK)) { when ( pvStatus(IsttokRPump1_Pressure) == pvStatOK) { - + strcpy(msg, "TMP1 MotorOn ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -697,8 +735,8 @@ ss StartingSequence { strcpy(msg, "TMP2 Motor ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokTMPump2_Motor = PCF_RELAY_ON; - pvPut(IsttokTMPump2_Motor); +// IsttokTMPump2_Motor = PCF_RELAY_ON; +// pvPut(IsttokTMPump2_Motor); STARTINGSTATE = STRST_Starting4; pvPut(STARTINGSTATE); } state Starting4 @@ -711,7 +749,7 @@ ss StartingSequence { //IsttokSTARTINGSTATE = STRST_NonStarting; //pvPut(IsttokSTARTINGSTATE); } state NonStarting - when (TMPump1NormalOperation == PCF_INPUT_ON) { // TODO insert TMP2 Test + when (TMPump1NormalOperation == PCF_INPUT_ON) { // TODO insert TMP2 Test strcpy(msg, "TMP1 operating Normal"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -731,15 +769,15 @@ ss CleaningSequence{ state NonCleaning{ entry{ strcpy(msg, "GIS Valves CLOSE"); - pvPut(msg); + pvPut(msg); IsttokShotGasIS_Valves = PCF_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); - + strcpy(msg, "Filament OFF"); - pvPut(msg); + pvPut(msg); IsttokShotVVessel_Filament = PCF_RELAY_OFF; pvPut(IsttokShotVVessel_Filament); - + strcpy(msg, "Primary_CT OFF"); pvPut(msg); IsttokShotClean_PrimContactor = PCF_RELAY_OFF; @@ -858,7 +896,7 @@ ss CleaningSequence{ } state Cleaning5{ when (IsttokProcReq==STOP) { -// } state Process +// } state Idle // when(delay(1.0) && IsttokOPSTATE != POS_Clean){ strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); @@ -872,11 +910,11 @@ ss CleaningSequence{ pvPut(CLEANINGSTATE); } state Cleaning4 /* - when (pvSeverity(IsttokVVesselTemperature) >= pvSevrMAJOR) { - // Temperature Limit Pulse state change to Process + when (pvSeverity(IsttokVVesselTemperature) >= pvSevrMAJOR) { + // Temperature Limit Pulse state change to Idle IsttokProcReq = STOP; pvPut(IsttokProcReq); - strcpy(msg, "Temperature Limit-> State to Process"); + strcpy(msg, "Temperature Limit-> State to Idle"); pvPut(msg); errlogSevPrintf(MINOR, "%s\n",msg); } state Cleaning5 @@ -907,7 +945,7 @@ ss ShotSequence { } state ShotEnd } state ShotWaitTrg { - when ((IsttokShotCountdown > 1800) || (IsttokOPSTATE != POS_WaitShot)) { + when ((IsttokShotCountdown > 1800) || (IsttokOPSTATE != POS_WaitShot)) { strcpy(msg, "Shooting Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -933,7 +971,7 @@ ss ShotSequence { strcpy(msg, "Shoting 2 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - } state ShotWaitTrg + } state ShotWaitTrg when ((IsttokOPSTATE == POS_WaitShot) && (IsttokShotCountdown == -61)) { strcpy(msg, "Buzzer 1-Sound"); pvPut(msg); @@ -959,7 +997,7 @@ ss ShotSequence { strcpy(msg, "Shoting3 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - } state ShotWaitTrg + } state ShotWaitTrg when (IsttokShotCountdown == -60) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); @@ -1056,7 +1094,7 @@ ss ShotSequence { errlogSevPrintf(NO_ALARM, "%s\n",msg); // PS Trigger Pulse IsttokShotShot_TorPSTrigger = ON; - pvPut(IsttokShotShot_TorPSTrigger); + pvPut(IsttokShotShot_TorPSTrigger); WSHOTINGSTATE = WSHTST_Shoting9; pvPut(WSHOTINGSTATE); } state Shoting9 @@ -1137,13 +1175,13 @@ ss ShotSequence { } state ShotEnd } state ShotEnd { - when (IsttokShotCountdown > 160 || IsttokOPSTATE != POS_WaitShot) { + when (IsttokShotCountdown > 160 || IsttokOPSTATE != POS_WaitShot) { strcpy(msg, "Terminated"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); WSHOTINGSTATE = WSHTST_WaitTrg; pvPut(WSHOTINGSTATE); - } state ShotWaitTrg + } state ShotWaitTrg } } @@ -1151,7 +1189,7 @@ ss ShotSequence { ss StoppingSequence { state NonStopping { entry { - STOPPINGSTATE = STPST_NonStopping; + STOPPINGSTATE = STPST_NonStopping; pvPut(STOPPINGSTATE); } when (IsttokOPSTATE == POS_Stopping) { @@ -1162,25 +1200,25 @@ ss StoppingSequence { IsttokTMPump1_MotorOff = ON; pvPut(IsttokTMPump1_MotorOff); - IsttokTMPump2_Motor = PCF_RELAY_OFF; - pvPut(IsttokTMPump2_Motor); + // IsttokTMPump2_Motor = PCF_RELAY_OFF; + // pvPut(IsttokTMPump2_Motor); STOPPINGSTATE = STPST_Stopping1; pvPut(STOPPINGSTATE); - } state Stopping1 + } state Stopping1 } state Stopping1 { - when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping - when (TMPump1NormalOperation == PCF_INPUT_OFF) { // TODO insert TMP2 Test + when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping + when (TMPump1NormalOperation == PCF_INPUT_OFF) { // TODO insert TMP2 Test strcpy(msg, "TMP1 Stopping"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); STOPPINGSTATE = STPST_Stopping2; pvPut(STOPPINGSTATE); - } state Stopping2 - } + } state Stopping2 + } state Stopping2 { when (IsttokOPSTATE != POS_Stopping ) { - } state NonStopping + } state NonStopping when (delay(5.0) && IsttokTMPump1_ManualValve==OFF) { strcpy(msg, "Manual Valve Closed Checked"); pvPut(msg); @@ -1194,11 +1232,11 @@ ss StoppingSequence { pvPut(IsttokRPump2_Motor); STOPPINGSTATE = STPST_Stopping3; pvPut(STOPPINGSTATE); - } state Stopping3 + } state Stopping3 } state Stopping3 { when (IsttokOPSTATE != POS_Stopping ) { - } state NonStopping + } state NonStopping when (delay(5)) { IsttokRPump1_Valve = PCF_RELAY_ON; pvPut(IsttokRPump1_Valve); @@ -1209,15 +1247,15 @@ ss StoppingSequence { pvPut(IsttokRPump2_Valve); STOPPINGSTATE = STPST_StoppingEnd; pvPut(STOPPINGSTATE); - } state StoppingEnd - } + } state StoppingEnd + } state StoppingEnd { - when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping + when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping } } /**** END PROGRAM ***/ - + /* when (IsttokShotCountdown > 159) { strcpy(msg, "Toroidal Field Recovered" ); pvPut(msg); @@ -1241,12 +1279,12 @@ ss StoppingSequence { // pvPut(IsttokShotCountdownScan); // IsttokShotCountdown = 0; // pvPut(IsttokShotCountdown); - } state ShotWaitTrg + } state ShotWaitTrg } - entry{ + entry{ IsttokRPump1_Motor = PCF_RELAY_ON; pvPut(IsttokRPump1_Motor); strcpy(msg, "Rotary Pumps 1/2 OFF"); @@ -1254,7 +1292,7 @@ ss StoppingSequence { errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRPump2_Motor = PCF_RELAY_ON; pvPut(IsttokRPump2_Motor); - //IsttokLastOPSTATE = POS_Process; + //IsttokLastOPSTATE = POS_Idle; //pvPut(IsttokLastOPSTATE); } // } state Stopping diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf index 1892d1c..a94fc6e 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf @@ -1,4 +1,5 @@ -UAG(uag) {pi,opertok,codac-dev,pricardofc} +#UAG(uag) {pi,root,opertok,codac-dev,pricardofc} +UAG(uag) {pi,root,opertok,codac-dev} HAG(hag) {rpi-isttok,opertok-desktop,atca2} ASG(DEFAULT) { RULE(1,READ) diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req index f2f172c..ad20912 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/iocISTTOKrpi.req @@ -9,6 +9,7 @@ ISTTOK:central:CLEANINGMANMODE.VAL ISTTOK:central:Emergency-UserButton.VAL ISTTOK:central:TMPump1-ManualValve.VAL ISTTOK:central:Shot-TorPSCurrent +ISTTOK:central:UPS-Shutdown #ALARM Limits #ISTTOK:central:RPump2-Pressure.HIGH diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt index 73a0a5a..a07ec49 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt @@ -1,78 +1,8 @@ -ISTTOK:central:PULSE-NUMBER -ISTTOK:central:PCF8591:72:DAC -ISTTOK:central:TDA8444:32:DAC_CH0 -ISTTOK:central:TDA8444:32:DAC_CH1 -ISTTOK:central:TDA8444:32:DAC_CH2 -ISTTOK:central:TDA8444:32:DAC_CH3 -ISTTOK:central:TDA8444:32:DAC_CH4 -ISTTOK:central:TDA8444:32:DAC_CH5 -ISTTOK:central:TDA8444:32:DAC_CH6 -ISTTOK:central:Shot-TorPSCurrent -ISTTOK:SR_0_State -ISTTOK:SR_1_State -ISTTOK:SR_2_State -ISTTOK:SR_3_State -ISTTOK:SR_4_State -ISTTOK:SR_5_State -ISTTOK:SR_6_State -ISTTOK:SR_7_State -ISTTOK:SR_disableMaxSecs -ISTTOK:central:OPSTATE -ISTTOK:central:STARTINGSTATE -ISTTOK:central:CLEANINGSTATE -ISTTOK:central:WSHOTINGSTATE -ISTTOK:central:STOPPINGSTATE -ISTTOK:central:PCF8574:56:REGISTER:READ -ISTTOK:central:PCF8574:57:REGISTER:READ -ISTTOK:central:PCF8574:60:REGISTER:READ -ISTTOK:central:PCF8574:61:REGISTER:READ -ISTTOK:central:CurrentTime -ISTTOK:central:TMPump1-Power -ISTTOK:central:TMPump1-Emergency -ISTTOK:central:TMPump1-Acceleration -ISTTOK:central:TMPump1-NormalOperation -ISTTOK:central:TMPump2-Emergency -ISTTOK:central:TMPump2-Acceleration -ISTTOK:central:TTSystem-tzero -ISTTOK:central:Emergency-PhysButton -ISTTOK:central:PCF8574:56:REGISTER:READ:FNOUT -ISTTOK:central:PCF8574:57:REGISTER:READ:FNOUT -ISTTOK:central:TMPump1-ControllerOnInv -ISTTOK:central:TMPump1-ControllerOffInv -ISTTOK:central:TMPump1-MotorOnInv -ISTTOK:central:TMPump1-MotorOffInv -ISTTOK:central:BuzzerInv -ISTTOK:central:Shot-TorPSTriggerInv -ISTTOK:central:PCF8574:56:REGISTER -ISTTOK:central:PCF8574:57:REGISTER -ISTTOK:central:PCF8574:60:REGISTER -ISTTOK:central:PCF8574:61:REGISTER -ISTTOK:central:PCF8591:72:CTRLREGISTER -ISTTOK:central:OPCALCSTATE -ISTTOK:central:STARTCALCSTATE -ISTTOK:central:STOPPINGCALCSTATE -ISTTOK:central:CLEANCALCSTATE -ISTTOK:central:WSHOTCALCSTATE -ISTTOK:central:COUNTDOWN -ISTTOK:central:COUNTER -ISTTOK:central:PCF8591:72:BYTE2_CH1 -ISTTOK:central:PCF8591:72:BYTE2_CH2 -ISTTOK:central:PCF8591:72:BYTE2_CH3 -ISTTOK:central:Emergency -ISTTOK:central:LASTOPSTATE -ISTTOK:SR_rebootStatus -ISTTOK:SR_status -ISTTOK:SR_0_Status -ISTTOK:SR_1_Status -ISTTOK:SR_2_Status -ISTTOK:SR_3_Status -ISTTOK:SR_4_Status -ISTTOK:SR_5_Status -ISTTOK:SR_6_Status -ISTTOK:SR_7_Status -ISTTOK:central:TMPump2-Speed -ISTTOK:central:TMPump2-Current -ISTTOK:central:Shot-TorPSCurrentImage +ISTTOK:central:PCF8591:72:ADC_CH1 +ISTTOK:central:PCF8591:72:ADC_CH2 +ISTTOK:central:PCF8591:72:ADC_CH3 +ISTTOK:central:UPS-OnBattery +ISTTOK:central:UPS-Shutdown ISTTOK:central:OPREQ ISTTOK:central:CLEANINGMANMODE ISTTOK:central:FSTriggerStart @@ -106,9 +36,75 @@ ISTTOK:SR_heartbeat ISTTOK:SR_i_am_alive ISTTOK:SR_deadIfZero ISTTOK:SR_disable -ISTTOK:central:PCF8591:72:ADC_CH1 -ISTTOK:central:PCF8591:72:ADC_CH2 -ISTTOK:central:PCF8591:72:ADC_CH3 +ISTTOK:central:PULSE-NUMBER +ISTTOK:central:PCF8591:72:DAC +ISTTOK:central:TDA8444:32:DAC_CH0 +ISTTOK:central:TDA8444:32:DAC_CH1 +ISTTOK:central:TDA8444:32:DAC_CH2 +ISTTOK:central:TDA8444:32:DAC_CH3 +ISTTOK:central:TDA8444:32:DAC_CH4 +ISTTOK:central:TDA8444:32:DAC_CH5 +ISTTOK:central:TDA8444:32:DAC_CH6 +ISTTOK:central:Shot-TorPSCurrent +ISTTOK:SR_0_State +ISTTOK:SR_1_State +ISTTOK:SR_2_State +ISTTOK:SR_3_State +ISTTOK:SR_4_State +ISTTOK:SR_5_State +ISTTOK:SR_6_State +ISTTOK:SR_7_State +ISTTOK:SR_disableMaxSecs +ISTTOK:central:PCF8574:56:REGISTER:READ:FNOUT +ISTTOK:central:PCF8574:57:REGISTER:READ:FNOUT +ISTTOK:central:OPCALCSTATE +ISTTOK:central:STARTCALCSTATE +ISTTOK:central:STOPPINGCALCSTATE +ISTTOK:central:CLEANCALCSTATE +ISTTOK:central:WSHOTCALCSTATE +ISTTOK:central:COUNTDOWN +ISTTOK:central:COUNTER +ISTTOK:central:PCF8591:72:BYTE2_CH1 +ISTTOK:central:PCF8591:72:BYTE2_CH2 +ISTTOK:central:PCF8591:72:BYTE2_CH3 +ISTTOK:central:Emergency +ISTTOK:central:TMPump1-ControllerOnInv +ISTTOK:central:TMPump1-ControllerOffInv +ISTTOK:central:TMPump1-MotorOnInv +ISTTOK:central:TMPump1-MotorOffInv +ISTTOK:central:BuzzerInv +ISTTOK:central:Shot-TorPSTriggerInv +ISTTOK:central:LASTOPSTATE +ISTTOK:SR_rebootStatus +ISTTOK:SR_status +ISTTOK:SR_0_Status +ISTTOK:SR_1_Status +ISTTOK:SR_2_Status +ISTTOK:SR_3_Status +ISTTOK:SR_4_Status +ISTTOK:SR_5_Status +ISTTOK:SR_6_Status +ISTTOK:SR_7_Status +ISTTOK:central:TMPump1-Power +ISTTOK:central:TMPump1-Emergency +ISTTOK:central:TMPump1-Acceleration +ISTTOK:central:TMPump1-NormalOperation +ISTTOK:central:TMPump2-Emergency +ISTTOK:central:TMPump2-Acceleration +ISTTOK:central:TTSystem-tzero +ISTTOK:central:Emergency-PhysButton +ISTTOK:central:PCF8574:56:REGISTER +ISTTOK:central:PCF8574:57:REGISTER +ISTTOK:central:PCF8574:60:REGISTER +ISTTOK:central:PCF8574:61:REGISTER +ISTTOK:central:PCF8591:72:CTRLREGISTER +ISTTOK:central:PCF8574:56:REGISTER:READ +ISTTOK:central:PCF8574:57:REGISTER:READ +ISTTOK:central:PCF8574:60:REGISTER:READ +ISTTOK:central:PCF8574:61:REGISTER:READ +ISTTOK:central:TMPump2-Speed +ISTTOK:central:TMPump2-Current +ISTTOK:central:Shot-TorPSCurrentImage ISTTOK:central:TraceMessage ISTTOK:central:LogMessage ISTTOK:central:sendmail @@ -140,3 +136,9 @@ ISTTOK:SR_6_Time ISTTOK:SR_7_Name ISTTOK:SR_7_StatusStr ISTTOK:SR_7_Time +ISTTOK:central:OPSTATE +ISTTOK:central:STARTINGSTATE +ISTTOK:central:CLEANINGSTATE +ISTTOK:central:WSHOTINGSTATE +ISTTOK:central:STOPPINGSTATE +ISTTOK:central:CurrentTime diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index 2ce6435..558c939 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,5 +1,4 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 210512-110358 -! 1 channel(s) not connected - or not all gets were successful +# autosave R5.3 Automatically generated - DO NOT MODIFY - 211129-172335 ISTTOK:central:PULSE-NUMBER.VAL 0 ISTTOK:central:LogMessage.VAL ISTTOK:central:LASTOPSTATE.VAL 5 @@ -7,6 +6,7 @@ ISTTOK:central:OPREQ 0 ISTTOK:central:PROCESS-MODE.VAL 0 ISTTOK:central:CLEANINGMANMODE.VAL 0 ISTTOK:central:Emergency-UserButton.VAL 0 -ISTTOK:central:TMPump1-ManualValve.VAL 0 -#ISTTOK:central:Shot-TorPSCurrent Search Issued +ISTTOK:central:TMPump1-ManualValve.VAL 1 +ISTTOK:central:Shot-TorPSCurrent 32 +ISTTOK:central:UPS-Shutdown 0 diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index bf1002d..643fafd 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -75,4 +75,4 @@ iocInit create_monitor_set("$(IOC).req", 30) ## Start any sequence programs , use safe mode -seq IsttokSeqExec +seq IsttokSeqExec "unit=ISTTOK" From 3417b9bfda82cce944c1a684de00d0c4991be862 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 29 Nov 2021 17:37:04 +0000 Subject: [PATCH 17/17] added UPD records Signed-off-by: Bernardo Carvalho --- epics/iocs/RELEASE.local | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/epics/iocs/RELEASE.local b/epics/iocs/RELEASE.local index 64f6b6f..ff879f5 100644 --- a/epics/iocs/RELEASE.local +++ b/epics/iocs/RELEASE.local @@ -1,6 +1,5 @@ #RELEASE Location of external products HOME=/home/pi -<<<<<<< HEAD SUPPORT=$(HOME)/Apps/epics7/support # # @@ -17,19 +16,6 @@ AUTOSAVE = $(SUPPORT)/autosave #STREAM_WORKAROUND = 1 DRVASYNI2C =$(SUPPORT)/drvAsynI2C SNCSEQ=$(SUPPORT)/seq-2-2 -======= ->>>>>>> 514eb82e224779361fbe0844aaaa5c63fd4fd03f - -SUPPORT=$(HOME)/EPICS/support - -# IPAC is only necessary if support for Greensprings IP488 is required -# IPAC release V2-7 or later is required. -# IPAC=$(SUPPORT)/ipac-2-15 -#IPAC= - -ASYN=$(SUPPORT)/asyn -STREAM=$(SUPPORT)/stream -AUTOSAVE = $(SUPPORT)/autosave # # SEQ is required for testIPServer #SNCSEQ=$(SUPPORT)/seq-2-2-5