// LoggerService node: See /var/log/messages file. // +LoggerService = { // Class = LoggerService // CPUs = 0x800 // StackSize = 32768 // NumberOfLogPages = 128 // +SysLogger = { // Class = SysLogger // Format = "EtOoFmC" // PrintKeys = 1 // Ident = "JAGyA" // } // } // StateMachine node +StateMachine = { Class = StateMachine +INITIAL = { Class = ReferenceContainer +Start = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +DISABLED = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITSTANDBY = { Class = ReferenceContainer +GoWaitReady = { Class = StateMachineEvent NextState = "WAITREADY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitReady } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoDisabled = { Class = StateMachineEvent NextState = "DISABLED" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Disabled } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITREADY = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitPermit = { Class = StateMachineEvent NextState = "WAITPERMIT" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitPermit } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITPERMIT = { Class = ReferenceContainer +GoWaitReady = { Class = StateMachineEvent NextState = "WAITREADY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitReady } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitHVON = { Class = StateMachineEvent NextState = "WAITHVON" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitHVON } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitHVON_SDN = { Class = StateMachineEvent NextState = "WAITHVON_SDN" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitHVON_SDN } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitHVON_PREP = { Class = StateMachineEvent NextState = "WAITHVON_PREP" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitHVON_PREP } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitHVON_SDN_PREP = { Class = StateMachineEvent NextState = "WAITHVON_SDN_PREP" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitHVON_SDN_PREP } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } // HVPS sequence control states. +WAITHVON = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitPermit = { Class = StateMachineEvent NextState = "WAITPERMIT" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitPermit } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITHVON_SDN = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitPermit = { Class = StateMachineEvent NextState = "WAITPERMIT" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitPermit } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITHVON_PREP = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitPermit = { Class = StateMachineEvent NextState = "WAITPERMIT" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitPermit } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } +WAITHVON_SDN_PREP = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoWaitPermit = { Class = StateMachineEvent NextState = "WAITPERMIT" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitPermit } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } +GoError = { Class = StateMachineEvent NextState = "ERROR" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = Error } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } // Error State (Enter by HVPS errors) +ERROR = { Class = ReferenceContainer +GoWaitStandby = { Class = StateMachineEvent NextState = "WAITSTANDBY" NextStateError = "ERROR" +StopCurrentStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StopCurrentStateExecution Mode = ExpectsReply } +PrepareNextStateMsg = { Class = Message Destination = JAGyrotronRTApp Mode = ExpectsReply Function = PrepareNextState +Parameters = { Class = ConfigurationDatabase param1 = WaitStandby } } +StartNextStateExecutionMsg = { Class = Message Destination = JAGyrotronRTApp Function = StartNextStateExecution Mode = ExpectsReply } } } } // RealTime Application node +JAGyrotronRTApp = { Class = RealTimeApplication +Functions = { Class = ReferenceContainer //Timer GAM for thread 1. +Timer1kHzGAM = { Class = IOGAM InputSignals = { Counter = { DataSource = Timer1kHz Type = uint32 Frequency = 1000 //Hz } Time = { DataSource = Timer1kHz Type = uint32 } } OutputSignals = { Counter1kHz = { DataSource = DDB1 Type = uint32 } Time1kHz = { DataSource = DDB1 Type = uint32 } } } +Timer10HzGAM = { Class = IOGAM InputSignals = { Counter = { DataSource = Timer10Hz Type = uint32 Frequency = 1 //Hz } Time = { DataSource = Timer10Hz Type = uint32 } } OutputSignals = { Counter10Hz = { DataSource = DDB1 Type = uint32 } Time1Hz = { DataSource = DDB1 Type = uint32 } } } //GAM to update PCF state-machine state +InErrorGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 1 } } } +InDisabledGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 2 } } } +InWaitStandbyGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 3 } } } +InWaitReadyGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 4 } } } +InWaitPermitGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 5 } } } +InWaitHVONGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 6 } } } +InWaitHVON_PREPGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 7 } } } +InWaitHVON_SDNGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 8 } } } +InWaitHVON_SDN_PREPGAM = { Class = ConstantGAM OutputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 Default = 9 } } } // Copy data from DDB1 to EPICSCAOutput DataSource. +EPICSOutputGAM = { Class = IOGAM InputSignals = { PCF_STATE = { DataSource = DDB1 Type = uint32 } MCPS_ACT_SP = { DataSource = DDB1 Type = uint32 } GCPS_ACT_SP = { DataSource = DDB1 Type = uint32 } BPS_OUT = { DataSource = DDB1 Type = float32 } APS_OUT = { DataSource = DDB1 Type = float32 } MCPS_OUT = { DataSource = DDB1 Type = float32 } GCPS_OUT = { DataSource = DDB1 Type = float32 } FHPS_REF = { DataSource = DDB1 Type = float32 } CSV_LOADED = { DataSource = DDB1 Type = uint32 } CSV_ERR = { DataSource = DDB1 Type = uint32 } ELAPSED_TIME = { DataSource = DDB1 Type = uint32 } HVARMED = { DataSource = DDB1 Type = uint32 } HVINJECTION = { DataSource = DDB1 Type = uint32 } RFON = { DataSource = DDB1 Type = uint32 } MHVPS_OUT = { DataSource = DDB1 Type = float32 } PREP_TIME_WF = { DataSource = DDB1 Type = int32 NumberOfElements = 8000 NumberOfDimensions = 1 } MHVPS_PREP_WF = { DataSource = DDB1 Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } BPS_PREP_WF = { DataSource = DDB1 Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } APS_PREP_WF = { DataSource = DDB1 Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } MCPS_PREP_WF = { DataSource = DDB1 Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GCPS_PREP_WF = { DataSource = DDB1 Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } FHPS_PREP_WF = { DataSource = DDB1 Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } CCPS_REF = { DataSource = DDB1 Type = float32 } MHVPS_STOP = { DataSource = DDB1 Type = uint32 } APS_STOP = { DataSource = DDB1 Type = uint32 } BPS_STOP = { DataSource = DDB1 Type = uint32 } BEAM_ON_TIME = { DataSource = DDB1 Type = uint32 } PCF_FLT = { DataSource = DDB1 Type = uint32 } BEAM_ON_STAT = { DataSource = DDB1 Type = uint32 } SHOT_ID = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } FHPS_AUTO_STAT = { DataSource = DDB1 Type = uint32 } //Add 20201117 APS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } APS_SWON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BPS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BPS_SWON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } MHVPS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { PCF_STATE = { DataSource = EPICSCAOutput Type = uint32 } MCPS_ACT_SP = { DataSource = EPICSCAOutput Type = uint32 } GCPS_ACT_SP = { DataSource = EPICSCAOutput Type = uint32 } BPS_REF = { DataSource = EPICSCAOutput Type = float32 } APS_REF = { DataSource = EPICSCAOutput Type = float32 } MCPS_TRG_CURR_SET = { DataSource = EPICSCAOutput Type = float32 } GCPS_TRG_CURR_SET = { DataSource = EPICSCAOutput Type = float32 } FHPS_REF = { DataSource = EPICSCAOutput Type = float32 } CSV_LOADED = { DataSource = EPICSCAOutput Type = uint32 } CSV_ERR = { DataSource = EPICSCAOutput Type = uint32 } ELAPSED_TIME = { DataSource = EPICSCAOutput Type = uint32 } HVARMED = { DataSource = EPICSCAOutput Type = uint32 } HVINJECTION = { DataSource = EPICSCAOutput Type = uint32 } RFON = { DataSource = EPICSCAOutput Type = uint32 } MHVPS_REF = { DataSource = EPICSCAOutput Type = float32 } PREP_TIME_WF = { DataSource = EPICSCAOutput } MHVPS_PREP_WF = { DataSource = EPICSCAOutput } BPS_PREP_WF = { DataSource = EPICSCAOutput } APS_PREP_WF = { DataSource = EPICSCAOutput } MCPS_PREP_WF = { DataSource = EPICSCAOutput } GCPS_PREP_WF = { DataSource = EPICSCAOutput } FHPS_PREP_WF = { DataSource = EPICSCAOutput } CCPS_REF = { DataSource = EPICSCAOutput } MHVPS_STOP = { DataSource = EPICSCAOutput Type = uint32 } APS_STOP = { DataSource = EPICSCAOutput Type = uint32 } BPS_STOP = { DataSource = EPICSCAOutput Type = uint32 } BEAM_ON_TIME = { DataSource = EPICSCAOutput Type = uint32 } PCF_FLT = { DataSource = EPICSCAOutput } BEAM_ON_STAT = { DataSource = EPICSCAOutput } SHOT_ID = { DataSource = EPICSCAOutput } FHPS_AUTO_STAT = { DataSource = EPICSCAOutput } //Added 20201117 APS_HVON = { DataSource = EPICSCAOutput } APS_SWON = { DataSource = EPICSCAOutput } BPS_HVON = { DataSource = EPICSCAOutput } BPS_SWON = { DataSource = EPICSCAOutput } MHVPS_HVON = { DataSource = EPICSCAOutput } } } // Message GAM in Disabled state. +GoWaitStandbyGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {1} Comparators = {EQUALS} InputSignals = { PLC_SELECT = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitStandby } } +GoWaitStandbyFromReadyGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {0} Comparators = {EQUALS} InputSignals = { PLC_STANDBY = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitStandby } } // MCPS, GCPS PV to DDB1 +GCPSGAM = { Class = IOGAM InputSignals = { GCPS_TRG_CURR_MANUAL = { DataSource = EPICSCAInput Type = float32 } } OutputSignals = { GCPS_TRG_CURR_SET = { DataSource = DDB1 Type = float32 } } } +MCPSGAM = { Class = IOGAM InputSignals = { MCPS_TRG_CURR_MANUAL = { DataSource = EPICSCAInput Type = float32 } } OutputSignals = { MCPS_TRG_CURR_SET = { DataSource = DDB1 Type = float32 } } } // Message GAM in Standby state. +GoDisabledGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {0} Comparators = {EQUALS} InputSignals = { PLC_SELECT = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoDisabled } } //GAM in WaitReady state. Check MCPS,GCPS,FHPS state for state transition. +GoWaitReadyGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {3 3 1} ExpectedFloatValues = {0 0 0} Comparators = {EQUALS GREATER EQUALS GREATER EQUALS GREATER} InputSignals = { MCPS_ACT_RB = { DataSource = EPICSCAInput Type = uint32 } GYA_MCPS_CURR_MON = { DataSource = EPICSCAInput Type = float32 } GCPS_ACT_RB = { DataSource = EPICSCAInput Type = uint32 } GYA_GCPS_CURR_MON = { DataSource = EPICSCAInput Type = float32 } FHPS_RU = { DataSource = EPICSCAInput Type = uint32 } FHPS_MEAS_ACV = { DataSource = EPICSCAInput Type = float32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitReady } } //GAM for prepro +WFRecordGAM = { Class = JAWFRecordGAM Directory = "../Configurations" //TODO: Enter directory path for prepro files. InputSignals = { CSV_LOAD = { DataSource = EPICSCAInput Type = uint32 } Filename = { Alias = CSV_NAME DataSource = EPICSCAInput } } OutputSignals = { PREP_TIME_WF = { DataSource = DDB1 } MHVPS_PREP_WF = { DataSource = DDB1 } BPS_PREP_WF = { DataSource = DDB1 } APS_PREP_WF = { DataSource = DDB1 } MCPS_PREP_WF = { DataSource = DDB1 } GCPS_PREP_WF = { DataSource = DDB1 } FHPS_PREP_WF = { DataSource = DDB1 } } } +PreProgrammedGAM = { Class = JAPreProgrammedGAM Directory = "../Configurations" // TODO: Enter the directory path for prepro files. PreProgrammedPeriodMs = 1 // Parameter update periods in ms. InputSignals = { CSV_LOAD = { DataSource = EPICSCAInput Type = uint32 } Filename = { Alias = CSV_NAME DataSource = EPICSCAInput } FHPS_REF = { Alias = FHPS_AUTO_TAGV DataSource = EPICSCAInput Type = float32 } RFON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { GYA_PREPRO_TIME = { DataSource = DDB1 Type = int32 } MHVPS_REF = { DataSource = DDB1 Type = float32 } BPS_REF = { DataSource = DDB1 Type = float32 } APS_REF = { DataSource = DDB1 Type = float32 } MCPS_TRG_CURR_SET = { DataSource = DDB1 Type = float32 } GCPS_TRG_CURR_SET = { DataSource = DDB1 Type = float32 } FHPS_PrePro = { DataSource = DDB1 Type = float32 } CSV_LOADED = { DataSource = DDB1 Type = uint32 } CSV_ERR = { DataSource = DDB1 Type = uint32 } } } //GAM in WaitReady state. Check PLC_READY and CCPS_IN_OPERATION status. +GoWaitPermitGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {1 1} //20201222 modified. In the past, 0 1. Comparators = {EQUALS EQUALS} InputSignals = { CCPS_IN_OPERATION = { DataSource = EPICSCAInput Type = uint32 } PLC_READY = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitPermit } } //GAM in WaitPermit state. Check Permit and States of Operation Modes. +GoWaitReadyFromWaitPermitGAM = { Class = JAMessageGAM Operation = OR ExpectedIntValues = {0 0} Comparators = {EQUALS EQUALS} InputSignals = { PLC_STANDBY = { DataSource = EPICSCAInput Type = uint32 } PLC_READY = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitReady } } +GoWaitHVONGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {0 0 1} Comparators = {EQUALS EQUALS EQUALS} InputSignals = { PLC_SYNCMODE = { DataSource = EPICSCAInput Type = uint32 } PREP_MODE = { DataSource = EPICSCAInput Type = uint32 } PLC_PERMIT = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitHVON } } +GoWaitHVON_PREP_GAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {0 1 1} Comparators = {EQUALS EQUALS EQUALS} InputSignals = { PLC_SYNCMODE = { DataSource = EPICSCAInput Type = uint32 } PREP_MODE = { DataSource = EPICSCAInput Type = uint32 } PLC_PERMIT = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitHVON_PREP } } +GoWaitHVON_SDN_GAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {1 0 1} Comparators = {EQUALS EQUALS EQUALS} InputSignals = { PLC_SYNCMODE = { DataSource = EPICSCAInput Type = uint32 } PREP_MODE = { DataSource = EPICSCAInput Type = uint32 } PLC_PERMIT = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitHVON_SDN } } +GoWaitHVON_SDN_PREP_GAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {1 1 1} Comparators = {EQUALS EQUALS EQUALS} InputSignals = { PLC_SYNCMODE = { DataSource = EPICSCAInput Type = uint32 } PREP_MODE = { DataSource = EPICSCAInput Type = uint32 } PLC_PERMIT = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitHVON_SDN_PREP } } //GAM in WaitHVON_xx states. If PLC_READY is zero, goto WaitStandby. +FromWaitHVONToWaitStandby = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {0} Comparators = {EQUALS} InputSignals = { PLC_READY = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitStandby } } //GAM in WaitHVON_xx states. If PLC_PERMIT is zero, goto WaitPermit. +FromWaitHVONToWaitPermit = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {0 0 0 0 0 0} //modified 20201222 Comparators = {EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS} //modified 20201222 InputSignals = { PLC_PERMIT = { DataSource = EPICSCAInput Type = uint32 } //add 20201222 APS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BPS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } MHVPS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BPS_SWON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } APS_SWON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 }//20201222 } +Event = { Class = Message Destination = StateMachine Function = GoWaitPermit } } // Check the selected mode, and check maximum pulse length. Use with a StateMachineGAM +ModeLimitGAM = { Class = JAModeControlGAM InputSignals = { PLC_MODE1 = { DataSource = EPICSCAInput Type = uint32 } MD1_SHOTLEN_LIM = { DataSource = EPICSCAInput Type = uint32 } PLC_MODE2 = { DataSource = EPICSCAInput Type = uint32 } MD2_SHOTLEN_LIM = { DataSource = EPICSCAInput Type = uint32 } PLC_MODE3 = { DataSource = EPICSCAInput Type = uint32 } MD3_SHOTLEN_LIM = { DataSource = EPICSCAInput Type = uint32 } PLC_MODE4 = { DataSource = EPICSCAInput Type = uint32 } MD4_SHOTLEN_LIM = { DataSource = EPICSCAInput Type = uint32 } RFON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } Time = { DataSource = DDB1 Type = uint32 } HVInjection = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { MODE_SHOTLEN_FLAG = { DataSource = DDB1 Type = uint32 } } } // State notify GAMs. These GAMs are in all WaitHVON states. +writeBeamONStateGAM = { Class = IOGAM InputSignals = { BEAM_ON_STAT = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { BEAM_ON_STAT = { DataSource = DDB1 Type = uint32 } } } +writeHVArmedStateGAM = { Class = IOGAM InputSignals = { HVARMED = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { HVARMED = { DataSource = DDB1 Type = uint32 } } } +writeHVInjectionStateGAM = { Class = IOGAM InputSignals = { HVINJECTION = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { HVINJECTION = { DataSource = DDB1 Type = uint32 } } } +writeRFONStateGAM = { Class = IOGAM InputSignals = { RFON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { RFON = { DataSource = DDB1 Type = uint32 } } } +writeBeamONTimeGAM = { Class = IOGAM InputSignals = { BeamONTime = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { ELAPSED_TIME = { DataSource = DDB1 Type = uint32 } } } +writeRFONTimeGAM = { Class = IOGAM InputSignals = { RFONTime = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } OutputSignals = { BEAM_ON_TIME = { DataSource = DDB1 Type = uint32 } } } //GAM for trianguler waveform generation. +CCPSWaveformGAM = { Class = JATriangleWaveGAM InputSignals = { Frequency = { Alias = CCPS_OUTPUT_FREQ DataSource = EPICSCAInput Type = float32 } Amplitude = { Alias = CCPS_OUTPUT_AMP DataSource = EPICSCAInput Type = float32 } Offset = { Alias = CCPS_OUTPUT_OFFS DataSource = EPICSCAInput Type = float32 } PLCSTANDBY = { Alias = PLC_STANDBY DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { CCPS_REF = { DataSource = DDB1 Type = float32 } } } //GAM for FHPS ramping up operation. +FHPSSetpointGAM = { Class = IOGAM InputSignals = { FHPS_AUTO_TAGV = { DataSource = EPICSCAInput Type = float32 } } OutputSignals = { FHPS_TAGV = { DataSource = DDB1 Type = float32 } } } +FHPSRampupGAM = { Class = JARampupGAM InputSignals = { Currspv = { Alias = FHPS_REF DataSource = DDB1 Type = float32 } Targetv = { Alias = FHPS_TAGV DataSource = DDB1 Type = float32 } Time = { Alias = FHPS_AUTO_TIME DataSource = EPICSCAInput Type = float32 } Start = { Alias = FHPS_AUTO_START DataSource = EPICSCAInput Type = uint32 } PLC_STANDBY = { Alias = PLC_STANDBY DataSource = EPICSCAInput Type = uint32 } MANUAL_AUTO = { Alias = FHPS_MANM DataSource = EPICSCAInput Type = uint32 } FHPS_PrePro = { DataSource = DDB1 Type = float32 } } OutputSignals = { FHPS_REF = { DataSource = DDB1 Type = float32 } FHPS_AUTO_STAT = { DataSource = DDB1 Type = uint32 } } } //GAM for error handling. // GAM that sets ERROR and STOP FLAGS for APS, BPS and MHVPS when we enter Error state and resets them when we leave Error state +ErrorGAM = { Class = JAConditionalSignalUpdateGAM Operation = AND ExpectedValues = {1 0 0 0 0 0 0 0 0 0 0} Comparators = {EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS} Values = {0 0 0} InputSignals = { // Conditional signals RESET_FLT = { DataSource = EPICSCAInput Type = uint32 } GYA_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYA_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OV = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OC = { DataSource = EPICSCAInput Type = uint32 } MHVPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MIS_ITL = { DataSource = EPICSCAInput Type = uint32 } MISB_ITL = { DataSource = EPICSCAInput Type = uint32 } PLC_ITL = { DataSource = EPICSCAInput Type = uint32 } // Default values MHVPS_STOP_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } APS_STOP_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } BPS_STOP_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { MHVPS_STOP = { DataSource = DDB1 Type = uint32 } APS_STOP = { DataSource = DDB1 Type = uint32 } BPS_STOP = { DataSource = DDB1 Type = uint32 } } } +StopRequestGAM = { Class = JAConditionalSignalUpdateGAM Operation = OR ExpectedValues = {1 1 1 1 1 1 1 1 1 1} Comparators = {EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS} Values = {1} InputSignals = { GYA_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYA_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OV = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OC = { DataSource = EPICSCAInput Type = uint32 } MHVPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MIS_ITL = { DataSource = EPICSCAInput Type = uint32 } MISB_ITL = { DataSource = EPICSCAInput Type = uint32 } PLC_ITL = { DataSource = EPICSCAInput Type = uint32 } StopRequest_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { StopRequest = { DataSource = DDB1 Type = uint32 } } } //Test whether board status are stable +GAMDisplayDebug = { Class = IOGAM InputSignals = { RESET_FLT = { DataSource = DDB1 Type = uint32 } } OutputSignals = { RESET_FLT_DISP = { DataSource = Display Type = uint32 } } } //Check PXI board status. +PXI6259ErrorGAM = { Class = JAConditionalSignalUpdateGAM Operation = OR ExpectedValues = {0 0 0 0} Comparators = {GREATER GREATER GREATER GREATER} Values = {1} InputSignals = { // Conditional signals PXI6259_0 = { DataSource = EPICSCAInput Type = uint32 } PXI6259_1 = { DataSource = EPICSCAInput Type = uint32 } PXI6528_0 = { DataSource = EPICSCAInput Type = uint32 } PXI6528_1 = { DataSource = EPICSCAInput Type = uint32 } // Default values PCF_FLT_6259_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { PCF_FLT_6259 = { DataSource = DDB1 Type = uint32 } } } +PXI6368Error03GAM = {// detect Hardware error (status number 3) for PXI6368 boards. Class = JAConditionalSignalUpdateGAM Operation = OR ExpectedValues = {3 3} Comparators = {EQUALS EQUALS} Values = {1} InputSignals = { PXI6368_0 = { DataSource = EPICSCAInput Type = uint32 } PXI6368_1 = { DataSource = EPICSCAInput Type = uint32 } // Default values PCF_FLT_6368_ERRNO_03_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { PCF_FLT_6368_ERRNO_03 = { DataSource = DDB1 Type = uint32 } } } +PXI6368Error04GAM = {// detect No board error (status number 4) for PXI6368 boards. Class = JAConditionalSignalUpdateGAM Operation = OR ExpectedValues = {4 4} Comparators = {EQUALS EQUALS} Values = {1} InputSignals = { PXI6368_0 = { DataSource = EPICSCAInput Type = uint32 } PXI6368_1 = { DataSource = EPICSCAInput Type = uint32 } // Default values PCF_FLT_6368_ERRNO_04_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { PCF_FLT_6368_ERRNO_04 = { DataSource = DDB1 Type = uint32 } } } +PXIErrorGAM = { Class = JAConditionalSignalUpdateGAM Operation = OR ExpectedValues = {0 0 0} Comparators = {GREATER GREATER GREATER} Values = {1} InputSignals = { PCF_FLT_6368_ERRNO_03 = { DataSource = DDB1 Type = uint32 } PCF_FLT_6368_ERRNO_04 = { DataSource = DDB1 Type = uint32 } PCF_FLT_6259 = { DataSource = DDB1 Type = uint32 } // Default values PCF_FLT_DEFAULT = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { PCF_FLT = { DataSource = DDB1 Type = uint32 } } } +FromErrorToWaitStandbyGAM = { Class = JAMessageGAM Operation = AND ExpectedIntValues = {1 0 0 0 0 0 0 0 0 0 0} Comparators = {EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS EQUALS} InputSignals = { RESET_FLT = { DataSource = EPICSCAInput Type = uint32 } GYA_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYA_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OV = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OC = { DataSource = EPICSCAInput Type = uint32 } MHVPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MIS_ITL = { DataSource = EPICSCAInput Type = uint32 } MISB_ITL = { DataSource = EPICSCAInput Type = uint32 } PLC_ITL = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoWaitStandby } } // From any state to Error state. +GoErrorGAM = { Class = JAMessageGAM Operation = OR ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1} InputSignals = { GYA_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_APS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYA_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } GYB_BPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OV = { DataSource = EPICSCAInput Type = uint32 } MHVPS_OC = { DataSource = EPICSCAInput Type = uint32 } MHVPS_FLT = { DataSource = EPICSCAInput Type = uint32 } MIS_ITL = { DataSource = EPICSCAInput Type = uint32 } MISB_ITL = { DataSource = EPICSCAInput Type = uint32 } PLC_ITL = { DataSource = EPICSCAInput Type = uint32 } } +Event = { Class = Message Destination = StateMachine Function = GoError } } // Reset HVPS outputs. ToDo: Fix to access NI d.s. +ResetPSsGAM = { Class = ConstantGAM OutputSignals = { MHVPS_HVON = { DataSource = DDB1 Type = uint32 Default = 0 } BPS_HVON = { DataSource = DDB1 Type = uint32 Default = 0 } BPS_SWON = { DataSource = DDB1 Type = uint32 Default = 0 } APS_HVON = { DataSource = DDB1 Type = uint32 Default = 0 } APS_SWON = { DataSource = DDB1 Type = uint32 Default = 0 } //here } } // Update status. ToDo: Fix to access NI d.s. +ExitedHVArmedInjectionRFONGAM = { Class = JAConditionalSignalUpdateGAM Values = {0 0 0} InputSignals = { // Condition signals // Default output values HVARMED = { DataSource = DDB1 Type = uint32 } HVINJECTION = { DataSource = DDB1 Type = uint32 } RFON = { DataSource = DDB1 Type = uint32 } } OutputSignals = { HVARMED = { DataSource = DDB1 Type = uint32 } HVINJECTION = { DataSource = DDB1 Type = uint32 } RFON = { DataSource = DDB1 Type = uint32 } } } //GAM for SDN communication.(ProcessWF:thread1, Subscribe/Publish:thread2) +SDNCommandGAM = { Class = IOGAM InputSignals = { Command = { DataSource = SDNSubCommands Type = uint16 NumberOfDimensions = 1 NumberOfElements = 64 Ranges = {{0 0}} // TODO uncomment this for release/testing //Frequency = 1 } ESDNTime = { DataSource = SDNSubCommands Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } } OutputSignals = { Command = { DataSource = RealTimeThreadAsyncBridge Type = uint16 } ESDNTime = { DataSource = DDB1 Type = uint32 } } } +debugSDNGAM = {//for debug Class = IOGAM InputSignals = { Command = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } ESDNTime = { DataSource = DDB1 Type = uint32 } } OutputSignals = { Command_DISP = { DataSource = Display Type = float32 } ESDNTime_DISP = { DataSource = Display Type = uint32 } } } +SDNReplyGAM = { Class = IOGAM InputSignals = { ESDNTime = { DataSource = DDB1 Type = uint32 } WaveformPacketID = { DataSource = DDB1 Type = uint16 } GYA_BPS_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_BPS_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_BPS_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_BPS_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_APS_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_APS_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_APS_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_APS_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_ARC1_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_ARC1_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_ARC1_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_ARC1_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_ARC2_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_ARC2_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_ARC2_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_ARC2_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_MHVPS_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_MHVPS_MESVOLT = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_MHVPS_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYB_MHVPS_MESCURR = { DataSource = EPICSCAInput Ranges = {{0 0}} } GYA_MCPS_CURR_MON = { DataSource = EPICSCAInput } GYB_MCPS_CURR_MON = { DataSource = EPICSCAInput } GYA_GCPS_CURR_MON = { DataSource = EPICSCAInput } GYB_GCPS_CURR_MON = { DataSource = EPICSCAInput } GYA_FHPS_MEAS_ACI = { DataSource = EPICSCAInput } GYB_FHPS_MEAS_ACI = { DataSource = EPICSCAInput } GYA_CCPS_MEAS_DCI = { DataSource = EPICSCAInput } GYB_CCPS_MEAS_DCI = { DataSource = EPICSCAInput } } OutputSignals = { ESDNTime = { DataSource = SDNReply Type = uint32 Trigger = 1 } ReplyWaveformAck = { DataSource = SDNReply Type = uint16 } GYA_BPS_MESVOLT = { DataSource = SDNReply } GYB_BPS_MESVOLT = { DataSource = SDNReply } GYA_BPS_MESCURR = { DataSource = SDNReply } GYB_BPS_MESCURR = { DataSource = SDNReply } GYA_APS_MESVOLT = { DataSource = SDNReply } GYB_APS_MESVOLT = { DataSource = SDNReply } GYA_APS_MESCURR = { DataSource = SDNReply } GYB_APS_MESCURR = { DataSource = SDNReply } GYA_ARC1_MESVOLT = { DataSource = SDNReply } GYB_ARC1_MESVOLT = { DataSource = SDNReply } GYA_ARC1_MESCURR = { DataSource = SDNReply } GYB_ARC1_MESCURR = { DataSource = SDNReply } GYA_ARC2_MESVOLT = { DataSource = SDNReply } GYB_ARC2_MESVOLT = { DataSource = SDNReply } GYA_ARC2_MESCURR = { DataSource = SDNReply } GYB_ARC2_MESCURR = { DataSource = SDNReply } GYA_MHVPS_MESVOLT = { DataSource = SDNReply } GYB_MHVPS_MESVOLT = { DataSource = SDNReply } GYA_MHVPS_MESCURR = { DataSource = SDNReply } GYB_MHVPS_MESCURR = { DataSource = SDNReply } GYA_MCPS_CURR_MON = { DataSource = SDNReply } GYB_MCPS_CURR_MON = { DataSource = SDNReply } GYA_GCPS_CURR_MON = { DataSource = SDNReply } GYB_GCPS_CURR_MON = { DataSource = SDNReply } GYA_FHPS_MEAS_ACI = { DataSource = SDNReply } GYB_FHPS_MEAS_ACI = { DataSource = SDNReply } GYA_CCPS_MEAS_DCI = { DataSource = SDNReply } GYB_CCPS_MEAS_DCI = { DataSource = SDNReply } } } //Write SDN waveform data into PS setpoint PV. // Timer for SDN thread. +TimeSDNGAM = { Class = IOGAM InputSignals = { Time = { DataSource = TimerSDN Type = uint32 } Counter = { DataSource = TimerSDN Type = uint32 Frequency = 1000 //operation:1k(=1ms cyc), debug:10 } } OutputSignals = { TimeSDN = { DataSource = DDB1 Type = uint32 } CounterSDN = { DataSource = DDB1 Type = uint32 } } } //GAM for realtime statemachine +Timer100kHzGAM = { Class = IOGAM InputSignals = { Time = { DataSource = Timer Type = uint32 } Counter = { DataSource = Timer Type = uint32 Frequency = 200000 //operation:10k(=100us cyc) //Frequency = 100000 //operation:100k(=10us cyc) } RTThreadPerf = { DataSource = Timings Alias = "WaitHVON.Thread3_CycleTime" Type = uint32 } } OutputSignals = { Time = { DataSource = DDB1 Type = uint32 } Counter = { DataSource = DDB1 Type = uint32 } RTThreadPerf = { DataSource = DDB1 Type = uint32 } } } // Digital Output port access. // EPICS PV to one uint8 variable +NI6528P3GAM = { Class = JABitSumGAM InputSignals = { APS_HVON = { DataSource = EPICSCAInput Type = uint32 } APS_SWON = { DataSource = EPICSCAInput Type = uint32 } APS_STOP = { DataSource = EPICSCAInput Type = uint32 } BPS_HVON = { DataSource = EPICSCAInput Type = uint32 } BPS_SWON = { DataSource = EPICSCAInput Type = uint32 } BPS_STOP = { DataSource = EPICSCAInput Type = uint32 } BEAM_ON_STAT = { DataSource = EPICSCAInput Type = uint32 } DO_REV5 = { DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { NI6528P3CurrentValue = { DataSource = DDB1 Type = uint8 } } } +NI6528P4GAM = { Class = JABitSumGAM InputSignals = { DO_REV6 = { DataSource = EPICSCAInput Type = uint32 } DO_REV7 = { DataSource = EPICSCAInput Type = uint32 } DO_REV8 = { DataSource = EPICSCAInput Type = uint32 } MHVPS_HVON = { DataSource = EPICSCAInput Type = uint32 } MHVPS_STOP = { DataSource = EPICSCAInput Type = uint32 } MHVPS_MODSW = { DataSource = EPICSCAInput Type = uint32 } PCF_FLT = { DataSource = EPICSCAInput Type = uint32 } HVARMED = { DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { NI6528P4CurrentValue = { DataSource = DDB1 Type = uint8 } } } +NI6528P5GAM = { Class = JABitSumGAM InputSignals = { HVINJECTION = { DataSource = EPICSCAInput Type = uint32 } RFON = { DataSource = EPICSCAInput Type = uint32 } FHPS_RU = { DataSource = EPICSCAInput Type = uint32 } SCM_RU = { DataSource = EPICSCAInput Type = uint32 } SCM_RD = { DataSource = EPICSCAInput Type = uint32 } CCPS_IN_OPERATION = { DataSource = EPICSCAInput Type = uint32 } NONE1 = { DataSource = DDB1 Type = uint32 Default = 0 } NONE2 = { DataSource = DDB1 Type = uint32 Default = 0 } } OutputSignals = { NI6528P5CurrentValue = { DataSource = DDB1 Type = uint8 } } } // reversed uint8 variable (value to write on port.) +NI6528P3PV2PortGAM = { Class = JABitReverseGAM InputSignals = { NI6528P3CurrentValue = { DataSource = DDB1 Type = uint8 } } OutputSignals = { NI6528P3PortValue = { DataSource = DDB1 Type = uint8 } } } +NI6528P4PV2PortGAM = { Class = JABitReverseGAM InputSignals = { NI6528P4CurrentValue = { DataSource = DDB1 Type = uint8 } } OutputSignals = { NI6528P4PortValue = { DataSource = DDB1 Type = uint8 } } } +NI6528P5PV2PortGAM = { Class = JABitReverseGAM InputSignals = { NI6528P5CurrentValue = { DataSource = DDB1 Type = uint8 } } OutputSignals = { NI6528P5PortValue = { DataSource = NI6528P5 Type = uint8 } } } // write a uint8 port value to PXI data source. +NI6528P3WriteGAM = { Class = IOGAM InputSignals = { NI6528P3PortValue = { DataSource = DDB1 Type = uint8 } } OutputSignals = { NI6528P3Value = { DataSource = NI6528P3 Type = uint8 } } } +NI6528P4WriteGAM = { Class = IOGAM InputSignals = { NI6528P4PortValue = { DataSource = DDB1 Type = uint8 } } OutputSignals = { NI6528P4Value = { DataSource = NI6528P4 Type = uint8 } } } //Thread3 pulse parameter EPICS PVs read. +GAMEPICSCA = { Class = IOGAM InputSignals = { MHVPS_DT = { DataSource = EPICSCAInput Type = uint32 } APS_HVON_DT = { DataSource = EPICSCAInput Type = uint32 } APS_SWON_DT = { DataSource = EPICSCAInput Type = uint32 } BPS_HVON_DT = { DataSource = EPICSCAInput Type = uint32 } BPS_SWON_DT = { DataSource = EPICSCAInput Type = uint32 } SHOTLEN = { DataSource = EPICSCAInput Type = uint32 } PLC_ON = { DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { MHVPS_DT = { DataSource = DDB1 Type = uint32 } APS_HVON_DT = { DataSource = DDB1 Type = uint32 } APS_SWON_DT = { DataSource = DDB1 Type = uint32 } BPS_HVON_DT = { DataSource = DDB1 Type = uint32 } BPS_SWON_DT = { DataSource = DDB1 Type = uint32 } SHOTLEN = { DataSource = DDB1 Type = uint32 } PLC_ON = { DataSource = DDB1 Type = uint32 } } } // Real-Time state machine GAMs +GAMRealTimeStateMachine = { Class = JARTStateMachineGAM ConditionTrigger = 1 mhvps_hvon = 4 aps_hvon = 1 aps_swon = 16 bps_hvon = 2 bps_swon = 8 InputSignals = { Time = { DataSource = DDB1 Type = uint32 } PLC_ON = { DataSource = DDB1 Type = uint32 } MHVPS_DT = { DataSource = DDB1 Type = uint32 } APS_HVON_DT = { DataSource = DDB1 Type = uint32 } APS_SWON_DT = { DataSource = DDB1 Type = uint32 } BPS_HVON_DT = { DataSource = DDB1 Type = uint32 } BPS_SWON_DT = { DataSource = DDB1 Type = uint32 } SHOTLEN = { DataSource = DDB1 Type = uint32 } StopRequest = { DataSource = DDB1 Type = uint32 } MODE_SHOTLEN_FLAG = { DataSource = DDB1 Type = uint32 } SHORT_PULSE_MODE = { DataSource = EPICSCAInput Type = uint32 } //Add 20210120 MHVPS_MODSW = { DataSource = EPICSCAInput Type = uint32 } //Add 20210121 DO_REV6 = { DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { RTSMValue = { DataSource = DDB1 Type = uint32 Trigger = 1 } BEAM_ON_STAT = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } HVARMED = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } HVINJECTION = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } RFON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BeamONTime = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } RFONTime = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } SHOT_ID = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } //Added 20201117 APS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } APS_SWON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BPS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BPS_SWON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } MHVPS_HVON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } NI6259Value = { DataSource = NI6259 //DataSource = DDB1 Type = uint32 Trigger = 1 } NI6528P3Value = { DataSource = NI6528P3 //DataSource = DDB1 Type = uint8 } NI6528P4Value = { DataSource = NI6528P4 //DataSource = DDB1 Type = uint8 } } } +GAMSDNRealTimeStateMachine = { Class = JASDNRTStateMachineGAM ConditionTrigger = 1 mhvps_hvon = 4 aps_hvon = 1 aps_swon = 16 bps_hvon = 2 bps_swon = 8 InputSignals = { Time = { DataSource = DDB1 Type = uint32 } PLC_ON = { DataSource = DDB1 Type = uint32 } MHVPS_DT = { DataSource = DDB1 Type = uint32 } APS_HVON_DT = { DataSource = DDB1 Type = uint32 } APS_SWON_DT = { DataSource = DDB1 Type = uint32 } BPS_HVON_DT = { DataSource = DDB1 Type = uint32 } BPS_SWON_DT = { DataSource = DDB1 Type = uint32 } SHOTLEN = { DataSource = DDB1 Type = uint32 } StopRequest = { DataSource = DDB1 Type = uint32 } MODE_SHOTLEN_FLAG = { DataSource = DDB1 Type = uint32 } Command = { DataSource = RealTimeThreadAsyncBridge Type = uint16 } } OutputSignals = { RTSMValue = { DataSource = DDB1 Type = uint32 Trigger = 1 } BeamON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } HVARMED = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } HVINJECTION = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } RFON = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } BeamONTime = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } RFONTime = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } SHOT_ID = { DataSource = RealTimeThreadAsyncBridge Type = uint32 } } } //Terminal Interface reads three inputs. // INPUTs: StateMahine Value, NI6528P3Value and NI6528P4Value // OUTPUTs: Each NIxxx data sources. +terminalInterfaceGAM = { Class = JATerminalInterfaceGAM mhvps_hvon_term = 4 aps_hvon_term = 1 aps_swon_term = 16 bps_hvon_term = 2 bps_swon_term = 8 InputSignals = { MHVPS_HVON = { DataSource = DDB1 Type = uint32 } APS_HVON = { DataSource = DDB1 Type = uint32 } APS_SWON = { DataSource = DDB1 Type = uint32 } BPS_HVON = { DataSource = DDB1 Type = uint32 } BPS_SWON = { DataSource = DDB1 Type = uint32 } SHORT_PULSE_MODE = { DataSource = EPICSCAInput Type = uint32 } //Input signals about HW terminal. RTSMValue = { DataSource = DDB1 Type = uint32 } NI6528P3CurrentValue = { DataSource = DDB1 Type = uint8 } NI6528P4CurrentValue = { DataSource = DDB1 Type = uint8 } } OutputSignals = { NI6259Value = { DataSource = NI6259 //DataSource = DDB1 Type = uint32 Trigger = 1 } NI6528P3Value = { DataSource = NI6528P3 //DataSource = DDB1 Type = uint8 } NI6528P4Value = { DataSource = NI6528P4 //DataSource = DDB1 Type = uint8 } } } // Switching AO port source between internal variable and EPICS PV. +choiseGAM = { Class = JASourceChoiseGAM numberOfPVs = 5 InputSignals = { BPS_REF = { DataSource = DDB1 Type = float32 } BPS_MANUAL = { DataSource = EPICSCAInput Type = float32 } BPS_MM = { DataSource = EPICSCAInput Type = uint32 } APS_REF = { DataSource = DDB1 Type = float32 } APS_MANUAL = { DataSource = EPICSCAInput Type = float32 } APS_MM = { DataSource = EPICSCAInput Type = uint32 } MHVPS_REF = { DataSource = DDB1 Type = float32 } MHVPS_MANUAL = { DataSource = EPICSCAInput Type = float32 } MHVPS_MM = { DataSource = EPICSCAInput Type = uint32 } MCPS_TRG_CURR_SET = { DataSource = DDB1 Type = float32 } MCPS_TRG_CURR_MANUAL = { DataSource = EPICSCAInput Type = float32 } MCPS_MM = { DataSource = EPICSCAInput Type = uint32 } GCPS_TRG_CURR_SET = { DataSource = DDB1 Type = float32 } GCPS_TRG_CURR_MANUAL = { DataSource = EPICSCAInput Type = float32 } GCPS_MM = { DataSource = EPICSCAInput Type = uint32 } } OutputSignals = { BPS_OUT = { DataSource = DDB1 Type = float32 } APS_OUT = { DataSource = DDB1 Type = float32 } MHVPS_OUT = { DataSource = DDB1 Type = float32 } MCPS_OUT = { DataSource = DDB1 Type = float32 } GCPS_OUT = { DataSource = DDB1 Type = float32 } } } //debug +debugTimerGAM = { Class = IOGAM InputSignals = { Time1kHz = { DataSource = DDB1 Type = uint32 } TimeSDN = { DataSource = DDB1 Type = uint32 } Time = { DataSource = DDB1 Type = uint32 } Time1Hz = { DataSource = DDB1 Type = uint32 } } OutputSignals = { T1_time = { DataSource = Display Type = uint32 } T2_time = { DataSource = Display Type = uint32 } T3_time = { DataSource = Display Type = uint32 } T4_time = { DataSource = Display Type = uint32 } } } +GAMExecTime = {//debug Class = IOGAM InputSignals = { GAMEPICSCA_ExecTime = { DataSource = Timings Type = uint32 } StopRequestGAM_ExecTime = { DataSource = Timings Type = uint32 } ModeLimitGAM_ExecTime = { DataSource = Timings Type = uint32 } NI6528P3GAM_ExecTime = { DataSource = Timings Type = uint32 } terminalInterfaceGAM_ExecTime = { DataSource = Timings Type = uint32 } GAMRealTimeStateMachine_ExecTime = { DataSource = Timings Type = uint32 } } OutputSignals = { GAMEPICSCA_ExecTime = { DataSource = Display Type = uint32 } StopRequestGAM_ExecTime = { DataSource = Display Type = uint32 } ModeLimitGAM_ExecTime = { DataSource = Display Type = uint32 } NI6528P3GAM_ExecTime = { DataSource = Display Type = uint32 } terminalInterfaceGAM_ExecTime = { DataSource = Display Type = uint32 } GAMRealTimeStateMachine_ExecTime = { DataSource = Display Type = uint32 } } } } +Data = { Class = ReferenceContainer DefaultDataSource = DDB1 +DDB1 = { Class = GAMDataSource AllowNoProducers = 1 ResetUnusedVariablesAtStateChange = 0 } // Timer for thread 1 (Normal RT state execution cycle.) +Timer1kHz = { Class = LinuxTimer SleepNature = "Busy" SleepPercentage = 40 ExecutionMode = RealTimeThread CPUMask = 0x100 Signals = { Counter = { Type = uint32 } Time = { Type = uint32 } } } +TimerSDN = { Class = LinuxTimer SleepNature = "Busy" SleepPercentage = 40 ExecutionMode = RealTimeThread CPUMask = 0x200 Signals = { Counter = { Type = uint32 } Time = { Type = uint32 } } } +Timer10Hz = { Class = LinuxTimer SleepNature = "Busy" SleepPercentage = 40 ExecutionMode = RealTimeThread CPUMask = 0x800 Signals = { Counter = { Type = uint32 } Time = { Type = uint32 } } } // Timer for thread 3 (RTStateMachineGAM execution cycle.) +Timer = { Class = LinuxTimer SleepNature = "Busy" SleepPercentage = 40 ExecutionMode = RealTimeThread CPUMask = 0x400 Signals = { Counter = { Type = uint32 } Time = { Type = uint32 } } } +Timings = { Class = TimingDataSource } +Display = { Class = LoggerDataSource } // for data exechange between threads. +RealTimeThreadAsyncBridge = { Class = RealTimeThreadAsyncBridge NumberOfBuffers = 20 } // for access ECPIS PV. +EPICSCAInput = { Class = "EPICSCA::EPICSCAInput" CPUMask = "0x100" //change from 200 StackSize = "10000000" Signals = { // PV for manually setting BPS_MM = { PVName = "EC-GN-P01-PB1F:STAT-MANM" Type = uint32 } BPS_MANUAL = { PVName = "EC-GN-P01-PB1F:PSU1000-EREF-MSP" Type = float32 } APS_MM = { PVName = "EC-GN-P01-PA1F:STAT-MANM" Type = uint32 } APS_MANUAL = { PVName = "EC-GN-P01-PA1F:PSU3000-EREF-MSP" Type = float32 } MHVPS_MANUAL = { PVName = "EC-GN-P01-PMF:PSU0000-EREF-MSP" Type = float32 } MHVPS_MM = { PVName = "EC-GN-P01-PMF:STAT-MANM" Type = uint32 } // Analog Input PVs. GYA_BPS_MESVOLT = { PVName = "EC-GN-P01-PB1F:PSU1000-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_BPS_MESVOLT = { PVName = "EC-GN-P01-PB2F:PSU2000-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_BPS_MESCURR = { PVName = "EC-GN-P01-PB1F:PSU1000-IT" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_BPS_MESCURR = { PVName = "EC-GN-P01-PB2F:PSU2000-IT" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_APS_MESVOLT = { PVName = "EC-GN-P01-PA1F:PSU3000-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_APS_MESVOLT = { PVName = "EC-GN-P01-PA2F:PSU4000-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_APS_MESCURR = { PVName = "EC-GN-P01-PA1F:PSU3000-IT" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_APS_MESCURR = { PVName = "EC-GN-P01-PA2F:PSU4000-IT" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_ARC1_MESVOLT = { PVName = "EC-GN-P01-GAF:MOE2810-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_ARC1_MESVOLT = { PVName = "EC-GN-P01-GBF:MOE2810-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_ARC1_MESCURR = { PVName = "EC-GN-P01-GAF:MOE2820-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_ARC1_MESCURR = { PVName = "EC-GN-P01-GBF:MOE2820-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_ARC2_MESVOLT = { PVName = "EC-GN-P01-GAF:MOE2830-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_ARC2_MESVOLT = { PVName = "EC-GN-P01-GBF:MOE2830-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_ARC2_MESCURR = { PVName = "EC-GN-P01-GAF:MRF2910-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_ARC2_MESCURR = { PVName = "EC-GN-P01-GBF:MRF2910-ET" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_MHVPS_MESVOLT = { PVName = "EC-GN-P01-PMF:PSU0000-ET-GA" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_MHVPS_MESVOLT = { PVName = "EC-GN-P01-PMF:PSU0000-ET-GB" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYA_MHVPS_MESCURR = { PVName = "EC-GN-P01-PMF:PSU0000-IT-GA" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GYB_MHVPS_MESCURR = { PVName = "EC-GN-P01-PMF:PSU0000-IT-GB" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } //Digital Input PVs in Signal-Variable tab. APS_READY = { PVName = "EC-GN-P01-PA1F:PSU3000-YSTA" Type = uint32 } GYA_APS_FLT = { PVName = "EC-GN-P01-PA1F:PSU3000-YFLT" Type = uint32 } GYB_APS_FLT = { PVName = "EC-GN-P01-PA2F:PSU4000-YFLT" Type = uint32 } BPS_READY = { PVName = "EC-GN-P01-PB1F:PSU1000-YSTA" Type = uint32 } GYA_BPS_FLT = { PVName = "EC-GN-P01-PB1F:PSU1000-YFLT" Type = uint32 } GYB_BPS_FLT = { PVName = "EC-GN-P01-PB2F:PSU2000-YFLT" Type = uint32 } MHVPS_OV = { PVName = "EC-GN-P01-GAFP:FMC4310-YFLT-OC" Type = uint32 } MHVPS_OC = { PVName = "EC-GN-P01-GAFP:FMC4310-YFLT-OV" Type = uint32 } MHVPS_FLT = { PVName = "EC-GN-P01-PMF:PSU0000-YFLT" Type = uint32 } MHVPS_READY = { PVName = "EC-GN-P01-PMF:PSU0000-TYSTA" Type = uint32 } MHVPS_MODON = { PVName = "EC-GN-P01-GPF:PSU0000-YSTA-MOD" Type = uint32 } MIS_ITL = { PVName = "EC-GN-P01-GAFP:FMC4310-YTRP" Type = uint32 } MISB_ITL = { PVName = "EC-GN-P01-GBFP:FMC4310-YTRP" Type = uint32 } PLC_ITL = { PVName = "EC-GN-P01-GPS:PLC4110-YTRP" Type = uint32 } PLC_STANDBY = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-ST1R" Type = uint32 } PLC_READY = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-ST2R" Type = uint32 } PLC_ON = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-ST3R" Type = uint32 } PLC_MODE1 = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD1" Type = uint32 } PLC_MODE2 = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD2" Type = uint32 } PLC_MODE3 = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD3" Type = uint32 } PLC_MODE4 = { PVName = "EC-GN-P01-GPS:PLC4110-YTS-MD4" Type = uint32 } PLC_PERMIT = { PVName = "EC-GN-P01-GPS:PLC4110-CON-GY1PRM" Type = uint32 } PLC_SELECT = { PVName = "EC-GN-P01-GPS:PLC4110-CON-OPGY1" Type = uint32 } PLC_SYNCMODE = { PVName = "EC-GN-P01-GPS:PLC4110-YSTA-MPSS" Type = uint32 } PLC_CCPSON = { PVName = "EC-GN-P01-GPS:PLC4110-YON-CCPS1" Type = uint32 } EXT_TRIG = { PVName = "EC-GN-P01-GAF:DIO4900-YON" Type = uint32 } //Digital Output PVs in Variables-signal tab APS_HVON = { PVName = "EC-GN-P01-PA1F:PSU3000-CON-HV" Type = uint32 } APS_SWON = { PVName = "EC-GN-P01-PA1F:PSU3000-CON-SW" Type = uint32 } APS_STOP = { PVName = "EC-GN-P01-PA1F:PSU3000-CTRP" Type = uint32 } BPS_HVON = { PVName = "EC-GN-P01-PB1F:PSU1000-CON-HV" Type = uint32 } BPS_SWON = { PVName = "EC-GN-P01-PB1F:PSU1000-CON-SW" Type = uint32 } BPS_STOP = { PVName = "EC-GN-P01-PB1F:PSU1000-CTRP" Type = uint32 } BEAM_ON_STAT = { PVName = "EC-GN-P01-GAFP:FMC4310-YSTA-GAOP" Type = uint32 } DO_REV5 = { PVName = "EC-GN-P01-GAFP:FMC4310-RV5" Type = uint32 } DO_REV6 = { PVName = "EC-GN-P01-GAFP:FMC4310-RV6" Type = uint32 } DO_REV7 = { PVName = "EC-GN-P01-GAFP:FMC4310-RV7" Type = uint32 } DO_REV8 = { PVName = "EC-GN-P01-GAFP:FMC4310-RV8" Type = uint32 } MHVPS_HVON = { PVName = "EC-GN-P01-PMF:PSU0000-CON-SW" Type = uint32 } MHVPS_STOP = { PVName = "EC-GN-P01-PMF:PSU0000-COFF" Type = uint32 } MHVPS_MODSW = { PVName = "EC-GN-P01-PMF:PSU0000-CON-MOD" Type = uint32 } PCF_FLT = { PVName = "EC-GN-P01-GPF:PCF4210-CTRP" Type = uint32 } HVARMED = { PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA1" Type = uint32 } HVINJECTION = { PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA2" Type = uint32 } RFON = { PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA3" Type = uint32 } FHPS_RU = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-YTS-RUP" Type = uint32 } SCM_RU = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-YTS-RUP" Type = uint32 } SCM_RD = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-YTS-RDOWN" Type = uint32 } CCPS_IN_OPERATION = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-TR" Type = uint32 } //Input PVs in Variables-Operation tab. PREP_MODE = { PVName = "EC-GN-P01-GAF:STAT-PREP-MODE" Type = uint32 } SHORT_PULSE_MODE = { PVName = "EC-GN-P01-GAF:STAT-SHORT-PULSE" Type = uint32 } MHVPS_DT = { PVName = "EC-GN-P01-PMF:STAT-DT-HVON" Type = uint32 } APS_HVON_DT = { PVName = "EC-GN-P01-PA1F:STAT-DT-HVON" Type = uint32 } APS_SWON_DT = { PVName = "EC-GN-P01-PA1F:STAT-DT-SWON" Type = uint32 } BPS_HVON_DT = { PVName = "EC-GN-P01-PB1F:STAT-DT-HVON" Type = uint32 } BPS_SWON_DT = { PVName = "EC-GN-P01-PB1F:STAT-DT-SWON" Type = uint32 } SHOTLEN = { PVName = "EC-GN-P01-GAF:STAT-DT-SHOTLEN" Type = uint32 } MD1_SHOTLEN_LIM = { PVName = "EC-GN-P01-GPF:STAT-MD1-LIM" Type = uint32 } MD2_SHOTLEN_LIM = { PVName = "EC-GN-P01-GPF:STAT-MD2-LIM" Type = uint32 } MD3_SHOTLEN_LIM = { PVName = "EC-GN-P01-GPF:STAT-MD3-LIM" Type = uint32 } MD4_SHOTLEN_LIM = { PVName = "EC-GN-P01-GPF:STAT-MD4-LIM" Type = uint32 } FHPS_MANM = { PVName = "EC-GN-P01-GAF-FHPS:STAT-MANM" Type = uint32 } CSV_LOAD = { PVName = "EC-GN-P01-GAF:STAT-CSV-LOAD" Type = uint32 } CSV_NAME = { PVName = "EC-GN-P01-GAF:STAT-CSV-NAME" Type = char8 NumberOfElements = 40 } RESET_FLT = { PVName = "EC-GN-P01-GPF:STAT-RST-FLT" //PVName = "EC-GN-P01-GPS-MEM:CMD-CONALARMRESET-HMI" Type = uint32 } //Input PVs in Variables-JASTEC tab. MCPS_ACT_SP = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-ACT-SET-MI" Type = uint32 } MCPS_TRG_CURR_MANUAL = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-SET-MI" Type = float32 } MCPS_ACT_RB = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-ACT-RB" Type = uint32 } MCPS_CURR_RB = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-RB" Type = uint32 } GYA_MCPS_CURR_MON = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-CURR-MON" Type = float32 } GYB_MCPS_CURR_MON = { PVName = "EC-GN-P01-GBF-MCPS:PSU2120-CURR-MON" Type = float32 } MCPS_VOLT_MON = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-VOLT-MON" Type = uint32 } MCPS_SWP_RB = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-SWP-RB" Type = uint32 } MCPS_SWP_LIM = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-SWP-LIM" Type = uint32 } MCPS_ERR = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-ERR" Type = uint32 } MCPS_MM = { PVName = "EC-GN-P01-GAF-MCPS:STAT-MANM" Type = uint32 } //GCPS PVs GCPS_ACT_SP = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-ACT-SP-MI" Type = uint32 } GCPS_TRG_CURR_MANUAL = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-TRG-CURR-SET-MI" Type = float32 } GCPS_ACT_RB = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-ACT-RB" Type = uint32 } GCPS_CURR_RB = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-TRG-CURR-RB" Type = uint32 } GYA_GCPS_CURR_MON = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-CURR-MON" Type = float32 } GYB_GCPS_CURR_MON = { PVName = "EC-GN-P01-GBF-GCPS:PSU2130-CURR-MON" Type = float32 } GCPS_VOLT_MON = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-VOLT-MON" Type = uint32 } GCPS_SWP_RB = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-SWP-RB" Type = uint32 } GCPS_SWP_LIM = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-SWP-LIM" Type = uint32 } GCPS_ERR = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-ERR" Type = uint32 } GCPS_MM = { PVName = "EC-GN-P01-GAF-GCPS:STAT-MANM" Type = uint32 } //Input PVs in Variables-kikusui tab. FHPS_REM_RB = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-REM-RB" Type = uint32 } FHPS_OUTON_RB = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-OUTON-RB" Type = uint32 } FHPS_CURR_RB = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-CURR-RB" Type = uint32 } FHPS_ACV_RB = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-ACV-RB" Type = uint32 } FHPS_FRQ_RB = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-FRQ-RB" Type = uint32 } FHPS_SOUR_ON_RB = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-SOUR-ON-RB" Type = uint32 } FHPS_MEAS_ACV = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-MEAS-ACV" Type = float32 } GYA_FHPS_MEAS_ACI = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-MEAS-ACI" Type = float32 } GYB_FHPS_MEAS_ACI = { PVName = "EC-GN-P01-GBF-FHPS:PSU2610-MEAS-ACI" Type = float32 } FHPS_MEAS_ACP = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-MEAS-ACP" Type = uint32 } FHPS_MEAS_FRQ = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-MEAS-FRQ" Type = uint32 } FHPS_ERR = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-ERROR" Type = uint32 } FHPS_AUTO_TAGV = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-TAGV" Type = float32 } FHPS_AUTO_TIME = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-RU-TIME" Type = float32 } FHPS_AUTO_START = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-START" Type = uint32 } CCPS_REMLOC_RB = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-REMLOC-RB" Type = uint32 } CCPS_OUTON_RB = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-OUTON-RB" Type = uint32 } CCPS_CURR_RB = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-CURR-RB" Type = uint32 } CCPS_DCV_RB = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-DCV-RB" Type = uint32 } CCPS_RANG_RB = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-RANG-RB" Type = uint32 } CCPS_SOUR_ON_RB = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-SOUR-ON-RB" Type = uint32 } CCPS_MEAS_DCV = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-MEAS-DCV" Type = uint32 } GYA_CCPS_MEAS_DCI = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-MEAS-DCI" Type = float32 } GYB_CCPS_MEAS_DCI = { PVName = "EC-GN-P01-GBF-CCPS:PSU2320-MEAS-DCI" Type = float32 } CCPS_MEAS_DCP = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-MEAS-DCP" Type = uint32 } CCPS_ERR = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-ERROR" Type = uint32 } CCPS_OUTPUT_AMP = { PVName = "EC-GN-P01-GAF-CCPS:STAT-AMP" Type = float32 } CCPS_OUTPUT_FREQ = { PVName = "EC-GN-P01-GAF-CCPS:STAT-FREQ" Type = float32 } CCPS_OUTPUT_OFFS = { PVName = "EC-GN-P01-GAF-CCPS:STAT-OFFS" Type = float32 } //PXI Board status PVs PXI6259_0 = { PVName = "EC-GN-HWCF:6259-0-STATUS" Type = uint32 } PXI6259_1 = { PVName = "EC-GN-HWCF:6259-1-STATUS" Type = uint32 } PXI6528_0 = { PVName = "EC-GN-HWCF:6528-0-STATUS" Type = uint32 } PXI6528_1 = { PVName = "EC-GN-HWCF:6528-1-STATUS" Type = uint32 } PXI6368_0 = { PVName = "EC-GN-HWCF:6368-0-STATUS" Type = uint32 } PXI6368_1 = { PVName = "EC-GN-HWCF:6368-1-STATUS" Type = uint32 } } } +EPICSCAOutput = { Class = "EPICSCA::EPICSCAOutput" CPUMask = "0x100" //change from 0x200 StackSize = "10000000" NumberOfBuffers = 2 Signals = { PCF_STATE = { PVName = "EC-GN-P01-GAF:STAT-SM" Type = uint32 } //Analog Output PVs in Variables-signal tab. FHPS_REF = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-EREF" Type = float32 } BPS_REF = { PVName = "EC-GN-P01-PB1F:PSU1000-EREF" Type = float32 } APS_REF = { PVName = "EC-GN-P01-PA1F:STAT-EREF-CONV.A" Type = float32 } MHVPS_REF = { PVName = "EC-GN-P01-PMF:STAT-EREF-CALC.A" Type = float32 } //Digital Output PVs in Variables-signal tab. APS_STOP = { PVName = "EC-GN-P01-PA1F:PSU3000-CTRP" Type = uint32 } BPS_STOP = { PVName = "EC-GN-P01-PB1F:PSU1000-CTRP" Type = uint32 } BEAM_ON_STAT = { PVName = "EC-GN-P01-GAFP:FMC4310-YSTA-GAOP" Type = uint32 } MHVPS_STOP = { PVName = "EC-GN-P01-PMF:PSU0000-COFF" Type = uint32 } PCF_FLT = { PVName = "EC-GN-P01-GPF:PCF4210-CTRP" Type = uint32 } HVARMED = { PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA1" Type = uint32 } HVINJECTION = { PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA2" Type = uint32 } RFON = { PVName = "EC-GN-P01-GPF:PCF4210-YTS-GA3" Type = uint32 } //Output PVs in Variables-operation tab. MHVPS_PREP_WF = { PVName = "EC-GN-P01-PMF:STAT-PREP-WF" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } BPS_PREP_WF = { PVName = "EC-GN-P01-PB1F:STAT-PREP-WF" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } APS_PREP_WF = { PVName = "EC-GN-P01-PA1F:STAT-PREP-WF" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } FHPS_PREP_WF = { PVName = "EC-GN-P01-GAF-FHPS:STAT-PREP-WF" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } MCPS_PREP_WF = { PVName = "EC-GN-P01-GAF-MCPS:STAT-PREP-WF" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } GCPS_PREP_WF = { PVName = "EC-GN-P01-GAF-GCPS:STAT-PREP-WF" Type = float32 NumberOfElements = 8000 NumberOfDimensions = 1 } PREP_TIME_WF = { PVName = "EC-GN-P01-GAF:STAT-PREP-TIME-WF" Type = int32 NumberOfElements = 8000 NumberOfDimensions = 1 } BEAM_ON_TIME = { PVName = "EC-GN-P01-GAF:STAT-BEAMON-TIME" Type = uint32 } ELAPSED_TIME = { PVName = "EC-GN-P01-GAF:STAT-ELAPSED" Type = uint32 } SHOT_ID = { PVName = "EC-GN-P01-GAF:STAT-SHOT-ID" Type = uint32 } CSV_LOADED = { PVName = "EC-GN-P01-GAF:STAT-CSV-LOADED" Type = uint32 } CSV_ERR = { PVName = "EC-GN-P01-GAF:STAT-CSV-ERR" Type = uint32 } //Output PVs in Variables-jastec tab. MCPS_TRG_CURR_SET = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-TRG-CURR-SET-MO" Type = float32 } MCPS_ACT_SP = { PVName = "EC-GN-P01-GAF-MCPS:PSU2120-ACT-SP-MO" Type = uint32 } GCPS_TRG_CURR_SET = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-TRG-CURR-SET-MO" Type = float32 } GCPS_ACT_SP = { PVName = "EC-GN-P01-GAF-GCPS:PSU2130-ACT-SP-MO" Type = uint32 } //Output PVs in Variables-kikusui tab. CCPS_REF = { PVName = "EC-GN-P01-GAF-CCPS:PSU2320-EREF" Type = float32 } FHPS_AUTO_STAT = { PVName = "EC-GN-P01-GAF-FHPS:PSU2610-AUTO-STAT" Type = uint32 } //Add 20201117 APS_HVON = { PVName = "EC-GN-P01-PA1F:PSU3000-CON-HV" Type = uint32 } APS_SWON = { PVName = "EC-GN-P01-PA1F:PSU3000-CON-SW" Type = uint32 } BPS_HVON = { PVName = "EC-GN-P01-PB1F:PSU1000-CON-HV" Type = uint32 } BPS_SWON = { PVName = "EC-GN-P01-PB1F:PSU1000-CON-SW" Type = uint32 } MHVPS_HVON = { PVName = "EC-GN-P01-PMF:STAT-HVON-CALC.A" Type = uint32 } } } // for ESDN packet subscription/publication. +SDNSubCommands = { Class = SDN::SDNSubscriber Topic = ECPC2SCUJA Interface = enp27s0f0 CPUs = 0x200 //change from 100 Locked = 1 Timeout = 2 Signals = { Header = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 48 } ESDNHeaderVersionId = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNHeaderSize = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNStatus = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNDoNotUse = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNTime = { Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } Command = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 64 } } } +SDNReply = { Class = SDN::SDNPublisher Topic = SCUJA2ECPC Interface = enp27s0f0 CPUs = 0x200 //changed from 0x100 Locked = 1 Signals = { Header = { Type = uint8 NumberOfElements = 48 } ESDNHeaderVersionId = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNHeaderSize = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNStatus = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNDoNotUse = { Type = uint8 NumberOfDimensions = 1 NumberOfElements = 1 } ESDNTime = { Type = uint32 NumberOfDimensions = 1 NumberOfElements = 1 } ReplyStatus = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 1 } ReplyWaveformAck = { Type = uint16 NumberOfDimensions = 1 NumberOfElements = 1 } //Status (26Bytes?) is not assigned //GyrotronA measurements //56Bytes are used as Gyrotron1 Measurements (verified on 2020/10/22) GYA_MHVPS_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_MHVPS_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_BPS_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_BPS_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_APS_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_APS_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_ARC1_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_ARC1_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_ARC2_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_ARC2_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_MCPS_CURR_MON = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_GCPS_CURR_MON = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_FHPS_MEAS_ACI = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYA_CCPS_MEAS_DCI = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } //GyrotronB measurements GYB_MHVPS_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_MHVPS_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_BPS_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_BPS_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_APS_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_APS_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_ARC1_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_ARC1_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_ARC2_MESVOLT = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_ARC2_MESCURR = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_MCPS_CURR_MON = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_GCPS_CURR_MON = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_FHPS_MEAS_ACI = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } GYB_CCPS_MEAS_DCI = { Type = float32 NumberOfDimensions = 1 NumberOfElements = 1 } } } // Direct HW accesses. Follwing device/port assignment must be consistent with actual wiring. // NI6259.0 // APS_SWON BoardId=0, PortId=3.0 +NI6259 = { Class = NI6259::NI6259DIO DeviceName = "/dev/pxi6259" BoardId = 1 Signals = { NI6259Value = { Type = uint32 Mask = 0xFF PortId = 0 } } } //NI6528 digital output has logic low == 0 == close relay. ((See Driver Manual.) //When the program send ON signal, this program writes 0 on the data source. +NI6528P3 = { Class = NI6528 DeviceName = "/dev/pxi6528.1" Port = 3 NI6528P3Value = { NI6528P3Value = { Type = uint8 } } } //P3.0 APS_HVON //P3.1 APS_SWON //P3.2 APS_Shutdown //P3.3 BPS_HVON //P3.4 BPS_SWON //P3.5 BPS_Shutdown //P3.6 GY1_Beam_ON_status //P3.7 RV5 _cRIO +NI6528P4 = { Class = NI6528 DeviceName = "/dev/pxi6528.1" Port = 4 NI6528P4Value = { NI6528P4Value = { Type = uint8 } } } //P4.0 RV6 _cRIO //P4.1 RV7 _cRIO //P4.2 RV8 _cRIO //P4.3 MHVPS_HVON //P4.4 MHVPS_Shutdown //P4.5 MHVPS_MOD //P4.6 PCF_FLT //P4.7 HVArmed +NI6528P5 = { Class = NI6528 DeviceName = "/dev/pxi6528.1" Port = 5 NI6528P5Value = { NI6528P5Value = { Type = uint8 } } } //P5.0 HVInjection //P5.1 RFON //P5.2 FHPS_Rampup_complete //P5.3 SCM_RU_Complete //P5.4 SCM_RD_Complete //P5.5 CCPS_IN_OPERATION //P5.6 None //P5.7 None } +States = { Class = ReferenceContainer +Disabled = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM GoErrorGAM InDisabledGAM GoWaitStandbyGAM choiseGAM MCPSGAM GCPSGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM} CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM NI6528P3GAM NI6528P4GAM NI6528P5GAM NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM NI6528P3WriteGAM NI6528P4WriteGAM } CPUs = 0x400 } } } +WaitStandby = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM FHPSSetpointGAM FHPSRampupGAM InWaitStandbyGAM choiseGAM MCPSGAM GCPSGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM GoDisabledGAM GoWaitReadyGAM GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM NI6528P3GAM NI6528P4GAM NI6528P5GAM NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM NI6528P3WriteGAM NI6528P4WriteGAM } CPUs = 0x400 } } } +WaitReady = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM WFRecordGAM PreProgrammedGAM FHPSSetpointGAM FHPSRampupGAM InWaitReadyGAM choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM GoWaitPermitGAM GoWaitStandbyFromReadyGAM GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM NI6528P3GAM NI6528P4GAM NI6528P5GAM NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM NI6528P3WriteGAM NI6528P4WriteGAM } CPUs = 0x400 } } } +WaitPermit = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM WFRecordGAM PreProgrammedGAM FHPSSetpointGAM FHPSRampupGAM InWaitPermitGAM choiseGAM EPICSOutputGAM GoWaitReadyFromWaitPermitGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM GoWaitHVONGAM GoWaitHVON_PREP_GAM GoWaitHVON_SDN_GAM GoWaitHVON_SDN_PREP_GAM GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM NI6528P3GAM NI6528P4GAM NI6528P5GAM NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM NI6528P3WriteGAM NI6528P4WriteGAM } CPUs = 0x400 } } } //Real-Time state for HVPS sequence timing control. +WaitHVON = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM FHPSSetpointGAM FHPSRampupGAM InWaitHVONGAM choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM writeBeamONTimeGAM writeRFONTimeGAM FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM GAMRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x400 } // +Thread4 = { // Class = RealTimeThread // Functions = {Timer10HzGAM GAMExecTime } // CPUs = 0x800 // } } } +WaitHVON_SDN = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM FHPSRampupGAM InWaitHVON_SDNGAM choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM writeBeamONTimeGAM writeRFONTimeGAM FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x400 } } } +WaitHVON_PREP = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM PreProgrammedGAM FHPSRampupGAM InWaitHVON_PREPGAM choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM writeBeamONTimeGAM writeRFONTimeGAM FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM GAMRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x400 } } } +WaitHVON_SDN_PREP = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM PreProgrammedGAM FHPSRampupGAM InWaitHVON_SDN_PREPGAM choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM writeBeamONTimeGAM writeRFONTimeGAM FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM} CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x400 } } } +Error = { Class = RealTimeState +Threads = { Class = ReferenceContainer +Thread1 = { Class = RealTimeThread Functions = {Timer1kHzGAM InErrorGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM ExitedHVArmedInjectionRFONGAM ResetPSsGAM FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM} CPUs = 0x100 } +Thread2 = { Class = RealTimeThread Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM NI6528P3GAM NI6528P4GAM NI6528P5GAM NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM NI6528P3WriteGAM NI6528P4WriteGAM } CPUs = 0x400 } } } } +Scheduler = { Class = GAMScheduler TimingDataSource = Timings } }