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,7 +385,7 @@ ss PulseSequence {
} state Starting } state Starting
} }
/******** State Starting ***********************/ /******** State: Starting ***********************/
state Starting { state Starting {
entry{ entry{
IsttokOPSTATE = POS_Starting; IsttokOPSTATE = POS_Starting;
@@ -394,6 +397,13 @@ ss PulseSequence {
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,7 +419,7 @@ ss PulseSequence {
} state Idle } state Idle
} }
/********** State Idle ****************************/ /********** State: Idle ****************************/
state Idle { state Idle {
entry { entry {
IsttokOPSTATE = POS_Idle; IsttokOPSTATE = POS_Idle;
@@ -421,15 +431,12 @@ ss PulseSequence {
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 {
strcpy(msg, "Emergency Toroidal Shot Disable");
errlogSevPrintf(MAJOR, "%s\n",msg);
IsttokShotShot_TorPSDisable = PCF_RELAY_OFF;
pvPut(IsttokShotShot_TorPSDisable);
strcpy(msg, "EMERGENCY: CAPBANK Charge OFF");
errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotCapBank_Charge = PCF_RELAY_OFF;
pvPut(IsttokShotCapBank_Charge);
strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close");
errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotCapBank_Discharge = PCF_RELAY_OFF;
pvPut(IsttokShotCapBank_Discharge);
strcpy(msg, "EMERGENCY: GIS Valves CLOSE");
errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokShotGasIS_Valves = PCF_RELAY_OFF;
pvPut(IsttokShotGasIS_Valves);
strcpy(msg, "UPS EMERGENCY: Filament OFF");
pvPut(msg);
errlogSevPrintf(MAJOR, "%s\n",msg);
IsttokShotVVessel_Filament = PCF_RELAY_OFF;
pvPut(IsttokShotVVessel_Filament);
}
when (IsttokupsBatteryON == ON) {
/* Pulse state change to Stopping */
strcpy(msg, "State to Stopping");
pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokProcReq = STOP;
pvPut(IsttokProcReq);
IsttokOPSTATE = POS_Stopping;
pvPut(IsttokOPSTATE);
} state Stopping
when (delay(6.0) && (IsttokupsBatteryON == OFF) && (IsttokOPSTATE == POS_Idle)){
/* Pulse state change to Idle */
strcpy(msg, "State to Idle");
pvPut(msg);
errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokOPSTATE = POS_Idle;
pvPut(IsttokOPSTATE);
} state Idle
/* /*
when (delay(6.0) && (IsttokupsBatteryON == OFF) && * state UpsEmergency {
((IsttokOPSTATE == POS_Starting)) || (IsttokOPSTATE == POS_Stopping)){ * entry {
// TODO Check these 2 transictions * strcpy(msg, "Emergency Toroidal Shot Disable");
strcpy(msg, "State to Stopping"); * errlogSevPrintf(MAJOR, "%s\n",msg);
pvPut(msg); * IsttokShotShot_TorPSDisable = PCF_RELAY_OFF;
errlogSevPrintf(NO_ALARM, "%s\n",msg); * pvPut(IsttokShotShot_TorPSDisable);
IsttokOPREQ = STOP; *
pvPut(IsttokOPREQ); * strcpy(msg, "EMERGENCY: CAPBANK Charge OFF");
// Pulse state change to Stopping * errlogSevPrintf(NO_ALARM, "%s\n",msg);
IsttokOPSTATE = POS_Stopping; * IsttokShotCapBank_Charge = PCF_RELAY_OFF;
pvPut(IsttokOPSTATE); * pvPut(IsttokShotCapBank_Charge);
} state Stopping *
* strcpy(msg, "EMERGENCY: CAPBANK CrowBar Close");
* errlogSevPrintf(NO_ALARM, "%s\n",msg);
* IsttokShotCapBank_Discharge = PCF_RELAY_OFF;
* pvPut(IsttokShotCapBank_Discharge);
*
* strcpy(msg, "EMERGENCY: GIS Valves CLOSE");
* errlogSevPrintf(NO_ALARM, "%s\n",msg);
* IsttokShotGasIS_Valves = PCF_RELAY_OFF;
* pvPut(IsttokShotGasIS_Valves);
*
* strcpy(msg, "UPS EMERGENCY: Filament OFF");
* pvPut(msg);
* errlogSevPrintf(MAJOR, "%s\n",msg);
* IsttokShotVVessel_Filament = PCF_RELAY_OFF;
* pvPut(IsttokShotVVessel_Filament);
* }
* when (IsttokupsBatteryON == ON) {
* [> Pulse state change to Stopping <]
* strcpy(msg, "State to Stopping");
* pvPut(msg);
* errlogSevPrintf(NO_ALARM, "%s\n",msg);
* IsttokProcReq = STOP;
* pvPut(IsttokProcReq);
* [>IsttokOPSTATE = POS_Stopping;<]
* [>pvPut(IsttokOPSTATE);<]
* } state Stopping
* when (delay(6.0) && (IsttokupsBatteryON == OFF) && (IsttokOPSTATE == POS_Idle)){
* [> Pulse state change to Idle <]
* strcpy(msg, "State to Idle");
* pvPut(msg);
* errlogSevPrintf(NO_ALARM, "%s\n",msg);
* IsttokOPSTATE = POS_Idle;
* pvPut(IsttokOPSTATE);
y
* }
*/ */
} }
}
/*********** 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,6 +864,7 @@ ss StartingSequence {
} }
} }
/*********** SUB-State: CleaningSequence Set ************/
ss CleaningSequence{ ss CleaningSequence{
state NonCleaning { state NonCleaning {
entry{ entry{
@@ -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,34 +1317,32 @@ 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

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>