diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKinficon.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKinficon.db new file mode 100644 index 0000000..5c047d4 --- /dev/null +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKinficon.db @@ -0,0 +1,43 @@ +# vim: sta:et:sw=4:ts=4:sts=4 +# 11/12/2024 Initial configuration +#record (ai, "$(P)$(R)Inficon1") +# field (DESC, "ISTTOK:central:Inficon1") +record (ai, "$(P)$(R)VVessel-Pressure") +{ + field (DESC, "ISTTOK:central:VVessel-Pressure") + field (DTYP, "stream") + field (INP, "@inficon.proto readIonGauge1 $(bus)") + field (SCAN, "1 second") + field(PHAS, "2") + field(EGU, "mBar") + field(HIHI,"1.0e-2") + field(HIGH,"1.0e-3") + field(LOW,"1.0e-9") + field(LOLO,"0.5e-9") + field(HHSV,"MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV,"MAJOR") +} + +#record (ai, "$(P)$(R)Inficon3") +record (ai, "$(P)$(R)TMPump1-PressureAdmission") +{ +# field (DESC, "ISTTOK:central:Inficon3") + field(DESC, "ISTTOK:central:TMPump1-PressureAdmission") + field (DTYP, "stream") + field (INP, "@inficon.proto readIonGauge3 $(bus)") + field (SCAN, "1 second") + field(PHAS, "2") + field(EGU, "mBar") + field(HIHI,"1.0e-2") + field(HIGH,"1.0e-3") + field(LOW,"1.0e-9") + field(LOLO,"0.5e-9") + field(HHSV,"MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV,"MAJOR") +} + + diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmarte2.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmarte2.db index b8df1e2..1f34061 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmarte2.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmarte2.db @@ -21,17 +21,25 @@ record(mbbi, "$(P)$(R)MARTe2-Status") field(ZRVL, "0") field(ONVL, "1") field(TWVL, "2") + field(FFVL, "15") +# field(ZRST, "IDLE") - field(ONST, "RUN") - field(TWST, "ERROR") + field(ONST, "WAITING_FOR_PRE") + field(TWST, "PULSING") + field(FFST, "ERROR") + field(ONSV, "MINOR") + field(TWSV, "MINOR") + field(FFSV, "MAJOR") } record(mbbo, "$(P)$(R)MARTe2-Command") { field(DTYP, "Soft Channel") field(ZRVL, "0") field(ONVL, "1") - field(ZRST, "GOTOIDLE") - field(ONST, "GOTORUN") + field(TWVL, "2") + field(ZRST, "GOTO_IDLE") + field(ONST, "GOTO_WAITING_FOR_PRE") + field(TWST, "GOTO_PULSING") field(VAL, "0") } record( longin, "$(P)$(R)MARTe2-Reset") diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db index c1b5454..81c5301 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKpfeiffer.db @@ -2,47 +2,49 @@ # 8/5/2021 Only sensor 2 is working. Running with dspIC # 20/9/2021 sensors 1,2,3 are working. Running with dspIC # 20/9/2021 sensors 1,2,3 are working. Running with tty USB -record (longin, "$(P)$(R)P001:M") -{ - field (DESC, "getPressure001 $(bus)") - field (DTYP, "stream") - field (INP, "@pfeiffer.proto getPressure001($(P)$(R)P001:E) $(bus)") +# 11/12/2024 replaced with Inficon Probes +#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(PHAS, "1") - 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") - # Maximize Status and Severity, MSS propagate all alarms - field(INPA, "$(P)$(R)P001:M MSS") - field(INPB, "$(P)$(R)P001:E") - 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,"1.0e-9") - field(LOLO,"0.5e-9") +# field (SCAN, "1 second") +# field(PHAS, "1") +# field (FLNK, "$(P)$(R)VVessel-Pressure") +#} +#record (longin, "$(P)$(R)P001:E") +#{ +# field (DESC, "Pressure001 exponent $(bus)") +#} +#record (ao, "$(P)$(R)VVessel-Pressure") +#{ +# field (DESC, "ISTTOK:central:VVessel-Pressure") +# +# field(VAL,"2.0E-9") +# # Maximize Status and Severity, MSS propagate all alarms +# field(INPA, "$(P)$(R)P001:M MSS") +# field(INPB, "$(P)$(R)P001:E") +# 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,"1.0e-9") +# field(LOLO,"0.5e-9") # field(LOW, "20.0") # field(LOLO,"0.0") - field(HHSV,"MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV,"MAJOR") -} +# field(HHSV,"MAJOR") +# field(HSV, "MINOR") +# field(LSV, "MINOR") +# field(LLSV,"MAJOR") +#} # out "0020074002=?107"; 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, "I/O Intr") field (SCAN, "1 second") field(PHAS, "0") field (FLNK, "$(P)$(R)RPump1-Pressure") @@ -69,74 +71,43 @@ record (calc, "$(P)$(R)RPump1-Pressure") # field(LLSV,"MAJOR") } - # out "0030074002=?108"; -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(PHAS, "2") +# # out "0030074002=?108"; +#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(PHAS, "2") # field (SCAN, "I/O Intr") - field (FLNK, "$(P)$(R)TMPump1-PressureAdmission") -} +# 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 MSS") - field(INPB, "$(P)$(R)P003:E") - 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(LOW,"1.0e-9") - field(LOLO,"0.5e-9") - field(HHSV,"MAJOR") - field(HSV, "MINOR") - field(LSV, "MINOR") - field(LLSV,"MAJOR") -} +#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 MSS") +# field(INPB, "$(P)$(R)P003:E") +# 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(LOW,"1.0e-9") +# field(LOLO,"0.5e-9") +# field(HHSV,"MAJOR") +# field(HSV, "MINOR") +# field(LSV, "MINOR") +# field(LLSV,"MAJOR") +#} # out "0040074002=?109"; # NOT connected 26/10/2021 -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, "I/O Intr") - 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 MSS") - 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, "") diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile index 0dae2f8..0168904 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/Makefile @@ -19,6 +19,8 @@ DB += sendmail.proto DB += pcf8574.proto DB += pfeiffer.proto DB += seeed4relay.proto +DB += inficon.proto +DB += ISTTOKinficon.db # If .db template is not named *.template add # _TEMPLATE = diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/inficon.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/inficon.proto new file mode 100644 index 0000000..6244058 --- /dev/null +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/inficon.proto @@ -0,0 +1,38 @@ +# CR and LF are control characters, respectively coded 0x0D (13 decimal) and 0x0A (10 decimal) +Terminator = CR; +inTerminator = CR; +MaxInput = 30; +#MaxInput = 20; +ExtraInput = Ignore; + +# Values in millisecond +LockTimeout = 500; +# Affects first out command in a protocol. +# If other records currently use the device, how many milliseconds to wait for +# exclusive access to the device before giving up? + +# Protocol for the Inficon BAG302-S + +#ReadTimeout = 1500; + +ReplyTimeout = 300; + +#PollPeriod = $ReplyTimeout; +#Integer. Affects first in command in I/O Intr mode (see chapter Record Processing). +PollPeriod = 200; + +#out *03 7.97E-07 + +# Using redirection to read 2 records, mantissa and exponent +#-Pressure +readIonGauge1{ + out "#01RD"; + in "*01 %E"; +} + +readIonGauge3{ + out "#03RD"; + in "*03 %E"; +} + + diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 6e5152d..9cdeeb0 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -97,6 +97,11 @@ short MINOR=1; short MAJOR=2; short INVALID=3; +short MARTeIdle=0; +short MARTeWaitingForPre=1; +short MARTePulsing=2; +short MARTeError=15; + /* PV variables */ short IsttokOPSTATE; assign IsttokOPSTATE to "ISTTOK:central:OPSTATE"; @@ -278,7 +283,7 @@ monitor IsttokUpsShutdown; short IsttokMARTe2Status; assign IsttokMARTe2Status "ISTTOK:central:MARTe2-Status"; -monitor IsttokMARTe2Status; +// monitor IsttokMARTe2Status; //string tmp1_stat; short IsttokMARTe2Command; @@ -480,7 +485,7 @@ ss PulseSequence { pvPut(Isttok_TorPSDisable); IsttokProcReq = STOP; pvPut(IsttokProcReq); - IsttokMARTe2Command = STOP; + IsttokMARTe2Command = MARTeIdle; pvPut(IsttokMARTe2Command); } when (IsttokUpsShutdown == ON) { @@ -1166,7 +1171,7 @@ ss ShotSequence { pvPut(WSHOTINGSTATE); IsttokWaitTimerDisa = 1; pvPut(IsttokWaitTimerDisa); - IsttokMARTe2Command = STOP; + IsttokMARTe2Command = MARTeIdle; pvPut(IsttokMARTe2Command); // strcpy(IsttokWaitTimerScan, "Passive"); // pvPut(IsttokWaitTimerScan); @@ -1345,7 +1350,7 @@ ss ShotSequence { // PS Trigger Pulse Isttok_TorPSTrigger = ON; pvPut(Isttok_TorPSTrigger); - IsttokMARTe2Command = START; // ~1.2 s before Btor. ~ 4 sec before TSHOT + IsttokMARTe2Command = MARTeWaitingForPre; // ~1.2 s before Btor. ~ 4 sec before TSHOT pvPut(IsttokMARTe2Command); WSHOTINGSTATE = WSHTST_SShot; pvPut(WSHOTINGSTATE); @@ -1363,6 +1368,8 @@ ss ShotSequence { strcpy(msg, "Ready for SHOT" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); + IsttokMARTe2Command = MARTePulsing; + pvPut(IsttokMARTe2Command); WSHOTINGSTATE = WSHTST_Shooting10; pvPut(WSHOTINGSTATE); } state Shooting10 @@ -1405,7 +1412,7 @@ ss ShotSequence { errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokVVessel_Filament = 1; pvPut(IsttokVVessel_Filament); - IsttokMARTe2Command = STOP; + IsttokMARTe2Command = MARTeIdle; pvPut(IsttokMARTe2Command); WSHOTINGSTATE = WSHTST_Shooting12; pvPut(WSHOTINGSTATE); diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index c44384e..61f5def 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -33,7 +33,7 @@ dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=19") #drvAsynSerialPortConfigure("RS0","/dev/ttyAMA0") #drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") -drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") +drvAsynSerialPortConfigure("RS0","/dev/tty_rs485USB0") asynSetOption("RS0", 0, "baud", "9600") asynSetOption("RS0", 0, "bits", "8") asynSetOption("RS0", 0, "parity", "none") @@ -41,8 +41,10 @@ asynSetOption("RS0", 0, "stop", "1") asynSetOption("RS0", 0, "clocal", "Y") asynSetOption("RS0", 0, "crtscts", "N") -# Pfeiffer sensor are connectoed to other RPI /(192.168.1.120) +# Pfeiffer sensor were connectoed to other RPI /(192.168.1.120) + dbLoadRecords("db/ISTTOKpfeiffer.db","P=ISTTOK:,R=central:,bus=RS0") +dbLoadRecords("db/ISTTOKinficon.db","P=ISTTOK:,R=central:,bus=RS0") # connect to the MAIL server mail.ipfn.tecnico.ulisboa.pt # ,priority,noAutoConnect,noProcessEos