From d3b2e4fb2a0f399affb854281feef6b149eca6f4 Mon Sep 17 00:00:00 2001 From: ferrog Date: Wed, 10 Dec 2025 20:34:59 +0000 Subject: [PATCH] PBS-80 - Aligned to project provided by JADA --- .../JAModeControlGAM/JAModeControlGAM.cpp | 2 +- .../JASDNRTStateMachineGAM.cpp | 147 +- .../JASDNRTStateMachineGAM.h | 46 +- .../Configurations/JAGyro_Test.cfg | 5214 ----------------- .../Configurations/JAGyrotronA_FY19_P1.cfg | 293 +- .../Configurations/JAGyrotronB_FY19_P1.cfg | 238 +- .../DataSources/JAEPICSCA/depends.x86-linux | 293 + .../JAEPICSCA/dependsRaw.x86-linux | 293 + .../JAESDNTimeCompareGAM.cpp | 132 - .../JAESDNTimeCompareGAM.h | 101 - .../GAMs/JAESDNTimeCompareGAM/Makefile.gcc | 27 - .../GAMs/JAESDNTimeCompareGAM/Makefile.inc | 55 - .../JAModeControlGAM/JAModeControlGAM.cpp | 2 +- .../JARTStateMachineGAM-v1.cpp | 411 ++ .../JARTStateMachineGAM-v1.h | 262 + .../JARTStateMachineGAM_stable.cpp | 402 ++ .../JARTStateMachineGAM_stable.h | 260 + .../JASDNRTStateMachineGAM.cpp | 147 +- .../JASDNRTStateMachineGAM.h | 46 +- .../GAMs/Makefile.inc | 3 +- .../Startup/Main.sh | 1 - .../Startup/runECPCSub.sh | 0 .../Startup/runEPICSTEST.sh | 0 .../Startup/runHWTEST.sh | 0 .../Startup/runMain.sh | 0 .../Startup/runMainB.sh | 0 .../Startup/runNI6528TEST.sh | 0 .../Startup/runTest.sh | 4 - .../Test_P01/test.py | 5 +- .../Test_P01/test_async.py | 42 +- .../Test_P01/test_async.pyc | Bin 20426 -> 18679 bytes .../Test_P01/test_ready.pyc | Bin 2241 -> 2241 bytes .../Test_P01/test_ready_hw.pyc | Bin 1379 -> 1379 bytes .../Test_P01/test_setup.pyc | Bin 6040 -> 6040 bytes .../Test_P01/test_setup_hw.pyc | Bin 2912 -> 2912 bytes .../Test_P01/test_standby.pyc | Bin 4531 -> 4531 bytes .../Test_P01/test_standby_hw.pyc | Bin 3293 -> 3293 bytes .../Test_P01/test_sync.pyc | Bin 5308 -> 5308 bytes .../src/main/resources/qst_diff.log | 1449 +++++ ec-gn-ja-pcf-sdd-in | 2 +- 40 files changed, 3537 insertions(+), 6340 deletions(-) delete mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyro_Test.cfg create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/depends.x86-linux create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/dependsRaw.x86-linux delete mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.cpp delete mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.h delete mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.gcc delete mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.inc create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.cpp create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.h create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.cpp create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.h mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runECPCSub.sh mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runEPICSTEST.sh mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runHWTEST.sh mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runMain.sh mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runMainB.sh mode change 100755 => 100644 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runNI6528TEST.sh delete mode 100755 EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runTest.sh create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/qst_diff.log diff --git a/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JAModeControlGAM/JAModeControlGAM.cpp b/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JAModeControlGAM/JAModeControlGAM.cpp index 0d5d5a4..c55e6d0 100644 --- a/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JAModeControlGAM/JAModeControlGAM.cpp +++ b/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JAModeControlGAM/JAModeControlGAM.cpp @@ -120,7 +120,7 @@ bool JAModeControlGAM::Execute() { rfonTime = *inputSignals[9]; resetRemainingTime = false; pulseLengthLimit = CalcPulseLengthLimit(inputSignals); - //REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit); + REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit); } // Turn on the flag during RFON if the pulse legth over the limit. if ((*inputSignals[9] - rfonTime <= pulseLengthLimit) && (previousState == 1u)) { diff --git a/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp b/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp index 7e0fca5..d164e89 100644 --- a/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp +++ b/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp @@ -36,10 +36,7 @@ /*---------------------------------------------------------------------------*/ /* Static definitions */ /*---------------------------------------------------------------------------*/ -static MARTe::uint64 getCurrentTimeUs() { - using namespace MARTe; - return static_cast(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f); -} + /*---------------------------------------------------------------------------*/ /* Method definitions */ /*---------------------------------------------------------------------------*/ @@ -67,9 +64,7 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() { triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *); stopRequest = NULL_PTR(MARTe::uint32 *); modePulseLengthLimit = NULL_PTR(MARTe::uint32 *); - Command = NULL_PTR(MARTe::uint16 *); - Command2 = NULL_PTR(MARTe::uint16 *); - sdnStatus = NULL_PTR(MARTe::uint8 *); + sdnCommand = NULL_PTR(MARTe::uint16 *); // write out target. outputSignal = NULL_PTR(MARTe::uint32 *); @@ -86,17 +81,6 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() { aps_swon_is_on = false; bps_hvon_is_on = false; bps_swon_is_on = false; - - sdnCommand = 0; - groupFix = 0; - - apsSwonHighResolutionTime = 0; - - aps_hvon_state=0; - aps_swon_state=0; - mhvps_hvon_state=0; - bps_hvon_state=0; - bps_swon_state=0; } JASDNRTStateMachineGAM::~JASDNRTStateMachineGAM() { @@ -151,21 +135,21 @@ bool JASDNRTStateMachineGAM::PrepareNextState(const MARTe::char8 * const current bool JASDNRTStateMachineGAM::Setup() { using namespace MARTe; - bool ok = (numberOfInputSignals == 13u); + bool ok = (numberOfInputSignals == 11u); if (ok) { - ok = (numberOfOutputSignals == 15u); + ok = (numberOfOutputSignals == 8u); if (!ok) { - REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "15 output signals shall be defined"); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined"); } } else { - REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "13 input signals shall be defined"); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined"); } if (ok) { uint32 c; for (c = 0u; c < numberOfInputSignals; c++) { TypeDescriptor inputType = GetSignalType(InputSignals, c); - ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit || inputType == UnsignedInteger8Bit); + ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit); if (!ok) { StreamString signalName; (void) GetSignalName(InputSignals, c, signalName); @@ -178,7 +162,7 @@ bool JASDNRTStateMachineGAM::Setup() { uint32 c; for (c = 0u; c < numberOfOutputSignals; c++) { TypeDescriptor outputType = GetSignalType(OutputSignals, c); - ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit); + ok = (outputType == UnsignedInteger32Bit); if (!ok) { StreamString signalName; (void) GetSignalName(InputSignals, c, signalName); @@ -197,9 +181,7 @@ bool JASDNRTStateMachineGAM::Setup() { triggerDelay_shotlen = reinterpret_cast(GetInputSignalMemory(7)); stopRequest = reinterpret_cast(GetInputSignalMemory(8)); modePulseLengthLimit = reinterpret_cast(GetInputSignalMemory(9)); - Command = reinterpret_cast(GetInputSignalMemory(10)); - Command2 = reinterpret_cast(GetInputSignalMemory(11)); - sdnStatus = reinterpret_cast(GetInputSignalMemory(12)); + sdnCommand = reinterpret_cast(GetInputSignalMemory(10)); outputSignal = reinterpret_cast(GetOutputSignalMemory(0)); outputBeamON = reinterpret_cast(GetOutputSignalMemory(1)); @@ -209,15 +191,6 @@ bool JASDNRTStateMachineGAM::Setup() { outputBeamONTime = reinterpret_cast(GetOutputSignalMemory(5)); outputRFONTime = reinterpret_cast(GetOutputSignalMemory(6)); shotCounter = reinterpret_cast(GetOutputSignalMemory(7)); - - outputAPSHVON = reinterpret_cast(GetOutputSignalMemory(8)); - outputAPSSWON = reinterpret_cast(GetOutputSignalMemory(9)); - outputBPSHVON = reinterpret_cast(GetOutputSignalMemory(10)); - outputBPSSWON = reinterpret_cast(GetOutputSignalMemory(11)); - outputMHVPSON = reinterpret_cast(GetOutputSignalMemory(12)); - - outputSignalNI6528P3 = reinterpret_cast(GetOutputSignalMemory(13)); - outputSignalNI6528P4 = reinterpret_cast(GetOutputSignalMemory(14)); *shotCounter = 0; } return ok; @@ -225,19 +198,11 @@ bool JASDNRTStateMachineGAM::Setup() { bool JASDNRTStateMachineGAM::Execute() { using namespace MARTe; - if (!groupFix && (*triggerSignal != false)) { - sdnCommand = (1 - *sdnStatus)*(*Command) + (*sdnStatus)*(*Command2); - groupFix = 1; - sdnStatusFix = *sdnStatus; - } - else { - sdnCommand = (1 - sdnStatusFix)*(*Command) + sdnStatusFix*(*Command2); - } if (currentState == WaitTrigger) { //State Transition condition if ((*triggerSignal == conditionTrigger)) { - //REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode."); + REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode."); plcOnTime = *currentTime; //Save pulse start time. *outputBeamON = 0; //State transition. @@ -248,22 +213,20 @@ bool JASDNRTStateMachineGAM::Execute() { //Actions in this state. if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { - *outputSignal = 0; + *outputSignal -= aps_swon; currentState = HVTerminate; } if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){ //Do action *outputSignal += bps_hvon; - bps_hvon_is_on = true; bps_hvon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); - *outputBPSHVON=1; + bps_hvon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); } if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) { //Do action *outputSignal += aps_hvon; - aps_hvon_is_on = true; aps_hvon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal."); - *outputAPSHVON=1; + aps_hvon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal."); } *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. @@ -279,7 +242,7 @@ bool JASDNRTStateMachineGAM::Execute() { *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. // State change conditions - if (sdnCommand == 1){ + if (*sdnCommand == 1){ sdnTriggerTime = *currentTime; currentState = SwitchingHVPS_SWON; } @@ -299,80 +262,68 @@ bool JASDNRTStateMachineGAM::Execute() { if (*currentTime >= (sdnTriggerTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){ //Do action *outputSignal += bps_swon; - bps_swon_is_on = true; bps_swon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); - *outputBPSSWON=1; + bps_swon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); } if (*currentTime >= (sdnTriggerTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) { //Do action *outputSignal += mhvps_hvon; - mhvps_hvon_is_on = true; mhvps_hvon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); - *outputMHVPSON=1; + mhvps_hvon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); } if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon)){ //Do action *outputSignal += aps_swon; - aps_swon_is_on = true; aps_swon_state=1; - apsSwonHighResolutionTime = getCurrentTimeUs(); + aps_swon_is_on = true; apsSwonTime = *currentTime; - //REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); - *outputAPSSWON=1; + REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); } *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. if (bps_swon_is_on || mhvps_hvon_is_on){ - *outputHVInjection = 1; + *outputHVInjection = 0; } //State transition condition if (aps_swon_is_on){ currentState = RFON; *outputRFON = 0; - *outputBeamON = 1; *shotCounter += 1; - //REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); + REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); } } else if (currentState == RFON) { //SDN command processing. - if (sdnCommand == 4 && aps_swon_is_on) { + if (*sdnCommand == 4 && aps_swon_is_on) { *outputSignal -= aps_swon; - aps_swon_is_on = false; aps_swon_state=0; - //REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4"); - *outputAPSSWON=0; + aps_swon_is_on = false; + REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4"); } - if (sdnCommand == 3 && !aps_swon_is_on) { + if (*sdnCommand == 3 && !aps_swon_is_on) { *outputSignal += aps_swon; - aps_swon_is_on = true; aps_swon_state=0; - //REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3"); - *outputAPSSWON=1; + aps_swon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3"); } //Action in this state. - if ((sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) { - //REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen); - if (sdnCommand == 2) { - //REPORT_ERROR(ErrorManagement::Information, "sdn command was 2"); + if ((*sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) { + REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen); + if (*sdnCommand == 2) { + REPORT_ERROR(ErrorManagement::Information, "sdn command was 2"); } else if (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen)){ - //REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint."); + REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint."); } //Do action *outputSignal -= aps_swon; //Turn off only aps_swon mhvps_hvon_is_on = false; aps_hvon_is_on = false; - aps_swon_is_on = false; aps_swon_state=0; + aps_swon_is_on = false; bps_hvon_is_on = false; bps_swon_is_on = false; - *outputAPSHVON=0; - *outputAPSSWON=0; - *outputBPSHVON=0; - *outputBPSSWON=0; - *outputMHVPSON=0; - //REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); + REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); } - *outputRFON = 1; + *outputRFON = 0; *outputBeamONTime = *currentTime - plcOnTime; *outputRFONTime = *currentTime - apsSwonTime; @@ -381,37 +332,29 @@ bool JASDNRTStateMachineGAM::Execute() { if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) { currentState = HVTerminate; apsSwoffTime = *currentTime; - //REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate"); + REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate"); } } else if (currentState == HVTerminate) { //Action in this state. - *outputBeamON = 0; - *outputHVArmed = 0; - *outputHVInjection = 0; - *outputRFON = 0; + *outputBeamON = 1; + *outputHVArmed = 1; + *outputHVInjection = 1; + *outputRFON = 1; // State transition condition. if (*currentTime - apsSwoffTime >= turn_off_delay){ *outputSignal = 0; - mhvps_hvon_state=0; - aps_hvon_state=0; - bps_hvon_state=0; - bps_swon_state=0; } if (*triggerSignal == false){ //Check PLC_ON is reset currentState = WaitTrigger; *outputSignal = 0; - groupFix = 0; - //REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger"); + REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger"); } } - p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); - *outputSignalNI6528P3 = ~p3Value; - p4Value = 8*mhvps_hvon_state; - *outputSignalNI6528P4 = ~p4Value; + return true; } diff --git a/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h b/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h index 69f0eee..91b4199 100644 --- a/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h +++ b/EC-GN-JA-PCF-IN/src/main/c++/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h @@ -92,18 +92,10 @@ * DataSource = DDB1 * Type = uint32 * } - * Command = {//from packet x + * Command = { * DataSource = RealTimeThreadAsyncBridge * Type = uint16 * } - * Command2 = {//from packet y - * DataSource = RealTimeThreadAsyncBridge - * Type = uint16 - * } - * ESDNStatus = {// 0 or 1. If 0, packet x is used, elif 1, packet y is used. - * DataSource = RealTimeThreadAsyncBridge - * Type = uint8 - * } * } * OutputSignals = { * Value = { @@ -207,12 +199,8 @@ private: MARTe::uint32 *stopRequest; // Input signal for pulse length limit by mode. MARTe::uint32 *modePulseLengthLimit; - // Input signal for SDN commands from packet x. - MARTe::uint16 *Command; - // Input signal for SDN commands from packet y. - MARTe::uint16 *Command2; - // Input signal for SDN status. - MARTe::uint8 *sdnStatus; + // Input signal for SDN commands. + MARTe::uint16 *sdnCommand; ///////////////////////////////////////////////////////////// // Output signal to which the output value will be written. @@ -229,17 +217,6 @@ private: MARTe::uint32 *outputRFONTime; // shot counter (coutup every RFON time.) MARTe::uint32 *shotCounter; - - // Added for HVPS state (20210602) - MARTe::uint32 *outputAPSHVON; - MARTe::uint32 *outputAPSSWON; - MARTe::uint32 *outputBPSHVON; - MARTe::uint32 *outputBPSSWON; - MARTe::uint32 *outputMHVPSON; - - // Output signals for NI devices - MARTe::uint8 *outputSignalNI6528P3; - MARTe::uint8 *outputSignalNI6528P4; ////////////////////////////// //Internal Parameters @@ -249,7 +226,6 @@ private: //APS_SWON time holder MARTe::uint32 apsSwonTime; MARTe::uint32 apsSwoffTime; - MARTe::uint64 apsSwonHighResolutionTime; //PS turn off delay MARTe::uint32 turn_off_delay; @@ -263,22 +239,6 @@ private: bool bps_hvon_is_on; bool bps_swon_is_on; - //command x or y - MARTe::uint16 sdnCommand; - //packet group must not be changed during real time operation - MARTe::uint16 groupFix; //0: packet group is not fixed yet, 1: fixed. - //when packet group is fixed, sdnStatus is copied to this variable. - MARTe::uint8 sdnStatusFix; - - // terminal values - MARTe::uint8 p3Value; - MARTe::uint8 p4Value; - MARTe::uint8 aps_hvon_state; - MARTe::uint8 aps_swon_state; - MARTe::uint8 mhvps_hvon_state; - MARTe::uint8 bps_hvon_state; - MARTe::uint8 bps_swon_state; - }; diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyro_Test.cfg b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyro_Test.cfg deleted file mode 100644 index 814a56c..0000000 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyro_Test.cfg +++ /dev/null @@ -1,5214 +0,0 @@ -// 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 - } - } - +GoErrorFromWaitHVON_SDNGAM = { - Class = JAMessageGAM - Operation = OR - //ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1 0} - 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 - } - //SDN_Connection = { - // DataSource = DDB1 - // 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}} - } - ESDNStatus = { - DataSource = SDNSubCommands - Type = uint8 - NumberOfDimensions = 1 - NumberOfElements = 1 - Ranges = {{0 0}} - } - ESDNTime = { - DataSource = SDNSubCommands - Type = uint32 - NumberOfDimensions = 1 - NumberOfElements = 1 - } - } - OutputSignals = { - Command = { - DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - ESDNStatus = { - DataSource = RealTimeThreadAsyncBridge - Type = uint8 - } - ESDNTime = { - DataSource = DDB1 - Type = uint32 - } - } - } - +SDNCommandGAM2 = { - Class = IOGAM - InputSignals = { - Command = { - DataSource = SDNSubCommands2 - Type = uint16 - NumberOfDimensions = 1 - NumberOfElements = 64 - Ranges = {{0 0}} - } - } - OutputSignals = { - Command2 = { - DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - } - } - +debugGAM = {//for validation func. debug - Class = IOGAM - InputSignals = { - SDN_Connection = { - DataSource = DDB1 - Type = uint32 - } - ESDNTime = { - DataSource = DDB1 - Type = uint32 - } - } - OutputSignals = { - SDN_Connection_DISP = { - DataSource = Display - Type = uint32 - } - ESDNTime_DISP = { - DataSource = Display - Type = uint32 - } - } - } - +debugGAM_Group = {//for group func. debug - Class = IOGAM - InputSignals = { - ESDNStatus = { - DataSource = SDNSubCommands - Type = uint8 - } - Command = { - DataSource = SDNSubCommands - Type = uint16 - Ranges = {{0 0}} - } - } - OutputSignals = { - ESDNStatus1_DISP = { - DataSource = Display - Type = uint8 - } - Command1_DISP = { - DataSource = Display - Type = uint16 - } - } - } - +debugGAM_Group2 = {//for group func. debug - Class = IOGAM - InputSignals = { - ESDNStatus = { - DataSource = SDNSubCommands2 - Type = uint8 - } - Command = { - DataSource = SDNSubCommands2 - Type = uint16 - Ranges = {{0 0}} - } - } - OutputSignals = { - ESDNStatus2_DISP = { - DataSource = Display - Type = uint8 - } - Command2_DISP = { - DataSource = Display - Type = uint16 - } - } - } - +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 - } - } - } - +SDNTimeCompareGAM = { // for "Validation" functionality - Class = JAESDNTimeCompareGAM - InputSignals = { - ESDNTime = { - DataSource = DDB1 - Type = uint32 - } - } - OutputSignals = { - SDN_Connection = { - DataSource = DDB1 - Type = uint32 - } - } - } - - // 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 - Frequency = 900 //TimeCompareGAM for validation function properly work at 900Hz - } - } - 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 = 10000 - //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 - } - Command2 = { - DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - ESDNStatus = { - DataSource = RealTimeThreadAsyncBridge - Type = uint8 - } - } - 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 - } - //Added 20210602 - 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 - } - NI6528P3Value = { - DataSource = NI6528P3 - //DataSource = DDB1 - Type = uint8 - } - NI6528P4Value = { - DataSource = NI6528P4 - //DataSource = DDB1 - Type = uint8 - } - } - } - - //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 - NumberOfBuffers = 64 - Class = GAMDataSource - AllowNoProducers = 1 - } - // 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-P01-HWCF:6259-0-STATUS" - Type = uint32 - } - PXI6259_1 = { - PVName = "EC-GN-P01-HWCF:6259-1-STATUS" - Type = uint32 - } - PXI6528_0 = { - PVName = "EC-GN-P01-HWCF:6528-0-STATUS" - Type = uint32 - } - PXI6528_1 = { - PVName = "EC-GN-P01-HWCF:6528-1-STATUS" - Type = uint32 - } - PXI6368_0 = { - PVName = "EC-GN-P01-HWCF:6368-0-STATUS" - Type = uint32 - } - PXI6368_1 = { - PVName = "EC-GN-P01-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 = enp17s0f0 - 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 - } - } - } - +SDNSubCommands2 = { - Class = SDN::SDNSubscriber - Topic = ECPC2SCUJA2 - Interface = enp17s0f0 - 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 = enp17s0f0 - 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - 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 GoErrorFromWaitHVON_SDNGAM } - CPUs = 0x100 - } - +Thread2 = { - Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - CPUs = 0x200 - } - +Thread3 = { - Class = RealTimeThread - Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM - NI6528P3GAM NI6528P4GAM - GAMSDNRealTimeStateMachine 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - CPUs = 0x200 - } - +Thread3 = { - Class = RealTimeThread - Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM - NI6528P3GAM NI6528P4GAM - GAMSDNRealTimeStateMachine 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 SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } - CPUs = 0x200 - } - +Thread3 = { - Class = RealTimeThread - Functions = {Timer100kHzGAM - NI6528P3GAM NI6528P4GAM NI6528P5GAM - NI6528P3PV2PortGAM NI6528P4PV2PortGAM NI6528P5PV2PortGAM - NI6528P3WriteGAM NI6528P4WriteGAM } - CPUs = 0x400 - } - } - } - } - +Scheduler = { - Class = GAMScheduler - TimingDataSource = Timings - } -} diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronA_FY19_P1.cfg b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronA_FY19_P1.cfg index 5615a6a..a4cf645 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronA_FY19_P1.cfg +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronA_FY19_P1.cfg @@ -2325,63 +2325,6 @@ Function = GoError } } - +GoErrorFromWaitHVON_SDNGAM = { - Class = JAMessageGAM - Operation = OR - //ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1 0} - 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 - } - //SDN_Connection = { - // DataSource = DDB1 - // Type = uint32 - //} - } - +Event = { - Class = Message - Destination = StateMachine - Function = GoError - } - } // Reset HVPS outputs. ToDo: Fix to access NI d.s. +ResetPSsGAM = { Class = ConstantGAM @@ -2460,13 +2403,8 @@ NumberOfDimensions = 1 NumberOfElements = 64 Ranges = {{0 0}} - } - ESDNStatus = { - DataSource = SDNSubCommands - Type = uint8 - NumberOfDimensions = 1 - NumberOfElements = 1 - Ranges = {{0 0}} + // TODO uncomment this for release/testing + //Frequency = 1 } ESDNTime = { DataSource = SDNSubCommands @@ -2480,39 +2418,17 @@ DataSource = RealTimeThreadAsyncBridge Type = uint16 } - ESDNStatus = { - DataSource = RealTimeThreadAsyncBridge - Type = uint8 - } ESDNTime = { DataSource = DDB1 Type = uint32 } } } - +SDNCommandGAM2 = { + +debugSDNGAM = {//for debug Class = IOGAM InputSignals = { Command = { - DataSource = SDNSubCommands2 - Type = uint16 - NumberOfDimensions = 1 - NumberOfElements = 64 - Ranges = {{0 0}} - } - } - OutputSignals = { - Command2 = { DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - } - } - +debugGAM = {//for validation func. debug - Class = IOGAM - InputSignals = { - SDN_Connection = { - DataSource = DDB1 Type = uint32 } ESDNTime = { @@ -2521,9 +2437,9 @@ } } OutputSignals = { - SDN_Connection_DISP = { + Command_DISP = { DataSource = Display - Type = uint32 + Type = float32 } ESDNTime_DISP = { DataSource = Display @@ -2531,54 +2447,6 @@ } } } - +debugGAM_Group = {//for group func. debug - Class = IOGAM - InputSignals = { - ESDNStatus = { - DataSource = SDNSubCommands - Type = uint8 - } - Command = { - DataSource = SDNSubCommands - Type = uint16 - Ranges = {{0 0}} - } - } - OutputSignals = { - ESDNStatus1_DISP = { - DataSource = Display - Type = uint8 - } - Command1_DISP = { - DataSource = Display - Type = uint16 - } - } - } - +debugGAM_Group2 = {//for group func. debug - Class = IOGAM - InputSignals = { - ESDNStatus = { - DataSource = SDNSubCommands2 - Type = uint8 - } - Command = { - DataSource = SDNSubCommands2 - Type = uint16 - Ranges = {{0 0}} - } - } - OutputSignals = { - ESDNStatus2_DISP = { - DataSource = Display - Type = uint8 - } - Command2_DISP = { - DataSource = Display - Type = uint16 - } - } - } +SDNReplyGAM = { Class = IOGAM InputSignals = { @@ -2791,21 +2659,7 @@ } } } - +SDNTimeCompareGAM = { // for "Validation" functionality - Class = JAESDNTimeCompareGAM - InputSignals = { - ESDNTime = { - DataSource = DDB1 - Type = uint32 - } - } - OutputSignals = { - SDN_Connection = { - DataSource = DDB1 - Type = uint32 - } - } - } + //Write SDN waveform data into PS setpoint PV. // Timer for SDN thread. +TimeSDNGAM = { @@ -2818,8 +2672,7 @@ Counter = { DataSource = TimerSDN Type = uint32 - //Frequency = 1000 //operation:1k(=1ms cyc), debug:10 - Frequency = 900 //TimeCompareGAM for validation function properly work at 900Hz + Frequency = 1000 //operation:1k(=1ms cyc), debug:10 } } OutputSignals = { @@ -2845,7 +2698,7 @@ Counter = { DataSource = Timer Type = uint32 - Frequency = 10000 + Frequency = 200000 //operation:10k(=100us cyc) //Frequency = 100000 //operation:100k(=10us cyc) } RTThreadPerf = { @@ -3338,14 +3191,7 @@ DataSource = RealTimeThreadAsyncBridge Type = uint16 } - Command2 = { - DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - ESDNStatus = { - DataSource = RealTimeThreadAsyncBridge - Type = uint8 - } + } OutputSignals = { RTSMValue = { @@ -3381,37 +3227,6 @@ DataSource = RealTimeThreadAsyncBridge Type = uint32 } - //Added 20210602 - 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 - } - NI6528P3Value = { - DataSource = NI6528P3 - //DataSource = DDB1 - Type = uint8 - } - NI6528P4Value = { - DataSource = NI6528P4 - //DataSource = DDB1 - Type = uint8 - } } } @@ -3757,11 +3572,8 @@ } // for data exechange between threads. +RealTimeThreadAsyncBridge = { - //Class = RealTimeThreadAsyncBridge - //NumberOfBuffers = 20 - NumberOfBuffers = 64 - Class = GAMDataSource - AllowNoProducers = 1 + Class = RealTimeThreadAsyncBridge + NumberOfBuffers = 20 } // for access ECPIS PV. +EPICSCAInput = { @@ -4393,27 +4205,27 @@ } //PXI Board status PVs PXI6259_0 = { - PVName = "EC-GN-P01-HWCF:6259-0-STATUS" + PVName = "EC-GN-HWCF:6259-0-STATUS" Type = uint32 } PXI6259_1 = { - PVName = "EC-GN-P01-HWCF:6259-1-STATUS" + PVName = "EC-GN-HWCF:6259-1-STATUS" Type = uint32 } PXI6528_0 = { - PVName = "EC-GN-P01-HWCF:6528-0-STATUS" + PVName = "EC-GN-HWCF:6528-0-STATUS" Type = uint32 } PXI6528_1 = { - PVName = "EC-GN-P01-HWCF:6528-1-STATUS" + PVName = "EC-GN-HWCF:6528-1-STATUS" Type = uint32 } PXI6368_0 = { - PVName = "EC-GN-P01-HWCF:6368-0-STATUS" + PVName = "EC-GN-HWCF:6368-0-STATUS" Type = uint32 } PXI6368_1 = { - PVName = "EC-GN-P01-HWCF:6368-1-STATUS" + PVName = "EC-GN-HWCF:6368-1-STATUS" Type = uint32 } } @@ -4645,51 +4457,6 @@ } } } - +SDNSubCommands2 = { - Class = SDN::SDNSubscriber - Topic = ECPC2SCUJA2 - 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 @@ -4973,7 +4740,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { @@ -4999,7 +4766,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { @@ -5025,7 +4792,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { @@ -5051,7 +4818,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { @@ -5081,7 +4848,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { @@ -5108,19 +4875,19 @@ choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM writeBeamONTimeGAM writeRFONTimeGAM - FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorFromWaitHVON_SDNGAM } + FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM } CPUs = 0x100 } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM - GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM} + GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x400 } } @@ -5140,7 +4907,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { @@ -5167,14 +4934,14 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM - GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM} + GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x400 } } @@ -5188,12 +4955,12 @@ Class = RealTimeThread Functions = {Timer1kHzGAM InErrorGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM ExitedHVArmedInjectionRFONGAM ResetPSsGAM - FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM } + FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM} CPUs = 0x100 } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x200 } +Thread3 = { diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronB_FY19_P1.cfg b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronB_FY19_P1.cfg index 332d693..6fb3d04 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronB_FY19_P1.cfg +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/JAGyrotronB_FY19_P1.cfg @@ -2301,63 +2301,6 @@ Function = GoError } } - +GoErrorFromWaitHVON_SDNGAM = { - Class = JAMessageGAM - Operation = OR - //ExpectedIntValues = {1 1 1 1 1 1 1 1 1 1 0} - 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 - } - //SDN_Connection = { - // DataSource = DDB1 - // Type = uint32 - //} - } - +Event = { - Class = Message - Destination = StateMachine - Function = GoError - } - } // Reset HVPS outputs. ToDo: Fix to access NI d.s. +ResetPSsGAM = { Class = ConstantGAM @@ -2456,24 +2399,7 @@ } } } - +SDNCommandGAM2 = { - Class = IOGAM - InputSignals = { - Command = { - DataSource = SDNSubCommands2 - Type = uint16 - NumberOfDimensions = 1 - NumberOfElements = 64 - Ranges = {{0 0}} - } - } - OutputSignals = { - Command2 = { - DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - } - } + +SDNReplyGAM = { Class = IOGAM InputSignals = { @@ -2686,21 +2612,7 @@ } } } - +SDNTimeCompareGAM = { // for "Validation" functionality - Class = JAESDNTimeCompareGAM - InputSignals = { - ESDNTime = { - DataSource = DDB1 - Type = uint32 - } - } - OutputSignals = { - SDN_Connection = { - DataSource = DDB1 - Type = uint32 - } - } - } + //Write SDN waveform data into PS setpoint PV. // Timer for SDN thread. +TimeSDNGAM = { @@ -2713,8 +2625,12 @@ Counter = { DataSource = TimerSDN Type = uint32 - //Frequency = 1000 //operation:1k(=1ms cyc), debug:10 - Frequency = 900 //TimeCompareGAM for validation function properly work at 900Hz for QST ECPC + Frequency = 1000 //operation:1k(=1ms cyc), debug:10 + } + RTThreadPerf = { + DataSource = Timings + Alias = "WaitHVON.Thread3_CycleTime" + Type = uint32 } } OutputSignals = { @@ -2726,6 +2642,10 @@ DataSource = DDB1 Type = uint32 } + RTThreadPerfSDN = { + DataSource = DDB1 + Type = uint32 + } } } @@ -2740,8 +2660,7 @@ Counter = { DataSource = Timer Type = uint32 - Frequency = 10000 - //Frequency = 100000 //operation:100k(=10us cyc), debug:10 + Frequency = 200000 //operation:100k(=10us cyc), debug:10 } RTThreadPerf = { DataSource = Timings @@ -3309,14 +3228,6 @@ DataSource = RealTimeThreadAsyncBridge Type = uint16 } - Command2 = { - DataSource = RealTimeThreadAsyncBridge - Type = uint16 - } - ESDNStatus = { - DataSource = RealTimeThreadAsyncBridge - Type = uint8 - } } OutputSignals = { @@ -3353,37 +3264,6 @@ DataSource = RealTimeThreadAsyncBridge Type = uint32 } - //Added 20210603 - 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 - } - NI6528P3Value = { - DataSource = NI6528P3 - //DataSource = DDB1 - Type = uint8 - } - NI6528P4GYAValue = { - DataSource = NI6528P4GYA - //DataSource = DDB1 - Type = uint8 - } } } @@ -3616,11 +3496,8 @@ } // for data exechange between threads. +RealTimeThreadAsyncBridge = { - //Class = RealTimeThreadAsyncBridge - //NumberOfBuffers = 20 - NumberOfBuffers = 64 - Class = GAMDataSource - AllowNoProducers = 1 + Class = RealTimeThreadAsyncBridge + NumberOfBuffers = 20 } // for access ECPIS PV. +EPICSCAInput = { @@ -4278,27 +4155,27 @@ } //PXI Board status PVs PXI6259_0 = { - PVName = "EC-GN-P01-HWCF:6259-0-STATUS" + PVName = "EC-GN-HWCF:6259-0-STATUS" Type = uint32 } PXI6259_1 = { - PVName = "EC-GN-P01-HWCF:6259-1-STATUS" + PVName = "EC-GN-HWCF:6259-1-STATUS" Type = uint32 } PXI6528_0 = { - PVName = "EC-GN-P01-HWCF:6528-0-STATUS" + PVName = "EC-GN-HWCF:6528-0-STATUS" Type = uint32 } PXI6528_1 = { - PVName = "EC-GN-P01-HWCF:6528-1-STATUS" + PVName = "EC-GN-HWCF:6528-1-STATUS" Type = uint32 } PXI6368_0 = { - PVName = "EC-GN-P01-HWCF:6368-0-STATUS" + PVName = "EC-GN-HWCF:6368-0-STATUS" Type = uint32 } PXI6368_1 = { - PVName = "EC-GN-P01-HWCF:6368-1-STATUS" + PVName = "EC-GN-HWCF:6368-1-STATUS" Type = uint32 } } @@ -4489,51 +4366,6 @@ Class = SDN::SDNSubscriber Topic = ECPC2SCUJA Interface = enp27s0f0 - CPUs = 0x2000 - 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 - } - } - } - +SDNSubCommands2 = { - Class = SDN::SDNSubscriber - Topic = ECPC2SCUJA2 - Interface = enp27s0f0 CPUs = 0x2000 Locked = 1 Timeout = 2 @@ -4878,7 +4710,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { @@ -4899,12 +4731,12 @@ Class = RealTimeThread Functions = {Timer1kHzGAM CCPSWaveformGAM FHPSSetpointGAM FHPSRampupGAM InWaitStandbyGAM choiseGAM MCPSGAM GCPSGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM - GoDisabledGAM GoWaitReadyGAM GoErrorGAM } + GoDisabledGAM GoWaitReadyGAM GoErrorGAM CCPSWaveformGAM } CPUs = 0x1000 } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { @@ -4930,7 +4762,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { @@ -4956,7 +4788,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { @@ -4986,7 +4818,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { @@ -5008,19 +4840,19 @@ choiseGAM EPICSOutputGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM writeBeamONStateGAM writeHVArmedStateGAM writeHVInjectionStateGAM writeRFONStateGAM writeBeamONTimeGAM writeRFONTimeGAM - FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorFromWaitHVON_SDNGAM } + FromWaitHVONToWaitStandby FromWaitHVONToWaitPermit GoErrorGAM } CPUs = 0x1000 } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM NI6528P4GYAGAM NI6528P4PV2PortGAM NI6528P4WriteGAM - GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM} + GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x4000 } } @@ -5040,7 +4872,7 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { @@ -5067,14 +4899,14 @@ } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { Class = RealTimeThread Functions = {Timer100kHzGAM GAMEPICSCA StopRequestGAM ModeLimitGAM NI6528P3GAM NI6528P4GAM NI6528P4GYAGAM NI6528P4PV2PortGAM NI6528P4WriteGAM - GAMSDNRealTimeStateMachine NI6528P5GAM NI6528P5PV2PortGAM} + GAMSDNRealTimeStateMachine terminalInterfaceGAM NI6528P5GAM NI6528P5PV2PortGAM} CPUs = 0x4000 } } @@ -5088,12 +4920,12 @@ Class = RealTimeThread Functions = {Timer1kHzGAM InErrorGAM PXI6368Error03GAM PXI6368Error04GAM PXI6259ErrorGAM PXIErrorGAM ExitedHVArmedInjectionRFONGAM ResetPSsGAM - FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM } + FromErrorToWaitStandbyGAM ErrorGAM choiseGAM EPICSOutputGAM FHPSSetpointGAM FHPSRampupGAM CCPSWaveformGAM} CPUs = 0x1000 } +Thread2 = { Class = RealTimeThread - Functions = {TimeSDNGAM SDNCommandGAM SDNCommandGAM2 SDNReplyGAM SDNTimeCompareGAM } + Functions = {TimeSDNGAM SDNCommandGAM SDNReplyGAM} CPUs = 0x2000 } +Thread3 = { diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/depends.x86-linux b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/depends.x86-linux new file mode 100644 index 0000000..cf70890 --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/depends.x86-linux @@ -0,0 +1,293 @@ +../..//Build/x86-linux/DataSources/JAEPICSCA/JAEPICSCAInput.o: JAEPICSCAInput.cpp JAEPICSCAInput.h \ + /opt/codac-6.0/epics/include/cadef.h \ + /opt/codac-6.0/epics/include/epicsThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/os/Linux/osdEvent.h \ + /opt/codac-6.0/epics/include/epicsMutex.h \ + /opt/codac-6.0/epics/include/epicsAssert.h \ + /opt/codac-6.0/epics/include/compilerDependencies.h \ + /opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \ + /opt/codac-6.0/epics/include/epicsGuard.h \ + /opt/codac-6.0/epics/include/os/Linux/osdMutex.h \ + /opt/codac-6.0/epics/include/os/Linux/osdThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/ellLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/caerr.h \ + /opt/codac-6.0/epics/include/epicsTypes.h \ + /opt/codac-6.0/epics/include/db_access.h \ + /opt/codac-6.0/epics/include/epicsTime.h \ + /opt/codac-6.0/epics/include/os/Linux/osdTime.h \ + /opt/codac-6.0/epics/include/errMdef.h \ + /opt/codac-6.0/epics/include/caeventmask.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapInputBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h +../..//Build/x86-linux/DataSources/JAEPICSCA/EPICSCAOutput.o: EPICSCAOutput.cpp EPICSCAOutput.h \ + /opt/codac-6.0/epics/include/cadef.h \ + /opt/codac-6.0/epics/include/epicsThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/os/Linux/osdEvent.h \ + /opt/codac-6.0/epics/include/epicsMutex.h \ + /opt/codac-6.0/epics/include/epicsAssert.h \ + /opt/codac-6.0/epics/include/compilerDependencies.h \ + /opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \ + /opt/codac-6.0/epics/include/epicsGuard.h \ + /opt/codac-6.0/epics/include/os/Linux/osdMutex.h \ + /opt/codac-6.0/epics/include/os/Linux/osdThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/ellLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/caerr.h \ + /opt/codac-6.0/epics/include/epicsTypes.h \ + /opt/codac-6.0/epics/include/db_access.h \ + /opt/codac-6.0/epics/include/epicsTime.h \ + /opt/codac-6.0/epics/include/os/Linux/osdTime.h \ + /opt/codac-6.0/epics/include/errMdef.h \ + /opt/codac-6.0/epics/include/caeventmask.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \ + EPICSCAInput.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L5GAMs/MemoryMapAsyncOutputBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/dependsRaw.x86-linux b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/dependsRaw.x86-linux new file mode 100644 index 0000000..58f138e --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/DataSources/JAEPICSCA/dependsRaw.x86-linux @@ -0,0 +1,293 @@ +JAEPICSCAInput.o: JAEPICSCAInput.cpp JAEPICSCAInput.h \ + /opt/codac-6.0/epics/include/cadef.h \ + /opt/codac-6.0/epics/include/epicsThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/os/Linux/osdEvent.h \ + /opt/codac-6.0/epics/include/epicsMutex.h \ + /opt/codac-6.0/epics/include/epicsAssert.h \ + /opt/codac-6.0/epics/include/compilerDependencies.h \ + /opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \ + /opt/codac-6.0/epics/include/epicsGuard.h \ + /opt/codac-6.0/epics/include/os/Linux/osdMutex.h \ + /opt/codac-6.0/epics/include/os/Linux/osdThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/ellLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/caerr.h \ + /opt/codac-6.0/epics/include/epicsTypes.h \ + /opt/codac-6.0/epics/include/db_access.h \ + /opt/codac-6.0/epics/include/epicsTime.h \ + /opt/codac-6.0/epics/include/os/Linux/osdTime.h \ + /opt/codac-6.0/epics/include/errMdef.h \ + /opt/codac-6.0/epics/include/caeventmask.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapInputBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h +EPICSCAOutput.o: EPICSCAOutput.cpp EPICSCAOutput.h \ + /opt/codac-6.0/epics/include/cadef.h \ + /opt/codac-6.0/epics/include/epicsThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/os/Linux/osdEvent.h \ + /opt/codac-6.0/epics/include/epicsMutex.h \ + /opt/codac-6.0/epics/include/epicsAssert.h \ + /opt/codac-6.0/epics/include/compilerDependencies.h \ + /opt/codac-6.0/epics/include/compiler/gcc/compilerSpecific.h \ + /opt/codac-6.0/epics/include/epicsGuard.h \ + /opt/codac-6.0/epics/include/os/Linux/osdMutex.h \ + /opt/codac-6.0/epics/include/os/Linux/osdThread.h \ + /opt/codac-6.0/epics/include/shareLib.h \ + /opt/codac-6.0/epics/include/ellLib.h \ + /opt/codac-6.0/epics/include/epicsEvent.h \ + /opt/codac-6.0/epics/include/caerr.h \ + /opt/codac-6.0/epics/include/epicsTypes.h \ + /opt/codac-6.0/epics/include/db_access.h \ + /opt/codac-6.0/epics/include/epicsTime.h \ + /opt/codac-6.0/epics/include/os/Linux/osdTime.h \ + /opt/codac-6.0/epics/include/errMdef.h \ + /opt/codac-6.0/epics/include/caeventmask.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/ConfigurationDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/AnyObject.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Architecture/x86_gcc/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CompilerTypes.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TypeCharacteristics.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/TemplateParametersVerificator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectsDatabase.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/GlobalObjectI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/StandardHeap.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../ErrorInformation.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ErrorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Architecture/x86_gcc/HighResolutionTimerA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/HighResolutionTimerCalibrator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../../Environment/Linux/../../GeneralDefinitions.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeStamp.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Environment/Linux/../Generic/StandardHeap_Generic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FastPollingMutexSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Atomic.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Architecture/x86_gcc/AtomicA.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HighResolutionTimer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/Sleep.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/CString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Introspection.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/IntrospectionEntry.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TypeDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BasicType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/FractionalInteger.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitRange.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/BitBoolean.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/ZeroTerminatedArray.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/IteratorT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Iterator.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListable.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SortFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilterT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/SearchFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/LoadableLibrary.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticList.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StaticListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Matrix.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapManager.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/HeapI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StringHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/AnyType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/CLASSREGISTER.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassRegistryItemT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ObjectBuilderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L4Configuration/TypeConversion.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/Vector.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/StreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamString.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/CharBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/BufferedStreamI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/TimeoutType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/FormatDescriptor.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/IOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/MemoryOperationsHelper.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamStringIOBuffer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/StructuredDataI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Reference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/Object.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L0Types/LinkedListHolder.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilter.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerNode.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainerFilterObjectName.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ReferenceContainer.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/StatefulI.h \ + EPICSCAInput.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/ExecutionInfo.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/Threads.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/ExceptionHandler.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L1Portability/ProcessorType.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L1Portability/EventSem.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/SingleThreadService.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedServiceMethodBinderT.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThreadI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L3Services/EmbeddedThread.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/AdvancedErrorManagement.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L2Objects/ClassProperties.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L3Streams/StreamMemoryReference.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/Scheduler/L5GAMs/MemoryMapAsyncOutputBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/MemoryMapBroker.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/BrokerI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/DataSourceI.h \ + /home/codac-dev/MARTe2-dev/MARTe2/Source/Core/BareMetal/L5GAMs/ExecutableI.h diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.cpp b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.cpp deleted file mode 100644 index 2986976..0000000 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/** - * @file JAESDNTimeCompareGAM.cpp - * @brief Source file for class JAESDNTimeCompareGAM - * @date Nov 26, 2018 - * @author aneto - * - * @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and - * the Development of Fusion Energy ('Fusion for Energy'). - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved - * by the European Commission - subsequent versions of the EUPL (the "Licence") - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * @warning Unless required by applicable law or agreed to in writing, - * software distributed under the Licence is distributed on an "AS IS" - * basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the Licence permissions and limitations under the Licence. - - * @details This source file contains the definition of all the methods for - * the class JAESDNTimeCompareGAM (public, protected, and private). Be aware that some - * methods, such as those inline could be defined on the header file, instead. - */ - -/*---------------------------------------------------------------------------*/ -/* Standard header includes */ -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------*/ -/* Project header includes */ -/*---------------------------------------------------------------------------*/ - -#include "JAESDNTimeCompareGAM.h" -#include "AdvancedErrorManagement.h" - -/*---------------------------------------------------------------------------*/ -/* Static definitions */ -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------*/ -/* Method definitions */ -/*---------------------------------------------------------------------------*/ - -JAESDNTimeCompareGAM::JAESDNTimeCompareGAM() { - //ESDNTime holder - esdntime_previous = 0; - - //Input signals. - esdntime = NULL_PTR(MARTe::uint32 *); - - //Output signals. - sdn_connection = NULL_PTR(MARTe::uint32 *); - -} - -JAESDNTimeCompareGAM::~JAESDNTimeCompareGAM() { - if (esdntime != NULL_PTR(MARTe::uint32 *)) { - delete[] esdntime; - } - if (sdn_connection != NULL_PTR(MARTe::uint32 *)) { - delete[] sdn_connection; - } -} - -bool JAESDNTimeCompareGAM::Initialise(MARTe::StructuredDataI & data) { - using namespace MARTe; - return GAM::Initialise(data); -} - -bool JAESDNTimeCompareGAM::PrepareNextState(const MARTe::char8 * const currentStateName, const MARTe::char8 * const nextStateName) { - return true; -} - -bool JAESDNTimeCompareGAM::Setup() { - // Setup memory for input/output signals on the GAM. - using namespace MARTe; - bool ok = (numberOfInputSignals == 1u); - // Do type check for input signals. - if (ok) { - ok = (numberOfOutputSignals == 1u); - if (!ok) { - REPORT_ERROR(ErrorManagement::ParametersError, "Number of output signals shall be the same as " - "number of expected values."); - } - } else { - REPORT_ERROR(ErrorManagement::ParametersError, "Number of input signals shall be the same as " - "number of expected values."); - } - if (ok) { - uint32 c; - for (c = 0u; c < numberOfInputSignals; c++) { - TypeDescriptor inputType = GetSignalType(InputSignals, c); - ok = (inputType == UnsignedInteger32Bit); - if (!ok) { - StreamString signalName; - (void) GetSignalName(InputSignals, c, signalName); - REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer()); - } - - } - } - if (ok) { - uint32 c; - for (c = 0u; c < numberOfOutputSignals; c++) { - TypeDescriptor outputType = GetSignalType(OutputSignals, c); - ok = (outputType == UnsignedInteger32Bit); - if (!ok) { - StreamString signalName; - (void) GetSignalName(InputSignals, c, signalName); - REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer()); - } - } - } - if (ok) { - esdntime = reinterpret_cast(GetInputSignalMemory(0)); - sdn_connection = reinterpret_cast(GetOutputSignalMemory(0)); - } - return ok; -} - -bool JAESDNTimeCompareGAM::Execute() { - using namespace MARTe; - bool connected; - - connected = !(esdntime_previous == *esdntime); - if (connected) *sdn_connection = 1; - else *sdn_connection = 0; - - esdntime_previous = *esdntime; - return true; -} - -CLASS_REGISTER(JAESDNTimeCompareGAM, "1.0") diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.h b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.h deleted file mode 100644 index f8f00e9..0000000 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/JAESDNTimeCompareGAM.h +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @file JAESDNTimeCompareGAM.h - * @brief Header file for class JAESDNTimeCompareGAM - * @date Feb, 2021 - * @author ksakakida - * - * @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and - * the Development of Fusion Energy ('Fusion for Energy'). - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved - * by the European Commission - subsequent versions of the EUPL (the "Licence") - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl - * - * @warning Unless required by applicable law or agreed to in writing, - * software distributed under the Licence is distributed on an "AS IS" - * basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the Licence permissions and limitations under the Licence. - - * @details This header file contains the declaration of the class JAESDNTimeCompareGAM - * with all of its public, protected and private members. It may also include - * definitions for inline methods which need to be visible to the compiler. - */ - -#ifndef GAMS_JAESDNTimeCompareGAM_H_ -#define GAMS_JAESDNTimeCompareGAM_H_ - -/*---------------------------------------------------------------------------*/ -/* Standard header includes */ -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------*/ -/* Project header includes */ -/*---------------------------------------------------------------------------*/ - -#include "GAM.h" - -/*---------------------------------------------------------------------------*/ -/* Class declaration */ -/*---------------------------------------------------------------------------*/ -/** - * @brief GAM that sends a message when one-cycle before ESDNTime and current one are same. This GAM is based on JAMessageGAM. - * @details Sample - * - * The configuration syntax is: - * - *
- * +SDNTimeCompareGAM = {
- *     Class = JAESDNTimeCompareGAM
- *     InputSignals = {
- *         ESDNTime = {
- *             DataSource = "DDB1"
- *             Type = uint32
- *         }
- *     }
- *     OutputSignals = {
- *          SDN_Connection = {
- *              DataSource = "DDB1"
- *              Type = uint32
- *          }
- *      }
- * }
- * 
- */ - - -class JAESDNTimeCompareGAM : public MARTe::GAM, public MARTe::StatefulI { -public: - CLASS_REGISTER_DECLARATION() - - JAESDNTimeCompareGAM(); - - virtual ~JAESDNTimeCompareGAM(); - - virtual bool Initialise(MARTe::StructuredDataI & data); - - virtual bool Setup(); - - virtual bool Execute(); - - virtual bool PrepareNextState(const MARTe::char8 * const currentStateName, - const MARTe::char8 * const nextStateName); - -private: - // ESDNTime holder - MARTe::uint32 esdntime_previous; - - // Input signals - MARTe::uint32 *esdntime; - - // Output signals - MARTe::uint32 *sdn_connection; // 0: disconnected, 1: connected - -}; - - - -/*---------------------------------------------------------------------------*/ -/* Inline method definitions */ -/*---------------------------------------------------------------------------*/ - -#endif /* GAMS_JAESDNTimeCompareGAM_H_ */ diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.gcc b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.gcc deleted file mode 100644 index 69e7cbe..0000000 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.gcc +++ /dev/null @@ -1,27 +0,0 @@ -############################################################# -# -# Copyright 2015 F4E | European Joint Undertaking for ITER -# and the Development of Fusion Energy ('Fusion for Energy') -# -# Licensed under the EUPL, Version 1.1 or - as soon they -# will be approved by the European Commission - subsequent -# versions of the EUPL (the "Licence"); -# You may not use this work except in compliance with the -# Licence. -# You may obtain a copy of the Licence at: -# -# http://ec.europa.eu/idabc/eupl -# -# Unless required by applicable law or agreed to in -# writing, software distributed under the Licence is -# distributed on an "AS IS" basis, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -# express or implied. -# See the Licence for the specific language governing -# permissions and limitations under the Licence. -# -# $Id: Makefile.gcc 3 2012-01-15 16:26:07Z aneto $ -# -############################################################# - -include Makefile.inc diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.inc b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.inc deleted file mode 100644 index 69fb159..0000000 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAESDNTimeCompareGAM/Makefile.inc +++ /dev/null @@ -1,55 +0,0 @@ -############################################################# -# -# Copyright 2015 F4E | European Joint Undertaking for ITER -# and the Development of Fusion Energy ('Fusion for Energy') -# -# Licensed under the EUPL, Version 1.1 or - as soon they -# will be approved by the European Commission - subsequent -# versions of the EUPL (the "Licence"); -# You may not use this work except in compliance with the -# Licence. -# You may obtain a copy of the Licence at: -# -# http://ec.europa.eu/idabc/eupl -# -# Unless required by applicable law or agreed to in -# writing, software distributed under the Licence is -# distributed on an "AS IS" basis, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -# express or implied. -# See the Licence for the specific language governing -# permissions and limitations under the Licence. -# -# $Id: Makefile.inc 3 2012-01-15 16:26:07Z aneto $ -# -############################################################# -OBJSX=JAESDNTimeCompareGAM.x - -PACKAGE=GAMs - -ROOT_DIR=../../ -MAKEDEFAULTDIR=$(MARTe2_DIR)/MakeDefaults -include $(MAKEDEFAULTDIR)/MakeStdLibDefs.$(TARGET) - -INCLUDES += -I. -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L0Types -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L1Portability -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L2Objects -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L3Streams -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L4Messages -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L4Configuration -INCLUDES += -I$(MARTe2_DIR)/Source/Core/BareMetal/L5GAMs -INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L1Portability -INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L3Services -INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L4Messages -INCLUDES += -I$(MARTe2_DIR)/Source/Core/FileSystem/L1Portability -INCLUDES += -I$(MARTe2_DIR)/Source/Core/FileSystem/L3Streams - - - -all: $(OBJS) $(SUBPROJ) \ - $(BUILD_DIR)/JAESDNTimeCompareGAM$(LIBEXT) \ - $(BUILD_DIR)/JAESDNTimeCompareGAM$(DLLEXT) - echo $(OBJS) - -include $(MAKEDEFAULTDIR)/MakeStdLibRules.$(TARGET) diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAModeControlGAM/JAModeControlGAM.cpp b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAModeControlGAM/JAModeControlGAM.cpp index 0d5d5a4..c55e6d0 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAModeControlGAM/JAModeControlGAM.cpp +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JAModeControlGAM/JAModeControlGAM.cpp @@ -120,7 +120,7 @@ bool JAModeControlGAM::Execute() { rfonTime = *inputSignals[9]; resetRemainingTime = false; pulseLengthLimit = CalcPulseLengthLimit(inputSignals); - //REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit); + REPORT_ERROR(ErrorManagement::Debug, "Pulse Length was set to Limit:%d", pulseLengthLimit); } // Turn on the flag during RFON if the pulse legth over the limit. if ((*inputSignals[9] - rfonTime <= pulseLengthLimit) && (previousState == 1u)) { diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.cpp b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.cpp new file mode 100644 index 0000000..56f9b18 --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.cpp @@ -0,0 +1,411 @@ +/** + * @file JARTStateMachineGAM.cpp + * @brief Source file for class JARTStateMachineGAM + * @date Nov 26, 2018 + * @author aneto + * + * @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and + * the Development of Fusion Energy ('Fusion for Energy'). + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved + * by the European Commission - subsequent versions of the EUPL (the "Licence") + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl + * + * @warning Unless required by applicable law or agreed to in writing, + * software distributed under the Licence is distributed on an "AS IS" + * basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the Licence permissions and limitations under the Licence. + + * @details This source file contains the definition of all the methods for + * the class JARTStateMachineGAM (public, protected, and private). Be aware that some + * methods, such as those inline could be defined on the header file, instead. + */ + +/*---------------------------------------------------------------------------*/ +/* Standard header includes */ +/*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*/ +/* Project header includes */ +/*---------------------------------------------------------------------------*/ + +#include "JARTStateMachineGAM.h" + +#include "AdvancedErrorManagement.h" + +/*---------------------------------------------------------------------------*/ +/* Static definitions */ +/*---------------------------------------------------------------------------*/ +static MARTe::uint64 getCurrentTimeUs() { + using namespace MARTe; + return static_cast(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f); +} +/*---------------------------------------------------------------------------*/ +/* Method definitions */ +/*---------------------------------------------------------------------------*/ + +JARTStateMachineGAM::JARTStateMachineGAM() { + currentState = WaitTrigger; // Set Entry state. + plcOnTime = 0; // Triggered time holder. + + //Output and condition in a given state. + conditionTrigger = 1; + aps_hvon = 0; + aps_swon = 0; + bps_hvon = 0; + bps_swon = 0; + mhvps_hvon = 0; + + // Parameters which get from Input signals. + triggerSignal = NULL_PTR(MARTe::uint32 *); + currentTime = NULL_PTR(MARTe::uint32 *); + turn_off_delay = 2000; //us + + triggerDelay_mhvps_hvon = NULL_PTR(MARTe::uint32 *); + triggerDelay_aps_hvon = NULL_PTR(MARTe::uint32 *); + triggerDelay_aps_swon = NULL_PTR(MARTe::uint32 *); + triggerDelay_bps_hvon = NULL_PTR(MARTe::uint32 *); + triggerDelay_bps_swon = NULL_PTR(MARTe::uint32 *); + triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *); + + stopRequest = NULL_PTR(MARTe::uint32 *); + modePulseLengthLimit = NULL_PTR(MARTe::uint32 *); + short_pulse_mode = NULL_PTR(MARTe::uint32 *); + + modulation = NULL_PTR(MARTe::uint32 *); + + // write out target. + outputSignal = NULL_PTR(MARTe::uint32 *); + outputBeamON = NULL_PTR(MARTe::uint32 *); + outputHVArmed = NULL_PTR(MARTe::uint32 *); + outputHVInjection = NULL_PTR(MARTe::uint32 *); + outputRFON = NULL_PTR(MARTe::uint32 *); + outputBeamONTime = NULL_PTR(MARTe::uint32 *); + outputRFONTime = NULL_PTR(MARTe::uint32 *); + shotCounter = NULL_PTR(MARTe::uint32 *); + + mhvps_hvon_is_on = false; + aps_hvon_is_on = false; + aps_swon_is_on = false; + bps_hvon_is_on = false; + bps_swon_is_on = false; + + apsSwonHighResolutionTime = 0; + + aps_hvon_state=0; + aps_swon_state=0; + mhvps_hvon_state=0; + bps_hvon_state=0; + bps_swon_state=0; +} + +JARTStateMachineGAM::~JARTStateMachineGAM() { +} + +bool JARTStateMachineGAM::Initialise(MARTe::StructuredDataI & data) { + using namespace MARTe; + bool ok = GAM::Initialise(data); + if (ok) { + ok = data.Read("ConditionTrigger", conditionTrigger); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The Condition1 shall be specified"); + } + } + if (ok) { + ok = data.Read("mhvps_hvon", mhvps_hvon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The mhvps_hvon shall be specified"); + } + } + if (ok) { + ok = data.Read("aps_hvon", aps_hvon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_hvon shall be specified"); + } + } + if (ok) { + ok = data.Read("aps_swon", aps_swon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_swon shall be specified"); + } + } + if (ok) { + ok = data.Read("bps_hvon", bps_hvon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_hvon shall be specified"); + } + } + if (ok) { + ok = data.Read("bps_swon", bps_swon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_swon shall be specified"); + } + } + return ok; +} + +bool JARTStateMachineGAM::PrepareNextState(const MARTe::char8 * const currentStateName, const MARTe::char8 * const nextStateName) { + + return true; +} + +bool JARTStateMachineGAM::Setup() { + using namespace MARTe; + bool ok = (numberOfInputSignals == 12u); + if (ok) { + ok = (numberOfOutputSignals == 16u); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined %d",numberOfOutputSignals); + } + } + else { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined"); + } + if (ok) { + uint32 c; + for (c = 0u; c < numberOfInputSignals; c++) { + TypeDescriptor inputType = GetSignalType(InputSignals, c); + ok = (inputType == UnsignedInteger32Bit); + if (!ok) { + StreamString signalName; + (void) GetSignalName(InputSignals, c, signalName); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer()); + } + + } + } + if (ok) { + uint32 c; + for (c = 0u; c < numberOfOutputSignals; c++) { + TypeDescriptor outputType = GetSignalType(OutputSignals, c); + ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit); + if (!ok) { + StreamString signalName; + (void) GetSignalName(InputSignals, c, signalName); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer()); + } + } + } + if (ok) { + currentTime = reinterpret_cast(GetInputSignalMemory(0)); + triggerSignal = reinterpret_cast(GetInputSignalMemory(1)); + triggerDelay_mhvps_hvon = reinterpret_cast(GetInputSignalMemory(2)); + triggerDelay_aps_hvon = reinterpret_cast(GetInputSignalMemory(3)); + triggerDelay_aps_swon = reinterpret_cast(GetInputSignalMemory(4)); + triggerDelay_bps_hvon = reinterpret_cast(GetInputSignalMemory(5)); + triggerDelay_bps_swon = reinterpret_cast(GetInputSignalMemory(6)); + triggerDelay_shotlen = reinterpret_cast(GetInputSignalMemory(7)); + stopRequest = reinterpret_cast(GetInputSignalMemory(8)); + modePulseLengthLimit = reinterpret_cast(GetInputSignalMemory(9)); + short_pulse_mode = reinterpret_cast(GetInputSignalMemory(10)); + modulation = reinterpret_cast(GetInputSignalMemory(11)); + + + outputSignal = reinterpret_cast(GetOutputSignalMemory(0)); + outputBeamON = reinterpret_cast(GetOutputSignalMemory(1)); + outputHVArmed = reinterpret_cast(GetOutputSignalMemory(2)); + outputHVInjection = reinterpret_cast(GetOutputSignalMemory(3)); + outputRFON = reinterpret_cast(GetOutputSignalMemory(4)); + outputBeamONTime = reinterpret_cast(GetOutputSignalMemory(5)); + outputRFONTime = reinterpret_cast(GetOutputSignalMemory(6)); + shotCounter = reinterpret_cast(GetOutputSignalMemory(7)); + + outputAPSHVON = reinterpret_cast(GetOutputSignalMemory(8)); + outputAPSSWON = reinterpret_cast(GetOutputSignalMemory(9)); + outputBPSHVON = reinterpret_cast(GetOutputSignalMemory(10)); + outputBPSSWON = reinterpret_cast(GetOutputSignalMemory(11)); + outputMHVPSON = reinterpret_cast(GetOutputSignalMemory(12)); + + outputSignalNI6259 = reinterpret_cast(GetOutputSignalMemory(13)); + outputSignalNI6528P3 = reinterpret_cast(GetOutputSignalMemory(14)); + outputSignalNI6528P4 = reinterpret_cast(GetOutputSignalMemory(15)); + + *shotCounter = 0; + } + return ok; +} + +bool JARTStateMachineGAM::Execute() { + using namespace MARTe; + + if (currentState == WaitTrigger) { + + //State Transition condition + if ((*triggerSignal == conditionTrigger)) { + //REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence at %d.", *currentTime); + plcOnTime = *currentTime; //Save pulse start time. + //*outputBeamON = 0; + //State transition. + currentState = SwitchingHVPS; + } + } + else if (currentState == SwitchingHVPS) { + + //Actions in this state. + if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { + *outputSignal = 0; + currentState = HVTerminate; + } + if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){ + //Do action + *outputSignal += bps_hvon; + bps_hvon_is_on = true; bps_hvon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); + *outputBPSHVON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) { + //Do action + *outputSignal += aps_hvon; + aps_hvon_is_on = true; aps_hvon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal at %d.", *currentTime); + *outputAPSHVON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){ + //Do action + *outputSignal += bps_swon; + bps_swon_is_on = true; bps_swon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); + *outputBPSSWON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) { + //Do action + *outputSignal += mhvps_hvon; + mhvps_hvon_is_on = true; mhvps_hvon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); + *outputMHVPSON=1; + } + if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (plcOnTime + *triggerDelay_aps_swon)){ + //Do action + *outputSignal += aps_swon; + aps_swon_is_on = true; aps_swon_state=1; + apsSwonHighResolutionTime = getCurrentTimeUs(); + apsSwonTime = *currentTime; + //REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); + *outputAPSSWON=1; + } + *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. + if (bps_hvon_is_on && aps_hvon_is_on){ + *outputHVArmed = 1; + } + if (bps_swon_is_on || mhvps_hvon_is_on){ + *outputHVInjection = 1; + } + + //State transition condition + if (aps_swon_is_on){ + currentState = RFON; + *outputRFON = 0; + *outputBeamON = 1; + *shotCounter += 1; + //REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); + } + } + else if (currentState == RFON) { + + //Action in this state. + if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { + //debug + //if((*stopRequest != 0)){ + //REPORT_ERROR(ErrorManagement::Debug, "Stop request was called.!!!"); + //} else { + //REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset.!!!"); + //} + *outputSignal -= aps_swon; + mhvps_hvon_is_on = false; mhvps_hvon_state=0; + aps_hvon_is_on = false; aps_hvon_state=0; + aps_swon_is_on = false; aps_swon_state=0; + bps_hvon_is_on = false; bps_hvon_state=0; + bps_swon_is_on = false; bps_swon_state=0; + currentState = HVTerminate; + *outputAPSHVON=0; + *outputAPSSWON=0; + *outputBPSHVON=0; + *outputBPSSWON=0; + *outputMHVPSON=0; + } + uint32 updatePeriod = 100; // in microsecnds (get this from Timer) + if ((*modePulseLengthLimit == 1u) || (getCurrentTimeUs() + updatePeriod >= (apsSwonHighResolutionTime + *triggerDelay_shotlen))) { + + // Now we do busy wait + while (getCurrentTimeUs() < (apsSwonHighResolutionTime + *triggerDelay_shotlen)) { + //REPORT_ERROR(ErrorManagement::Debug, "!"); + } + // We stop busy waiting #executionOverhead before expected pulse off time + //debug + //if((*modePulseLengthLimit == 1u)){ + // REPORT_ERROR(ErrorManagement::Debug, "Mode limit detected.!!!"); + //} else { + // REPORT_ERROR(ErrorManagement::Debug, "Shot length reached to the setpoint.!!!"); + //} + //debug end. + //Do action + *outputSignal -= aps_swon; //Turn off only APS_SWON first. + mhvps_hvon_is_on = false; + aps_hvon_is_on = false; + aps_swon_is_on = false; aps_swon_state=0; + bps_hvon_is_on = false; + bps_swon_is_on = false; + *outputAPSHVON=0; + *outputAPSSWON=0; + *outputBPSHVON=0; + *outputBPSSWON=0; + *outputMHVPSON=0; + //REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); + } + *outputRFON = 1; + *outputBeamONTime = *currentTime - plcOnTime; + *outputRFONTime = *currentTime - apsSwonTime; + + + //State transition condition + if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) { + currentState = HVTerminate; + apsSwoffTime = *currentTime; + //REPORT_ERROR(ErrorManagement::Debug, "state was changed to HVTerminate"); + } + } + else if (currentState == HVTerminate) { + //In the HVTerminate state, turn APS_SWON off first, and wait 1ms. Finally turn other PS off. + //Action in this state. + *outputBeamON = 0; + *outputHVArmed = 0; + *outputHVInjection = 0; + *outputRFON = 0; + + // State transition condition. + if (*currentTime - apsSwoffTime >= turn_off_delay){ + *outputSignal = 0; + mhvps_hvon_state=0; + aps_hvon_state=0; + bps_hvon_state=0; + bps_swon_state=0; + } + if (*triggerSignal == false){ + //Check PLC_ON is reset + currentState = WaitTrigger; + *outputSignal = 0; + //REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset. The State was changed to WaitTrigger at %d.", *currentTime); + } + } + if(*short_pulse_mode == 1){ + p3Value = 1*aps_hvon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); + *outputSignalNI6259 = 1*aps_swon_state; + *outputSignalNI6528P3 = ~p3Value; + //REPORT_ERROR(ErrorManagement::Debug, "short pulse mode with p3: %d.", p3Value); + } else { + p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); + *outputSignalNI6528P3 = ~p3Value; + //REPORT_ERROR(ErrorManagement::Debug, "long pulse mode with p3: %d.", p3Value); + } + if (modulation) { + p4Value = 8*mhvps_hvon_state + 32; + } + else { + p4Value = 8*mhvps_hvon_state; + } + //*outputSignalNI6528P4 = ~(*ni6528p4Value | p4Value); + *outputSignalNI6528P4 = ~p4Value; + return true; +} + +CLASS_REGISTER(JARTStateMachineGAM, "1.0") diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.h b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.h new file mode 100644 index 0000000..e968f39 --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM-v1.h @@ -0,0 +1,262 @@ +/** + * @file JARTStateMachineGAM.h + * @brief Header file for class JARTStateMachineGAM + * @date Nov 26, 2018 + * @author aneto + * + * @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and + * the Development of Fusion Energy ('Fusion for Energy'). + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved + * by the European Commission - subsequent versions of the EUPL (the "Licence") + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl + * + * @warning Unless required by applicable law or agreed to in writing, + * software distributed under the Licence is distributed on an "AS IS" + * basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the Licence permissions and limitations under the Licence. + + * @details This header file contains the declaration of the class JARTStateMachineGAM + * with all of its public, protected and private members. It may also include + * definitions for inline methods which need to be visible to the compiler. + */ + +#ifndef GAMS_JARTSTATEMACHINEGAM_H_ +#define GAMS_JARTSTATEMACHINEGAM_H_ + +/*---------------------------------------------------------------------------*/ +/* Standard header includes */ +/*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*/ +/* Project header includes */ +/*---------------------------------------------------------------------------*/ + +#include "GAM.h" + +/*---------------------------------------------------------------------------*/ +/* Class declaration */ +/*---------------------------------------------------------------------------*/ + +/** + * @brief GAM that provides real-time state machine. + * + * The configuration syntax is (names and signal quantity are only given as an example): + *
+ *         +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
+ *               }
+ *           }
+ *           OutputSignals = {
+ *               Value = {
+ *                   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
+ *               }
+ *           }
+ *       }
+ * 
+ * 
+ * + */ + +class JARTStateMachineGAM : public MARTe::GAM, public MARTe::StatefulI { +public: + CLASS_REGISTER_DECLARATION() + + JARTStateMachineGAM(); + + virtual ~JARTStateMachineGAM(); + + virtual bool Initialise(MARTe::StructuredDataI & data); + + virtual bool Setup(); + + virtual bool Execute(); + + virtual bool PrepareNextState(const MARTe::char8 * const currentStateName, + const MARTe::char8 * const nextStateName); + +private: + //The list of possible states + enum JARealTimeState { + WaitTrigger = 0, + SwitchingHVPS = 1, + RFON = 2, + HVTerminate = 3 + }; + + //The current rtState + JARealTimeState currentState; + + //A given condition + MARTe::uint32 conditionTrigger; + + //What to output in a given state and condition + MARTe::uint32 mhvps_hvon; + MARTe::uint32 aps_hvon; + MARTe::uint32 aps_swon; + MARTe::uint32 bps_hvon; + MARTe::uint32 bps_swon; + + //The trigger signal (PLC_ON) + MARTe::uint32 *triggerSignal; + + //Time signal + MARTe::uint32 *currentTime; + + // Input signals for trigger delay parameters + MARTe::uint32 *triggerDelay_mhvps_hvon; + MARTe::uint32 *triggerDelay_aps_hvon; + MARTe::uint32 *triggerDelay_aps_swon; + MARTe::uint32 *triggerDelay_bps_hvon; + MARTe::uint32 *triggerDelay_bps_swon; + MARTe::uint32 *triggerDelay_shotlen; + + // Input signal for sequence stop request. + MARTe::uint32 *stopRequest; + // Input signal for pulse length limit by mode. + MARTe::uint32 *modePulseLengthLimit; + // Input signal for short pulse mode. + MARTe::uint32 *short_pulse_mode; + // Input signal for modulation pv. + MARTe::uint32 *modulation; + + // Output signal to which the output value will be written. + // One state write One signal. + MARTe::uint32 *outputSignal; + // state notify output + MARTe::uint32 *outputBeamON; + MARTe::uint32 *outputHVArmed; + MARTe::uint32 *outputHVInjection; + MARTe::uint32 *outputRFON; + // elapsed time notify output; + MARTe::uint32 *outputBeamONTime; + MARTe::uint32 *outputRFONTime; + // shot counter (coutup every RFON time.) + MARTe::uint32 *shotCounter; + + // Added for HVPS state (20201117) + MARTe::uint32 *outputAPSHVON; + MARTe::uint32 *outputAPSSWON; + MARTe::uint32 *outputBPSHVON; + MARTe::uint32 *outputBPSSWON; + MARTe::uint32 *outputMHVPSON; + + // Output signals for NI devices + MARTe::uint32 *outputSignalNI6259; + MARTe::uint8 *outputSignalNI6528P3; + MARTe::uint8 *outputSignalNI6528P4; + + ////////////////////////////// + //Internal Parameters + ////////////////////////////// + //PLC_ON time holder + MARTe::uint32 plcOnTime; + //APS_SWON time holder + MARTe::uint32 apsSwonTime; + MARTe::uint32 apsSwoffTime; + MARTe::uint64 apsSwonHighResolutionTime; + + //PS turn off delay + MARTe::uint32 turn_off_delay; + + //HVPS state holder + bool mhvps_hvon_is_on; + bool aps_hvon_is_on; + bool aps_swon_is_on; + bool bps_hvon_is_on; + bool bps_swon_is_on; + + // terminal values + MARTe::uint8 p3Value; + MARTe::uint8 p4Value; + MARTe::uint8 aps_hvon_state; + MARTe::uint8 aps_swon_state; + MARTe::uint8 mhvps_hvon_state; + MARTe::uint8 bps_hvon_state; + MARTe::uint8 bps_swon_state; + +}; + + + +/*---------------------------------------------------------------------------*/ +/* Inline method definitions */ +/*---------------------------------------------------------------------------*/ + +#endif /* GAMS_JARTSTATEMACHINEGAM_H_ */ diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.cpp b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.cpp new file mode 100644 index 0000000..71c7669 --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.cpp @@ -0,0 +1,402 @@ +/** + * @file JARTStateMachineGAM.cpp + * @brief Source file for class JARTStateMachineGAM + * @date Nov 26, 2018 + * @author aneto + * + * @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and + * the Development of Fusion Energy ('Fusion for Energy'). + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved + * by the European Commission - subsequent versions of the EUPL (the "Licence") + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl + * + * @warning Unless required by applicable law or agreed to in writing, + * software distributed under the Licence is distributed on an "AS IS" + * basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the Licence permissions and limitations under the Licence. + + * @details This source file contains the definition of all the methods for + * the class JARTStateMachineGAM (public, protected, and private). Be aware that some + * methods, such as those inline could be defined on the header file, instead. + */ + +/*---------------------------------------------------------------------------*/ +/* Standard header includes */ +/*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*/ +/* Project header includes */ +/*---------------------------------------------------------------------------*/ + +#include "JARTStateMachineGAM.h" + +#include "AdvancedErrorManagement.h" + +/*---------------------------------------------------------------------------*/ +/* Static definitions */ +/*---------------------------------------------------------------------------*/ +static MARTe::uint64 getCurrentTimeUs() { + using namespace MARTe; + return static_cast(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f); +} +/*---------------------------------------------------------------------------*/ +/* Method definitions */ +/*---------------------------------------------------------------------------*/ + +JARTStateMachineGAM::JARTStateMachineGAM() { + currentState = WaitTrigger; // Set Entry state. + plcOnTime = 0; // Triggered time holder. + + //Output and condition in a given state. + conditionTrigger = 1; + aps_hvon = 0; + aps_swon = 0; + bps_hvon = 0; + bps_swon = 0; + mhvps_hvon = 0; + + // Parameters which get from Input signals. + triggerSignal = NULL_PTR(MARTe::uint32 *); + currentTime = NULL_PTR(MARTe::uint32 *); + turn_off_delay = 2000; //us + + triggerDelay_mhvps_hvon = NULL_PTR(MARTe::uint32 *); + triggerDelay_aps_hvon = NULL_PTR(MARTe::uint32 *); + triggerDelay_aps_swon = NULL_PTR(MARTe::uint32 *); + triggerDelay_bps_hvon = NULL_PTR(MARTe::uint32 *); + triggerDelay_bps_swon = NULL_PTR(MARTe::uint32 *); + triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *); + + stopRequest = NULL_PTR(MARTe::uint32 *); + modePulseLengthLimit = NULL_PTR(MARTe::uint32 *); + + // write out target. + outputSignal = NULL_PTR(MARTe::uint32 *); + outputBeamON = NULL_PTR(MARTe::uint32 *); + outputHVArmed = NULL_PTR(MARTe::uint32 *); + outputHVInjection = NULL_PTR(MARTe::uint32 *); + outputRFON = NULL_PTR(MARTe::uint32 *); + outputBeamONTime = NULL_PTR(MARTe::uint32 *); + outputRFONTime = NULL_PTR(MARTe::uint32 *); + shotCounter = NULL_PTR(MARTe::uint32 *); + + mhvps_hvon_is_on = false; + aps_hvon_is_on = false; + aps_swon_is_on = false; + bps_hvon_is_on = false; + bps_swon_is_on = false; + + apsSwonHighResolutionTime = 0; + + aps_hvon_state=0; + aps_swon_state=0; + mhvps_hvon_state=0; + bps_hvon_state=0; + bps_swon_state=0; +} + +JARTStateMachineGAM::~JARTStateMachineGAM() { +} + +bool JARTStateMachineGAM::Initialise(MARTe::StructuredDataI & data) { + using namespace MARTe; + bool ok = GAM::Initialise(data); + if (ok) { + ok = data.Read("ConditionTrigger", conditionTrigger); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The Condition1 shall be specified"); + } + } + if (ok) { + ok = data.Read("mhvps_hvon", mhvps_hvon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The mhvps_hvon shall be specified"); + } + } + if (ok) { + ok = data.Read("aps_hvon", aps_hvon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_hvon shall be specified"); + } + } + if (ok) { + ok = data.Read("aps_swon", aps_swon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The aps_swon shall be specified"); + } + } + if (ok) { + ok = data.Read("bps_hvon", bps_hvon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_hvon shall be specified"); + } + } + if (ok) { + ok = data.Read("bps_swon", bps_swon); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "The bps_swon shall be specified"); + } + } + return ok; +} + +bool JARTStateMachineGAM::PrepareNextState(const MARTe::char8 * const currentStateName, const MARTe::char8 * const nextStateName) { + + return true; +} + +bool JARTStateMachineGAM::Setup() { + using namespace MARTe; + bool ok = (numberOfInputSignals == 11u); + if (ok) { + ok = (numberOfOutputSignals == 16u); + if (!ok) { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined %d",numberOfOutputSignals); + } + } + else { + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined"); + } + if (ok) { + uint32 c; + for (c = 0u; c < numberOfInputSignals; c++) { + TypeDescriptor inputType = GetSignalType(InputSignals, c); + ok = (inputType == UnsignedInteger32Bit); + if (!ok) { + StreamString signalName; + (void) GetSignalName(InputSignals, c, signalName); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer()); + } + + } + } + if (ok) { + uint32 c; + for (c = 0u; c < numberOfOutputSignals; c++) { + TypeDescriptor outputType = GetSignalType(OutputSignals, c); + ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit); + if (!ok) { + StreamString signalName; + (void) GetSignalName(InputSignals, c, signalName); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Signal %s shall be defined as uint32", signalName.Buffer()); + } + } + } + if (ok) { + currentTime = reinterpret_cast(GetInputSignalMemory(0)); + triggerSignal = reinterpret_cast(GetInputSignalMemory(1)); + triggerDelay_mhvps_hvon = reinterpret_cast(GetInputSignalMemory(2)); + triggerDelay_aps_hvon = reinterpret_cast(GetInputSignalMemory(3)); + triggerDelay_aps_swon = reinterpret_cast(GetInputSignalMemory(4)); + triggerDelay_bps_hvon = reinterpret_cast(GetInputSignalMemory(5)); + triggerDelay_bps_swon = reinterpret_cast(GetInputSignalMemory(6)); + triggerDelay_shotlen = reinterpret_cast(GetInputSignalMemory(7)); + stopRequest = reinterpret_cast(GetInputSignalMemory(8)); + modePulseLengthLimit = reinterpret_cast(GetInputSignalMemory(9)); + short_pulse_mode = reinterpret_cast(GetInputSignalMemory(10)); + + + outputSignal = reinterpret_cast(GetOutputSignalMemory(0)); + outputBeamON = reinterpret_cast(GetOutputSignalMemory(1)); + outputHVArmed = reinterpret_cast(GetOutputSignalMemory(2)); + outputHVInjection = reinterpret_cast(GetOutputSignalMemory(3)); + outputRFON = reinterpret_cast(GetOutputSignalMemory(4)); + outputBeamONTime = reinterpret_cast(GetOutputSignalMemory(5)); + outputRFONTime = reinterpret_cast(GetOutputSignalMemory(6)); + shotCounter = reinterpret_cast(GetOutputSignalMemory(7)); + + outputAPSHVON = reinterpret_cast(GetOutputSignalMemory(8)); + outputAPSSWON = reinterpret_cast(GetOutputSignalMemory(9)); + outputBPSHVON = reinterpret_cast(GetOutputSignalMemory(10)); + outputBPSSWON = reinterpret_cast(GetOutputSignalMemory(11)); + outputMHVPSON = reinterpret_cast(GetOutputSignalMemory(12)); + + outputSignalNI6259 = reinterpret_cast(GetOutputSignalMemory(13)); + outputSignalNI6528P3 = reinterpret_cast(GetOutputSignalMemory(14)); + outputSignalNI6528P4 = reinterpret_cast(GetOutputSignalMemory(15)); + + *shotCounter = 0; + } + return ok; +} + +bool JARTStateMachineGAM::Execute() { + using namespace MARTe; + + if (currentState == WaitTrigger) { + + //State Transition condition + if ((*triggerSignal == conditionTrigger)) { + //REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence at %d.", *currentTime); + plcOnTime = *currentTime; //Save pulse start time. + //*outputBeamON = 0; + //State transition. + currentState = SwitchingHVPS; + } + } + else if (currentState == SwitchingHVPS) { + + //Actions in this state. + if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { + *outputSignal = 0; + currentState = HVTerminate; + } + if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){ + //Do action + *outputSignal += bps_hvon; + bps_hvon_is_on = true; bps_hvon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); + *outputBPSHVON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) { + //Do action + *outputSignal += aps_hvon; + aps_hvon_is_on = true; aps_hvon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal at %d.", *currentTime); + *outputAPSHVON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){ + //Do action + *outputSignal += bps_swon; + bps_swon_is_on = true; bps_swon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); + *outputBPSSWON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) { + //Do action + *outputSignal += mhvps_hvon; + mhvps_hvon_is_on = true; mhvps_hvon_state=1; + //REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); + *outputMHVPSON=1; + } + if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (plcOnTime + *triggerDelay_aps_swon)){ + //Do action + *outputSignal += aps_swon; + aps_swon_is_on = true; aps_swon_state=1; + apsSwonHighResolutionTime = getCurrentTimeUs(); + apsSwonTime = *currentTime; + //REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); + *outputAPSSWON=1; + } + *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. + if (bps_hvon_is_on && aps_hvon_is_on){ + *outputHVArmed = 1; + } + if (bps_swon_is_on || mhvps_hvon_is_on){ + *outputHVInjection = 1; + } + + //State transition condition + if (aps_swon_is_on){ + currentState = RFON; + *outputRFON = 0; + *outputBeamON = 1; + *shotCounter += 1; + //REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); + } + } + else if (currentState == RFON) { + + //Action in this state. + if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { + //debug + //if((*stopRequest != 0)){ + //REPORT_ERROR(ErrorManagement::Debug, "Stop request was called.!!!"); + //} else { + //REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset.!!!"); + //} + *outputSignal -= aps_swon; + mhvps_hvon_is_on = false; mhvps_hvon_state=0; + aps_hvon_is_on = false; aps_hvon_state=0; + aps_swon_is_on = false; aps_swon_state=0; + bps_hvon_is_on = false; bps_hvon_state=0; + bps_swon_is_on = false; bps_swon_state=0; + currentState = HVTerminate; + *outputAPSHVON=0; + *outputAPSSWON=0; + *outputBPSHVON=0; + *outputBPSSWON=0; + *outputMHVPSON=0; + } + uint32 updatePeriod = 100; // in microsecnds (get this from Timer) + if ((*modePulseLengthLimit == 1u) || (getCurrentTimeUs() + updatePeriod >= (apsSwonHighResolutionTime + *triggerDelay_shotlen))) { + + // Now we do busy wait + while (getCurrentTimeUs() < (apsSwonHighResolutionTime + *triggerDelay_shotlen)) { + //REPORT_ERROR(ErrorManagement::Debug, "!"); + } + // We stop busy waiting #executionOverhead before expected pulse off time + //debug + //if((*modePulseLengthLimit == 1u)){ + // REPORT_ERROR(ErrorManagement::Debug, "Mode limit detected.!!!"); + //} else { + // REPORT_ERROR(ErrorManagement::Debug, "Shot length reached to the setpoint.!!!"); + //} + //debug end. + //Do action + *outputSignal -= aps_swon; //Turn off only APS_SWON first. + mhvps_hvon_is_on = false; + aps_hvon_is_on = false; + aps_swon_is_on = false; aps_swon_state=0; + bps_hvon_is_on = false; + bps_swon_is_on = false; + *outputAPSHVON=0; + *outputAPSSWON=0; + *outputBPSHVON=0; + *outputBPSSWON=0; + *outputMHVPSON=0; + //REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); + } + *outputRFON = 1; + *outputBeamONTime = *currentTime - plcOnTime; + *outputRFONTime = *currentTime - apsSwonTime; + + + //State transition condition + if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) { + currentState = HVTerminate; + apsSwoffTime = *currentTime; + //REPORT_ERROR(ErrorManagement::Debug, "state was changed to HVTerminate"); + } + } + else if (currentState == HVTerminate) { + //In the HVTerminate state, turn APS_SWON off first, and wait 1ms. Finally turn other PS off. + //Action in this state. + *outputBeamON = 0; + *outputHVArmed = 0; + *outputHVInjection = 0; + *outputRFON = 0; + + // State transition condition. + if (*currentTime - apsSwoffTime >= turn_off_delay){ + *outputSignal = 0; + mhvps_hvon_state=0; + aps_hvon_state=0; + bps_hvon_state=0; + bps_swon_state=0; + } + if (*triggerSignal == false){ + //Check PLC_ON is reset + currentState = WaitTrigger; + *outputSignal = 0; + //REPORT_ERROR(ErrorManagement::Debug, "PLC_ON was reset. The State was changed to WaitTrigger at %d.", *currentTime); + } + } + if(*short_pulse_mode == 1){ + p3Value = 1*aps_hvon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); + *outputSignalNI6259 = 1*aps_swon_state; + *outputSignalNI6528P3 = ~p3Value; + //REPORT_ERROR(ErrorManagement::Debug, "short pulse mode with p3: %d.", p3Value); + } else { + p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); + *outputSignalNI6528P3 = ~p3Value; + //REPORT_ERROR(ErrorManagement::Debug, "long pulse mode with p3: %d.", p3Value); + } + p4Value = 8*mhvps_hvon_state; + //*outputSignalNI6528P4 = ~(*ni6528p4Value | p4Value); + *outputSignalNI6528P4 = ~p4Value; + return true; +} + +CLASS_REGISTER(JARTStateMachineGAM, "1.0") diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.h b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.h new file mode 100644 index 0000000..e59f3fa --- /dev/null +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JARTStateMachineGAM/JARTStateMachineGAM_stable.h @@ -0,0 +1,260 @@ +/** + * @file JARTStateMachineGAM.h + * @brief Header file for class JARTStateMachineGAM + * @date Nov 26, 2018 + * @author aneto + * + * @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and + * the Development of Fusion Energy ('Fusion for Energy'). + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved + * by the European Commission - subsequent versions of the EUPL (the "Licence") + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl + * + * @warning Unless required by applicable law or agreed to in writing, + * software distributed under the Licence is distributed on an "AS IS" + * basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the Licence permissions and limitations under the Licence. + + * @details This header file contains the declaration of the class JARTStateMachineGAM + * with all of its public, protected and private members. It may also include + * definitions for inline methods which need to be visible to the compiler. + */ + +#ifndef GAMS_JARTSTATEMACHINEGAM_H_ +#define GAMS_JARTSTATEMACHINEGAM_H_ + +/*---------------------------------------------------------------------------*/ +/* Standard header includes */ +/*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*/ +/* Project header includes */ +/*---------------------------------------------------------------------------*/ + +#include "GAM.h" + +/*---------------------------------------------------------------------------*/ +/* Class declaration */ +/*---------------------------------------------------------------------------*/ + +/** + * @brief GAM that provides real-time state machine. + * + * The configuration syntax is (names and signal quantity are only given as an example): + *
+ *         +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
+ *               }
+ *           }
+ *           OutputSignals = {
+ *               Value = {
+ *                   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
+ *               }
+ *           }
+ *       }
+ * 
+ * 
+ * + */ + +class JARTStateMachineGAM : public MARTe::GAM, public MARTe::StatefulI { +public: + CLASS_REGISTER_DECLARATION() + + JARTStateMachineGAM(); + + virtual ~JARTStateMachineGAM(); + + virtual bool Initialise(MARTe::StructuredDataI & data); + + virtual bool Setup(); + + virtual bool Execute(); + + virtual bool PrepareNextState(const MARTe::char8 * const currentStateName, + const MARTe::char8 * const nextStateName); + +private: + //The list of possible states + enum JARealTimeState { + WaitTrigger = 0, + SwitchingHVPS = 1, + RFON = 2, + HVTerminate = 3 + }; + + //The current rtState + JARealTimeState currentState; + + //A given condition + MARTe::uint32 conditionTrigger; + + //What to output in a given state and condition + MARTe::uint32 mhvps_hvon; + MARTe::uint32 aps_hvon; + MARTe::uint32 aps_swon; + MARTe::uint32 bps_hvon; + MARTe::uint32 bps_swon; + + //The trigger signal (PLC_ON) + MARTe::uint32 *triggerSignal; + + //Time signal + MARTe::uint32 *currentTime; + + // Input signals for trigger delay parameters + MARTe::uint32 *triggerDelay_mhvps_hvon; + MARTe::uint32 *triggerDelay_aps_hvon; + MARTe::uint32 *triggerDelay_aps_swon; + MARTe::uint32 *triggerDelay_bps_hvon; + MARTe::uint32 *triggerDelay_bps_swon; + MARTe::uint32 *triggerDelay_shotlen; + + // Input signal for sequence stop request. + MARTe::uint32 *stopRequest; + // Input signal for pulse length limit by mode. + MARTe::uint32 *modePulseLengthLimit; + // Input signal for short pulse mode. + MARTe::uint32 *short_pulse_mode; + + // Output signal to which the output value will be written. + // One state write One signal. + MARTe::uint32 *outputSignal; + // state notify output + MARTe::uint32 *outputBeamON; + MARTe::uint32 *outputHVArmed; + MARTe::uint32 *outputHVInjection; + MARTe::uint32 *outputRFON; + // elapsed time notify output; + MARTe::uint32 *outputBeamONTime; + MARTe::uint32 *outputRFONTime; + // shot counter (coutup every RFON time.) + MARTe::uint32 *shotCounter; + + // Added for HVPS state (20201117) + MARTe::uint32 *outputAPSHVON; + MARTe::uint32 *outputAPSSWON; + MARTe::uint32 *outputBPSHVON; + MARTe::uint32 *outputBPSSWON; + MARTe::uint32 *outputMHVPSON; + + // Output signals for NI devices + MARTe::uint32 *outputSignalNI6259; + MARTe::uint8 *outputSignalNI6528P3; + MARTe::uint8 *outputSignalNI6528P4; + + ////////////////////////////// + //Internal Parameters + ////////////////////////////// + //PLC_ON time holder + MARTe::uint32 plcOnTime; + //APS_SWON time holder + MARTe::uint32 apsSwonTime; + MARTe::uint32 apsSwoffTime; + MARTe::uint64 apsSwonHighResolutionTime; + + //PS turn off delay + MARTe::uint32 turn_off_delay; + + //HVPS state holder + bool mhvps_hvon_is_on; + bool aps_hvon_is_on; + bool aps_swon_is_on; + bool bps_hvon_is_on; + bool bps_swon_is_on; + + // terminal values + MARTe::uint8 p3Value; + MARTe::uint8 p4Value; + MARTe::uint8 aps_hvon_state; + MARTe::uint8 aps_swon_state; + MARTe::uint8 mhvps_hvon_state; + MARTe::uint8 bps_hvon_state; + MARTe::uint8 bps_swon_state; + +}; + + + +/*---------------------------------------------------------------------------*/ +/* Inline method definitions */ +/*---------------------------------------------------------------------------*/ + +#endif /* GAMS_JARTSTATEMACHINEGAM_H_ */ diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp index 7e0fca5..d164e89 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.cpp @@ -36,10 +36,7 @@ /*---------------------------------------------------------------------------*/ /* Static definitions */ /*---------------------------------------------------------------------------*/ -static MARTe::uint64 getCurrentTimeUs() { - using namespace MARTe; - return static_cast(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f); -} + /*---------------------------------------------------------------------------*/ /* Method definitions */ /*---------------------------------------------------------------------------*/ @@ -67,9 +64,7 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() { triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *); stopRequest = NULL_PTR(MARTe::uint32 *); modePulseLengthLimit = NULL_PTR(MARTe::uint32 *); - Command = NULL_PTR(MARTe::uint16 *); - Command2 = NULL_PTR(MARTe::uint16 *); - sdnStatus = NULL_PTR(MARTe::uint8 *); + sdnCommand = NULL_PTR(MARTe::uint16 *); // write out target. outputSignal = NULL_PTR(MARTe::uint32 *); @@ -86,17 +81,6 @@ JASDNRTStateMachineGAM::JASDNRTStateMachineGAM() { aps_swon_is_on = false; bps_hvon_is_on = false; bps_swon_is_on = false; - - sdnCommand = 0; - groupFix = 0; - - apsSwonHighResolutionTime = 0; - - aps_hvon_state=0; - aps_swon_state=0; - mhvps_hvon_state=0; - bps_hvon_state=0; - bps_swon_state=0; } JASDNRTStateMachineGAM::~JASDNRTStateMachineGAM() { @@ -151,21 +135,21 @@ bool JASDNRTStateMachineGAM::PrepareNextState(const MARTe::char8 * const current bool JASDNRTStateMachineGAM::Setup() { using namespace MARTe; - bool ok = (numberOfInputSignals == 13u); + bool ok = (numberOfInputSignals == 11u); if (ok) { - ok = (numberOfOutputSignals == 15u); + ok = (numberOfOutputSignals == 8u); if (!ok) { - REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "15 output signals shall be defined"); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined"); } } else { - REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "13 input signals shall be defined"); + REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined"); } if (ok) { uint32 c; for (c = 0u; c < numberOfInputSignals; c++) { TypeDescriptor inputType = GetSignalType(InputSignals, c); - ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit || inputType == UnsignedInteger8Bit); + ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit); if (!ok) { StreamString signalName; (void) GetSignalName(InputSignals, c, signalName); @@ -178,7 +162,7 @@ bool JASDNRTStateMachineGAM::Setup() { uint32 c; for (c = 0u; c < numberOfOutputSignals; c++) { TypeDescriptor outputType = GetSignalType(OutputSignals, c); - ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit); + ok = (outputType == UnsignedInteger32Bit); if (!ok) { StreamString signalName; (void) GetSignalName(InputSignals, c, signalName); @@ -197,9 +181,7 @@ bool JASDNRTStateMachineGAM::Setup() { triggerDelay_shotlen = reinterpret_cast(GetInputSignalMemory(7)); stopRequest = reinterpret_cast(GetInputSignalMemory(8)); modePulseLengthLimit = reinterpret_cast(GetInputSignalMemory(9)); - Command = reinterpret_cast(GetInputSignalMemory(10)); - Command2 = reinterpret_cast(GetInputSignalMemory(11)); - sdnStatus = reinterpret_cast(GetInputSignalMemory(12)); + sdnCommand = reinterpret_cast(GetInputSignalMemory(10)); outputSignal = reinterpret_cast(GetOutputSignalMemory(0)); outputBeamON = reinterpret_cast(GetOutputSignalMemory(1)); @@ -209,15 +191,6 @@ bool JASDNRTStateMachineGAM::Setup() { outputBeamONTime = reinterpret_cast(GetOutputSignalMemory(5)); outputRFONTime = reinterpret_cast(GetOutputSignalMemory(6)); shotCounter = reinterpret_cast(GetOutputSignalMemory(7)); - - outputAPSHVON = reinterpret_cast(GetOutputSignalMemory(8)); - outputAPSSWON = reinterpret_cast(GetOutputSignalMemory(9)); - outputBPSHVON = reinterpret_cast(GetOutputSignalMemory(10)); - outputBPSSWON = reinterpret_cast(GetOutputSignalMemory(11)); - outputMHVPSON = reinterpret_cast(GetOutputSignalMemory(12)); - - outputSignalNI6528P3 = reinterpret_cast(GetOutputSignalMemory(13)); - outputSignalNI6528P4 = reinterpret_cast(GetOutputSignalMemory(14)); *shotCounter = 0; } return ok; @@ -225,19 +198,11 @@ bool JASDNRTStateMachineGAM::Setup() { bool JASDNRTStateMachineGAM::Execute() { using namespace MARTe; - if (!groupFix && (*triggerSignal != false)) { - sdnCommand = (1 - *sdnStatus)*(*Command) + (*sdnStatus)*(*Command2); - groupFix = 1; - sdnStatusFix = *sdnStatus; - } - else { - sdnCommand = (1 - sdnStatusFix)*(*Command) + sdnStatusFix*(*Command2); - } if (currentState == WaitTrigger) { //State Transition condition if ((*triggerSignal == conditionTrigger)) { - //REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode."); + REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode."); plcOnTime = *currentTime; //Save pulse start time. *outputBeamON = 0; //State transition. @@ -248,22 +213,20 @@ bool JASDNRTStateMachineGAM::Execute() { //Actions in this state. if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { - *outputSignal = 0; + *outputSignal -= aps_swon; currentState = HVTerminate; } if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){ //Do action *outputSignal += bps_hvon; - bps_hvon_is_on = true; bps_hvon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); - *outputBPSHVON=1; + bps_hvon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); } if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) { //Do action *outputSignal += aps_hvon; - aps_hvon_is_on = true; aps_hvon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal."); - *outputAPSHVON=1; + aps_hvon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal."); } *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. @@ -279,7 +242,7 @@ bool JASDNRTStateMachineGAM::Execute() { *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. // State change conditions - if (sdnCommand == 1){ + if (*sdnCommand == 1){ sdnTriggerTime = *currentTime; currentState = SwitchingHVPS_SWON; } @@ -299,80 +262,68 @@ bool JASDNRTStateMachineGAM::Execute() { if (*currentTime >= (sdnTriggerTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){ //Do action *outputSignal += bps_swon; - bps_swon_is_on = true; bps_swon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); - *outputBPSSWON=1; + bps_swon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); } if (*currentTime >= (sdnTriggerTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) { //Do action *outputSignal += mhvps_hvon; - mhvps_hvon_is_on = true; mhvps_hvon_state=1; - //REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); - *outputMHVPSON=1; + mhvps_hvon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); } if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon)){ //Do action *outputSignal += aps_swon; - aps_swon_is_on = true; aps_swon_state=1; - apsSwonHighResolutionTime = getCurrentTimeUs(); + aps_swon_is_on = true; apsSwonTime = *currentTime; - //REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); - *outputAPSSWON=1; + REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); } *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. if (bps_swon_is_on || mhvps_hvon_is_on){ - *outputHVInjection = 1; + *outputHVInjection = 0; } //State transition condition if (aps_swon_is_on){ currentState = RFON; *outputRFON = 0; - *outputBeamON = 1; *shotCounter += 1; - //REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); + REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); } } else if (currentState == RFON) { //SDN command processing. - if (sdnCommand == 4 && aps_swon_is_on) { + if (*sdnCommand == 4 && aps_swon_is_on) { *outputSignal -= aps_swon; - aps_swon_is_on = false; aps_swon_state=0; - //REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4"); - *outputAPSSWON=0; + aps_swon_is_on = false; + REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4"); } - if (sdnCommand == 3 && !aps_swon_is_on) { + if (*sdnCommand == 3 && !aps_swon_is_on) { *outputSignal += aps_swon; - aps_swon_is_on = true; aps_swon_state=0; - //REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3"); - *outputAPSSWON=1; + aps_swon_is_on = true; + REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3"); } //Action in this state. - if ((sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) { - //REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen); - if (sdnCommand == 2) { - //REPORT_ERROR(ErrorManagement::Information, "sdn command was 2"); + if ((*sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) { + REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen); + if (*sdnCommand == 2) { + REPORT_ERROR(ErrorManagement::Information, "sdn command was 2"); } else if (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen)){ - //REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint."); + REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint."); } //Do action *outputSignal -= aps_swon; //Turn off only aps_swon mhvps_hvon_is_on = false; aps_hvon_is_on = false; - aps_swon_is_on = false; aps_swon_state=0; + aps_swon_is_on = false; bps_hvon_is_on = false; bps_swon_is_on = false; - *outputAPSHVON=0; - *outputAPSSWON=0; - *outputBPSHVON=0; - *outputBPSSWON=0; - *outputMHVPSON=0; - //REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); + REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); } - *outputRFON = 1; + *outputRFON = 0; *outputBeamONTime = *currentTime - plcOnTime; *outputRFONTime = *currentTime - apsSwonTime; @@ -381,37 +332,29 @@ bool JASDNRTStateMachineGAM::Execute() { if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) { currentState = HVTerminate; apsSwoffTime = *currentTime; - //REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate"); + REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate"); } } else if (currentState == HVTerminate) { //Action in this state. - *outputBeamON = 0; - *outputHVArmed = 0; - *outputHVInjection = 0; - *outputRFON = 0; + *outputBeamON = 1; + *outputHVArmed = 1; + *outputHVInjection = 1; + *outputRFON = 1; // State transition condition. if (*currentTime - apsSwoffTime >= turn_off_delay){ *outputSignal = 0; - mhvps_hvon_state=0; - aps_hvon_state=0; - bps_hvon_state=0; - bps_swon_state=0; } if (*triggerSignal == false){ //Check PLC_ON is reset currentState = WaitTrigger; *outputSignal = 0; - groupFix = 0; - //REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger"); + REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger"); } } - p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); - *outputSignalNI6528P3 = ~p3Value; - p4Value = 8*mhvps_hvon_state; - *outputSignalNI6528P4 = ~p4Value; + return true; } diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h index 69f0eee..91b4199 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h @@ -92,18 +92,10 @@ * DataSource = DDB1 * Type = uint32 * } - * Command = {//from packet x + * Command = { * DataSource = RealTimeThreadAsyncBridge * Type = uint16 * } - * Command2 = {//from packet y - * DataSource = RealTimeThreadAsyncBridge - * Type = uint16 - * } - * ESDNStatus = {// 0 or 1. If 0, packet x is used, elif 1, packet y is used. - * DataSource = RealTimeThreadAsyncBridge - * Type = uint8 - * } * } * OutputSignals = { * Value = { @@ -207,12 +199,8 @@ private: MARTe::uint32 *stopRequest; // Input signal for pulse length limit by mode. MARTe::uint32 *modePulseLengthLimit; - // Input signal for SDN commands from packet x. - MARTe::uint16 *Command; - // Input signal for SDN commands from packet y. - MARTe::uint16 *Command2; - // Input signal for SDN status. - MARTe::uint8 *sdnStatus; + // Input signal for SDN commands. + MARTe::uint16 *sdnCommand; ///////////////////////////////////////////////////////////// // Output signal to which the output value will be written. @@ -229,17 +217,6 @@ private: MARTe::uint32 *outputRFONTime; // shot counter (coutup every RFON time.) MARTe::uint32 *shotCounter; - - // Added for HVPS state (20210602) - MARTe::uint32 *outputAPSHVON; - MARTe::uint32 *outputAPSSWON; - MARTe::uint32 *outputBPSHVON; - MARTe::uint32 *outputBPSSWON; - MARTe::uint32 *outputMHVPSON; - - // Output signals for NI devices - MARTe::uint8 *outputSignalNI6528P3; - MARTe::uint8 *outputSignalNI6528P4; ////////////////////////////// //Internal Parameters @@ -249,7 +226,6 @@ private: //APS_SWON time holder MARTe::uint32 apsSwonTime; MARTe::uint32 apsSwoffTime; - MARTe::uint64 apsSwonHighResolutionTime; //PS turn off delay MARTe::uint32 turn_off_delay; @@ -263,22 +239,6 @@ private: bool bps_hvon_is_on; bool bps_swon_is_on; - //command x or y - MARTe::uint16 sdnCommand; - //packet group must not be changed during real time operation - MARTe::uint16 groupFix; //0: packet group is not fixed yet, 1: fixed. - //when packet group is fixed, sdnStatus is copied to this variable. - MARTe::uint8 sdnStatusFix; - - // terminal values - MARTe::uint8 p3Value; - MARTe::uint8 p4Value; - MARTe::uint8 aps_hvon_state; - MARTe::uint8 aps_swon_state; - MARTe::uint8 mhvps_hvon_state; - MARTe::uint8 bps_hvon_state; - MARTe::uint8 bps_swon_state; - }; diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/Makefile.inc b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/Makefile.inc index bcf3450..9dfc5c1 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/Makefile.inc +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/Makefile.inc @@ -27,8 +27,7 @@ SPB = JAMessageGAM.x JAPreProgrammedGAM.x JAModeControlGAM.x \ JAWFRecordGAM.x JATriangleWaveGAM.x JARampupGAM.x \ JARTStateMachineGAM.x JASDNRTStateMachineGAM.x JATerminalInterfaceGAM.x \ - JABitSumGAM.x JAConditionalSignalUpdateGAM.x JASourceChoiseGAM.x JABitReverseGAM.x \ - JAESDNTimeCompareGAM.x + JABitSumGAM.x JAConditionalSignalUpdateGAM.x JASourceChoiseGAM.x JABitReverseGAM.x MAKEDEFAULTDIR=$(MARTe2_DIR)/MakeDefaults diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh old mode 100755 new mode 100644 index 4070fe0..b425a77 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh @@ -123,7 +123,6 @@ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JATerminalInterfaceGAM/ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitSumGAM/ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JASourceChoiseGAM/ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitReverseGAM/ -LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAESDNTimeCompareGAM/ ### Add EPICS lib path LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH #LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/FilterDownsamplingGAM/ diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runECPCSub.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runECPCSub.sh old mode 100755 new mode 100644 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runEPICSTEST.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runEPICSTEST.sh old mode 100755 new mode 100644 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runHWTEST.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runHWTEST.sh old mode 100755 new mode 100644 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runMain.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runMain.sh old mode 100755 new mode 100644 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runMainB.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runMainB.sh old mode 100755 new mode 100644 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runNI6528TEST.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runNI6528TEST.sh old mode 100755 new mode 100644 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runTest.sh b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runTest.sh deleted file mode 100755 index f56837a..0000000 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/runTest.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -taskset -c 8-11 ./Main.sh -f ../Configurations/JAGyro_Test.cfg -l RealTimeLoader -m StateMachine:Start - diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test.py b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test.py index d4b76bb..82a2603 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test.py +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test.py @@ -60,7 +60,6 @@ while(1): 8: SYNC mode operation 9: GYA / Async mode --- operator set delay and pulse length on HMI 10: GYB / Async mode --- operator set delay and pulse length on HMI - 11: GYA / Async mode several times --- operator set delay and pulse length on HMI ''' inpval = raw_input() @@ -84,10 +83,8 @@ while(1): test_async.test_async_GYA_manual() elif inpval == "10": test_async.test_async_GYB_manual() - elif inpval == "11": - test_async.test_async_GYA_times() else: - print 'invalid value. Enter 1 to 11!' + print 'invalid value. Enter 1 to 10!' continue print '..... End of test code .....' diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.py b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.py index 0a78b0b..8f595b2 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.py +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.py @@ -147,7 +147,7 @@ def test_async_shortpulse(): res = subprocess.call('caput EC-GN-P01-PMF:STAT-DT-HVON 300', shell=True) res = subprocess.call('caput EC-GN-P01-PB1F:STAT-DT-SWON 400', shell=True) res = subprocess.call('caput EC-GN-P01-PA1F:STAT-DT-SWON 800', shell=True) #Should be grater than 1ms. - res = subprocess.call('caput EC-GN-P01-GAF:STAT-DT-SHOTLEN 100', shell=True) + res = subprocess.call('caput EC-GN-P01-GAF:STAT-DT-SHOTLEN 500', shell=True) print '2.Write PERMIT' res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 1', shell=True) res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 1', shell=True) @@ -412,43 +412,3 @@ def test_async_GYB_manual(): res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY2PRM.SVAL 0', shell=True) res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY2PRM 0', shell=True) print "end of async, non-prepro mode test!" - -def test_async_GYA_times(): - """" - Test GYA operation with Async mode several times. - """ - print '1.. Set delays and pulse length on HMI\n and set sleep time here:' - inp_val = raw_input() - try: - sleep_time = float(inp_val) - except: - return - print 'How many times is the pulse generated?' - times = raw_input() - for i in range(1, int(times) + 1): - # turn on permit - print '2.. set PulseLengthLimitMode to 1 flag' - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-MD1.SVAL 1', shell = True) - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-MD1 1', shell = True) - res = subprocess.call('caput EC-GN-P01-GPF:STAT-MD1-LIM 1000000', shell = True) - time.sleep(1) - print '3. Write PERMIT' - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 1', shell=True) - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 1', shell=True) - time.sleep(1) - # trun on HVON trigger - print '4. Write HVON' - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R.SVAL 1', shell=True) - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R 1', shell=True) #HVON signal from PLC - time.sleep(sleep_time) - print '5. Confirm generated pulse' - print '6. Reset HVON' - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R.SVAL 0', shell=True) - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R 0', shell=True) - time.sleep(1) - print '7. Reset PERMIT' - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 0', shell=True) - res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 0', shell=True) - print '%d times beam-on complete' % i - res = subprocess.call('caget EC-GN-P01-GAF:STAT-BEAMON-TIME >> BEAMON-TIME.log', shell=True) - print "end of async, non-prepro mode test!" diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.pyc b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.pyc index 1b54d6b8b58795f6706d8ca3b59aadc2243be0f1..f899918b0c2bf4fa267029b3508985b2028ac207 100644 GIT binary patch delta 91 zcmX>#pYi)dMrr2Hyj&YC855EjpnwTTI{&#zGM@#jxZ z8*tJzysu%m-;Yvn<1_FMU@HWS!2L`JaqADZ+T=rin}|0nfk{|9ULaQ|Ka$sTbJGkT zie$enGrov^>DmBb2+-Hy@Q^qfFfTYB=xHz{@;N@#puDp~`W|3Ds8k&u!}OUOeZWT0|&18ysC5Ij0zQV=yWwbUKVo$ z268{Ms@P4KQ=u~Zh11#RRhjEG6v*Px^MLX1^DUeiHN3FD2@hF9u1UlHn3TWfmRKre z4Qlh3{J?Ber`6$hK1i|IYa(4E4UB&1sW&(d%%w z+9DV!#uvB5&%*ZP-s(4UC4nT(PHfM(*~wX5+ORr%ZSHXUCXP1DCKuzx{9ocuocu diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_setup_hw.pyc b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_setup_hw.pyc index 0a43529627c0ca0bff1101b7db98fb842ba68775..67d714da04b47d36be6f0ed6c1082111b688cd07 100644 GIT binary patch delta 15 WcmaDL_CSn{`7(HighResolutionTimer::Counter() * HighResolutionTimer::Period() * 1e6f + 0.5f); ++} + /*---------------------------------------------------------------------------*/ + /* Method definitions */ + /*---------------------------------------------------------------------------*/ +@@ -64,7 +67,9 @@ + triggerDelay_shotlen = NULL_PTR(MARTe::uint32 *); + stopRequest = NULL_PTR(MARTe::uint32 *); + modePulseLengthLimit = NULL_PTR(MARTe::uint32 *); +- sdnCommand = NULL_PTR(MARTe::uint16 *); ++ Command = NULL_PTR(MARTe::uint16 *); ++ Command2 = NULL_PTR(MARTe::uint16 *); ++ sdnStatus = NULL_PTR(MARTe::uint8 *); + + // write out target. + outputSignal = NULL_PTR(MARTe::uint32 *); +@@ -81,6 +86,17 @@ + aps_swon_is_on = false; + bps_hvon_is_on = false; + bps_swon_is_on = false; ++ ++ sdnCommand = 0; ++ groupFix = 0; ++ ++ apsSwonHighResolutionTime = 0; ++ ++ aps_hvon_state=0; ++ aps_swon_state=0; ++ mhvps_hvon_state=0; ++ bps_hvon_state=0; ++ bps_swon_state=0; + } + + JASDNRTStateMachineGAM::~JASDNRTStateMachineGAM() { +@@ -135,21 +151,21 @@ + + bool JASDNRTStateMachineGAM::Setup() { + using namespace MARTe; +- bool ok = (numberOfInputSignals == 11u); ++ bool ok = (numberOfInputSignals == 13u); + if (ok) { +- ok = (numberOfOutputSignals == 8u); ++ ok = (numberOfOutputSignals == 15u); + if (!ok) { +- REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Seven output signals shall be defined"); ++ REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "15 output signals shall be defined"); + } + } + else { +- REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "Nine input signals shall be defined"); ++ REPORT_ERROR(MARTe::ErrorManagement::ParametersError, "13 input signals shall be defined"); + } + if (ok) { + uint32 c; + for (c = 0u; c < numberOfInputSignals; c++) { + TypeDescriptor inputType = GetSignalType(InputSignals, c); +- ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit); ++ ok = (inputType == UnsignedInteger32Bit || inputType == UnsignedInteger16Bit || inputType == UnsignedInteger8Bit); + if (!ok) { + StreamString signalName; + (void) GetSignalName(InputSignals, c, signalName); +@@ -162,7 +178,7 @@ + uint32 c; + for (c = 0u; c < numberOfOutputSignals; c++) { + TypeDescriptor outputType = GetSignalType(OutputSignals, c); +- ok = (outputType == UnsignedInteger32Bit); ++ ok = (outputType == UnsignedInteger32Bit || outputType == UnsignedInteger8Bit); + if (!ok) { + StreamString signalName; + (void) GetSignalName(InputSignals, c, signalName); +@@ -181,7 +197,9 @@ + triggerDelay_shotlen = reinterpret_cast(GetInputSignalMemory(7)); + stopRequest = reinterpret_cast(GetInputSignalMemory(8)); + modePulseLengthLimit = reinterpret_cast(GetInputSignalMemory(9)); +- sdnCommand = reinterpret_cast(GetInputSignalMemory(10)); ++ Command = reinterpret_cast(GetInputSignalMemory(10)); ++ Command2 = reinterpret_cast(GetInputSignalMemory(11)); ++ sdnStatus = reinterpret_cast(GetInputSignalMemory(12)); + + outputSignal = reinterpret_cast(GetOutputSignalMemory(0)); + outputBeamON = reinterpret_cast(GetOutputSignalMemory(1)); +@@ -191,6 +209,15 @@ + outputBeamONTime = reinterpret_cast(GetOutputSignalMemory(5)); + outputRFONTime = reinterpret_cast(GetOutputSignalMemory(6)); + shotCounter = reinterpret_cast(GetOutputSignalMemory(7)); ++ ++ outputAPSHVON = reinterpret_cast(GetOutputSignalMemory(8)); ++ outputAPSSWON = reinterpret_cast(GetOutputSignalMemory(9)); ++ outputBPSHVON = reinterpret_cast(GetOutputSignalMemory(10)); ++ outputBPSSWON = reinterpret_cast(GetOutputSignalMemory(11)); ++ outputMHVPSON = reinterpret_cast(GetOutputSignalMemory(12)); ++ ++ outputSignalNI6528P3 = reinterpret_cast(GetOutputSignalMemory(13)); ++ outputSignalNI6528P4 = reinterpret_cast(GetOutputSignalMemory(14)); + *shotCounter = 0; + } + return ok; +@@ -198,11 +225,19 @@ + + bool JASDNRTStateMachineGAM::Execute() { + using namespace MARTe; ++ if (!groupFix && (*triggerSignal != false)) { ++ sdnCommand = (1 - *sdnStatus)*(*Command) + (*sdnStatus)*(*Command2); ++ groupFix = 1; ++ sdnStatusFix = *sdnStatus; ++ } ++ else { ++ sdnCommand = (1 - sdnStatusFix)*(*Command) + sdnStatusFix*(*Command2); ++ } + if (currentState == WaitTrigger) { + + //State Transition condition + if ((*triggerSignal == conditionTrigger)) { +- REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode."); ++ //REPORT_ERROR(ErrorManagement::Debug, "Start beam-on sequence in SDN mode."); + plcOnTime = *currentTime; //Save pulse start time. + *outputBeamON = 0; + //State transition. +@@ -213,20 +248,22 @@ + + //Actions in this state. + if (*stopRequest != 0 || *triggerSignal != conditionTrigger) { +- *outputSignal -= aps_swon; ++ *outputSignal = 0; + currentState = HVTerminate; + } + if (*currentTime >= (plcOnTime + *triggerDelay_bps_hvon) && bps_hvon_is_on == false){ + //Do action + *outputSignal += bps_hvon; +- bps_hvon_is_on = true; +- REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); ++ bps_hvon_is_on = true; bps_hvon_state=1; ++ //REPORT_ERROR(ErrorManagement::Debug, "bps_hvon was set to outputSignal at %d.", *currentTime); ++ *outputBPSHVON=1; + } + if (*currentTime >= (plcOnTime + *triggerDelay_aps_hvon) && aps_hvon_is_on == false) { + //Do action + *outputSignal += aps_hvon; +- aps_hvon_is_on = true; +- REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal."); ++ aps_hvon_is_on = true; aps_hvon_state=1; ++ //REPORT_ERROR(ErrorManagement::Debug, "aps_hvon was set to outputSignal."); ++ *outputAPSHVON=1; + } + + *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. +@@ -242,7 +279,7 @@ + *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. + + // State change conditions +- if (*sdnCommand == 1){ ++ if (sdnCommand == 1){ + sdnTriggerTime = *currentTime; + currentState = SwitchingHVPS_SWON; + } +@@ -262,68 +299,80 @@ + if (*currentTime >= (sdnTriggerTime + *triggerDelay_bps_swon) && bps_swon_is_on==false){ + //Do action + *outputSignal += bps_swon; +- bps_swon_is_on = true; +- REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); ++ bps_swon_is_on = true; bps_swon_state=1; ++ //REPORT_ERROR(ErrorManagement::Debug, "bps_swon was set to outputSignal at %d.", *currentTime); ++ *outputBPSSWON=1; + } + if (*currentTime >= (sdnTriggerTime + *triggerDelay_mhvps_hvon) && mhvps_hvon_is_on==false) { + //Do action + *outputSignal += mhvps_hvon; +- mhvps_hvon_is_on = true; +- REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); ++ mhvps_hvon_is_on = true; mhvps_hvon_state=1; ++ //REPORT_ERROR(ErrorManagement::Debug, "mhvps_hvon was set to outputSignal at %d.", *currentTime); ++ *outputMHVPSON=1; + } + if (bps_swon_is_on && mhvps_hvon_is_on && *currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon)){ + //Do action + *outputSignal += aps_swon; +- aps_swon_is_on = true; ++ aps_swon_is_on = true; aps_swon_state=1; ++ apsSwonHighResolutionTime = getCurrentTimeUs(); + apsSwonTime = *currentTime; +- REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); ++ //REPORT_ERROR(ErrorManagement::Debug, "aps_swon was set to outputSignal at %d.", *currentTime); ++ *outputAPSSWON=1; + } + *outputBeamONTime = *currentTime - plcOnTime; //Save RFON start time. + + if (bps_swon_is_on || mhvps_hvon_is_on){ +- *outputHVInjection = 0; ++ *outputHVInjection = 1; + } + + //State transition condition + if (aps_swon_is_on){ + currentState = RFON; + *outputRFON = 0; ++ *outputBeamON = 1; + *shotCounter += 1; +- REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); ++ //REPORT_ERROR(ErrorManagement::Debug, "state was changed to RFON"); + } + } + else if (currentState == RFON) { + + //SDN command processing. +- if (*sdnCommand == 4 && aps_swon_is_on) { ++ if (sdnCommand == 4 && aps_swon_is_on) { + *outputSignal -= aps_swon; +- aps_swon_is_on = false; +- REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4"); ++ aps_swon_is_on = false; aps_swon_state=0; ++ //REPORT_ERROR(ErrorManagement::Debug, "sdn command was 4"); ++ *outputAPSSWON=0; + } +- if (*sdnCommand == 3 && !aps_swon_is_on) { ++ if (sdnCommand == 3 && !aps_swon_is_on) { + *outputSignal += aps_swon; +- aps_swon_is_on = true; +- REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3"); ++ aps_swon_is_on = true; aps_swon_state=0; ++ //REPORT_ERROR(ErrorManagement::Debug, "sdn command was 3"); ++ *outputAPSSWON=1; + } + + //Action in this state. +- if ((*sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) { +- REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen); +- if (*sdnCommand == 2) { +- REPORT_ERROR(ErrorManagement::Information, "sdn command was 2"); ++ if ((sdnCommand == 2) || (*modePulseLengthLimit == 1u) || (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen))) { ++ //REPORT_ERROR(ErrorManagement::Debug, "shotlen: %d", *triggerDelay_shotlen); ++ if (sdnCommand == 2) { ++ //REPORT_ERROR(ErrorManagement::Information, "sdn command was 2"); + } else if (*currentTime >= (sdnTriggerTime + *triggerDelay_aps_swon + *triggerDelay_shotlen)){ +- REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint."); ++ //REPORT_ERROR(ErrorManagement::Information, "pulse length reached setpoint."); + } + //Do action + *outputSignal -= aps_swon; //Turn off only aps_swon + mhvps_hvon_is_on = false; + aps_hvon_is_on = false; +- aps_swon_is_on = false; ++ aps_swon_is_on = false; aps_swon_state=0; + bps_hvon_is_on = false; + bps_swon_is_on = false; +- REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); ++ *outputAPSHVON=0; ++ *outputAPSSWON=0; ++ *outputBPSHVON=0; ++ *outputBPSSWON=0; ++ *outputMHVPSON=0; ++ //REPORT_ERROR(ErrorManagement::Debug, "0 was set to outputSignal at %d.", *currentTime); + } +- *outputRFON = 0; ++ *outputRFON = 1; + *outputBeamONTime = *currentTime - plcOnTime; + *outputRFONTime = *currentTime - apsSwonTime; + +@@ -332,29 +381,37 @@ + if (!aps_swon_is_on && !bps_swon_is_on && !mhvps_hvon_is_on) { + currentState = HVTerminate; + apsSwoffTime = *currentTime; +- REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate"); ++ //REPORT_ERROR(ErrorManagement::Information, "state was changed to HVTerminate"); + } + } + else if (currentState == HVTerminate) { + + //Action in this state. +- *outputBeamON = 1; +- *outputHVArmed = 1; +- *outputHVInjection = 1; +- *outputRFON = 1; ++ *outputBeamON = 0; ++ *outputHVArmed = 0; ++ *outputHVInjection = 0; ++ *outputRFON = 0; + + // State transition condition. + if (*currentTime - apsSwoffTime >= turn_off_delay){ + *outputSignal = 0; ++ mhvps_hvon_state=0; ++ aps_hvon_state=0; ++ bps_hvon_state=0; ++ bps_swon_state=0; + } + if (*triggerSignal == false){ + //Check PLC_ON is reset + currentState = WaitTrigger; + *outputSignal = 0; +- REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger"); ++ groupFix = 0; ++ //REPORT_ERROR(ErrorManagement::Debug, "state was changed to WaitTrigger"); + } + } +- ++ p3Value = 1*aps_hvon_state +2*aps_swon_state + 8*bps_hvon_state +16*bps_swon_state + 64*(*outputBeamON); ++ *outputSignalNI6528P3 = ~p3Value; ++ p4Value = 8*mhvps_hvon_state; ++ *outputSignalNI6528P4 = ~p4Value; + return true; + } + +diff -urh qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h +--- qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h 2020-04-17 12:27:42.000000000 +0000 ++++ /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/JASDNRTStateMachineGAM/JASDNRTStateMachineGAM.h 2025-11-19 10:46:27.601652059 +0000 +@@ -92,10 +92,18 @@ + * DataSource = DDB1 + * Type = uint32 + * } +- * Command = { ++ * Command = {//from packet x + * DataSource = RealTimeThreadAsyncBridge + * Type = uint16 + * } ++ * Command2 = {//from packet y ++ * DataSource = RealTimeThreadAsyncBridge ++ * Type = uint16 ++ * } ++ * ESDNStatus = {// 0 or 1. If 0, packet x is used, elif 1, packet y is used. ++ * DataSource = RealTimeThreadAsyncBridge ++ * Type = uint8 ++ * } + * } + * OutputSignals = { + * Value = { +@@ -199,8 +207,12 @@ + MARTe::uint32 *stopRequest; + // Input signal for pulse length limit by mode. + MARTe::uint32 *modePulseLengthLimit; +- // Input signal for SDN commands. +- MARTe::uint16 *sdnCommand; ++ // Input signal for SDN commands from packet x. ++ MARTe::uint16 *Command; ++ // Input signal for SDN commands from packet y. ++ MARTe::uint16 *Command2; ++ // Input signal for SDN status. ++ MARTe::uint8 *sdnStatus; + + ///////////////////////////////////////////////////////////// + // Output signal to which the output value will be written. +@@ -217,6 +229,17 @@ + MARTe::uint32 *outputRFONTime; + // shot counter (coutup every RFON time.) + MARTe::uint32 *shotCounter; ++ ++ // Added for HVPS state (20210602) ++ MARTe::uint32 *outputAPSHVON; ++ MARTe::uint32 *outputAPSSWON; ++ MARTe::uint32 *outputBPSHVON; ++ MARTe::uint32 *outputBPSSWON; ++ MARTe::uint32 *outputMHVPSON; ++ ++ // Output signals for NI devices ++ MARTe::uint8 *outputSignalNI6528P3; ++ MARTe::uint8 *outputSignalNI6528P4; + + ////////////////////////////// + //Internal Parameters +@@ -226,6 +249,7 @@ + //APS_SWON time holder + MARTe::uint32 apsSwonTime; + MARTe::uint32 apsSwoffTime; ++ MARTe::uint64 apsSwonHighResolutionTime; + + //PS turn off delay + MARTe::uint32 turn_off_delay; +@@ -239,6 +263,22 @@ + bool bps_hvon_is_on; + bool bps_swon_is_on; + ++ //command x or y ++ MARTe::uint16 sdnCommand; ++ //packet group must not be changed during real time operation ++ MARTe::uint16 groupFix; //0: packet group is not fixed yet, 1: fixed. ++ //when packet group is fixed, sdnStatus is copied to this variable. ++ MARTe::uint8 sdnStatusFix; ++ ++ // terminal values ++ MARTe::uint8 p3Value; ++ MARTe::uint8 p4Value; ++ MARTe::uint8 aps_hvon_state; ++ MARTe::uint8 aps_swon_state; ++ MARTe::uint8 mhvps_hvon_state; ++ MARTe::uint8 bps_hvon_state; ++ MARTe::uint8 bps_swon_state; ++ + }; + + +diff -urh qst-gyrotron-fast-controller/GAMs/Makefile.inc /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/Makefile.inc +--- qst-gyrotron-fast-controller/GAMs/Makefile.inc 2020-04-17 12:27:42.000000000 +0000 ++++ /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/GAMs/Makefile.inc 2025-11-19 10:46:27.294720459 +0000 +@@ -27,7 +27,8 @@ + SPB = JAMessageGAM.x JAPreProgrammedGAM.x JAModeControlGAM.x \ + JAWFRecordGAM.x JATriangleWaveGAM.x JARampupGAM.x \ + JARTStateMachineGAM.x JASDNRTStateMachineGAM.x JATerminalInterfaceGAM.x \ +- JABitSumGAM.x JAConditionalSignalUpdateGAM.x JASourceChoiseGAM.x JABitReverseGAM.x ++ JABitSumGAM.x JAConditionalSignalUpdateGAM.x JASourceChoiseGAM.x JABitReverseGAM.x \ ++ JAESDNTimeCompareGAM.x + + MAKEDEFAULTDIR=$(MARTe2_DIR)/MakeDefaults + +diff -urh qst-gyrotron-fast-controller/Startup/Main.sh /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh +--- qst-gyrotron-fast-controller/Startup/Main.sh 2020-04-17 12:27:42.000000000 +0000 ++++ /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup/Main.sh 2025-11-19 10:46:23.325324123 +0000 +@@ -123,6 +123,7 @@ + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitSumGAM/ + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JASourceChoiseGAM/ + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitReverseGAM/ ++LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAESDNTimeCompareGAM/ + ### Add EPICS lib path + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH + #LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/FilterDownsamplingGAM/ +Only in /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Startup: runTest.sh +diff -urh qst-gyrotron-fast-controller/Test_P01/test_async.py /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.py +--- qst-gyrotron-fast-controller/Test_P01/test_async.py 2021-01-27 15:07:08.000000000 +0000 ++++ /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.py 2025-11-19 10:46:27.693725879 +0000 +@@ -147,7 +147,7 @@ + res = subprocess.call('caput EC-GN-P01-PMF:STAT-DT-HVON 300', shell=True) + res = subprocess.call('caput EC-GN-P01-PB1F:STAT-DT-SWON 400', shell=True) + res = subprocess.call('caput EC-GN-P01-PA1F:STAT-DT-SWON 800', shell=True) #Should be grater than 1ms. +- res = subprocess.call('caput EC-GN-P01-GAF:STAT-DT-SHOTLEN 500', shell=True) ++ res = subprocess.call('caput EC-GN-P01-GAF:STAT-DT-SHOTLEN 100', shell=True) + print '2.Write PERMIT' + res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 1', shell=True) + res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 1', shell=True) +@@ -412,3 +412,43 @@ + res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY2PRM.SVAL 0', shell=True) + res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY2PRM 0', shell=True) + print "end of async, non-prepro mode test!" ++ ++def test_async_GYA_times(): ++ """" ++ Test GYA operation with Async mode several times. ++ """ ++ print '1.. Set delays and pulse length on HMI\n and set sleep time here:' ++ inp_val = raw_input() ++ try: ++ sleep_time = float(inp_val) ++ except: ++ return ++ print 'How many times is the pulse generated?' ++ times = raw_input() ++ for i in range(1, int(times) + 1): ++ # turn on permit ++ print '2.. set PulseLengthLimitMode to 1 flag' ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-MD1.SVAL 1', shell = True) ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-MD1 1', shell = True) ++ res = subprocess.call('caput EC-GN-P01-GPF:STAT-MD1-LIM 1000000', shell = True) ++ time.sleep(1) ++ print '3. Write PERMIT' ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 1', shell=True) ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 1', shell=True) ++ time.sleep(1) ++ # trun on HVON trigger ++ print '4. Write HVON' ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R.SVAL 1', shell=True) ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R 1', shell=True) #HVON signal from PLC ++ time.sleep(sleep_time) ++ print '5. Confirm generated pulse' ++ print '6. Reset HVON' ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R.SVAL 0', shell=True) ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-YTS-ST3R 0', shell=True) ++ time.sleep(1) ++ print '7. Reset PERMIT' ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM.SVAL 0', shell=True) ++ res = subprocess.call('caput EC-GN-P01-GPS:PLC4110-CON-GY1PRM 0', shell=True) ++ print '%d times beam-on complete' % i ++ res = subprocess.call('caget EC-GN-P01-GAF:STAT-BEAMON-TIME >> BEAMON-TIME.log', shell=True) ++ print "end of async, non-prepro mode test!" +Binary files qst-gyrotron-fast-controller/Test_P01/test_async.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_async.pyc differ +diff -urh qst-gyrotron-fast-controller/Test_P01/test.py /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test.py +--- qst-gyrotron-fast-controller/Test_P01/test.py 2021-01-15 01:52:26.000000000 +0000 ++++ /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test.py 2025-11-19 10:46:27.735530475 +0000 +@@ -60,6 +60,7 @@ + 8: SYNC mode operation + 9: GYA / Async mode --- operator set delay and pulse length on HMI + 10: GYB / Async mode --- operator set delay and pulse length on HMI ++ 11: GYA / Async mode several times --- operator set delay and pulse length on HMI + ''' + inpval = raw_input() + +@@ -83,8 +84,10 @@ + test_async.test_async_GYA_manual() + elif inpval == "10": + test_async.test_async_GYB_manual() ++ elif inpval == "11": ++ test_async.test_async_GYA_times() + else: +- print 'invalid value. Enter 1 to 10!' ++ print 'invalid value. Enter 1 to 11!' + continue + + print '..... End of test code .....' +Binary files qst-gyrotron-fast-controller/Test_P01/test_ready_hw.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_ready_hw.pyc differ +Binary files qst-gyrotron-fast-controller/Test_P01/test_ready.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_ready.pyc differ +Binary files qst-gyrotron-fast-controller/Test_P01/test_setup_hw.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_setup_hw.pyc differ +Binary files qst-gyrotron-fast-controller/Test_P01/test_setup.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_setup.pyc differ +Binary files qst-gyrotron-fast-controller/Test_P01/test_standby_hw.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_standby_hw.pyc differ +Binary files qst-gyrotron-fast-controller/Test_P01/test_standby.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_standby.pyc differ +Binary files qst-gyrotron-fast-controller/Test_P01/test_sync.pyc and /mnt/ITER/ferrog/MARTe2Project/GIT/ec-gn-ja-pcf/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Test_P01/test_sync.pyc differ diff --git a/ec-gn-ja-pcf-sdd-in b/ec-gn-ja-pcf-sdd-in index a2882e7..3f4ff00 160000 --- a/ec-gn-ja-pcf-sdd-in +++ b/ec-gn-ja-pcf-sdd-in @@ -1 +1 @@ -Subproject commit a2882e7a5c4f80bf14d08c7ca9dec8dd86522efc +Subproject commit 3f4ff00ac541985359a9fea0f90c1bb7caa72d6e