From 56f50e3be1ee9e15f4383fed9f52bea7087c2c2c Mon Sep 17 00:00:00 2001 From: Martino Ferrari Date: Fri, 23 Jan 2026 16:31:54 +0100 Subject: [PATCH] Implementing gams and datas --- .../Configurations/src/data.marte | 46 ++++ .../Configurations/src/state_gam.marte | 84 ++++++++ .../Configurations/src/states.marte | 196 ++++++++++++++++++ 3 files changed, 326 insertions(+) create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/data.marte create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/states.marte diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/data.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/data.marte new file mode 100644 index 0000000..9f7c4a9 --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/data.marte @@ -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 + } + } +} diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_gam.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_gam.marte index d74a4c8..d393012 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_gam.marte +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_gam.marte @@ -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 + } + } } diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/states.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/states.marte new file mode 100644 index 0000000..c918a36 --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/states.marte @@ -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 + } + } +} +