State Machine implemting UPS states

This commit is contained in:
Bernardo Carvalho
2021-12-15 16:37:10 +00:00
parent a055c01789
commit 947b95ffee
4 changed files with 172 additions and 155 deletions

View File

@@ -105,15 +105,16 @@ record(bo, "$(P)$(R)UPS-OnBattery") {
info(autosaveFields, "VAL STAT") info(autosaveFields, "VAL STAT")
field(DESC, "Main APC UPS On Battery status") field(DESC, "Main APC UPS On Battery status")
field(VAL, "0") field(VAL, "0")
field(PINI, "YES")
field(ZNAM, "OFF") field(ZNAM, "OFF")
field(ONAM, "ON") field(ONAM, "ON")
field(OSV, "MAJOR") field(OSV, "MAJOR")
} }
record(bo, "$(P)$(R)UPS-Shutdown") { record(bo, "$(P)$(R)UPS-Shutdown") {
info(autosaveFields, "VAL STAT") # info(autosaveFields, "VAL STAT")
field(DESC, "Main APC UPS Shutdown request") field(DESC, "Main APC UPS Shutdown request")
# field(VAL, "0") field(VAL, "0")
field(ZNAM, "OFF") field(ZNAM, "OFF")
field(ONAM, "ON") field(ONAM, "ON")
field(OSV, "MAJOR") field(OSV, "MAJOR")

View File

@@ -71,7 +71,7 @@ short POS_Clean =3;
short POS_WaitShot=4; short POS_WaitShot=4;
short POS_Stopping=5; short POS_Stopping=5;
short POS_Emergency=6; short POS_Emergency=6;
short POS_UPSEmergency=7; //short POS_UPSEmergency=7;
short ON=1; short ON=1;
short OFF=0; short OFF=0;
@@ -248,9 +248,9 @@ short IsttokupsBatteryON;
assign IsttokupsBatteryON "{unit}:central:UPS-OnBattery"; assign IsttokupsBatteryON "{unit}:central:UPS-OnBattery";
monitor IsttokupsBatteryON; monitor IsttokupsBatteryON;
short IsttokShutdown; short IsttokUpsShutdown;
assign IsttokShutdown "ISTTOK:central:UPS-Shutdown"; assign IsttokUpsShutdown "ISTTOK:central:UPS-Shutdown";
monitor IsttokShutdown; monitor IsttokUpsShutdown;
//string tmp1_stat; //string tmp1_stat;
@@ -264,6 +264,7 @@ assign sendMail to "ISTTOK:central:sendmail";
/* Main Pulse State Set */ /* Main Pulse State Set */
ss PulseSequence { ss PulseSequence {
/*********** State: init ****************** */
state init { state init {
entry { entry {
strcpy(msg, "INIT: Sequence Entry"); strcpy(msg, "INIT: Sequence Entry");
@@ -349,6 +350,7 @@ ss PulseSequence {
// IsttokOPSTATE = POS_Stopping; // IsttokOPSTATE = POS_Stopping;
// pvPut(IsttokOPSTATE); // pvPut(IsttokOPSTATE);
} state Stopping } state Stopping
when (delay(5) && IsttokOPREQ == START ) { when (delay(5) && IsttokOPREQ == START ) {
strcpy(msg, "State to Starting"); strcpy(msg, "State to Starting");
pvPut(msg); pvPut(msg);
@@ -359,7 +361,7 @@ ss PulseSequence {
} state Starting } state Starting
} }
/*********** State Stopped ****************** */ /*********** State: Stopped ****************** */
state Stopped { state Stopped {
entry{ entry{
IsttokLastOPSTATE = POS_Stopped; IsttokLastOPSTATE = POS_Stopped;
@@ -375,6 +377,7 @@ ss PulseSequence {
} state Emergency } state Emergency
when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON)) { when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON)) {
// && (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokTMPump1_Emergency) == pvStatOK)) {
strcpy(msg, "State to Starting"); strcpy(msg, "State to Starting");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
@@ -382,18 +385,25 @@ ss PulseSequence {
} state Starting } state Starting
} }
/******** State Starting ***********************/ /******** State: Starting ***********************/
state Starting { state Starting {
entry{ entry{
IsttokOPSTATE = POS_Starting; IsttokOPSTATE = POS_Starting;
pvPut(IsttokOPSTATE); pvPut(IsttokOPSTATE);
} }
when(IsttokEmergency == ON) { when(IsttokEmergency == ON) {
strcpy(msg, "Emergency from Starting"); strcpy(msg, "Emergency from Starting");
pvPut(msg); pvPut(msg);
errlogSevPrintf(MAJOR, "%s\n",msg); errlogSevPrintf(MAJOR, "%s\n",msg);
/* Pulse state change to Emergency*/ /* Pulse state change to Emergency*/
} state Emergency } state Emergency
when (IsttokupsBatteryON == ON) {
strcpy(msg, "Power UPS OB, Starting to Stopping");
pvPut(msg);
errlogSevPrintf(MAJOR, "%s\n",msg);
IsttokOPREQ = STOP;
pvPut(IsttokOPREQ);
} state Stopping
when (IsttokOPREQ == STOP) { when (IsttokOPREQ == STOP) {
strcpy(msg, "State to Stopping"); strcpy(msg, "State to Stopping");
pvPut(msg); pvPut(msg);
@@ -409,9 +419,9 @@ ss PulseSequence {
} state Idle } state Idle
} }
/********** State Idle ****************************/ /********** State: Idle ****************************/
state Idle { state Idle {
entry{ entry {
IsttokOPSTATE = POS_Idle; IsttokOPSTATE = POS_Idle;
pvPut(IsttokOPSTATE); pvPut(IsttokOPSTATE);
IsttokLastOPSTATE = POS_Idle; IsttokLastOPSTATE = POS_Idle;
@@ -420,16 +430,13 @@ ss PulseSequence {
pvPut(IsttokShotShot_TorPSDisable); pvPut(IsttokShotShot_TorPSDisable);
IsttokProcReq = STOP; IsttokProcReq = STOP;
pvPut(IsttokProcReq); pvPut(IsttokProcReq);
} }
when (IsttokupsBatteryON == ON) { when (IsttokUpsShutdown == ON) {
strcpy(msg, "Power Emergency, go to Stopping"); strcpy(msg, "Power Emergency SD, Idle to Stopping");
pvPut(msg); pvPut(msg);
errlogSevPrintf(MAJOR, "%s\n",msg); errlogSevPrintf(MAJOR, "%s\n",msg);
IsttokOPREQ = STOP; IsttokOPREQ = STOP;
pvPut(IsttokOPREQ); pvPut(IsttokOPREQ);
/* State change to Stopping */
IsttokOPSTATE = POS_UPSEmergency;
pvPut(IsttokOPSTATE);
} state Stopping } state Stopping
when(IsttokEmergency == ON){ when(IsttokEmergency == ON){
@@ -439,14 +446,17 @@ ss PulseSequence {
/* Pulse state change to Emergency*/ /* Pulse state change to Emergency*/
} state Emergency } state Emergency
when ( pvStatus(IsttokRPump1_Pressure) != pvStatOK || pvStatus(IsttokTMPump1_Emergency) != pvStatOK ) { 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) { // pvStatus(IsttokTMPump1_Emergency) != pvStatOK || pvStatus(IsttokTMPump2_Emergency) != pvStatOK) {
/* Vacuum emergency: Pulse state change to Stopping */ /* Vacuum emergency: Pulse state change to Stopping */
IsttokOPREQ = STOP; /*IsttokOPREQ = STOP; State should recover from */
pvPut(IsttokOPREQ); /*pvPut(IsttokOPREQ);*/
//strcpy(sendMail, "Vacuum Emergency while Idle"); //strcpy(sendMail, "Vacuum Emergency while Idle");
sprintf(sendMail, "Rpump1:%1.1e TMP1:%d",IsttokRPump1_Pressure,IsttokTMPump1_Emergency); 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);
pvPut(sendMail); pvPut(sendMail);
} state Stopping } state Stopping
@@ -460,12 +470,14 @@ ss PulseSequence {
errlogSevPrintf(MINOR, "%s\n",msg); errlogSevPrintf(MINOR, "%s\n",msg);
/* Pulse state change to Stopping */ /* Pulse state change to Stopping */
} state Stopping } state Stopping
when (IsttokProcReq==START && IsttokProcMode==CLEAN ) { when (IsttokProcReq==START && IsttokProcMode==CLEAN ) {
strcpy(msg, "State to Clean"); strcpy(msg, "State to Clean");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
/* Pulse state change to Clean */ /* Pulse state change to Clean */
} state Clean } state Clean
when (IsttokProcReq==START && IsttokProcMode==SHOT ) { when (IsttokProcReq==START && IsttokProcMode==SHOT ) {
strcpy(msg, "State to WaitShot"); strcpy(msg, "State to WaitShot");
pvPut(msg); pvPut(msg);
@@ -474,7 +486,7 @@ ss PulseSequence {
} state WaitShot } state WaitShot
} }
/******* State Clean ***************************/ /******* State: Clean ***************************/
state Clean { state Clean {
entry{ entry{
IsttokOPSTATE = POS_Clean; IsttokOPSTATE = POS_Clean;
@@ -488,6 +500,17 @@ ss PulseSequence {
when (IsttokOPREQ == STOP) {} state Stopping when (IsttokOPREQ == STOP) {} state Stopping
when (IsttokupsBatteryON == ON) {
strcpy(msg, "Power UPS OB, Clean to Idle");
pvPut(msg);
errlogSevPrintf(MAJOR, "%s\n",msg);
IsttokOPREQ = STOP;
pvPut(IsttokOPREQ);
/* State change to UPSEmergency */
/*IsttokOPSTATE = POS_Idle;*/
/*pvPut(IsttokOPSTATE);*/
} state Idle
when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) { when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK) {
//when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK || //when ( pvStatus(IsttokTMPump1_Emergency) != pvStatOK ||
// pvStatus(IsttokTMPump2_Emergency) != pvStatOK) { // pvStatus(IsttokTMPump2_Emergency) != pvStatOK) {
@@ -507,7 +530,7 @@ ss PulseSequence {
} state Emergency } state Emergency
} }
/******** State WaitShot *************************/ /******** State: WaitShot *************************/
state WaitShot { state WaitShot {
entry{ entry{
strcpy(msg, "Toroidal Shot Enable"); strcpy(msg, "Toroidal Shot Enable");
@@ -519,15 +542,15 @@ ss PulseSequence {
pvPut(IsttokOPSTATE); pvPut(IsttokOPSTATE);
} }
when (IsttokupsBatteryON == ON) { when (IsttokupsBatteryON == ON) {
strcpy(msg, "Power Emergency, go to UPSEmergency"); strcpy(msg, "Power UPS OB, WaitShot to Idle");
pvPut(msg); pvPut(msg);
errlogSevPrintf(MAJOR, "%s\n",msg); errlogSevPrintf(MAJOR, "%s\n",msg);
IsttokOPREQ = STOP; IsttokOPREQ = STOP;
pvPut(IsttokOPREQ); pvPut(IsttokOPREQ);
/* State change to UPSEmergency */ /* State change to UPSEmergency */
IsttokOPSTATE = POS_UPSEmergency; /*IsttokOPSTATE = POS_Idle;*/
pvPut(IsttokOPSTATE); /*pvPut(IsttokOPSTATE);*/
} state UpsEmergency } state Idle
when(IsttokEmergency == ON){ when(IsttokEmergency == ON){
strcpy(msg, "Emergency from WaitShot"); strcpy(msg, "Emergency from WaitShot");
@@ -557,9 +580,11 @@ ss PulseSequence {
} state Stopping } state Stopping
} }
/* ************** State Stopping *********** */ /* ************** State: Stopping *********** */
state Stopping { state Stopping {
entry{ entry{
IsttokOPSTATE = POS_Stopping;
pvPut(IsttokOPSTATE);
/*Just to be sure */ /*Just to be sure */
IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; IsttokShotShot_TorPSDisable = PCF_RELAY_OFF;
pvPut(IsttokShotShot_TorPSDisable); pvPut(IsttokShotShot_TorPSDisable);
@@ -579,14 +604,13 @@ ss PulseSequence {
IsttokProcReq = STOP; IsttokProcReq = STOP;
pvPut(IsttokProcReq); pvPut(IsttokProcReq);
IsttokOPSTATE = POS_Stopping;
pvPut(IsttokOPSTATE);
IsttokLastOPSTATE = POS_Stopping; IsttokLastOPSTATE = POS_Stopping;
pvPut(IsttokLastOPSTATE); pvPut(IsttokLastOPSTATE);
} }
when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON) ) { when ((IsttokOPREQ == START) && (IsttokupsBatteryON != ON) ) {
strcpy(msg, "State to Starting"); //&& (pvStatus(IsttokRPump1_Pressure) == pvStatOK) && (pvStatus(IsttokTMPump1_Emergency) == pvStatOK)) {
strcpy(msg, "State Stopping to Starting");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
/* State change to Starting */ /* State change to Starting */
@@ -600,7 +624,7 @@ ss PulseSequence {
} state Stopped } state Stopped
} }
/*State Emergency*/ /************* State: Emergency ******************/
state Emergency { state Emergency {
entry { entry {
strcpy(msg, "Emergency Toroidal Shot Disable"); strcpy(msg, "Emergency Toroidal Shot Disable");
@@ -674,71 +698,59 @@ ss PulseSequence {
} state Stopped } state Stopped
} }
/*State UpsEmergency*/ /***** State: UpsEmergency *****/
state UpsEmergency { /*
entry { * state UpsEmergency {
strcpy(msg, "Emergency Toroidal Shot Disable"); * entry {
errlogSevPrintf(MAJOR, "%s\n",msg); * strcpy(msg, "Emergency Toroidal Shot Disable");
IsttokShotShot_TorPSDisable = PCF_RELAY_OFF; * errlogSevPrintf(MAJOR, "%s\n",msg);
pvPut(IsttokShotShot_TorPSDisable); * IsttokShotShot_TorPSDisable = PCF_RELAY_OFF;
* pvPut(IsttokShotShot_TorPSDisable);
strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); *
errlogSevPrintf(NO_ALARM, "%s\n",msg); * strcpy(msg, "EMERGENCY: CAPBANK Charge OFF");
IsttokShotCapBank_Charge = PCF_RELAY_OFF; * errlogSevPrintf(NO_ALARM, "%s\n",msg);
pvPut(IsttokShotCapBank_Charge); * IsttokShotCapBank_Charge = PCF_RELAY_OFF;
* pvPut(IsttokShotCapBank_Charge);
strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close"); *
errlogSevPrintf(NO_ALARM, "%s\n",msg); * strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close");
IsttokShotCapBank_Discharge = PCF_RELAY_OFF; * errlogSevPrintf(NO_ALARM, "%s\n",msg);
pvPut(IsttokShotCapBank_Discharge); * IsttokShotCapBank_Discharge = PCF_RELAY_OFF;
* pvPut(IsttokShotCapBank_Discharge);
strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); *
errlogSevPrintf(NO_ALARM, "%s\n",msg); * strcpy(msg, "EMERGENCY: GIS Valves CLOSE");
IsttokShotGasIS_Valves = PCF_RELAY_OFF; * errlogSevPrintf(NO_ALARM, "%s\n",msg);
pvPut(IsttokShotGasIS_Valves); * IsttokShotGasIS_Valves = PCF_RELAY_OFF;
* pvPut(IsttokShotGasIS_Valves);
strcpy(msg, "UPS EMERGENCY: Filament OFF"); *
pvPut(msg); * strcpy(msg, "UPS EMERGENCY: Filament OFF");
errlogSevPrintf(MAJOR, "%s\n",msg); * pvPut(msg);
IsttokShotVVessel_Filament = PCF_RELAY_OFF; * errlogSevPrintf(MAJOR, "%s\n",msg);
pvPut(IsttokShotVVessel_Filament); * IsttokShotVVessel_Filament = PCF_RELAY_OFF;
} * pvPut(IsttokShotVVessel_Filament);
when (IsttokupsBatteryON == ON) { * }
/* Pulse state change to Stopping */ * when (IsttokupsBatteryON == ON) {
strcpy(msg, "State to Stopping"); * [> Pulse state change to Stopping <]
pvPut(msg); * strcpy(msg, "State to Stopping");
errlogSevPrintf(NO_ALARM, "%s\n",msg); * pvPut(msg);
IsttokProcReq = STOP; * errlogSevPrintf(NO_ALARM, "%s\n",msg);
pvPut(IsttokProcReq); * IsttokProcReq = STOP;
IsttokOPSTATE = POS_Stopping; * pvPut(IsttokProcReq);
pvPut(IsttokOPSTATE); * [>IsttokOPSTATE = POS_Stopping;<]
} state Stopping * [>pvPut(IsttokOPSTATE);<]
when (delay(6.0) && (IsttokupsBatteryON == OFF) && (IsttokOPSTATE == POS_Idle)){ * } state Stopping
/* Pulse state change to Idle */ * when (delay(6.0) && (IsttokupsBatteryON == OFF) && (IsttokOPSTATE == POS_Idle)){
strcpy(msg, "State to Idle"); * [> Pulse state change to Idle <]
pvPut(msg); * strcpy(msg, "State to Idle");
errlogSevPrintf(NO_ALARM, "%s\n",msg); * pvPut(msg);
IsttokOPSTATE = POS_Idle; * errlogSevPrintf(NO_ALARM, "%s\n",msg);
pvPut(IsttokOPSTATE); * IsttokOPSTATE = POS_Idle;
} state Idle * pvPut(IsttokOPSTATE);
/* y
when (delay(6.0) && (IsttokupsBatteryON == OFF) && * }
((IsttokOPSTATE == POS_Starting)) || (IsttokOPSTATE == POS_Stopping)){ */
// TODO Check these 2 transictions
strcpy(msg, "State to Stopping");
pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokOPREQ = STOP;
pvPut(IsttokOPREQ);
// Pulse state change to Stopping
IsttokOPSTATE = POS_Stopping;
pvPut(IsttokOPSTATE);
} state Stopping
*/
}
} }
/*********** Starting SUB-State Set ************/ /*********** SUB-State: StartingSequence Set ************/
ss StartingSequence { ss StartingSequence {
state NonStarting { state NonStarting {
entry { entry {
@@ -751,15 +763,16 @@ ss StartingSequence {
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump1_Motor = PCF_RELAY_OFF; IsttokRPump1_Motor = PCF_RELAY_OFF;
pvPut(IsttokRPump1_Motor); pvPut(IsttokRPump1_Motor);
strcpy(msg, "Rotary Pump2 ON"); // strcpy(msg, "Rotary Pump2 ON");
pvPut(msg); // pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); // errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump2_Motor = PCF_RELAY_OFF; // IsttokRPump2_Motor = PCF_RELAY_OFF;
pvPut(IsttokRPump2_Motor); // pvPut(IsttokRPump2_Motor);
STARTINGSTATE = STRST_Starting1; STARTINGSTATE = STRST_Starting1;
pvPut(STARTINGSTATE); pvPut(STARTINGSTATE);
} state Starting1 } state Starting1
} }
state Starting1 { state Starting1 {
when (IsttokOPSTATE != POS_Starting ) { when (IsttokOPSTATE != POS_Starting ) {
strcpy(msg, "Starting1 Out"); strcpy(msg, "Starting1 Out");
@@ -772,15 +785,16 @@ ss StartingSequence {
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump1_Valve = PCF_RELAY_OFF; IsttokRPump1_Valve = PCF_RELAY_OFF;
pvPut(IsttokRPump1_Valve); pvPut(IsttokRPump1_Valve);
strcpy(msg, "Rotary Valve2 OPEN"); // strcpy(msg, "Rotary Valve2 OPEN");
pvPut(msg); // pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); // errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump2_Valve = PCF_RELAY_OFF; // IsttokRPump2_Valve = PCF_RELAY_OFF;
pvPut(IsttokRPump2_Valve); // pvPut(IsttokRPump2_Valve);
STARTINGSTATE = STRST_Starting2; STARTINGSTATE = STRST_Starting2;
pvPut(STARTINGSTATE); pvPut(STARTINGSTATE);
} state Starting2 } state Starting2
} }
state Starting2 { state Starting2 {
when (IsttokOPSTATE != POS_Starting ) { when (IsttokOPSTATE != POS_Starting ) {
strcpy(msg, "Starting2 Out"); strcpy(msg, "Starting2 Out");
@@ -789,6 +803,7 @@ ss StartingSequence {
STARTINGSTATE = STRST_NonStarting; STARTINGSTATE = STRST_NonStarting;
pvPut(STARTINGSTATE); pvPut(STARTINGSTATE);
} state NonStarting } state NonStarting
when (IsttokTMPump1_ManualValve == ON) { when (IsttokTMPump1_ManualValve == ON) {
strcpy(msg, "Manual Valve Open Checked"); strcpy(msg, "Manual Valve Open Checked");
pvPut(msg); pvPut(msg);
@@ -797,6 +812,7 @@ ss StartingSequence {
pvPut(STARTINGSTATE); pvPut(STARTINGSTATE);
} state Starting3 } state Starting3
} }
state Starting3 { state Starting3 {
when (IsttokOPSTATE != POS_Starting) { when (IsttokOPSTATE != POS_Starting) {
strcpy(msg, "Starting3 Out"); strcpy(msg, "Starting3 Out");
@@ -813,15 +829,16 @@ ss StartingSequence {
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokTMPump1_MotorOn = ON; IsttokTMPump1_MotorOn = ON;
pvPut(IsttokTMPump1_MotorOn); pvPut(IsttokTMPump1_MotorOn);
strcpy(msg, "TMP2 Motor ON" ); // strcpy(msg, "TMP2 Motor ON" );
pvPut(msg); // pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); // errlogSevPrintf(NO_ALARM, "%s\n",msg);
// IsttokTMPump2_Motor = PCF_RELAY_ON; // IsttokTMPump2_Motor = PCF_RELAY_ON;
// pvPut(IsttokTMPump2_Motor); // pvPut(IsttokTMPump2_Motor);
STARTINGSTATE = STRST_Starting4; STARTINGSTATE = STRST_Starting4;
pvPut(STARTINGSTATE); pvPut(STARTINGSTATE);
} state Starting4 } state Starting4
} }
state Starting4 { state Starting4 {
when (IsttokOPSTATE != POS_Starting ) { when (IsttokOPSTATE != POS_Starting ) {
strcpy(msg, "Starting4 Out"); strcpy(msg, "Starting4 Out");
@@ -838,6 +855,7 @@ ss StartingSequence {
pvPut(STARTINGSTATE); pvPut(STARTINGSTATE);
} state StartingEnd } state StartingEnd
} }
state StartingEnd { state StartingEnd {
when (IsttokOPSTATE != POS_Starting ) { when (IsttokOPSTATE != POS_Starting ) {
STARTINGSTATE = STRST_NonStarting; STARTINGSTATE = STRST_NonStarting;
@@ -846,8 +864,9 @@ ss StartingSequence {
} }
} }
/*********** SUB-State: CleaningSequence Set ************/
ss CleaningSequence{ ss CleaningSequence{
state NonCleaning{ state NonCleaning {
entry{ entry{
strcpy(msg, "GIS Valves CLOSE"); strcpy(msg, "GIS Valves CLOSE");
pvPut(msg); pvPut(msg);
@@ -879,7 +898,7 @@ ss CleaningSequence{
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
} }
when(delay(1.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ when(delay(1.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){
strcpy(msg, "Initiating Auto Cleaning..."); strcpy(msg, "Initiating Auto Cleaning...");
pvPut(msg); pvPut(msg);
@@ -888,8 +907,8 @@ ss CleaningSequence{
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotGasIS_Valves = PCF_RELAY_ON; IsttokShotGasIS_Valves = PCF_RELAY_ON;
pvPut(IsttokShotGasIS_Valves); pvPut(IsttokShotGasIS_Valves);
CLEANINGSTATE = CLNST_Cleaning1; CLEANINGSTATE = CLNST_Cleaning1;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning1 } state Cleaning1
} }
state Cleaning1 { state Cleaning1 {
@@ -912,7 +931,7 @@ ss CleaningSequence{
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning2 } state Cleaning2
} }
state Cleaning2{ state Cleaning2 {
when (delay(1.0) && IsttokProcReq==STOP) { when (delay(1.0) && IsttokProcReq==STOP) {
// Reversing Cleaning // Reversing Cleaning
strcpy(msg, "Filament OFF"); strcpy(msg, "Filament OFF");
@@ -920,8 +939,8 @@ ss CleaningSequence{
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotVVessel_Filament = PCF_RELAY_OFF; IsttokShotVVessel_Filament = PCF_RELAY_OFF;
pvPut(IsttokShotVVessel_Filament); pvPut(IsttokShotVVessel_Filament);
CLEANINGSTATE = CLNST_Cleaning1; CLEANINGSTATE = CLNST_Cleaning1;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning1 } state Cleaning1
when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean) { when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean) {
strcpy(msg, "Primary-CT ON"); strcpy(msg, "Primary-CT ON");
@@ -929,19 +948,19 @@ ss CleaningSequence{
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotClean_PrimContactor = PCF_RELAY_ON; IsttokShotClean_PrimContactor = PCF_RELAY_ON;
pvPut(IsttokShotClean_PrimContactor); pvPut(IsttokShotClean_PrimContactor);
CLEANINGSTATE = CLNST_Cleaning3; CLEANINGSTATE = CLNST_Cleaning3;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning3 } state Cleaning3
} }
state Cleaning3{ state Cleaning3 {
when(delay(1.0) && IsttokProcReq==STOP){ when(delay(1.0) && IsttokProcReq==STOP){
strcpy(msg, "Primary-CT OFF"); strcpy(msg, "Primary-CT OFF");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotClean_PrimContactor = PCF_RELAY_OFF; IsttokShotClean_PrimContactor = PCF_RELAY_OFF;
pvPut(IsttokShotClean_PrimContactor); pvPut(IsttokShotClean_PrimContactor);
CLEANINGSTATE = CLNST_Cleaning2; CLEANINGSTATE = CLNST_Cleaning2;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning2 } state Cleaning2
when(delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ when(delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){
strcpy(msg, "Toroidal-BK CLOSE"); strcpy(msg, "Toroidal-BK CLOSE");
@@ -949,20 +968,20 @@ ss CleaningSequence{
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotClean_TorPneuBreaker = PCF_RELAY_ON; IsttokShotClean_TorPneuBreaker = PCF_RELAY_ON;
pvPut(IsttokShotClean_TorPneuBreaker); pvPut(IsttokShotClean_TorPneuBreaker);
CLEANINGSTATE = CLNST_Cleaning4; CLEANINGSTATE = CLNST_Cleaning4;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning4 } state Cleaning4
} }
state Cleaning4{ state Cleaning4 {
when(delay (1.0) && IsttokProcReq==STOP){ when(delay (1.0) && IsttokProcReq==STOP){
strcpy(msg, "Toroidal-BK OPEN"); strcpy(msg, "Toroidal-BK OPEN");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotClean_TorPneuBreaker = PCF_RELAY_OFF; IsttokShotClean_TorPneuBreaker = PCF_RELAY_OFF;
pvPut(IsttokShotClean_TorPneuBreaker); pvPut(IsttokShotClean_TorPneuBreaker);
CLEANINGSTATE = CLNST_Cleaning3; CLEANINGSTATE = CLNST_Cleaning3;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning3 } state Cleaning3
when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){ when (delay(2.0) && CLEANINGMANMODE == 1 && IsttokOPSTATE == POS_Clean){
strcpy(msg, "Toroidal-CT ON"); strcpy(msg, "Toroidal-CT ON");
@@ -970,12 +989,12 @@ ss CleaningSequence{
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotClean_TorContactor = PCF_RELAY_ON; IsttokShotClean_TorContactor = PCF_RELAY_ON;
pvPut(IsttokShotClean_TorContactor); pvPut(IsttokShotClean_TorContactor);
CLEANINGSTATE = CLNST_Cleaning5; CLEANINGSTATE = CLNST_Cleaning5;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning5 } state Cleaning5
} }
state Cleaning5{ state Cleaning5 {
when (IsttokProcReq==STOP) { when (IsttokProcReq==STOP) {
// } state Idle // } state Idle
// when(delay(1.0) && IsttokOPSTATE != POS_Clean){ // when(delay(1.0) && IsttokOPSTATE != POS_Clean){
@@ -987,8 +1006,8 @@ ss CleaningSequence{
/* Close GIS to let Pressure down */ /* Close GIS to let Pressure down */
IsttokShotGasIS_Valves = PCF_RELAY_OFF; IsttokShotGasIS_Valves = PCF_RELAY_OFF;
pvPut(IsttokShotGasIS_Valves); pvPut(IsttokShotGasIS_Valves);
CLEANINGSTATE = CLNST_Cleaning4; CLEANINGSTATE = CLNST_Cleaning4;
pvPut(CLEANINGSTATE); pvPut(CLEANINGSTATE);
} state Cleaning4 } state Cleaning4
/* /*
when (pvSeverity(IsttokVVesselTemperature) >= pvSevrMAJOR) { when (pvSeverity(IsttokVVesselTemperature) >= pvSevrMAJOR) {
@@ -1266,7 +1285,7 @@ ss ShotSequence {
} }
} }
/* Stopping Sub-State Set */ /*********** SUB-State: StoppingSequence Set ************/
ss StoppingSequence { ss StoppingSequence {
state NonStopping { state NonStopping {
entry { entry {
@@ -1298,40 +1317,38 @@ ss StoppingSequence {
} state Stopping2 } state Stopping2
} }
state Stopping2 { state Stopping2 {
when (IsttokOPSTATE != POS_Stopping ) { when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping
} state NonStopping when (delay(5.0) && (IsttokTMPump1_ManualValve == OFF)) {
when (delay(5.0) && IsttokTMPump1_ManualValve==OFF) {
strcpy(msg, "Manual Valve Closed Checked"); strcpy(msg, "Manual Valve Closed Checked");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump1_Motor = PCF_RELAY_ON; // IsttokRPump2_Motor = PCF_RELAY_ON;
pvPut(IsttokRPump1_Motor); // pvPut(IsttokRPump2_Motor);
strcpy(msg, "Rotary Pumps 1 & 2 OFF"); IsttokRPump1_Valve = PCF_RELAY_ON; // "NO" relay
pvPut(IsttokRPump1_Valve);
strcpy(msg, "Rotary Valve 1 CLOSE");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump2_Motor = PCF_RELAY_ON;
pvPut(IsttokRPump2_Motor);
STOPPINGSTATE = STPST_Stopping3; STOPPINGSTATE = STPST_Stopping3;
pvPut(STOPPINGSTATE); pvPut(STOPPINGSTATE);
} state Stopping3 } state Stopping3
} }
state Stopping3 { state Stopping3 {
when (IsttokOPSTATE != POS_Stopping ) { when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping
} state NonStopping
when (delay(5)) { when (delay(5)) {
IsttokRPump1_Valve = PCF_RELAY_ON; // IsttokRPump2_Valve = PCF_RELAY_ON;
pvPut(IsttokRPump1_Valve); // pvPut(IsttokRPump2_Valve);
strcpy(msg, "Rotary Valves 1 & 2 CLOSE"); IsttokRPump1_Motor = PCF_RELAY_ON; // "NO" Relay
pvPut(IsttokRPump1_Motor);
strcpy(msg, "Rotary Pump 1 OFF");
pvPut(msg); pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg); errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokRPump2_Valve = PCF_RELAY_ON;
pvPut(IsttokRPump2_Valve);
STOPPINGSTATE = STPST_StoppingEnd; STOPPINGSTATE = STPST_StoppingEnd;
pvPut(STOPPINGSTATE); pvPut(STOPPINGSTATE);
} state StoppingEnd } state StoppingEnd
} }
state StoppingEnd { state StoppingEnd {
when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping when (IsttokOPSTATE != POS_Stopping ) { } state NonStopping
} }
} }

View File

@@ -10,7 +10,7 @@ ISTTOK:central:CLEANINGMANMODE.VAL
ISTTOK:central:Emergency-UserButton.VAL ISTTOK:central:Emergency-UserButton.VAL
ISTTOK:central:TMPump1-ManualValve.VAL ISTTOK:central:TMPump1-ManualValve.VAL
ISTTOK:central:Shot-TorPSCurrent ISTTOK:central:Shot-TorPSCurrent
ISTTOK:central:UPS-Shutdown #ISTTOK:central:UPS-Shutdown
#ALARM Limits #ALARM Limits
$(P)$(R)RPump1-Pressure.HIGH $(P)$(R)RPump1-Pressure.HIGH

View File

@@ -1,5 +1,5 @@
# autosave R5.3 Automatically generated - DO NOT MODIFY - 211215-002448 # autosave R5.3 Automatically generated - DO NOT MODIFY - 211215-162845
ISTTOK:central:PULSE-NUMBER.VAL 0 ISTTOK:central:PULSE-NUMBER.VAL 49461
ISTTOK:central:LogMessage.VAL ISTTOK:central:LogMessage.VAL
ISTTOK:central:LASTOPSTATE.VAL 2 ISTTOK:central:LASTOPSTATE.VAL 2
ISTTOK:central:OPREQ.VAL 1 ISTTOK:central:OPREQ.VAL 1
@@ -8,7 +8,6 @@ ISTTOK:central:CLEANINGMANMODE.VAL 0
ISTTOK:central:Emergency-UserButton.VAL 0 ISTTOK:central:Emergency-UserButton.VAL 0
ISTTOK:central:TMPump1-ManualValve.VAL 1 ISTTOK:central:TMPump1-ManualValve.VAL 1
ISTTOK:central:Shot-TorPSCurrent 32 ISTTOK:central:Shot-TorPSCurrent 32
ISTTOK:central:UPS-Shutdown 0
ISTTOK:central:RPump1-Pressure.HIGH 0.05 ISTTOK:central:RPump1-Pressure.HIGH 0.05
ISTTOK:central:RPump1-Pressure.HIHI 0.1 ISTTOK:central:RPump1-Pressure.HIHI 0.1
<END> <END>