From 523138d8649666a52fff3a16bfedda00d475e445 Mon Sep 17 00:00:00 2001 From: Andreas Hanslovsky <116063959+AHanslovsky@users.noreply.github.com> Date: Wed, 5 Feb 2025 12:46:11 +0100 Subject: [PATCH 1/2] VaporPhaseSoldering data structure --- .../VaporPhaseSolderingProcessAbort.cs | 22 ++ .../VaporPhaseSolderingProcessData.cs | 203 ++++++++++++++++++ .../VaporPhaseSolderingProcessStep.cs | 52 +++++ .../VaporPhaseSolderingProcessStepState.cs | 20 ++ .../VaporPhaseSolderingProcessStepType.cs | 16 ++ 5 files changed, 313 insertions(+) create mode 100644 CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessAbort.cs create mode 100644 CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs create mode 100644 CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs create mode 100644 CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepState.cs create mode 100644 CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepType.cs diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessAbort.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessAbort.cs new file mode 100644 index 00000000..cf687249 --- /dev/null +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessAbort.cs @@ -0,0 +1,22 @@ +namespace CFX.Structures.VaporPhaseSoldering +{ + /// + /// Vapor Phase Soldering Process Abort + /// ** NOTE: ADDED in CFX 2.0 ** + /// + [CFX.Utilities.CreatedVersion("2.0")] + public class VaporPhaseSolderingProcessAbort + { + public bool IsAborted + { + get; + set; + } + + public string Reason + { + get; + set; + } + } +} diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs new file mode 100644 index 00000000..b4fcd195 --- /dev/null +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs @@ -0,0 +1,203 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CFX.Structures.VaporPhaseSoldering +{ + /// Top View: + /// + /// HeaterSideBack + /// | + /// v + /// _________________________________________________ + /// | | + /// | | + /// | | + /// HeaterSideInlet -> | | <- HeaterSideOutlet + /// | | + /// | | + /// |_________________________________________________| + /// ^ + /// | + /// HeaterSideFront + /// + /// O + /// /|\ (user view) + /// / \ + /// + /// + /// Front View: + /// + /// HeaterChamberTop + /// | + /// v + /// _________________________________________________ + /// | | + /// | | + /// | O | + /// HeaterSideInlet -> | /|\ (user view) | <- HeaterSideOutlet + /// | / \ | + /// | | + /// |_________________________________________________| + /// ^ ^ ^ ^ + /// | | | | + /// Heaters Bottom + /// + /// + /// + /// + /// + /// Vapor Phase Soldering Process Data + /// + /// ** NOTE: ADDED in CFX 2.0 ** + /// + [CFX.Utilities.CreatedVersion("2.0")] + public class VaporPhaseSolderingProcessData : ProcessData + { + /// + /// Default Constructor + /// + public VaporPhaseSolderingProcessData() + { + this.VaporPhaseSolderingProcessAbort = new VaporPhaseSolderingProcessAbort(); + } + + /// + /// Proces abort + /// + public VaporPhaseSolderingProcessAbort VaporPhaseSolderingProcessAbort + { + get; + set; + } + + /// + /// Temperature floor 1 + /// + public NumericMeasurement HeaterBottom1 + { + get; + set; + } + + /// + /// Temperature floor 2 + /// + public NumericMeasurement HeaterBottom2 + { + get; + set; + } + + /// + /// Temperature floor 3 + /// + public NumericMeasurement HeaterBottom3 + { + get; + set; + } + + /// + /// Temperature floor 4 + /// + public NumericMeasurement HeaterBottom4 + { + get; + set; + } + + /// + /// Temperature left outlet + /// + public NumericMeasurement HeaterSideOutlet + { + get; + set; + } + + /// + /// Temperature right inlet + /// + public NumericMeasurement HeaterSideInlet + { + get; + set; + } + + + /// + /// Temperature front + /// + public NumericMeasurement HeaterSideFront + { + get; + set; + } + + /// + /// Temperature back + /// + public NumericMeasurement HeaterSideBack + { + get; + set; + } + + /// + /// Temperatur process chamber + /// + public NumericMeasurement HeaterChamberTop + { + get; + set; + } + + /// + /// PWI + /// + public NumericMeasurement ProcessWindowIndex + { + get; + set; + } + + /// + /// injection quantity evaluation + /// + public NumericMeasurement GaldenInjectionQuantity + { + get; + set; + } + + /// + /// Step 1-30 Status with evaluation (sucess, fail, warning, inactive) = 30 process steps. + /// + public List VaporPhaseSolderingProcessSteps + { + get; + set; + } + + /// + /// Maximum temperature + /// + public NumericValue MaximumTemperature + { + get; + set; + } + + /// + /// Smallest air-pressure of the chamber + /// + public NumericValue SmallestChamberPressure + { + get; + set; + } + } +} diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs new file mode 100644 index 00000000..ee3e17ed --- /dev/null +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs @@ -0,0 +1,52 @@ +/* +ASCII Representation of the Process Steps: + ++-------------------+ +-------------------+ +-------------------+ +-------------------+ +| Step Number: 1 | ---> | Step Number: 2 | ---> | Step Number: 3 | ---> | Step Number: 4 | +| Step ID: 4 | | Step ID: 3 | | Step ID: 2 | | Step ID: 1 | +| | | | | | | | ++-------------------+ +-------------------+ +-------------------+ +-------------------+ + +Explanation: +- StepNumber: Represents the actual execution order (1, 2, 3, 4). +- StepId: A unique identifier for each step (4, 3, 2, 1), which may differ from the execution order. +*/ + +using System; +using System.Collections.Generic; +using System.Text; + +namespace CFX.Structures.VaporPhaseSoldering +{ + /// + /// Vapor Phase Soldering Process Step + /// ** NOTE: ADDED in CFX 2.0 ** + /// + [CFX.Utilities.CreatedVersion("2.0")] + public class VaporPhaseSolderingProcessStep + { + public int StepNumber // 1, 2, 3, 4 - Actual execution order + { + get; + set; + } + + public string StepId // 4, 3, 1, 2 - Unique identifier for each step + { + get; + set; + } + + public VaporPhaseSolderingProcessStepType StepType + { + get; + set; + } + + public VaporPhaseSolderingProcessStepState StepState + { + get; + set; + } + } +} diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepState.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepState.cs new file mode 100644 index 00000000..d9bdeaee --- /dev/null +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepState.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CFX.Structures.VaporPhaseSoldering +{ + /// + /// An enumeration indicating whether the vapor phase soldering process step was executeded sucessfully. + /// ** NOTE: ADDED in CFX 2.0 ** + /// + [CFX.Utilities.CreatedVersion("2.0")] + + public enum VaporPhaseSolderingProcessStepState + { + Success, + Failed, + Warning, + Inactive + } +} diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepType.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepType.cs new file mode 100644 index 00000000..8c103a00 --- /dev/null +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStepType.cs @@ -0,0 +1,16 @@ +namespace CFX.Structures.VaporPhaseSoldering +{ + + /// + /// An enumeration indicating which type of process was executed in a vapor phase soldering machine step. + /// ** NOTE: ADDED in CFX 2.0 ** + /// + [CFX.Utilities.CreatedVersion("2.0")] + public enum VaporPhaseSolderingProcessStepType + { + Vacuum, + Vent, + Inject, + Exhaust + } +} From 53cc76b1d30a6935bbe22a8f7fb2d948bb83fa5f Mon Sep 17 00:00:00 2001 From: Andreas Hanslovsky <116063959+AHanslovsky@users.noreply.github.com> Date: Mon, 16 Jun 2025 07:21:31 +0200 Subject: [PATCH 2/2] Add VaporPhaseSoldering step details and cooling step details Add VaporPhaseSoldering step details Pressure InjectionAmount EndTempertaur VacuumTime HoldingTime Added cooling step details. --- .../VaporPhaseSolderingProcessData.cs | 70 +++++++++++++++---- .../VaporPhaseSolderingProcessStep.cs | 45 ++++++++++++ 2 files changed, 103 insertions(+), 12 deletions(-) diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs index b4fcd195..5ac6ffd1 100644 --- a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessData.cs @@ -156,7 +156,8 @@ public NumericMeasurement HeaterChamberTop } /// - /// PWI + /// Process Window Index (PWI) (0-100%) - a value of 100 means that the process is perfect, a value of 0 means that the process is not acceptable. + /// The PWI is calculated based on the process chamber monitoring of the temperature. /// public NumericMeasurement ProcessWindowIndex { @@ -164,15 +165,6 @@ public NumericMeasurement ProcessWindowIndex set; } - /// - /// injection quantity evaluation - /// - public NumericMeasurement GaldenInjectionQuantity - { - get; - set; - } - /// /// Step 1-30 Status with evaluation (sucess, fail, warning, inactive) = 30 process steps. /// @@ -183,7 +175,7 @@ public List VaporPhaseSolderingProcessSteps } /// - /// Maximum temperature + /// Maximum temperature of the chamber. /// public NumericValue MaximumTemperature { @@ -192,12 +184,66 @@ public NumericValue MaximumTemperature } /// - /// Smallest air-pressure of the chamber + /// Smallest air-pressure of the chamber. /// public NumericValue SmallestChamberPressure { get; set; } + + /// + /// Cooling duration of the first step in seconds. + /// + public NumericValue CoolingDurationStep1 + { + get; + set; + } + + /// + /// Cooling frequency of the first step in hz. + /// + public NumericValue CoolingFrequencyStep1Top + { + get; + set; + } + + /// + /// Cooling frequency of the second step in hz. + /// + public NumericValue CoolingFrequencyStep1Bottom + { + get; + set; + } + + /// + /// Cooling duration of the second step in seconds. + /// + public NumericValue CoolingDurationStep2 + { + get; + set; + } + + /// + /// Cooling frequency of the first step in hz. + /// + public NumericValue CoolingFrequencyStep2Top + { + get; + set; + } + + /// + /// Cooling frequency of the second step in hz. + /// + public NumericValue CoolingFrequencyStep2Bottom + { + get; + set; + } } } diff --git a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs index ee3e17ed..7d01a780 100644 --- a/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs +++ b/CFX/Structures/VaporPhaseSoldering/VaporPhaseSolderingProcessStep.cs @@ -48,5 +48,50 @@ public VaporPhaseSolderingProcessStepState StepState get; set; } + + /// + /// Pressure in the vapor phase soldering machine during this step (mbar). + /// + public NumericMeasurement Pressure + { + get; + set; + } + + /// + /// Amount of galden to be injected during this step (ml). + /// + public NumericMeasurement InjectionAmount + { + get; + set; + } + + /// + /// Temperature at the end of this step (celsius). + /// + public NumericMeasurement EndTempertaur + { + get; + set; + } + + /// + /// Vacuum buildup time. + /// + public NumericMeasurement VacuumTime + { + get; + set; + } + + /// + /// Holding time after step is comleted. + /// + public NumericMeasurement HoldingTime + { + get; + set; + } } }