Implementing gams and datas

This commit is contained in:
Martino Ferrari
2026-01-23 16:31:54 +01:00
parent 0fdac299a8
commit 56f50e3be1
3 changed files with 326 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
#package jada_gyro.JAGyroApp.Data
+EPICSCAInput = {
Class = EPICSCAInput
Signals = {
MIS_ITL = {
Type = uint32
PVName = "EC-GN-P01-GAFP:FMC4310-YTRP"
}
RESET_FLT = {
PVName = "EC-GN-P01-GPF:STAT-RST-FLT"
Type = uint32
}
}
}
//# PXI NI6528 Digital input datasource
//# TODO: configure it
+NI6528_DI = {
Class = GAMDataSource // TODO Change
Signals = {
GYA_APS_FLT = {
// DI.1
Type = uint32
}
GYA_BPS_FLT = {
Type = uint32
// DI.3
}
MHVPS_OV = {
Type = uint32
// DI.4
}
MHVPS_OC = {
Type = uint32
// DI.5
}
MHVPS_FLT = {
Type = uint32
// DI.6
}
PLC_ITL = {
Type = uint32
// DI.9
}
}
}

View File

@@ -29,4 +29,88 @@
}
}
}
//# From any state to Error state.
+GoErrorGAM = {
Class = JAMessageGAM
Operation = OR
InputSignals = {
GYA_APS_FLT = {
DataSource = NI6528_DI
ExpectedValue = 1
}
GYA_BPS_FLT = {
DataSource = NI6528_DI
ExpectedValue = 1
}
MHVPS_OV = {
DataSource = NI6528_DI
ExpectedValue = 1
}
MHVPS_OC = {
DataSource = NI6528_DI
ExpectedValue = 1
}
MHVPS_FLT = {
DataSource = NI6528_DI
ExpectedValue = 1
}
MIS_ITL = {
DataSource = EPICSCAInput
ExpectedValue = 1
}
PLC_ITL = {
DataSource = NI6528_DI
ExpectedValue = 1
}
}
+Event = {
Class = Message
Destination = StateMachine
Function = GoError
}
}
//# Reset Error GAM
+ResetErrorGAM = {
Class = JAMessageGAM
Operation = AND
InputSignals = {
RESET_FLT = {
DataSource = EPICSCAInput
ExpectedValue = 1
}
GYA_APS_FLT = {
DataSource = NI6528_DI
ExpectedValue = 0
}
GYA_BPS_FLT = {
DataSource = NI6528_DI
ExpectedValue = 0
}
MHVPS_OV = {
DataSource = NI6528_DI
ExpectedValue = 0
}
MHVPS_OC = {
DataSource = NI6528_DI
ExpectedValue = 0
}
MHVPS_FLT = {
DataSource = NI6528_DI
ExpectedValue = 0
}
MIS_ITL = {
DataSource = EPICSCAInput
ExpectedValue = 0
}
PLC_ITL = {
DataSource = NI6528_DI
ExpectedValue = 0
}
}
+Event = {
Class = Message
Destination = StateMachine
Function = GoError
}
}
}

View File

@@ -0,0 +1,196 @@
#package jada_gyro.JAGyroApp.States
+Disabled = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1 = {
Class = RealTimeThread
Functions = { Timer1kHzGAM StateGAM CCPSWaveformGAM GoErrorGAM GoWaitStandbyGAM choiseGAM MCPSGAM GCPSGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM }
CPUs = 0x100
}
+Thread2 = {
Class = RealTimeThread
Functions = { TimeSDNGAM SDNCommandGAM SDNReplyGAM }
CPUs = 0x200
}
+Thread3 = {
Class = RealTimeThread
Functions = { FastTimerGAM 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
}
}
}
+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 StateGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM ExitedHVArmedInjectionRFONGAM ResetPSsGAM ResetErrorGAM 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
}
}
}