From be0d56bd2f7ad9686a58ef322ae9029420074ded Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 31 Jan 2022 16:29:37 +0000 Subject: [PATCH 1/6] Added second SEEEDUINO Relay Board Signed-off-by: Bernardo Carvalho --- .../ISTTOKrpiApp/Db/ISTTOKmachineControl.db | 129 ++++++++++-------- .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 40 +++--- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 1 + 3 files changed, 94 insertions(+), 76 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index d705ea7..7634e06 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -28,14 +28,16 @@ record(bo, "$(P)$(R)TMPump1-ControllerOn" ) { field(ONAM, "Pulse" ) field(HIGH, "2.5") # Disabled until further notice -# field(FLNK, "$(P)$(R)TMPump1-ControllerOnInv" ) + field(FLNK, "$(P)$(R)TMPump1-ControllerOnInv" ) field(VAL,"0") } record(calcout, "$(P)$(R)TMPump1-ControllerOnInv") { field(INPA, "$(P)$(R)TMPump1-ControllerOn NPP MS") - field(OUT, "$(P)$(R)PCF8574:56:REGISTER.B0 PP MS") +# Disabled until further notice +# field(OUT, "$(P)$(R)PCF8574:56:REGISTER.B0 PP MS") field(OOPT, "On Change") field(CALC, "A?0:1") + field(VAL,"1") } record(bo, "$(P)$(R)TMPump1-ControllerOff" ) { @@ -45,15 +47,17 @@ record(bo, "$(P)$(R)TMPump1-ControllerOff" ) { field(ONAM, "Pulse" ) field(HIGH, "2.5") # Disabled until further notice -# field(FLNK, "$(P)$(R)TMPump1-ControllerOffInv" ) + 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") +# Disabled until further notice +# field(OUT, "$(P)$(R)PCF8574:56:REGISTER.B1 PP MS") field(OOPT, "On Change") field(CALC, "A?0:1") + field(VAL,"1") } record(bo, "$(P)$(R)TMPump1-MotorOn" ) { @@ -176,24 +180,6 @@ record(bo, "$(P)$(R)TMPump2-Motor" ) { 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") -} -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" ) -} - ############################## # EMERGENCY MODE # ############################## @@ -306,17 +292,6 @@ record(bo, "$(P)$(R)Lab-WarningLight" ) { ############ #$(P)$(R)PCF8574:60:REGISTER:READ.B6 -############################## -# TOR CLEAN CONTACTOR ON/OFF # -############################## -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") -} - ############### ############### # REGISTER 61 # @@ -348,31 +323,6 @@ record(calcout, "$(P)$(R)Shot-TorPSTriggerInv" ) { } ############################################################ -####################################### -# CAP BANK CHARGE ON/OFF # -####################################### -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") -} - -######################################## -# PRIMARY CLEAN CONTACTOR ON/OFF # -######################################## -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") -} - - ################################## # GIS VALVES ON/OFF # ################################## @@ -412,7 +362,7 @@ record(bo, "$(P)$(R)TMPump1-ManualValve"){ field( ONAM, "Open") } -### SEEED 4 RELAY BOARD +### SEEED 4-RELAY I2C BOARDS ADDR 0x11 & 0x12 # # @@ -463,5 +413,66 @@ record(bo, "$(P)$(R)Clean-TorPneuBreaker" ) { field(VAL,"0") field(OSV,"MAJOR") } +###################################### +# PRIMARY CLEAN CONTACTOR ON/OFF # +###################################### +record(bo, "$(P)$(R)Clean-PrimContactor") { + field(DESC,"220V Contactor for Clean Primary") + field(OUT,"$(P)$(R)SEEED4RELAY:18:REGISTER.B0 PP") + field(ZNAM,"OFF") + field(ONAM, "ON") + field(VAL,"0") + field(OSV,"MINOR") +} +###################################### +# TOR CLEAN CONTACTOR ON/OFF # +###################################### +record(bo, "$(P)$(R)Clean-TorContactor" ) { + field(DESC,"220V Contactor for Clean Toroidal PS") +# field(DESC," Contactor 220V do transformador para a fonte de campo toroidal das descargas de limpeza (500 A) ") + field(OUT,"$(P)$(R)SEEED4RELAY:18:REGISTER.B1 PP") + field(ZNAM,"OFF") + field(ONAM, "ON") + field(VAL, "0") + field(OSV,"MINOR") +} +####################################### +# CAP BANK CHARGE ON/OFF # +####################################### +record(bo, "$(P)$(R)CapBank-Charge" ) { + field(DESC,"220V Contactor for ELCO Charger") +## field(DESC," Contactor 220V do circuito de carga do banco de condensadores p/ SHOT (ELCO) ") + field(OUT,"$(P)$(R)SEEED4RELAY:18:REGISTER.B2 PP") + field(ZNAM,"OFF") + field(ONAM, "ON") + field(VAL, "0") + field(OSV,"MINOR") +} + +############################## +# BUZZER ON/OFF # +############################## +record(bo, "$(P)$(R)Buzzer" ) { + field(DESC," Lab Buzzer ") + field(OUT,"$(P)$(R)SEEED4RELAY:18:REGISTER.B3 PP") + field(ZNAM,"OFF") + field(ONAM, "Pulse") + field(HIGH, "2.5") + field(VAL, "0") + field(OSV,"MINOR") +} + +# 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" ) +#} diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 0da37e1..a6a617f 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -29,6 +29,7 @@ short PCF_INPUT_OFF= 1; short PCF_PULSE_ON = 1; short SEEED_RELAY_OFF= 0; short SEEED_RELAY_ON = 1; +short SEEED_RELAY_PULSE = 1; short STRST_NonStarting = 0; short STRST_Starting1 = 1; @@ -179,6 +180,10 @@ assign IsttokTMPump2_Emergency to "ISTTOK:central:TMPump2-Emergency"; monitor IsttokTMPump2_Emergency; */ +float IsttokTMPump1_Pressure; +assign IsttokTMPump1_Pressure to "ISTTOK:central:TMPump1-PressureAdmission"; +monitor IsttokTMPump1_Pressure; + float IsttokRPump1_Pressure; /*assign IsttokRPump1_Pressure to "ISTTOK:vacuum:RPump1-Pressure";*/ assign IsttokRPump1_Pressure to "ISTTOK:central:RPump1-Pressure"; @@ -286,16 +291,16 @@ ss PulseSequence { // IsttokProcMode = OFF; // UPON POWER-DOWN OR FAILURE PREVENT TO ENTER WAITSHOT ON POWER-UP! // pvPut(IsttokProcMode); - IsttokClean_PrimContactor = PCF_RELAY_OFF; + IsttokClean_PrimContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_PrimContactor); IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; pvPut(IsttokClean_PrimPneuBreaker); - IsttokBuzzer = PCF_RELAY_OFF; + IsttokBuzzer = SEEED_RELAY_OFF; pvPut(IsttokBuzzer); - IsttokCapBank_Charge = PCF_RELAY_OFF; + IsttokCapBank_Charge = SEEED_RELAY_OFF; pvPut(IsttokCapBank_Charge); IsttokCapBank_Discharge = SEEED_RELAY_OFF; @@ -313,7 +318,7 @@ ss PulseSequence { IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; pvPut(IsttokClean_TorPneuBreaker); - IsttokClean_TorContactor = PCF_RELAY_OFF; + IsttokClean_TorContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_TorContactor); Isttok_TorPSDisable = PCF_RELAY_OFF; @@ -461,7 +466,8 @@ ss PulseSequence { strcpy(msg, "State Idle to Stopping"); pvPut(msg); errlogSevPrintf(MINOR, "%s\n", msg); - sprintf(sendMail, "Rpump1 Pressure:%1.1e TMP1 Pressure:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); + sprintf(sendMail, "Rpump1 Pressure:%1.1e TMP1 Emergency:%d TMP1 Adm. Pressure:%4.2e", + IsttokRPump1_Pressure, IsttokTMPump1_Emergency, IsttokTMPump1_Pressure); pvPut(sendMail); } state Stopping @@ -594,7 +600,7 @@ ss PulseSequence { Isttok_TorPSDisable = PCF_RELAY_OFF; pvPut(Isttok_TorPSDisable); - IsttokCapBank_Charge = PCF_RELAY_OFF; + IsttokCapBank_Charge = SEEED_RELAY_OFF; pvPut(IsttokCapBank_Charge); IsttokCapBank_Discharge = SEEED_RELAY_OFF; @@ -641,7 +647,7 @@ ss PulseSequence { strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokCapBank_Charge = PCF_RELAY_OFF; + IsttokCapBank_Charge = SEEED_RELAY_OFF; pvPut(IsttokCapBank_Charge); strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); @@ -895,7 +901,7 @@ ss CleaningSequence{ strcpy(msg, "Primary_CT OFF"); pvPut(msg); - IsttokClean_PrimContactor = PCF_RELAY_OFF; + IsttokClean_PrimContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_PrimContactor); strcpy(msg, "Toroidal_BK OPEN"); @@ -905,7 +911,7 @@ ss CleaningSequence{ strcpy(msg, "Toroidal_CT OFF"); pvPut(msg); - IsttokClean_TorContactor = PCF_RELAY_OFF; + IsttokClean_TorContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_TorContactor); strcpy(msg, "Prim_Pneu_Breaker OFF"); @@ -971,7 +977,7 @@ ss CleaningSequence{ strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokClean_PrimContactor = PCF_RELAY_ON; + IsttokClean_PrimContactor = SEEED_RELAY_ON; pvPut(IsttokClean_PrimContactor); CLEANINGSTATE = CLNST_Cleaning3; pvPut(CLEANINGSTATE); @@ -982,7 +988,7 @@ ss CleaningSequence{ strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokClean_PrimContactor = PCF_RELAY_OFF; + IsttokClean_PrimContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_PrimContactor); CLEANINGSTATE = CLNST_Cleaning2; pvPut(CLEANINGSTATE); @@ -1012,7 +1018,7 @@ ss CleaningSequence{ strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokClean_TorContactor = PCF_RELAY_ON; + IsttokClean_TorContactor = SEEED_RELAY_ON; pvPut(IsttokClean_TorContactor); CLEANINGSTATE = CLNST_Cleaning5; pvPut(CLEANINGSTATE); @@ -1026,7 +1032,7 @@ ss CleaningSequence{ strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokClean_TorContactor = PCF_RELAY_OFF; + IsttokClean_TorContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_TorContactor); /* Close GIS to let Pressure down */ IsttokGasIS_Valves = SEEED_RELAY_OFF; @@ -1107,7 +1113,7 @@ ss ShotSequence { strcpy(msg, "Buzzer 1-Sound"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokBuzzer = 1; + IsttokBuzzer = SEEED_RELAY_PULSE; pvPut(IsttokBuzzer); strcpy(msg, "CAPBANK Crowbar Open"); pvPut(msg); @@ -1164,7 +1170,7 @@ ss ShotSequence { strcpy(msg, "CAPBANK Charge ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokCapBank_Charge = PCF_RELAY_ON; + IsttokCapBank_Charge = SEEED_RELAY_ON; pvPut(IsttokCapBank_Charge); WSHOTINGSTATE = WSHTST_Shooting6; pvPut(WSHOTINGSTATE); @@ -1182,7 +1188,7 @@ ss ShotSequence { strcpy(msg, "CAPBANK Charge OFF" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokCapBank_Charge = PCF_RELAY_OFF; + IsttokCapBank_Charge = SEEED_RELAY_OFF; pvPut(IsttokCapBank_Charge); WSHOTINGSTATE = WSHTST_Shooting7; pvPut(WSHOTINGSTATE); @@ -1200,7 +1206,7 @@ ss ShotSequence { strcpy(msg, "Buzzer 2-Sound" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokBuzzer = 1; + IsttokBuzzer = SEEED_RELAY_PULSE; pvPut(IsttokBuzzer); strcpy(msg, "Filament ON"); pvPut(msg); diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 036fd57..a12a0a8 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -26,6 +26,7 @@ dbLoadRecords("db/ISTTOKtda8444.db","P=ISTTOK:,R=central:,BUS=I2C") dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") ## SEEED RELAY BOARD dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=17") +dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=18") ## Load Serial drivers #drvAsynSerialPortConfigure("RS0","/dev/ttyAMA0") From 0ffb996b10b1645037019f6accea9dd6f334e844 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Fri, 4 Feb 2022 00:29:52 +0000 Subject: [PATCH 2/6] Updated Relay PVs --- epics/README.md | 11 +- .../ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db | 10 +- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt | 162 ++++++++++++++++++ .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 8 +- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 2 + 5 files changed, 182 insertions(+), 11 deletions(-) diff --git a/epics/README.md b/epics/README.md index 1abd8ff..39c6393 100644 --- a/epics/README.md +++ b/epics/README.md @@ -191,7 +191,6 @@ Process Variables in this IOC Server: |ISTTOK:central:TMPump2-Emergency | bi | 0 | |ISTTOK:central:TMPump2-Acceleration | bi | 1 | |ISTTOK:central:TMPump2-MotorOn | bo | 2 | -|ISTTOK:central:Buzzer| bo | 3 | |ISTTOK:central:Emergency-PhysButton| bi | 4 | |ISTTOK:central:TTSystem-tzero| bi | 7 | ---------- @@ -205,7 +204,6 @@ Process Variables in this IOC Server: |ISTTOK:central:RPump2-Motor (Not Used/Disabled)| bo | 2 | | |ISTTOK:central:RPump2-Valve (Not Used/Disabled| bo | 3 | | |ISTTOK:central:VVessel-Filament| bo | 4 | 1 / NO| -|ISTTOK:central:Clean-TorContactor| bo | 7 | | ---------- @@ -251,6 +249,15 @@ SPDT Relay Address = 17 |ISTTOK:central:CapBank-Discharge| bo | 2 | NO | |ISTTOK:central:Clean-TorPneuBreaker| bo | 3 | NO | +* Connected to Seeeduino- 4-Channel SPDT Relay Address = 18 + +|PV Name | PV Type | Bit | Relay NO/NC| +|:----------|-------|---:| +|ISTTOK:central:Clean-PrimContactor| bo | 0 | Relay NO/NC| +|ISTTOK:central:Clean-TorContactor| bo | 1 | Relay NO/NC| +|ISTTOK:central:CapBank-Charge| bo | 2 | Relay NO/NC| +|ISTTOK:central:Buzzer| bo | 3 | Relay NO/NC| + ### Vacuum Node (**Not used, backup server only**) - Vacuum Pfeiffer Sensors (RS485) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db index 1ce0a08..d0e4dd1 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db @@ -13,7 +13,7 @@ # ## -record(mbbi, "$(P)$(R)OPSTATE") { +record(mbbo, "$(P)$(R)OPSTATE") { field(DESC, "Multiple Pulse Sequence State") field(ZRVL, "0") field(ONVL, "1") @@ -220,7 +220,7 @@ record(stringout, "$(P)$(R)LogMessage") { # field(VAL, "Trace mode ON") } -record(mbbi, "$(P)$(R)STARTINGSTATE") { +record(mbbo, "$(P)$(R)STARTINGSTATE") { field(DESC, "Starting State Sequence") field(ZRVL, "0") field(ONVL, "1") @@ -237,7 +237,7 @@ record(mbbi, "$(P)$(R)STARTINGSTATE") { field(VAL, "0") } -record(mbbi, "$(P)$(R)CLEANINGSTATE") { +record(mbbo, "$(P)$(R)CLEANINGSTATE") { field(DESC, "Cleaning State Sequence") field(ZRVL, "0") field(ONVL, "1") @@ -256,7 +256,7 @@ record(mbbi, "$(P)$(R)CLEANINGSTATE") { field(VAL, "0") } -record(mbbi, "$(P)$(R)WSHOTINGSTATE") { +record(mbbo, "$(P)$(R)WSHOTINGSTATE") { field(DESC, "Plasma Shot State Sequence") field(ZRVL, "0") field(ONVL, "1") @@ -289,7 +289,7 @@ record(mbbi, "$(P)$(R)WSHOTINGSTATE") { field(VAL, "0") } -record(mbbi, "$(P)$(R)STOPPINGSTATE") { +record(mbbo, "$(P)$(R)STOPPINGSTATE") { field(DESC, "Stopping State Sequence") field(ZRVL, "0") field(ONVL, "1") diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt index d05bc21..9196933 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt @@ -157,3 +157,165 @@ ISTTOK:central:STARTINGSTATE ISTTOK:central:CLEANINGSTATE ISTTOK:central:WSHOTINGSTATE ISTTOK:central:STOPPINGSTATE +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:central:OPCALCSTATE +ISTTOK:central:STARTCALCSTATE +ISTTOK:central:STOPPINGCALCSTATE +ISTTOK:central:CLEANCALCSTATE +ISTTOK:central:WSHOTCALCSTATE +ISTTOK:central:PULSE-NUMBER +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: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:TraceMessage +ISTTOK:central:LogMessage +ISTTOK:central:RS485Debug +ISTTOK:central:sendmail +ISTTOK:SR_recentlyStr +ISTTOK:SR_rebootStatusStr +ISTTOK:SR_rebootTime +ISTTOK:SR_statusStr +ISTTOK:SR_0_Name +ISTTOK:SR_0_StatusStr +ISTTOK:SR_0_Time +ISTTOK:SR_1_Name +ISTTOK:SR_1_StatusStr +ISTTOK:SR_1_Time +ISTTOK:SR_2_Name +ISTTOK:SR_2_StatusStr +ISTTOK:SR_2_Time +ISTTOK:SR_3_Name +ISTTOK:SR_3_StatusStr +ISTTOK:SR_3_Time +ISTTOK:SR_4_Name +ISTTOK:SR_4_StatusStr +ISTTOK:SR_4_Time +ISTTOK:SR_5_Name +ISTTOK:SR_5_StatusStr +ISTTOK:SR_5_Time +ISTTOK:SR_6_Name +ISTTOK:SR_6_StatusStr +ISTTOK:SR_6_Time +ISTTOK:SR_7_Name +ISTTOK:SR_7_StatusStr +ISTTOK:SR_7_Time +ISTTOK:central:TMPump1-ControllerOnInv +ISTTOK:central:TMPump1-ControllerOffInv +ISTTOK:central:TMPump1-MotorOnInv +ISTTOK:central:TMPump1-MotorOffInv +ISTTOK:central:Shot-TorPSTriggerInv +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: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:central:SEEED4RELAY:17:REGISTER:READ +ISTTOK:central:SEEED4RELAY:18:REGISTER:READ +ISTTOK:central:SEEED4RELAY:19:REGISTER:READ +ISTTOK:central:CurrentTime +ISTTOK:central:TMPump2-Speed +ISTTOK:central:TMPump2-Current +ISTTOK:central:Shot-TorPSCurrentImage +ISTTOK:central:UPS-OnBattery +ISTTOK:central:UPS-Shutdown +ISTTOK:central:OPREQ +ISTTOK:central:CLEANINGMANMODE +ISTTOK:central:FSTriggerStart +ISTTOK:central:PROCESS-MODE +ISTTOK:central:PROCESS-REQ +ISTTOK:central:AUTHORISATION +ISTTOK:central:TMPump1-ControllerOn +ISTTOK:central:TMPump1-ControllerOff +ISTTOK:central:TMPump1-MotorOn +ISTTOK:central:TMPump1-MotorOff +ISTTOK:central:TMPump2-Motor +ISTTOK:central:Emergency-UserButton +ISTTOK:central:RPump1-Motor +ISTTOK:central:RPump1-Valve +ISTTOK:central:RPump2-Motor +ISTTOK:central:RPump2-Valve +ISTTOK:central:VVessel-Filament +ISTTOK:central:Lab-WarningLight +ISTTOK:central:Shot-TorPSDisable +ISTTOK:central:Shot-TorPSTrigger +ISTTOK:central:GasIS-Valves +ISTTOK:central:TMPump1-ManualValve +ISTTOK:central:Clean-PrimPneuBreaker +ISTTOK:central:CapBank-Discharge +ISTTOK:central:Clean-TorPneuBreaker +ISTTOK:central:Clean-PrimContactor +ISTTOK:central:Clean-TorContactor +ISTTOK:central:CapBank-Charge +ISTTOK:central:Buzzer +ISTTOK:SR_heartbeat +ISTTOK:SR_i_am_alive +ISTTOK:SR_deadIfZero +ISTTOK:SR_disable +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:SEEED4RELAY:17:REGISTER +ISTTOK:central:SEEED4RELAY:18:REGISTER +ISTTOK:central:SEEED4RELAY:19:REGISTER +ISTTOK:central:OPSTATE +ISTTOK:central:STARTINGSTATE +ISTTOK:central:CLEANINGSTATE +ISTTOK:central:WSHOTINGSTATE +ISTTOK:central:STOPPINGSTATE diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index 7768bb5..b78bc64 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,10 +1,10 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 211215-181848 -ISTTOK:central:PULSE-NUMBER.VAL 49461 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 220204-002940 +ISTTOK:central:PULSE-NUMBER.VAL 49468 ISTTOK:central:LogMessage.VAL -ISTTOK:central:LASTOPSTATE.VAL 2 +ISTTOK:central:LASTOPSTATE.VAL 5 ISTTOK:central:OPREQ.VAL 1 ISTTOK:central:PROCESS-MODE.VAL 0 -ISTTOK:central:CLEANINGMANMODE.VAL 0 +ISTTOK:central:CLEANINGMANMODE.VAL 1 ISTTOK:central:Emergency-UserButton.VAL 0 ISTTOK:central:TMPump1-ManualValve.VAL 1 ISTTOK:central:Shot-TorPSCurrent 32 diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index a12a0a8..e12e627 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -27,10 +27,12 @@ dbLoadRecords("db/ISTTOKmachineControl.db","P=ISTTOK:,R=central:") ## SEEED RELAY BOARD dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=17") dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=18") +dbLoadRecords("db/seeed4relay.db","P=ISTTOK:,R=central:,A=19") ## Load Serial drivers #drvAsynSerialPortConfigure("RS0","/dev/ttyAMA0") +#drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") drvAsynSerialPortConfigure("RS0","/dev/ttyUSB0") asynSetOption("RS0", 0, "baud", "9600") asynSetOption("RS0", 0, "bits", "8") From d616a7fa1f0daf1362ae2c1feca7f00418d34b61 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Fri, 4 Feb 2022 15:42:12 +0000 Subject: [PATCH 3/6] Inserted 3rd Relay Board and PVs --- .../ISTTOKrpiApp/Db/ISTTOKmachineControl.db | 56 ++++++++++++------- .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 16 +++--- .../iocBoot/iocISTTOKrpi/access_security.acf | 4 +- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 4 +- 4 files changed, 48 insertions(+), 32 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index 7634e06..2133001 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -275,18 +275,6 @@ record(bo, "$(P)$(R)VVessel-Filament" ) { field(PINI,"YES") } -############################## -# LIGHTS ON/OFF # -############################## -record(bo, "$(P)$(R)Lab-WarningLight" ) { - 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") -} - ############ # NOT USED # ############ @@ -298,14 +286,6 @@ record(bo, "$(P)$(R)Lab-WarningLight" ) { ############### ############### -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") -} - record(bo, "$(P)$(R)Shot-TorPSTrigger" ) { field(DESC," Trigger da FRAEP") field( ZNAM, "Off" ) @@ -463,6 +443,42 @@ record(bo, "$(P)$(R)Buzzer" ) { field(OSV,"MINOR") } +############################## +# LIGHTS ON/OFF # +############################## +record(bo, "$(P)$(R)Lab-WarningLight" ) { + field(DESC,"Luzes de sinalização, 220V ") +# ####field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B5 PP" ) + field(OUT,"$(P)$(R)SEEED4RELAY:19:REGISTER.B0 PP") + field(ZNAM,"OFF") + field(ONAM, "ON") + field(VAL, "0") + field(OSV,"MINOR") +} +# field(ZNAM, "On" ) +# field(ONAM, "Off" ) +# field(VAL,"1") +#} + +###################################### +# Tor Power Supply Disable # +# É desligado na emergência e em qualquer estado que +# não seja Process ou Wait Shot. +###################################### +record(bo, "$(P)$(R)Shot-TorPSDisable" ) { + field(DESC,"Tor Power Supply Disable") + ####field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B1 PP" ) + field(OUT,"$(P)$(R)SEEED4RELAY:19:REGISTER.B1 PP") + field( ZNAM, "Enabled" ) + field( ONAM, "Disabled" ) + field(VAL,"0") + field(OSV,"MINOR") +} +# field( ZNAM, "Off" ) +# field( ONAM, "On" ) +# field(VAL,"1") +#} + # field(ZNAM, "Off" ) # field(ONAM, "Pulse" ) # field(HIGH, "2.5") diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index a6a617f..1a35789 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -312,7 +312,7 @@ ss PulseSequence { IsttokGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokGasIS_Valves); - IsttokLab_WarningLight = PCF_RELAY_OFF; + IsttokLab_WarningLight = SEEED_RELAY_OFF; pvPut(IsttokLab_WarningLight); IsttokClean_TorPneuBreaker = SEEED_RELAY_OFF; @@ -321,7 +321,7 @@ ss PulseSequence { IsttokClean_TorContactor = SEEED_RELAY_OFF; pvPut(IsttokClean_TorContactor); - Isttok_TorPSDisable = PCF_RELAY_OFF; + Isttok_TorPSDisable = SEEED_RELAY_OFF; pvPut(Isttok_TorPSDisable); Isttok_TorPSTrigger= OFF; @@ -436,7 +436,7 @@ ss PulseSequence { pvPut(IsttokOPSTATE); IsttokLastOPSTATE = POS_Idle; pvPut(IsttokLastOPSTATE); - Isttok_TorPSDisable = PCF_RELAY_OFF; + Isttok_TorPSDisable = SEEED_RELAY_OFF; pvPut(Isttok_TorPSDisable); IsttokProcReq = STOP; pvPut(IsttokProcReq); @@ -547,7 +547,7 @@ ss PulseSequence { strcpy(msg, "Toroidal Shot Enable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - Isttok_TorPSDisable = PCF_RELAY_ON; + Isttok_TorPSDisable = SEEED_RELAY_ON; pvPut(Isttok_TorPSDisable); IsttokOPSTATE = POS_WaitShot; pvPut(IsttokOPSTATE); @@ -597,7 +597,7 @@ ss PulseSequence { IsttokOPSTATE = POS_Stopping; pvPut(IsttokOPSTATE); /*Just to be sure */ - Isttok_TorPSDisable = PCF_RELAY_OFF; + Isttok_TorPSDisable = SEEED_RELAY_OFF; pvPut(Isttok_TorPSDisable); IsttokCapBank_Charge = SEEED_RELAY_OFF; @@ -641,7 +641,7 @@ ss PulseSequence { strcpy(msg, "Emergency Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(MAJOR, "%s\n",msg); - Isttok_TorPSDisable = PCF_RELAY_OFF; + Isttok_TorPSDisable = SEEED_RELAY_OFF; pvPut(Isttok_TorPSDisable); strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); @@ -1123,7 +1123,7 @@ ss ShotSequence { strcpy(msg, "Lights ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokLab_WarningLight = PCF_RELAY_ON; + IsttokLab_WarningLight = SEEED_RELAY_ON; pvPut(IsttokLab_WarningLight); WSHOTINGSTATE = WSHTST_Shooting3; pvPut(WSHOTINGSTATE); @@ -1305,7 +1305,7 @@ ss ShotSequence { strcpy(msg, "Lights OFF and Recovering..." ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokLab_WarningLight = PCF_RELAY_OFF; + IsttokLab_WarningLight = SEEED_RELAY_OFF; pvPut(IsttokLab_WarningLight); WSHOTINGSTATE = WSHTST_ShotEnd; pvPut(WSHOTINGSTATE); diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf index a94fc6e..655a5b7 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/access_security.acf @@ -1,6 +1,6 @@ #UAG(uag) {pi,root,opertok,codac-dev,pricardofc} -UAG(uag) {pi,root,opertok,codac-dev} -HAG(hag) {rpi-isttok,opertok-desktop,atca2} +UAG(uag) {pi,root,opertok,codac-dev,oper} +HAG(hag) {rpi-isttok,opertok-desktop,atca2,timings} ASG(DEFAULT) { RULE(1,READ) RULE(1,WRITE) { diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index b78bc64..a8b23c7 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav @@ -1,7 +1,7 @@ -# autosave R5.3 Automatically generated - DO NOT MODIFY - 220204-002940 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 220204-153705 ISTTOK:central:PULSE-NUMBER.VAL 49468 ISTTOK:central:LogMessage.VAL -ISTTOK:central:LASTOPSTATE.VAL 5 +ISTTOK:central:LASTOPSTATE.VAL 2 ISTTOK:central:OPREQ.VAL 1 ISTTOK:central:PROCESS-MODE.VAL 0 ISTTOK:central:CLEANINGMANMODE.VAL 1 From 8e534c636bc4bd358a6482ca38259f609e175153 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 14 Feb 2022 16:45:44 +0000 Subject: [PATCH 4/6] Inserted 3rd Relay Board and PVs --- epics/README.md | 9 +++- .../ISTTOKrpiApp/Db/ISTTOKmachineControl.db | 30 ++++++------ .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 49 ++++++++++++++++--- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 2 +- .../ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd | 2 +- 5 files changed, 66 insertions(+), 26 deletions(-) diff --git a/epics/README.md b/epics/README.md index 39c6393..6fd7836 100644 --- a/epics/README.md +++ b/epics/README.md @@ -217,7 +217,6 @@ Process Variables in this IOC Server: | ISTTOK:central:TDA8444:32:DAC_CH3| longout | no | | ISTTOK:central:TDA8444:32:DAC_CH5| longout | no | | ISTTOK:central:TDA8444:32:DAC_CH6| longout | no | -| ISTTOK:central:Shot-TorPSCurrent| longout | no | ---------- * Connected to PCF8591 ADC / DAC register @ address 0x48=d72 @@ -259,6 +258,14 @@ SPDT Relay Address = 17 |ISTTOK:central:Buzzer| bo | 3 | Relay NO/NC| +* Connected to Seeeduino- 4-Channel SPDT Relay Address = 19 + +|PV Name | PV Type | Bit | Relay NO/NC| +|:----------|-------|---:| +| ISTTOK:central:Shot-TorPSDisable| 0 | NO | +| ISTTOK:central:Lab-WarningLight| 1 | NO | + + ### Vacuum Node (**Not used, backup server only**) - Vacuum Pfeiffer Sensors (RS485) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index 2133001..9518345 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -443,13 +443,27 @@ record(bo, "$(P)$(R)Buzzer" ) { field(OSV,"MINOR") } +###################################### +# Tor Power Supply Disable # +# É desligado na emergência e em qualquer estado que +# não seja Process ou Wait Shot. +###################################### +record(bo, "$(P)$(R)Shot-TorPSDisable" ) { + field(DESC,"Tor Power Supply Disable") + ####field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B1 PP" ) + field(OUT,"$(P)$(R)SEEED4RELAY:19:REGISTER.B0 PP") + field( ZNAM, "Enabled" ) + field( ONAM, "Disabled" ) + field(VAL,"0") + field(OSV,"MINOR") +} ############################## # LIGHTS ON/OFF # ############################## record(bo, "$(P)$(R)Lab-WarningLight" ) { field(DESC,"Luzes de sinalização, 220V ") # ####field(OUT, "$(P)$(R)PCF8574:60:REGISTER.B5 PP" ) - field(OUT,"$(P)$(R)SEEED4RELAY:19:REGISTER.B0 PP") + field(OUT,"$(P)$(R)SEEED4RELAY:19:REGISTER.B1 PP") field(ZNAM,"OFF") field(ONAM, "ON") field(VAL, "0") @@ -460,20 +474,6 @@ record(bo, "$(P)$(R)Lab-WarningLight" ) { # field(VAL,"1") #} -###################################### -# Tor Power Supply Disable # -# É desligado na emergência e em qualquer estado que -# não seja Process ou Wait Shot. -###################################### -record(bo, "$(P)$(R)Shot-TorPSDisable" ) { - field(DESC,"Tor Power Supply Disable") - ####field( OUT, "$(P)$(R)PCF8574:61:REGISTER.B1 PP" ) - field(OUT,"$(P)$(R)SEEED4RELAY:19:REGISTER.B1 PP") - field( ZNAM, "Enabled" ) - field( ONAM, "Disabled" ) - field(VAL,"0") - field(OSV,"MINOR") -} # field( ZNAM, "Off" ) # field( ONAM, "On" ) # field(VAL,"1") diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index 1a35789..e306914 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -18,10 +18,18 @@ **/ //%% #include "errlog.h" -program IsttokSeqExec +program IsttokSeqExec ("output=logFile.txt") %{#include "errlog.h"}% +%%#include /* for exit() */ +%%#include /* for exit() */ +%%#include /* for exit() */ /* CONSTANT DECLARATION*/ -/*Relays and INPUT (Valleman Board) have negative Logic!*/ +/*Relays and INPUT PVs on Valleman Board have negative Logic!*/ +/*=================== declarations =========================*/ + +int fd; /* file descriptor for logging */ +char *pmac; /* used to access program macros */ + short PCF_RELAY_ON = 0; short PCF_RELAY_OFF= 1; short PCF_INPUT_ON = 0; @@ -142,12 +150,13 @@ assign IsttokRPump2_Motor to "ISTTOK:central:RPump2-Motor"; short IsttokRPump2_Valve; assign IsttokRPump2_Valve to "ISTTOK:central:RPump2-Valve"; - +/* No use for these, Controller does not respond 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"; @@ -277,6 +286,23 @@ ss PulseSequence { /*********** State: init ****************** */ state init { entry { + fd = -1; + /* Use parameter to define logging file */ + + pmac = macValueGet("output"); + if (pmac == 0 || pmac[0] == 0) { + printf("No macro defined for \"output\"\n"); + fd = 1; + } + else { + fd = open(pmac, (O_CREAT | O_WRONLY), 0664); +/* if (fd == ERROR) { */ + if (fd == -1) { + printf("Can't open %s\n", pmac); + exit (-1); + } + } + dprintf(fd, "Starting program\n"); strcpy(msg, "INIT: Sequence Entry"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -326,13 +352,13 @@ ss PulseSequence { Isttok_TorPSTrigger= OFF; pvPut(Isttok_TorPSTrigger); - +/* IsttokTMPump1_ControllerOff = OFF; pvPut(IsttokTMPump1_ControllerOff); IsttokTMPump1_ControllerOn = OFF; pvPut(IsttokTMPump1_ControllerOn); - +*/ IsttokTMPump1_MotorOff = OFF; pvPut(IsttokTMPump1_MotorOff); @@ -457,7 +483,6 @@ ss PulseSequence { } state Emergency 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; State should recover from */ @@ -466,8 +491,8 @@ ss PulseSequence { strcpy(msg, "State Idle to Stopping"); pvPut(msg); errlogSevPrintf(MINOR, "%s\n", msg); - sprintf(sendMail, "Rpump1 Pressure:%1.1e TMP1 Emergency:%d TMP1 Adm. Pressure:%4.2e", - IsttokRPump1_Pressure, IsttokTMPump1_Emergency, IsttokTMPump1_Pressure); + sprintf(sendMail, "Vacuum Emergency while Idle, Rpump1 Pressure:%1.1e, TMP1 Adm. Pressure:%4.2e, TMP1 Emergency:%d", + IsttokRPump1_Pressure, IsttokTMPump1_Pressure, IsttokTMPump1_Emergency); pvPut(sendMail); } state Stopping @@ -1394,6 +1419,14 @@ ss StoppingSequence { when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping } } +/* Exit procedure - close the log file +exit { + printf("close fd=%d\n", fd); + if ((fd > 0) && (fd != ioGlobalStdGet(1)) ) + close(fd); + fd = -1; +} +*/ /**** END PROGRAM ***/ diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/save/iocISTTOKrpi.sav index a8b23c7..da711ab 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 - 220204-153705 +# autosave R5.3 Automatically generated - DO NOT MODIFY - 220214-164146 ISTTOK:central:PULSE-NUMBER.VAL 49468 ISTTOK:central:LogMessage.VAL ISTTOK:central:LASTOPSTATE.VAL 2 diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index e12e627..096618f 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -83,4 +83,4 @@ asInit create_monitor_set("$(IOC).req", 30, "P=ISTTOK:,R=central:") ## Start any sequence programs , use safe mode -seq IsttokSeqExec "unit=ISTTOK" +seq IsttokSeqExec "unit=ISTTOK,node=central,output=logFile2" From 7e88e4ca477726f0e520700f69c68583519ce556 Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Mon, 14 Feb 2022 16:48:21 +0000 Subject: [PATCH 5/6] Inserted 3rd Relay Board and PVs --- epics/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epics/README.md b/epics/README.md index 6fd7836..95afe17 100644 --- a/epics/README.md +++ b/epics/README.md @@ -262,8 +262,8 @@ SPDT Relay Address = 17 |PV Name | PV Type | Bit | Relay NO/NC| |:----------|-------|---:| -| ISTTOK:central:Shot-TorPSDisable| 0 | NO | -| ISTTOK:central:Lab-WarningLight| 1 | NO | +| ISTTOK:central:Shot-TorPSDisable| bo | 0 | NO | +| ISTTOK:central:Lab-WarningLight| bo |1 | NO | ### Vacuum Node (**Not used, backup server only**) From 9736f169fc9a213636b2b766247c7c6c24037cdb Mon Sep 17 00:00:00 2001 From: Bernardo Carvalho Date: Wed, 16 Feb 2022 18:28:45 +0000 Subject: [PATCH 6/6] Inserted Clean Manual State. Change sequencer version, 2.2.9 --- .../ISTTOKrpiApp/Db/ISTTOKmachineControl.db | 6 +-- .../ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db | 2 + .../ISTTOKrpiApp/src/IsttokSeqExec.stt | 38 +++++++++++++----- epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi | Bin 50620 -> 50620 bytes .../ISTTOKrpi/iocBoot/iocISTTOKrpi/envPaths | 2 +- .../iocISTTOKrpi/save/iocISTTOKrpi.sav | 4 +- epics/iocs/RELEASE.local | 3 +- 7 files changed, 37 insertions(+), 18 deletions(-) diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index 9518345..918b8ec 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -310,9 +310,9 @@ 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)SEEED4RELAY:17:REGISTER.B0 PP" ) - field( ZNAM, "OFF" ) - field( ONAM, "ON" ) - field(VAL,"0") + field( ZNAM, "OFF" ) + field( ONAM, "ON" ) + field(VAL,"0") } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db index d0e4dd1..7ee84dc 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db @@ -246,6 +246,7 @@ record(mbbo, "$(P)$(R)CLEANINGSTATE") { field(FRVL, "4") field(FVVL, "5") field(SXVL, "6") + field(SVVL, "7") field(ZRST, "NonCleaning") field(ONST, "Cleaning1") field(TWST, "Cleaning2") @@ -253,6 +254,7 @@ record(mbbo, "$(P)$(R)CLEANINGSTATE") { field(FRST, "Cleaning4") field(FVST, "Cleaning5") field(SXST, "Cleaning6") + field(SVST, "Manual") field(VAL, "0") } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index e306914..49e6b1e 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -52,6 +52,8 @@ short CLNST_Cleaning2 = 2; short CLNST_Cleaning3 = 3; short CLNST_Cleaning4 = 4; short CLNST_Cleaning5 = 5; +short CLNST_Cleaning6 = 6; +short CLNST_Manual = 7; short WSHTST_NonShoting = 0; short WSHTST_WaitTrg = 1; @@ -128,9 +130,9 @@ short CLEANINGSTATE; assign CLEANINGSTATE to "ISTTOK:central:CLEANINGSTATE"; monitor CLEANINGSTATE; -short CLEANINGMANMODE; -assign CLEANINGMANMODE to "ISTTOK:central:CLEANINGMANMODE"; -monitor CLEANINGMANMODE; +short CLEANING_AUTOMODE; +assign CLEANING_AUTOMODE to "ISTTOK:central:CLEANINGMANMODE"; +monitor CLEANING_AUTOMODE; short WSHOTINGSTATE; assign WSHOTINGSTATE to "ISTTOK:central:WSHOTINGSTATE"; @@ -529,7 +531,7 @@ ss PulseSequence { pvPut(IsttokOPSTATE); } when ((IsttokProcReq==STOP) && (CLEANINGSTATE == CLNST_NonCleaning)) { - strcpy(msg, "State to Idle From Clean"); + strcpy(msg, "State from Clean to Idle"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); } state Idle @@ -948,9 +950,19 @@ ss CleaningSequence{ pvPut(CLEANINGSTATE); errlogSevPrintf(NO_ALARM, "%s\n",msg); + strcpy(msg, "Entry Cleanning State Mach"); + pvPut(msg); + errlogSevPrintf(NO_ALARM, "%s\n",msg); } - when(delay(1.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ + when(delay(1.0) && CLEANING_AUTOMODE == 0 && IsttokOPSTATE == POS_Clean){ + strcpy(msg, "Entry on Manual Cleaning..."); + + CLEANINGSTATE = CLNST_Manual; + pvPut(CLEANINGSTATE); + } state CleaningManual + + when(delay(1.0) && CLEANING_AUTOMODE == 1 && IsttokOPSTATE == POS_Clean){ strcpy(msg, "Initiating Auto Cleaning..."); pvPut(msg); strcpy(msg, "GIS Valves OPEN"); @@ -965,6 +977,10 @@ ss CleaningSequence{ pvPut(CLEANINGSTATE); } state Cleaning1 } + state CleaningManual { + when (IsttokProcReq==STOP) { + } state NonCleaning + } state Cleaning1 { when (delay(1.0) && IsttokProcReq==STOP) { // Reversing Cleaning @@ -977,14 +993,14 @@ ss CleaningSequence{ pvPut(IsttokGasIS_Valves); } state NonCleaning - when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean ) { + when (delay(2.0) && CLEANING_AUTOMODE == 1 && IsttokOPSTATE == POS_Clean ) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokVVessel_Filament = PCF_RELAY_ON; pvPut(IsttokVVessel_Filament); - CLEANINGSTATE = CLNST_Cleaning2; - pvPut(CLEANINGSTATE); + CLEANINGSTATE = CLNST_Cleaning2; + pvPut(CLEANINGSTATE); } state Cleaning2 } state Cleaning2 { @@ -998,7 +1014,7 @@ ss CleaningSequence{ CLEANINGSTATE = CLNST_Cleaning1; pvPut(CLEANINGSTATE); } state Cleaning1 - when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean) { + when (delay(2.0) && CLEANING_AUTOMODE == 1 && IsttokOPSTATE == POS_Clean) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -1018,7 +1034,7 @@ ss CleaningSequence{ CLEANINGSTATE = CLNST_Cleaning2; pvPut(CLEANINGSTATE); } state Cleaning2 - when(delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ + when(delay(2.0) && CLEANING_AUTOMODE == 1 && IsttokOPSTATE == POS_Clean){ strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); @@ -1039,7 +1055,7 @@ ss CleaningSequence{ CLEANINGSTATE = CLNST_Cleaning3; pvPut(CLEANINGSTATE); } state Cleaning3 - when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ + when (delay(2.0) && CLEANING_AUTOMODE == 1 && IsttokOPSTATE == POS_Clean){ strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); diff --git a/epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi b/epics/iocs/ISTTOKrpi/bin/linux-arm/ISTTOKrpi index 78da42845c73a9141d1f00e33b38f174f2437f52..ba5af3e519b752d38b3b88043793435f6bfaad11 100755 GIT binary patch delta 1232 zcmb`@-%C?r7zgn8-CX{J)CDS1DjG)Rk0prGWG;*hQ7n{1Fhwa8DtGCHv`I#mfzo@C zb#rzRB!nOw36mLW5mGmn6@mq(99ZgTY0x6`^gTOI_5J}3#`F0;?{=Q&yn#V$V9+}5 z=lk-uU)}TEdfHUs65{*W=8UUP?!Q+j_?9cC@K|BFI_e&_sHIhp<9VY9)uwqP4$jz% zp;i0K+pCeU0qu{&l7o_0Bri!`kUTGWM)IWOanoJV!K2cFU-F3LVaWrMeUf`5dn9+l zYPfD8F=cB<-`KG$+KyGxJeAWyO?}iWjQQ6-Q(YH7&bw@DNVB4% zHJ>kw3#|`R9vP?g^{ZCK60%bj?Sa_ecHDaf-5BQo6m%$BFh|h_ll^Ob=&c|d{SW9_ z(7TJ?TX+v_^jnbU@f*g3)(y{)FTs=KE_j@L5gsLXz<$$Stqoy>4vdEmlbhiI@;TT? zZh(8pXJ8Mx4(=q^z-{DexQToct|y;>s~ukR4O|G7bl`-`$mMV`xfDJ`E`hVj#c(>g z08Sv$EJ|H71+c*u~t?%<<7|Y;NX+Xx;pq z6Qenz7F-+Rc-iUxBK}Pc^?$Jm-aF_tzzNvs-(tNWL0kdxGwo6BXmpz^sao3YlE tXqn5k84EeZb;!7^UNHt4OEidgkTHH!{F=*+H}8b8h;To*tIlUW%WpEBRSy6F delta 1234 zcmb`_?@Lor7zglkHs|l~#{#pk6zLZ!IwM$U=|Ip5Wf6%*Hc=#@EQ4P7BG{ru#ssAk z(Tm~^3JNhW?q2v}f-Z@OUSt_a8La7rTPn>mFq+-IXZKX+59q>pKHulud(U$Z3kR&> zfORxTHwI#hP1;h=;( z8;sds48#&EVeOAsB`--{kUS@OM)FI^Q^ttcuoKH?A+J(=KVSJ zEa=@vZw5|Tj9kIY)IwX7o?iX%> zeZt4!K4CZ9E8GNk3m=Btg&W{j;dtD#;?3BD5GzSbR=%^D`7GvyX3j`vKDn7Q zlU4tlvyypLEx$TQ@v-Cn3L00J{a>sIANoBdd}#B^CXGN!^S^uqIbChL@!p98+8^0w w<717nwn(Xs59DOmAbwbV>@mcLaI?1%-(F|yk