diff --git a/epics/README.md b/epics/README.md index 0e8498e..ba41bc0 100644 --- a/epics/README.md +++ b/epics/README.md @@ -241,8 +241,8 @@ Process Variables in this IOC Server: |ISTTOK:central:TMPump1-PressureAdmission | ai | yes | out "0030074002=?108" | ---------- -* Connected to [Seeeduino](https://wiki.seeedstudio.com/Grove-4-Channel_SPDT_Relay) -Grove - 4-Channel SPDT Relay Address = 17 +* Connected to [Seeeduino](https://wiki.seeedstudio.com/Grove-4-Channel_SPDT_Relay) Grove - 4-Channel +SPDT Relay Address = 17 |PV Name | PV Type | Bit | Relay NO/NC| |:----------|-------|---:| diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db index 220f6e3..a9c79c9 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKmachineControl.db @@ -383,17 +383,6 @@ record(bo, "$(P)$(R)Clean-PrimContactor" ) { field(VAL,"1") } -#################################### -### PRIMARY CLEAN BREAKER ON/OFF ### -#################################### -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") -} ################################## # GIS VALVES ON/OFF # @@ -407,17 +396,6 @@ record(bo, "$(P)$(R)GasIS-Valves" ) { field(VAL,"0") } -########################################## -# CAP BANK DISCHARGE ON/OFF # -########################################## -record(bo, "$(P)$(R)CapBank-Discharge" ) { - 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") -} #record(bo,"$(P)$(R)Primary-PressureCondition"){ # field(ZNAM, "OFF" ) @@ -444,3 +422,41 @@ record(bo, "$(P)$(R)TMPump1-ManualValve"){ field( ZNAM, "Closed") field( ONAM, "Open") } + +### SEEED 4 RELAY BOARD +# +# + +################################## +# GIS VALVES ON/OFF # +################################## +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") +} + +#################################### +### PRIMARY CLEAN BREAKER ON/OFF ### +#################################### +record(bo, "$(P)$(R)Clean-PrimPneuBreaker"){ +#record(bo, "$(P)$(R)PrimaryCleanBreakerOnOff"){ + field( DESC, "Primary Cleaning OnOff") + field( OUT, "$(P)$(R)SEEED4RELAY:17:REGISTER.B1 PP" ) + field( ZNAM, "OFF" ) + field( ONAM, "ON" ) + field(VAL,"0") +} +########################################## +# CAP BANK DISCHARGE ON/OFF # +########################################## +record(bo, "$(P)$(R)CapBank-Discharge" ) { + field(DESC,"Liga o circuito de descarga do ELCO ") + field( OUT, "$(P)$(R)SEEED4RELAY:17:REGISTER.B2 PP" ) + 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 4eb0978..1ce0a08 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/ISTTOKstates.db @@ -245,12 +245,14 @@ record(mbbi, "$(P)$(R)CLEANINGSTATE") { field(THVL, "3") field(FRVL, "4") field(FVVL, "5") + field(SXVL, "6") field(ZRST, "NonCleaning") field(ONST, "Cleaning1") field(TWST, "Cleaning2") field(THST, "Cleaning3") field(FRST, "Cleaning4") field(FVST, "Cleaning5") + field(SXST, "Cleaning6") field(VAL, "0") } diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto index 0749574..902cc72 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/Db/seeed4relay.proto @@ -6,6 +6,9 @@ WriteTimeout = 100; MaxInput = 1; ExtraInput = Error; + +# IMPORTANT: Compile drvAsynI2C with flag STREAM_WORKAROUND = 1 + #define CMD_CHANNEL_CTRL 0x10 #define CMD_SAVE_I2C_ADDR 0x11 #define CMD_READ_I2C_ADDR 0x12 diff --git a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt index b34003f..7853408 100644 --- a/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt +++ b/epics/iocs/ISTTOKrpi/ISTTOKrpiApp/src/IsttokSeqExec.stt @@ -27,6 +27,8 @@ short PCF_RELAY_OFF= 1; short PCF_INPUT_ON = 0; short PCF_INPUT_OFF= 1; short PCF_PULSE_ON = 1; +short SEEED_RELAY_OFF= 0; +short SEEED_RELAY_ON = 1; short STRST_NonStarting = 0; short STRST_Starting1 = 1; @@ -226,8 +228,8 @@ 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 IsttokClean_PrimPneuBreaker; +assign IsttokClean_PrimPneuBreaker to "ISTTOK:central:Clean-PrimPneuBreaker"; short IsttokShotCountdown; assign IsttokShotCountdown to "ISTTOK:central:COUNTDOWN"; @@ -287,8 +289,8 @@ ss PulseSequence { IsttokShotClean_PrimContactor = PCF_RELAY_OFF; pvPut(IsttokShotClean_PrimContactor); - IsttokShotClean_PrimPneuBreaker = PCF_RELAY_OFF; - pvPut(IsttokShotClean_PrimPneuBreaker); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); IsttokShotBuzzer = PCF_RELAY_OFF; pvPut(IsttokShotBuzzer); @@ -296,13 +298,13 @@ ss PulseSequence { IsttokShotCapBank_Charge = PCF_RELAY_OFF; pvPut(IsttokShotCapBank_Charge); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; + IsttokShotCapBank_Discharge = SEEED_RELAY_OFF; pvPut(IsttokShotCapBank_Discharge); IsttokShotVVessel_Filament = PCF_RELAY_OFF; pvPut(IsttokShotVVessel_Filament); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); IsttokShotLab_WarningLight = PCF_RELAY_OFF; @@ -595,10 +597,10 @@ ss PulseSequence { IsttokShotCapBank_Charge = PCF_RELAY_OFF; pvPut(IsttokShotCapBank_Charge); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; + IsttokShotCapBank_Discharge = SEEED_RELAY_OFF; pvPut(IsttokShotCapBank_Discharge); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); IsttokShotVVessel_Filament = PCF_RELAY_OFF; @@ -645,13 +647,18 @@ ss PulseSequence { strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; + IsttokShotCapBank_Discharge = SEEED_RELAY_OFF; pvPut(IsttokShotCapBank_Discharge); + strcpy(msg, "Prim_Pneu_Breaker OFF"); + pvPut(msg); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); strcpy(msg, "EMERGENCY: Filament OFF"); @@ -717,12 +724,12 @@ ss PulseSequence { * * strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); * errlogSevPrintf(NO_ALARM, "%s\n",msg); - * IsttokShotCapBank_Discharge = PCF_RELAY_OFF; + * IsttokShotCapBank_Discharge = SEEED_RELAY_OFF; * pvPut(IsttokShotCapBank_Discharge); * * strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); * errlogSevPrintf(NO_ALARM, "%s\n",msg); - * IsttokShotGasIS_Valves = PCF_RELAY_OFF; + * IsttokShotGasIS_Valves = SEEED_RELAY_OFF; * pvPut(IsttokShotGasIS_Valves); * * strcpy(msg, "UPS EMERGENCY: Filament OFF"); @@ -873,7 +880,7 @@ ss CleaningSequence{ entry{ strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); strcpy(msg, "Filament OFF"); @@ -896,6 +903,11 @@ ss CleaningSequence{ IsttokShotClean_TorContactor = PCF_RELAY_OFF; pvPut(IsttokShotClean_TorContactor); + strcpy(msg, "Prim_Pneu_Breaker OFF"); + pvPut(msg); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + CLEANINGSTATE = CLNST_NonCleaning; pvPut(CLEANINGSTATE); @@ -908,8 +920,11 @@ ss CleaningSequence{ strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_ON; + IsttokShotGasIS_Valves = SEEED_RELAY_ON; pvPut(IsttokShotGasIS_Valves); + IsttokClean_PrimPneuBreaker = SEEED_RELAY_ON; + pvPut(IsttokClean_PrimPneuBreaker); + CLEANINGSTATE = CLNST_Cleaning1; pvPut(CLEANINGSTATE); } state Cleaning1 @@ -920,7 +935,9 @@ ss CleaningSequence{ strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_OFF; + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); } state NonCleaning @@ -1007,7 +1024,7 @@ ss CleaningSequence{ IsttokShotClean_TorContactor = PCF_RELAY_OFF; pvPut(IsttokShotClean_TorContactor); /* Close GIS to let Pressure down */ - IsttokShotGasIS_Valves = PCF_RELAY_OFF; + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); CLEANINGSTATE = CLNST_Cleaning4; pvPut(CLEANINGSTATE); @@ -1025,6 +1042,7 @@ ss CleaningSequence{ } } +/*********** SUB-State: ShotSequence Set ************/ ss ShotSequence { state NonShoting { entry { @@ -1089,7 +1107,7 @@ ss ShotSequence { strcpy(msg, "CAPBANK Crowbar Open"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotCapBank_Discharge = PCF_RELAY_ON; + IsttokShotCapBank_Discharge = SEEED_RELAY_ON; pvPut(IsttokShotCapBank_Discharge); strcpy(msg, "Lights ON"); pvPut(msg); @@ -1110,7 +1128,7 @@ ss ShotSequence { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokShotGasIS_Valves = PCF_RELAY_ON; + IsttokShotGasIS_Valves = SEEED_RELAY_ON; pvPut(IsttokShotGasIS_Valves); WSHOTINGSTATE = WSHTST_Shooting4; pvPut(WSHOTINGSTATE); @@ -1235,7 +1253,7 @@ ss ShotSequence { strcpy(msg, "CAPBANK CrowBar Close" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotCapBank_Discharge = PCF_RELAY_OFF; + IsttokShotCapBank_Discharge = SEEED_RELAY_OFF; pvPut(IsttokShotCapBank_Discharge); WSHOTINGSTATE = WSHTST_Shooting11; pvPut(WSHOTINGSTATE); @@ -1253,7 +1271,7 @@ ss ShotSequence { strcpy(msg, "GIS Valves CLOSE" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); - IsttokShotGasIS_Valves = 1; + IsttokShotGasIS_Valves = SEEED_RELAY_OFF; pvPut(IsttokShotGasIS_Valves); strcpy(msg, "Filament OFF" ); pvPut(msg); @@ -1305,7 +1323,10 @@ ss StoppingSequence { pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); - IsttokTMPump1_MotorOff = ON; + IsttokClean_PrimPneuBreaker = SEEED_RELAY_OFF; + pvPut(IsttokClean_PrimPneuBreaker); + + IsttokTMPump1_MotorOff = ON; pvPut(IsttokTMPump1_MotorOff); // IsttokTMPump2_Motor = PCF_RELAY_OFF; diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt index 23cfce1..d05bc21 100644 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/pvList.txt @@ -106,7 +106,7 @@ 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:RELAY4:17:REGISTER:READ +ISTTOK:central:SEEED4RELAY:17:REGISTER:READ ISTTOK:central:CurrentTime ISTTOK:central:TMPump2-Speed ISTTOK:central:TMPump2-Current @@ -151,7 +151,7 @@ ISTTOK:central:PCF8574:57:REGISTER ISTTOK:central:PCF8574:60:REGISTER ISTTOK:central:PCF8574:61:REGISTER ISTTOK:central:PCF8591:72:CTRLREGISTER -ISTTOK:central:RELAY4:17:REGISTER +ISTTOK:central:SEEED4RELAY:17:REGISTER ISTTOK:central:OPSTATE ISTTOK:central:STARTINGSTATE ISTTOK:central:CLEANINGSTATE diff --git a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd index 36c66f3..036fd57 100755 --- a/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd +++ b/epics/iocs/ISTTOKrpi/iocBoot/iocISTTOKrpi/st.cmd @@ -15,6 +15,7 @@ dbLoadDatabase "dbd/ISTTOKrpi.dbd" ISTTOKrpi_registerRecordDeviceDriver pdbbase ## Load I2C drivers +# *** IMPORTANT: Compile drvAsynI2C with flag STREAM_WORKAROUND = 1 drvAsynI2CConfigure( "I2C", "/dev/i2c-1", 1 ) ## Load record instances