Added SEEEDUINO Relay PVs. Adapted State Machine

Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
This commit is contained in:
Bernardo Carvalho
2022-01-26 12:31:17 +00:00
parent ef2a3c2d26
commit 5f86117e7f
7 changed files with 90 additions and 47 deletions

View File

@@ -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")
}

View File

@@ -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")
}

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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