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;
+ }
}
}