/** * * Project : ISTTOK slow Control * * File : $Id$ * Description : Pulse Sequence State Machine * * Author(s) : Bernardo Carvalho (IPFN-IST) * : Paulo Fortuna Carvalho (IPFN-IST) * Copyright (c) : (IPFN-IST) * * Created 5-Mar-2013 * Revised 01-07-2019 * * SVN keywords * $Date$ * $Revision$ * $URL$ * **/ program IsttokSeqExec /*Relays and INPUT (Valleman Board) have negative Logic!*/ short RELAY_ON = 0; short RELAY_OFF= 1; short PCF_INPUT_ON = 0; short PCF_INPUT_OFF= 1; short STRST_NonStarting = 0; short STRST_Starting1 = 1; short STRST_Starting2 = 2; short STRST_Starting3 = 3; short STRST_Starting4 = 4; short STRST_Starting5 = 5; short STPST_NonStopping = 0; short STPST_Stopping1 = 1; short STPST_Stopping2 = 2; short STPST_Stopping3 = 3; short STPST_Stopping4 = 4; short STPST_Stopping5 = 5; short CLEAN_NonCleaning = 0; short CLEAN_Cleaning1 = 1; short CLEAN_Cleaning2 = 2; short CLEAN_Cleaning3 = 3; short CLEAN_Cleaning4 = 4; short CLEAN_Cleaning5 = 5; short WSHOT_NonShoting = 0; short WSHOT_Shoting0 = 0; short WSHOT_Shoting1 = 1; short WSHOT_Shoting2 = 2; short WSHOT_Shoting3 = 3; short WSHOT_Shoting4 = 4; short WSHOT_Shoting5 = 5; short WSHOT_Shoting6 = 6; short WSHOT_Shoting7 = 7; short WSHOT_Shoting8 = 8; short WSHOT_Shoting9 = 9; short WSHOT_Shoting10 = 10; short WSHOT_Shoting11 = 11; short WSHOT_Shoting12 = 12; short POS_Stopped; short POS_Starting; short POS_Process; short POS_Clean; short POS_WaitShot; short POS_Stopping; short POS_Emergency; short ON=1; short OFF=0; short START=1; short STOP=0; short CLEAN=0; short SHOT=1; short NO_ALARM=0; short MINOR=1; short MAJOR=2; short INVALID=3; short IsttokOPSTATE; assign IsttokOPSTATE to "ISTTOK:central:OPSTATE"; monitor IsttokOPSTATE; short IsttokOPREQ; assign IsttokOPREQ to "ISTTOK:central:OPREQ"; monitor IsttokOPREQ; short IsttokProcMode; assign IsttokProcMode to "ISTTOK:central:PROCESS-MODE"; monitor IsttokProcMode; short IsttokProcReq; assign IsttokProcReq to "ISTTOK:central:PROCESS-REQ"; monitor IsttokProcReq; short IsttokSTARTINGSTATE; assign IsttokSTARTINGSTATE to "ISTTOK:central:STARTINGSTATE"; monitor IsttokSTARTINGSTATE; short IsttokSTOPPINGSTATE; assign IsttokSTOPPINGSTATE to "ISTTOK:central:STOPPINGSTATE"; monitor IsttokSTOPPINGSTATE; short IsttokCLEANINGSTATE; assign IsttokCLEANINGSTATE to "ISTTOK:central:CLEANINGSTATE"; monitor IsttokCLEANINGSTATE; short IsttokCLEANINGMASTATE; assign IsttokCLEANINGMASTATE to "ISTTOK:central:CLEANINGMASTATE"; monitor IsttokCLEANINGMASTATE; short IsttokCLEANINGINOUTSTATE; assign IsttokCLEANINGINOUTSTATE to "ISTTOK:central:CLEANINGINOUTSTATE"; monitor IsttokCLEANINGINOUTSTATE; short IsttokCLEANINGINOUTSTATE0; assign IsttokCLEANINGINOUTSTATE0 to "ISTTOK:central:CLEANINGINOUTSTATE0"; monitor IsttokCLEANINGINOUTSTATE0; short IsttokCLEANINGINOUTSTATE1; assign IsttokCLEANINGINOUTSTATE1 to "ISTTOK:central:CLEANINGINOUTSTATE1"; monitor IsttokCLEANINGINOUTSTATE1; short IsttokCLEANINGINOUTSTATE2; assign IsttokCLEANINGINOUTSTATE2 to "ISTTOK:central:CLEANINGINOUTSTATE2"; monitor IsttokCLEANINGINOUTSTATE2; short IsttokCLEANINGINOUTSTATE3; assign IsttokCLEANINGINOUTSTATE3 to "ISTTOK:central:CLEANINGINOUTSTATE3"; monitor IsttokCLEANINGINOUTSTATE3; short IsttokCLEANINGINOUTSTATE4; assign IsttokCLEANINGINOUTSTATE4 to "ISTTOK:central:CLEANINGINOUTSTATE4"; monitor IsttokCLEANINGINOUTSTATE4; short IsttokCLEANINGINOUTSTATE5; assign IsttokCLEANINGINOUTSTATE5 to "ISTTOK:central:CLEANINGINOUTSTATE5"; monitor IsttokCLEANINGINOUTSTATE5; short IsttokWSHOTINGSTATE; assign IsttokWSHOTINGSTATE to "ISTTOK:central:WSHOTINGSTATE"; monitor IsttokWSHOTINGSTATE; short IsttokRotatoryPump; assign IsttokRotatoryPump to "ISTTOK:central:RotatoryPump"; monitor IsttokRotatoryPump; short IsttokRotatoryValve; assign IsttokRotatoryValve to "ISTTOK:central:RotatoryValve"; monitor IsttokRotatoryValve; short IsttokRotatoryPump2; assign IsttokRotatoryPump2 to "ISTTOK:central:RotatoryPump2"; monitor IsttokRotatoryPump2; short IsttokRotatoryValve2; assign IsttokRotatoryValve2 to "ISTTOK:central:RotatoryValve2"; monitor IsttokRotatoryValve2; short IsttokTMPControllerOff; assign IsttokTMPControllerOff to "ISTTOK:central:TMPControllerOff"; monitor IsttokTMPControllerOff; short IsttokTMPControllerOn; assign IsttokTMPControllerOn to "ISTTOK:central:TMPControllerOn"; monitor IsttokTMPControllerOn; short IsttokTMPMotorOff; assign IsttokTMPMotorOff to "ISTTOK:central:TMPMotorOff"; monitor IsttokTMPMotorOff; short IsttokTMPMotorOn; assign IsttokTMPMotorOn to "ISTTOK:central:TMPMotorOn"; monitor IsttokTMPMotorOn; short IsttokTMP2MotorOnOff; assign IsttokTMP2MotorOnOff to "ISTTOK:central:TMP2MotorOnOff"; monitor IsttokTMP2MotorOnOff; short IsttokTurbo_NormalOperation; assign IsttokTurbo_NormalOperation to "ISTTOK:central:Turbo_NormalOperation"; monitor IsttokTurbo_NormalOperation; short IsttokTurbo_PW_Ind; assign IsttokTurbo_PW_Ind to "ISTTOK:central:Turbo_PW_Ind"; monitor IsttokTurbo_PW_Ind; short IsttokTurbo_Emergency; assign IsttokTurbo_Emergency to "ISTTOK:central:Turbo_Emergency"; monitor IsttokTurbo_Emergency; short IsttokTMPManualValve; assign IsttokTMPManualValve to "ISTTOK:central:TMPManualValve"; monitor IsttokTMPManualValve; short IsttokTurbo2_Emergency; assign IsttokTurbo2_Emergency to "ISTTOK:central:Turbo2_Emergency"; monitor IsttokTurbo2_Emergency; float IsttokPressure_Primary1; /* assign IsttokPressure_Primary1 to "ISTTOK:vacuum:Pressure_Primary1"; */ assign IsttokPressure_Primary1 to "ISTTOK:central:RPump1-Pressure"; monitor IsttokPressure_Primary1; float IsttokPressure_Primary2; /* assign IsttokPressure_Primary2 to "ISTTOK:vacuum:Pressure_Primary2"; */ assign IsttokPressure_Primary2 to "ISTTOK:central:RPump2-Pressure"; monitor IsttokPressure_Primary2; float IsttokPressure_PrimaryCondition; assign IsttokPressure_PrimaryCondition to "ISTTOK:central:Pressure_PrimaryCondition"; monitor IsttokPressure_PrimaryCondition; float IsttokPressure_Primary2Condition; assign IsttokPressure_Primary2Condition to "ISTTOK:central:Pressure_Primary2Condition"; monitor IsttokPressure_Primary2Condition; short IsttokBypass_Condition; assign IsttokBypass_Condition to "ISTTOK:central:Bypass_Condition"; monitor IsttokBypass_Condition; short IsttokShotBuzzerOnOff; assign IsttokShotBuzzerOnOff to "ISTTOK:central:BuzzerOnOff"; monitor IsttokShotBuzzerOnOff; short IsttokShotLightsOnOff; assign IsttokShotLightsOnOff to "ISTTOK:central:LightsOnOff"; monitor IsttokShotLightsOnOff; short IsttokShotGISValvesOnOff; assign IsttokShotGISValvesOnOff to "ISTTOK:central:GISValvesOnOff"; monitor IsttokShotGISValvesOnOff; short IsttokShotFilamentOnOff; assign IsttokShotFilamentOnOff to "ISTTOK:central:FilamentOnOff"; monitor IsttokShotFilamentOnOff; short IsttokShotCapBankChargeOnOff; assign IsttokShotCapBankChargeOnOff to "ISTTOK:central:CapBankChargeOnOff"; monitor IsttokShotCapBankChargeOnOff; short IsttokShotCapBankDischargeOnOff; assign IsttokShotCapBankDischargeOnOff to "ISTTOK:central:CapBankDischargeOnOff"; monitor IsttokShotCapBankDischargeOnOff; short IsttokShotToroidalCleanContactorOnOff; assign IsttokShotToroidalCleanContactorOnOff to "ISTTOK:central:ToroidalCleanContactorOnOff"; monitor IsttokShotToroidalCleanContactorOnOff; short IsttokShotToroidalCleanBreakerOnOff; assign IsttokShotToroidalCleanBreakerOnOff to "ISTTOK:central:ToroidalCleanBreakerOnOff"; monitor IsttokShotToroidalCleanBreakerOnOff; short IsttokShotToroidalShotTriggerOnOff; assign IsttokShotToroidalShotTriggerOnOff to "ISTTOK:central:ToroidalShotTriggerOnOff"; monitor IsttokShotToroidalShotTriggerOnOff; short IsttokShotToroidalShotEnableOnOff; assign IsttokShotToroidalShotEnableOnOff to "ISTTOK:central:ToroidalShotEnableOnOff"; monitor IsttokShotToroidalShotEnableOnOff; short IsttokShotPrimaryCleanContactorOnOff; assign IsttokShotPrimaryCleanContactorOnOff to "ISTTOK:central:PrimaryCleanContactorOnOff"; monitor IsttokShotPrimaryCleanContactorOnOff; short IsttokShotPrimaryCleanBreakerOnOff; assign IsttokShotPrimaryCleanBreakerOnOff to "ISTTOK:central:PrimaryCleanBreakerOnOff"; monitor IsttokShotPrimaryCleanBreakerOnOff; short IsttokShotCountdown; assign IsttokShotCountdown to "ISTTOK:central:COUNTDOWN"; monitor IsttokShotCountdown; string IsttokShotCountdownStart; assign IsttokShotCountdownStart to "ISTTOK:central:COUNTDOWN.SCAN"; monitor IsttokShotCountdownStart; short IsttokEmergencyOnOff; assign IsttokEmergencyOnOff to "ISTTOK:central:EmergencyOnOff"; monitor IsttokEmergencyOnOff; short IsttokTimingTriggerSignal; assign IsttokTimingTriggerSignal to "ISTTOK:central:TimingTriggerSignal"; monitor IsttokTimingTriggerSignal; string tmp1_stat; /* Trace message record limited to 40 characters */ string msg; assign msg to "ISTTOK:central:TraceMessage.VAL"; monitor msg; ss PulseSequence { state init { entry { strcpy(msg, "INIT: Sequence Entry"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); POS_Stopped =0; POS_Starting=1; POS_Process =2; POS_Clean =3; POS_WaitShot=4; POS_Stopping=5; POS_Emergency=6; strcpy(msg, "Initializing..."); IsttokBypass_Condition = 1; pvPut(IsttokBypass_Condition); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCountdown = 160; pvPut(IsttokShotCountdown); IsttokProcMode = OFF; // UPON POWER-DOWN OR FAILURE PREVENT TO ENTER WAITSHOT ON POWER-UP! pvPut(IsttokProcMode); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokShotPrimaryCleanBreakerOnOff = 1; pvPut(IsttokShotPrimaryCleanBreakerOnOff); IsttokShotBuzzerOnOff = 0; pvPut(IsttokShotBuzzerOnOff); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokShotLightsOnOff = 1; pvPut(IsttokShotLightsOnOff); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokShotToroidalShotTriggerOnOff= 0; pvPut(IsttokShotToroidalShotTriggerOnOff); IsttokShotToroidalShotEnableOnOff = 0; pvPut(IsttokShotToroidalShotEnableOnOff); IsttokTMP2MotorOnOff = 0; pvPut(IsttokTMP2MotorOnOff); IsttokTMPControllerOff = 0; pvPut(IsttokTMPControllerOff); IsttokTMPControllerOn = 0; pvPut(IsttokTMPControllerOn); IsttokTMPMotorOff = 0; pvPut(IsttokTMPMotorOff); IsttokTMPMotorOn = 0; pvPut(IsttokTMPMotorOn); // CHECK PRIMARY PRESSURES AND PREVENT STARTING IF REQUIRED if( (IsttokPressure_Primary1 >= IsttokPressure_PrimaryCondition) && (IsttokPressure_Primary2 >= IsttokPressure_Primary2Condition) ){ IsttokOPREQ = STOP; pvPut(IsttokOPREQ); } if ((IsttokTurbo_PW_Ind == PCF_INPUT_OFF)) { strcpy(msg, "TMP1 Controller is OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); }else{ strcpy(msg, "TMP1 Controller is ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); } } when (delay(5)) { strcpy(msg, "Initialization... DONE."); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); printf("Entry delay over\n"); } state Stopped } /*State Set Emergency*/ state Emergency { when (delay(1.0) && (IsttokEmergencyOnOff == 0) && ((IsttokOPSTATE == POS_WaitShot) || (IsttokOPSTATE == POS_Clean)) ){ IsttokOPSTATE = POS_Emergency; pvPut(IsttokOPSTATE); strcpy(msg, "EMERGENCY: State Entry"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); strcpy(msg, "Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotEnableOnOff = 0; pvPut(IsttokShotToroidalShotEnableOnOff); IsttokEmergencyOnOff = 1; pvPut(IsttokEmergencyOnOff ); if ((IsttokShotCapBankChargeOnOff == 0)) { strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); } if ((IsttokShotCapBankDischargeOnOff == 1)) { strcpy(msg, "EMERGENCY: CAPBANK Discharge ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); } if ((IsttokShotGISValvesOnOff == 0)) { strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); } if ((IsttokShotFilamentOnOff == 0)) { strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); } /* Pulse state change to Process */ strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokProcReq = STOP; pvPut(IsttokProcReq); IsttokOPSTATE = POS_Process; pvPut(IsttokOPSTATE); } state Process when (delay(1.0) && (IsttokEmergencyOnOff == 0) && (IsttokOPSTATE == POS_Process)){ IsttokOPSTATE = POS_Emergency; pvPut(IsttokOPSTATE); strcpy(msg, "State to Emergency"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokEmergencyOnOff = 1; pvPut(IsttokEmergencyOnOff ); if ((IsttokShotCapBankChargeOnOff == 0)) { strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); } if ((IsttokShotCapBankDischargeOnOff == 1)) { strcpy(msg, "EMERGENCY: CAPBANK Discharge ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); } if ((IsttokShotGISValvesOnOff == 0)) { strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); } if ((IsttokShotFilamentOnOff == 0)) { strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); } /* Pulse state change to Process */ strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokOPSTATE = POS_Process; pvPut(IsttokOPSTATE); } state Process when (delay(1.0) && (IsttokEmergencyOnOff == 0) && (IsttokOPSTATE == POS_Starting)){ IsttokOPSTATE = POS_Emergency; pvPut(IsttokOPSTATE); strcpy(msg, "State to Emergency"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokEmergencyOnOff = 1; pvPut(IsttokEmergencyOnOff ); if ((IsttokShotCapBankChargeOnOff == 0)) { strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); } if ((IsttokShotCapBankDischargeOnOff == 1)) { strcpy(msg, "EMERGENCY: CAPBANK Discharge ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); } if ((IsttokShotGISValvesOnOff == 0)) { strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); } if ((IsttokShotFilamentOnOff == 0)) { strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); } strcpy(msg, "State to Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokOPREQ = STOP; pvPut(IsttokOPREQ); /* Pulse state change to Stopped */ IsttokOPSTATE = POS_Stopped; pvPut(IsttokOPSTATE); } state Stopped when (delay(1.0) && (IsttokEmergencyOnOff == 0) && (IsttokOPSTATE == POS_Stopping)){ IsttokOPSTATE = POS_Emergency; pvPut(IsttokOPSTATE); strcpy(msg, "State to Emergency"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokEmergencyOnOff = 1; pvPut(IsttokEmergencyOnOff ); if ((IsttokShotCapBankChargeOnOff == 0)) { strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); } if ((IsttokShotCapBankDischargeOnOff == 1)) { strcpy(msg, "EMERGENCY: CAPBANK Discharge ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); } if ((IsttokShotGISValvesOnOff == 0)) { strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); } if ((IsttokShotFilamentOnOff == 0)) { strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); } strcpy(msg, "State to Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokOPREQ = STOP; pvPut(IsttokOPREQ); /* Pulse state change to Stopped */ IsttokOPSTATE = POS_Stopped; pvPut(IsttokOPSTATE); } state Stopped when (delay(1.0) && (IsttokEmergencyOnOff == 0) && (IsttokOPSTATE == POS_Stopped)){ IsttokOPSTATE = POS_Emergency; pvPut(IsttokOPSTATE); strcpy(msg, "State to Emergency"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokEmergencyOnOff = 1; pvPut(IsttokEmergencyOnOff ); if ((IsttokShotCapBankChargeOnOff == 0)) { strcpy(msg, "EMERGENCY: CAPBANK Charge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); } if ((IsttokShotCapBankDischargeOnOff == 1)) { strcpy(msg, "EMERGENCY: CAPBANK Discharge ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); } if ((IsttokShotGISValvesOnOff == 0)) { strcpy(msg, "EMERGENCY: GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); } if ((IsttokShotFilamentOnOff == 0)) { strcpy(msg, "EMERGENCY: Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); } strcpy(msg, "State to Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokOPREQ = STOP; pvPut(IsttokOPREQ); /* Pulse state change to Stopped */ IsttokOPSTATE = POS_Stopped; pvPut(IsttokOPSTATE); } state Stopped } /* State Set Stopped */ state Stopped { when ((IsttokOPREQ == START) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to Starting"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Starting */ IsttokOPSTATE = POS_Starting; pvPut(IsttokOPSTATE); } state Starting when((IsttokEmergencyOnOff == 0)){ strcpy(msg, "Emergency from Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Emergency*/ IsttokOPSTATE = POS_Stopped; pvPut(IsttokOPSTATE); } state Emergency } /* State Set Starting */ state Starting { when ((IsttokOPREQ == STOP) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to Stopping"); pvPut(msg); errlogSevPrintf(MINOR, "%s\n",msg); /* Pulse state change to Stopping */ IsttokOPSTATE = POS_Stopping; pvPut(IsttokOPSTATE); } state Stopping when ((IsttokSTARTINGSTATE == STRST_Starting5) ) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); strcpy(msg, "Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotEnableOnOff = 1; pvPut(IsttokShotToroidalShotEnableOnOff); /* Pulse state change to Process*/ IsttokOPSTATE = POS_Process; pvPut(IsttokOPSTATE); } state Process when((IsttokEmergencyOnOff == 0)){ strcpy(msg, "Emergency from Starting"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Emergency*/ IsttokOPSTATE = POS_Starting; pvPut(IsttokOPSTATE); } state Emergency } /* State Set Process */ state Process { when ((IsttokOPREQ == STOP) && (IsttokTMPManualValve == OFF) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to Stopping"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); strcpy(msg, "Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotEnableOnOff = 0; pvPut(IsttokShotToroidalShotEnableOnOff); /* Pulse state change to Stopping */ IsttokOPSTATE = POS_Stopping; pvPut(IsttokOPSTATE); } state Stopping when ((IsttokProcReq==START) && (IsttokProcMode==CLEAN) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to Clean"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); strcpy(msg, "Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotEnableOnOff = 0; pvPut(IsttokShotToroidalShotEnableOnOff); /* Pulse state change to Clean */ IsttokOPSTATE = POS_Clean; pvPut(IsttokOPSTATE); } state Clean when ((IsttokProcReq==START) && (IsttokProcMode==SHOT) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to WaitShot"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); strcpy(msg, "Toroidal Shot Enable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotEnableOnOff = 1; pvPut(IsttokShotToroidalShotEnableOnOff); /* Pulse state change to WaitShot */ IsttokOPSTATE = POS_WaitShot; pvPut(IsttokOPSTATE); } state WaitShot when((IsttokEmergencyOnOff == 0)){ strcpy(msg, "Emergency from Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); strcpy(msg, "Toroidal Shot Disable"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotEnableOnOff = 0; pvPut(IsttokShotToroidalShotEnableOnOff); /* Pulse state change to Emergency*/ IsttokOPSTATE = POS_Process; pvPut(IsttokOPSTATE); } state Emergency } /* State Set Clean */ state Clean { when (( (IsttokOPREQ == STOP) || (IsttokProcReq==STOP)) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /*Just to be sure*/ IsttokProcReq = STOP; pvPut(IsttokProcReq); /*Clear Manual Clean States*/ IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); /* Pulse state change to Process */ IsttokOPSTATE = POS_Process; pvPut(IsttokOPSTATE); } state Process when((IsttokEmergencyOnOff == 0)){ strcpy(msg, "Emergency from Clean"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Emergency*/ IsttokOPSTATE = POS_Clean; pvPut(IsttokOPSTATE); } state Emergency } /* State Set WaitShot */ state WaitShot { when ( ((IsttokOPREQ==STOP) || (IsttokProcReq==STOP) ) && (IsttokEmergencyOnOff == 1) ) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /*Just to be sure*/ IsttokProcReq = STOP; pvPut(IsttokProcReq); /* Pulse state change to Process */ IsttokOPSTATE = POS_Process; pvPut(IsttokOPSTATE); } state Process when((IsttokEmergencyOnOff == 0)){ strcpy(msg, "Emergency from WaitShot"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Emergency*/ IsttokOPSTATE = POS_WaitShot; pvPut(IsttokOPSTATE); } state Emergency } /* State Set Stopping */ state Stopping { when ((IsttokSTOPPINGSTATE == STPST_Stopping5) && (IsttokEmergencyOnOff == 1)) { strcpy(msg, "State to Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Stopped*/ IsttokOPSTATE = POS_Stopped; pvPut(IsttokOPSTATE); } state Stopped when((IsttokEmergencyOnOff == 0)){ strcpy(msg, "Emergency from Stopping"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); /* Pulse state change to Emergency*/ IsttokOPSTATE = POS_Stopping; pvPut(IsttokOPSTATE); } state Emergency } } ss StartingSequence { state NonStarting { entry { IsttokSTARTINGSTATE = STRST_NonStarting; pvPut(IsttokSTARTINGSTATE); } when (IsttokOPSTATE == POS_Starting) { strcpy(msg, "Rotary Pump1 ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryPump = RELAY_ON; pvPut(IsttokRotatoryPump); strcpy(msg, "Rotary Pump2 ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryPump2 = RELAY_ON; pvPut(IsttokRotatoryPump2); IsttokSTARTINGSTATE = STRST_Starting1; pvPut(IsttokSTARTINGSTATE); } state Starting1 } state Starting1 { when (IsttokOPSTATE != POS_Starting ) { strcpy(msg, "Starting1 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_NonStarting; pvPut(IsttokSTARTINGSTATE); } state NonStarting when (delay(5.0)) { strcpy(msg, "Rotary Valve1 OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryValve = RELAY_ON; pvPut(IsttokRotatoryValve); strcpy(msg, "Rotary Valve2 OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryValve2 = RELAY_ON; pvPut(IsttokRotatoryValve2); IsttokSTARTINGSTATE = STRST_Starting2; pvPut(IsttokSTARTINGSTATE); } state Starting2 } state Starting2 { when (IsttokOPSTATE != POS_Starting ) { strcpy(msg, "Starting2 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_NonStarting; pvPut(IsttokSTARTINGSTATE); } state NonStarting when (IsttokTMPManualValve == ON) { strcpy(msg, "Manual Valve Checked"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_Starting3; pvPut(IsttokSTARTINGSTATE); } state Starting3 } state Starting3 { when (IsttokOPSTATE != POS_Starting) { strcpy(msg, "Starting3 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_NonStarting; pvPut(IsttokSTARTINGSTATE); } state NonStarting when (((IsttokPressure_Primary1 < IsttokPressure_PrimaryCondition) && (IsttokPressure_Primary2 < IsttokPressure_Primary2Condition)) ) { printf("Primary1 Pressure=%f\n",IsttokPressure_Primary1); printf("Primary2 Pressure=%f\n",IsttokPressure_Primary2); if(IsttokPressure_Primary1 < IsttokPressure_PrimaryCondition){ strcpy(msg, "TMP1 MotorOn ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokTMPMotorOn = ON; pvPut(IsttokTMPMotorOn); } if(IsttokPressure_Primary2 < IsttokPressure_Primary2Condition){ strcpy(msg, "TMP2 MotorOnOff ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokTMP2MotorOnOff = ON; pvPut(IsttokTMP2MotorOnOff); } if(IsttokTurbo_NormalOperation == PCF_INPUT_ON){ sprintf(tmp1_stat, "ON"); }else{ sprintf(tmp1_stat, "OFF"); } sprintf(msg, "TMPNO = [1:%s]", tmp1_stat); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_Starting4; pvPut(IsttokSTARTINGSTATE); } state Starting4 } state Starting4 { when ((IsttokOPSTATE != POS_Starting )) { strcpy(msg, "Starting4 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_NonStarting; pvPut(IsttokSTARTINGSTATE); } state NonStarting when ( (IsttokBypass_Condition == 0) || ( (IsttokTurbo_NormalOperation == PCF_INPUT_ON) ) ) { if(IsttokTurbo_NormalOperation == PCF_INPUT_ON){ strcpy(msg, "TMP1 operating Normal"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); } IsttokSTARTINGSTATE = STRST_Starting5; pvPut(IsttokSTARTINGSTATE); } state Starting5 } state Starting5 { when ((IsttokOPSTATE != POS_Starting )) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTARTINGSTATE = STRST_NonStarting; pvPut(IsttokSTARTINGSTATE); } state NonStarting } } ss StoppingSequence { state NonStopping { entry { IsttokSTOPPINGSTATE = STPST_NonStopping; pvPut(IsttokSTOPPINGSTATE); } when (IsttokOPSTATE == POS_Stopping) { strcpy(msg, "Rotary Valve1 CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryValve = RELAY_OFF; pvPut(IsttokRotatoryValve); strcpy(msg, "Rotary Valve2 CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryValve2 = RELAY_OFF; pvPut(IsttokRotatoryValve2); IsttokSTOPPINGSTATE = STPST_Stopping1; pvPut(IsttokSTOPPINGSTATE); } state Stopping1 } state Stopping1 { when (IsttokOPSTATE != POS_Stopping ) { strcpy(msg, "Stopping1 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_NonStopping; pvPut(IsttokSTOPPINGSTATE); } state NonStopping when (delay(2.0)) { strcpy(msg, "Stopping2 In"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_Stopping2; pvPut(IsttokSTOPPINGSTATE); } state Stopping2 } state Stopping2 { when (IsttokOPSTATE != POS_Stopping ) { strcpy(msg, "Stopping2 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_NonStopping; pvPut(IsttokSTOPPINGSTATE); } state NonStopping when (IsttokTMPManualValve == OFF && delay(1.0)) { strcpy(msg, "Stopping3 In"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_Stopping3; pvPut(IsttokSTOPPINGSTATE); } state Stopping3 } state Stopping3 { when (IsttokOPSTATE != POS_Stopping ) { strcpy(msg, "Stopping3 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_NonStopping; pvPut(IsttokSTOPPINGSTATE); } state NonStopping when (delay(5.0)) { strcpy(msg, "Stopping4 In"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_Stopping4; pvPut(IsttokSTOPPINGSTATE); } state Stopping4 } state Stopping4 { when ((IsttokOPSTATE != POS_Stopping )) { strcpy(msg, "Stopping4 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_NonStopping; pvPut(IsttokSTOPPINGSTATE); } state NonStopping when (delay(5.0)) { strcpy(msg, "Rotary Pump1 OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryPump = RELAY_OFF; pvPut(IsttokRotatoryPump); strcpy(msg, "Rotary Pump2 OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokRotatoryPump2 = RELAY_OFF; pvPut(IsttokRotatoryPump2); IsttokSTOPPINGSTATE = STPST_Stopping5; pvPut(IsttokSTOPPINGSTATE); } state Stopping5 } state Stopping5 { when ((IsttokOPSTATE != POS_Stopping )) { strcpy(msg, "State to Stopped"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokSTOPPINGSTATE = STPST_NonStopping; pvPut(IsttokSTOPPINGSTATE); } state NonStopping } } ss CleaningSequence { state NonCleaning { entry { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGINOUTSTATE = 1; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); if (IsttokShotGISValvesOnOff == 0){ strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); } if (IsttokShotFilamentOnOff == 0){ strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); } if (IsttokShotPrimaryCleanContactorOnOff == 0){ strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); } if (IsttokShotToroidalCleanBreakerOnOff == 0){ strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); } if (IsttokShotToroidalCleanContactorOnOff == 0){ strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); } IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); } when (IsttokCLEANINGMASTATE == 1 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGINOUTSTATE = 1; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == 1) { strcpy(msg, "NonCleaning"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == -1) { strcpy(msg, "NonCleaning"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = -2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = 2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == -1) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = 2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == -1) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = 2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == -1) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == 1) { strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = 2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == -1) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == 1) { strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = 2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == -1) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 } state Cleaning1 { when (delay(1.0) && (IsttokOPSTATE != POS_Clean )) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGINOUTSTATE = 0; pvPut(IsttokCLEANINGINOUTSTATE); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); } state NonCleaning when (delay(2.0) && IsttokCLEANINGMASTATE == 1 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGINOUTSTATE = 1; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == 1) { strcpy(msg, "NonCleaning"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == -1) { strcpy(msg, "NonCleaning"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = -2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = 2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == -1) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = 2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == -1) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = 2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == -1) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == 1) { strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = 2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == -1) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == 1) { strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = 2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == -1) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 } state Cleaning2 { when (delay(1.0) && (IsttokOPSTATE != POS_Clean )) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGINOUTSTATE = 0; pvPut(IsttokCLEANINGINOUTSTATE); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); } state Cleaning1 when (delay(2.0) && IsttokCLEANINGMASTATE == 1 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGINOUTSTATE = 1; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == 1) { strcpy(msg, "NonCleaning"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == -1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = -2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = 2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == -1) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = 2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == -1) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = 2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == -1) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == 1) { strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = 2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == -1) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == 1) { strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = 2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == -1) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 } state Cleaning3 { when (delay(1.0) && (IsttokOPSTATE != POS_Clean )) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGINOUTSTATE = 0; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); } state Cleaning2 when (delay(2.0) && IsttokCLEANINGMASTATE == 1 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE == 1) { strcpy(msg, "Toroidal-BK CLOSE" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGINOUTSTATE = 1; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == 1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == -1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = -2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = 2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == -1) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = 2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == -1) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = 2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == -1) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == 1) { strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = 2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == -1) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == 1) { strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = 2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == -1) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 } state Cleaning4 { when (delay(1.0) && (IsttokOPSTATE != POS_Clean )) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGINOUTSTATE = 0; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); } state Cleaning3 when (delay(2.0) && IsttokCLEANINGMASTATE == 1 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE == 1) { strcpy(msg, "Toroidal-CT ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGINOUTSTATE = 1; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == 1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == -1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = -2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = 2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == -1) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = 2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == -1) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = 2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == -1) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == 1) { strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = 2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == -1) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == 1) { strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = 2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == -1) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 } state Cleaning5 { when (delay(1.0) && (IsttokOPSTATE != POS_Clean )) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGINOUTSTATE = 0; pvPut(IsttokCLEANINGINOUTSTATE); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == 1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = 2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE0 == -1) { strcpy(msg, "State to Process"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokCLEANINGSTATE = CLEAN_NonCleaning; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE0 = -2; pvPut(IsttokCLEANINGINOUTSTATE0); } state NonCleaning when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == 1) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = 2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE1 == -1) { strcpy(msg, "GIS Valves CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning1; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE1 = -2; pvPut(IsttokCLEANINGINOUTSTATE1); } state Cleaning1 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == 1) { strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = 2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE2 == -1) { strcpy(msg, "Filament OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning2; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE2 = -2; pvPut(IsttokCLEANINGINOUTSTATE2); } state Cleaning2 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == 1) { strcpy(msg, "Primary-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 0; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = 2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE3 == -1) { strcpy(msg, "Primary-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotPrimaryCleanContactorOnOff = 1; pvPut(IsttokShotPrimaryCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning3; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE3 = -2; pvPut(IsttokCLEANINGINOUTSTATE3); } state Cleaning3 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == 1) { strcpy(msg, "Toroidal-BK CLOSE"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 0; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = 2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE4 == -1) { strcpy(msg, "Toroidal-BK OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanBreakerOnOff = 1; pvPut(IsttokShotToroidalCleanBreakerOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning4; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE4 = -2; pvPut(IsttokCLEANINGINOUTSTATE4); } state Cleaning4 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == 1) { strcpy(msg, "Toroidal-CT ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 0; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = 2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 when (IsttokCLEANINGMASTATE == 0 && IsttokOPSTATE == POS_Clean && IsttokCLEANINGINOUTSTATE5 == -1) { strcpy(msg, "Toroidal-CT OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalCleanContactorOnOff = 1; pvPut(IsttokShotToroidalCleanContactorOnOff); IsttokCLEANINGSTATE = CLEAN_Cleaning5; pvPut(IsttokCLEANINGSTATE); IsttokCLEANINGINOUTSTATE5 = -2; pvPut(IsttokCLEANINGINOUTSTATE5); } state Cleaning5 } } ss ShotingSequence { state NonShoting { entry { strcpy(msg, "Waiting for Trigger..."); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); strcpy(IsttokShotCountdownStart, "Passive"); pvPut(IsttokShotCountdownStart); IsttokShotCountdown = 160; pvPut(IsttokShotCountdown); } when( (IsttokOPSTATE == POS_WaitShot) && (IsttokTimingTriggerSignal == 0) && (IsttokShotCountdown >= 160)){ strcpy(msg, "Initiating..."); pvPut(msg); IsttokShotCountdown = -70; pvPut(IsttokShotCountdown); strcpy(IsttokShotCountdownStart, "1 second"); pvPut(IsttokShotCountdownStart); } state Shoting0 } state Shoting0 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting0 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when ((IsttokOPSTATE == POS_WaitShot) && (IsttokShotCountdown == -61)) { strcpy(msg, "Buzzer 1-Sound"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotBuzzerOnOff = 1; pvPut(IsttokShotBuzzerOnOff); strcpy(msg, "CAPBANK Discharge OFF"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankDischargeOnOff = 1; pvPut(IsttokShotCapBankDischargeOnOff); strcpy(msg, "Lights ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotLightsOnOff = 0; pvPut(IsttokShotLightsOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting1; pvPut(IsttokWSHOTINGSTATE); } state Shoting1 } state Shoting1 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting1 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -60) { strcpy(msg, "GIS Valves OPEN"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotGISValvesOnOff = 0; pvPut(IsttokShotGISValvesOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting2; pvPut(IsttokWSHOTINGSTATE); } state Shoting2 } state Shoting2 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting2 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -59) { IsttokWSHOTINGSTATE = WSHOT_Shoting3; pvPut(IsttokWSHOTINGSTATE); } state Shoting3 } state Shoting3 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting3 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -46) { strcpy(msg, "CAPBANK Charge ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotCapBankChargeOnOff = 0; pvPut(IsttokShotCapBankChargeOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting4; pvPut(IsttokWSHOTINGSTATE); } state Shoting4 } state Shoting4 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting4 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -16) { strcpy(msg, "CAPBANK Charge OFF" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokShotCapBankChargeOnOff = 1; pvPut(IsttokShotCapBankChargeOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting5; pvPut(IsttokWSHOTINGSTATE); } state Shoting5 } state Shoting5 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting5 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -11) { strcpy(msg, "Buzzer 2-Sound" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokShotBuzzerOnOff = 1; pvPut(IsttokShotBuzzerOnOff); strcpy(msg, "Filament ON"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotFilamentOnOff = 0; pvPut(IsttokShotFilamentOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting6; pvPut(IsttokWSHOTINGSTATE); } state Shoting6 } state Shoting6 { when ((IsttokOPSTATE != POS_WaitShot) && (IsttokShotCountdown == 160)) { strcpy(msg, "Shoting6 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -4) { strcpy(msg, "Toroidal Shot Trigger"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokShotToroidalShotTriggerOnOff = 1; pvPut(IsttokShotToroidalShotTriggerOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting7; pvPut(IsttokWSHOTINGSTATE); } state Shoting7 } state Shoting7 { when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { strcpy(msg, "Shoting7 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == -2) { strcpy(msg, "Ready for SHOT" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokWSHOTINGSTATE = WSHOT_Shoting8; pvPut(IsttokWSHOTINGSTATE); } state Shoting8 } state Shoting8 { when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { strcpy(msg, "Shoting8 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == 0) { strcpy(msg, "CAPBANK Discharge ON" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokShotCapBankDischargeOnOff = 0; pvPut(IsttokShotCapBankDischargeOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting9; pvPut(IsttokWSHOTINGSTATE); } state Shoting9 } state Shoting9 { when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { strcpy(msg, "Shoting9 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == 1) { strcpy(msg, "GIS Valves CLOSE" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokShotGISValvesOnOff = 1; pvPut(IsttokShotGISValvesOnOff); strcpy(msg, "Filament OFF" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokShotFilamentOnOff = 1; pvPut(IsttokShotFilamentOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting10; pvPut(IsttokWSHOTINGSTATE); } state Shoting10 } state Shoting10 { when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { strcpy(msg, "Shoting10 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n",msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == 2) { strcpy(msg, "Lights OFF and Recovering..." ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokShotLightsOnOff = 1; pvPut(IsttokShotLightsOnOff); IsttokWSHOTINGSTATE = WSHOT_Shoting11; pvPut(IsttokWSHOTINGSTATE); } state Shoting11 } state Shoting11 { when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { strcpy(msg, "Shoting11 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown == 159) { strcpy(msg, "Toroidal Field Recovered" ); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokWSHOTINGSTATE = WSHOT_Shoting12; pvPut(IsttokWSHOTINGSTATE); } state Shoting12 } state Shoting12 { when ((IsttokOPSTATE != POS_WaitShot ) && (IsttokShotCountdown == 160) ) { strcpy(msg, "Shoting12 Out"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); IsttokWSHOTINGSTATE = WSHOT_NonShoting; pvPut(IsttokWSHOTINGSTATE); } state NonShoting when (IsttokShotCountdown >= 160) { strcpy(msg, "Terminated"); pvPut(msg); errlogSevPrintf(NO_ALARM, "%s\n", msg); strcpy(IsttokShotCountdownStart, "Passive"); pvPut(IsttokShotCountdownStart); IsttokShotCountdown = 160; pvPut(IsttokShotCountdown); } state NonShoting } }