Browse Source

1.修改LE offset配置
2.修改ABCD->R1R2R3R4
3.修改EVT报警

JET-YDB\JET-YANGDB 4 days ago
parent
commit
00eeeeef90

+ 2 - 2
RecipeEditorControl/View/EndPointDlg.xaml.cs

@@ -82,7 +82,7 @@ namespace Aitex.UI.RecipeEditor.View
         {
             if (sender is TextBox txt)
             {
-                var regionList = new List<string> { "A", "B", "C", "D"};
+                var regionList = new List<string> { "R1", "R2", "R3", "R4"};
                 var input = new ExpressionWindow(txt, regionList);
                 input.Show();
             }
@@ -92,7 +92,7 @@ namespace Aitex.UI.RecipeEditor.View
         {
             if (sender is TextBox txt)
             {
-                var regionList = new List<string> { "A", "B", "C", "D" };
+                var regionList = new List<string> { "R1", "R2", "R3", "R4" };
                 var res = ExpressionWindow.TransExpression(txt.Text, regionList);
                 txt.Foreground = res ? Brushes.Black : Brushes.Red;
             }

+ 38 - 38
VirgoRT/Config/System.sccfg

@@ -340,7 +340,7 @@
 		</configs>
 		<configs name="Pump" nameView="Pump" >
 			<config default="30" name="LeakRate" nameView="Leak Rate" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Double" />
-			<config default="180" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
+			<config default="180" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="9000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="180" name="LeakCheckWaitTime" nameView="Leak Check Wait Time" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="150" name="PumpBasePressure" nameView="Pump Base Pressure" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="120" name="PumpTimeLimit" nameView="Pump Time Limit" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Double" />
@@ -364,24 +364,24 @@
       <config default="10" name="HeaterWarningTime" nameView="Heater Deviation Warning Time" description="" max="3600" min="0" paramter="" tag="" unit="s" type="Integer" />
       <config default="0" name="MonitorTcFeedbackOffset" nameView="Monitor Tc Feedback Offset" description="" max="5" min="-5" paramter="" tag="" unit="℃" type="Double" visible="false"/>
       <config default="0" name="ControlTcFeedbackOffset" nameView="Control Tc Feedback Offset" description="" max="5" min="-5" paramter="" tag="" unit="℃" type="Double" visible="false"/>
-      <config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="Temp Offset Point 1" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="Offset Value 1" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="Temp Offset Point 2" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="Offset Value 2" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="Temp Offset Point 3" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="Offset Value 3" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="Temp Offset Point 4" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="Offset Value 4" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="Temp Offset Point 5" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="Offset Value 5" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="Temp Offset Point 6" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="Offset Value 6" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="Temp Offset Point 7" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="Offset Value 7" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="Temp Offset Point 8" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="Offset Value 8" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="Temp Offset Point 9" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="Offset Value 9" unit="degree" type="Double" max="300" min="0" visible="false"/>
+      <config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="Temp Offset Point 1" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_1" nameView="Offset Value 1" description="Offset Value 1" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="Temp Offset Point 2" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_2" nameView="Offset Value 2" description="Offset Value 2" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="Temp Offset Point 3" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_3" nameView="Offset Value 3" description="Offset Value 3" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="Temp Offset Point 4" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_4" nameView="Offset Value 4" description="Offset Value 4" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="Temp Offset Point 5" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_5" nameView="Offset Value 5" description="Offset Value 5" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="Temp Offset Point 6" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_6" nameView="Offset Value 6" description="Offset Value 6" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="Temp Offset Point 7" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_7" nameView="Offset Value 7" description="Offset Value 7" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="Temp Offset Point 8" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_8" nameView="Offset Value 8" description="Offset Value 8" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="Temp Offset Point 9" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_9" nameView="Offset Value 9" description="Offset Value 9" unit="degree" type="Double" max="300" min="0"/>
 		</configs>
     <configs name="WallHeater" nameView="Heater Wall" >
       <config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="" min="" paramter="" tag="" unit="" type="Bool" />
@@ -749,7 +749,7 @@
 		</configs>
 		<configs name="Pump" nameView="Pump" >
 			<config default="30" name="LeakRate" nameView="Leak Rate" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Double" />
-			<config default="180" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
+			<config default="180" name="LeakCheckPumpingTime" nameView="Leak Check Pumping Time" description="" max="9000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="180" name="LeakCheckWaitTime" nameView="Leak Check Wait Time" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<config default="150" name="PumpBasePressure" nameView="Pump Base Pressure" description="" max="756000" min="0" paramter="" tag="" unit="mTorr" type="Integer" />
 			<config default="120" name="PumpTimeLimit" nameView="Pump Time Limit" description="" max="3000" min="0" paramter="" tag="" unit="s" type="Double" />
@@ -774,24 +774,24 @@
       <config default="0" name="MonitorTcFeedbackOffset" nameView="Monitor Tc Feedback Offset" description="" max="5" min="-5" paramter="" tag="" unit="℃" type="Double" visible="false"/>
       <config default="0" name="ControlTcFeedbackOffset" nameView="Control Tc Feedback Offset" description="" max="5" min="-5" paramter="" tag="" unit="℃" type="Double" visible="false"/>
 
-      <config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="Temp Offset Point 1" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_1" nameView="Offset Value 1" description="Offset Value 1" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="Temp Offset Point 2" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_2" nameView="Offset Value 2" description="Offset Value 2" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="Temp Offset Point 3" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_3" nameView="Offset Value 3" description="Offset Value 3" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="Temp Offset Point 4" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_4" nameView="Offset Value 4" description="Offset Value 4" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="Temp Offset Point 5" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_5" nameView="Offset Value 5" description="Offset Value 5" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="Temp Offset Point 6" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_6" nameView="Offset Value 6" description="Offset Value 6" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="Temp Offset Point 7" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_7" nameView="Offset Value 7" description="Offset Value 7" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="Temp Offset Point 8" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_8" nameView="Offset Value 8" description="Offset Value 8" unit="degree" type="Double" max="300" min="0" visible="false"/>
-			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="Temp Offset Point 9" unit="degree" type="Integer" max="300" min="0" visible="false"/>
-			<config name="OffsetValue_9" nameView="Offset Value 9" description="Offset Value 9" unit="degree" type="Double" max="300" min="0" visible="false"/>
+      <config name="TempOffsetPoint_1" nameView="Temp Offset Point 1" description="Temp Offset Point 1" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_1" nameView="Offset Value 1" description="Offset Value 1" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_2" nameView="Temp Offset Point 2" description="Temp Offset Point 2" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_2" nameView="Offset Value 2" description="Offset Value 2" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_3" nameView="Temp Offset Point 3" description="Temp Offset Point 3" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_3" nameView="Offset Value 3" description="Offset Value 3" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_4" nameView="Temp Offset Point 4" description="Temp Offset Point 4" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_4" nameView="Offset Value 4" description="Offset Value 4" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_5" nameView="Temp Offset Point 5" description="Temp Offset Point 5" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_5" nameView="Offset Value 5" description="Offset Value 5" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_6" nameView="Temp Offset Point 6" description="Temp Offset Point 6" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_6" nameView="Offset Value 6" description="Offset Value 6" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_7" nameView="Temp Offset Point 7" description="Temp Offset Point 7" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_7" nameView="Offset Value 7" description="Offset Value 7" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_8" nameView="Temp Offset Point 8" description="Temp Offset Point 8" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_8" nameView="Offset Value 8" description="Offset Value 8" unit="degree" type="Double" max="300" min="0"/>
+			<config name="TempOffsetPoint_9" nameView="Temp Offset Point 9" description="Temp Offset Point 9" unit="degree" type="Integer" max="300" min="0"/>
+			<config name="OffsetValue_9" nameView="Offset Value 9" description="Offset Value 9" unit="degree" type="Double" max="300" min="0"/>
 		</configs>
     <configs name="WallHeater" nameView="Heater Wall" >
       <config default="false" name="HeaterEnableTolerance" nameView="Enable Heater Deviation Check" description="" max="" min="" paramter="" tag="" unit="" type="Bool" />

+ 13 - 13
VirgoRT/Devices/EFEM/Efem.cs

@@ -83,13 +83,13 @@ namespace VirgoRT.Devices.EFEM
                 {
                     EV.Notify(CassetteDoorOpen);
 
-                    EV.PostWarningLog(Module.ToString(), "Cassette door opened");
+                    EV.PostWarningLog(ModuleName.EFEM.ToString(), "Cassette door opened");
                 }
                 if (_bCassetteDoorTrig.R)
                 {
                     EV.Notify(CassetteDoorClose);
 
-                    EV.PostInfoLog(Module.ToString(), "Cassette door closed");
+                    EV.PostInfoLog(ModuleName.EFEM.ToString(), "Cassette door closed");
                 }
             }
         }
@@ -105,11 +105,11 @@ namespace VirgoRT.Devices.EFEM
                 if (_bSideDoorTrig.T)
                 {
                     EV.Notify(EFEMSideDoorOpen);
-                    EV.PostAlarmLog(Module.ToString(), "EFEM Side door open");
+                    EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM Side door open");
                 }
                 if (_bSideDoorTrig.R)
                 {
-                    EV.PostInfoLog(Module.ToString(), "EFEM Side door close");
+                    EV.PostInfoLog(ModuleName.EFEM.ToString(), "EFEM Side door close");
                 }
             }
         }
@@ -684,7 +684,7 @@ namespace VirgoRT.Devices.EFEM
                         if (!baData1[0])   // Bit[0] ON=Normal, OFF=Abnormal
                         {
                             EV.Notify(EFEMVacuumPressureError);
-                            EV.PostAlarmLog(Module.ToString(), "EFEM System vacuum source pressure low");
+                            EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM System vacuum source pressure low");
                             Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                         }
                         if (!baData1[1])   // Bit[1] ON=Normal, OFF=Abnormal
@@ -693,7 +693,7 @@ namespace VirgoRT.Devices.EFEM
                                !SC.GetValue<bool>("EFEM.IgnoreIonizerError"))
                             {
                                 EV.Notify(EFEMIonizerAlarm);
-                                EV.PostAlarmLog(Module.ToString(), "EFEM Ionizer compressed air error");
+                                EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM Ionizer compressed air error");
                                 Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                             }
                         }
@@ -701,7 +701,7 @@ namespace VirgoRT.Devices.EFEM
                         if (_trigCDAError.Q)   // Bit[2] ON=Normal, OFF=Abnormal
                         {
                             EV.Notify(EFEMCDAError);
-                            EV.PostAlarmLog(Module.ToString(), "EFEM System compressed air pressure low");
+                            EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM System compressed air pressure low");
                             Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                         }
                         if (!baData1[4])   // Bit[4] ON=Normal, OFF=Abnormal
@@ -710,32 +710,32 @@ namespace VirgoRT.Devices.EFEM
                                !SC.GetValue<bool>("EFEM.IgnoreWaterFlowError"))
                             {
                                 EV.Notify(EFEMFlowGaugeSensorError);
-                                EV.PostAlarmLog(Module.ToString(), "EFEM Flow gauge sensor error");
+                                EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM Flow gauge sensor error");
                                 Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                             } 
                         }
                         if (!baData1[5])   // Bit[5] ON=Normal, OFF=Abnormal
                         {
                             EV.Notify(EFEMLeakageAlarm);
-                            EV.PostAlarmLog(Module.ToString(), "EFEM Leakage alarm");
+                            EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM Leakage alarm");
                             Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                         }
                         if (!baData1[10])   // Bit[10] ON=Normal, OFF=Abnormal
                         {
                             EV.Notify(EFEMIonizerAlarm);
-                            EV.PostAlarmLog(Module.ToString(), "EFEM Ionizer alarm");
+                            EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM Ionizer alarm");
                             Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                         }
                         if (!baData1[11])   // Bit[11] ON=Normal, OFF=Abnormal
                         {
                             EV.Notify(EFEMFFUAlarm);
-                            EV.PostAlarmLog(Module.ToString(), "FFU alarm");
+                            EV.PostAlarmLog(ModuleName.EFEM.ToString(), "FFU alarm");
                             Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.Error);
                         }
                         if (!baData1[13])   // Bit[13] ON=RUN, OFF=Maintain
                         {
                             EV.Notify(EFEMOffline);
-                            EV.PostAlarmLog(Module.ToString(), "EFEM switch to Maintain mode, HomeAll to recover");
+                            EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM switch to Maintain mode, HomeAll to recover");
                             //Singleton<RouteManager>.Instance.EFEM.PostMsg(EfemEntity.MSG.ToInit);
                         }
                         if(!baData1[27])
@@ -744,7 +744,7 @@ namespace VirgoRT.Devices.EFEM
                                !SC.GetValue<bool>("EFEM.IgnoreN2Error"))
                             {
                                 EV.Notify(EFEMN2Alarm);
-                                EV.PostAlarmLog(Module.ToString(), "EFEM N2 alarm");
+                                EV.PostAlarmLog(ModuleName.EFEM.ToString(), "EFEM N2 alarm");
                             }
                         }
                         // DATA2

+ 9 - 2
VirgoRT/Devices/EPDs/EPDDevice.cs

@@ -181,8 +181,15 @@ namespace Aitex.RT.Device.Custom
                             break;
 
                         case "Fd":
-                            epd.Columns[0].cFunc = pairs[1];
-                            break;
+                            {
+                                var fdValue = pairs[1];
+                                if (!string.IsNullOrWhiteSpace(fdValue) && fdValue.Contains("R1")) fdValue = fdValue.Replace("R1", "A");
+                                if (!string.IsNullOrWhiteSpace(fdValue) && fdValue.Contains("R2")) fdValue = fdValue.Replace("R2", "B");
+                                if (!string.IsNullOrWhiteSpace(fdValue) && fdValue.Contains("R3")) fdValue = fdValue.Replace("R3", "C");
+                                if (!string.IsNullOrWhiteSpace(fdValue) && fdValue.Contains("R4")) fdValue = fdValue.Replace("R4", "D");
+                                epd.Columns[0].cFunc = fdValue;
+                                break;
+                            }
                         case "PrefilterTime":
                             epd.Columns[0].nPreFilterTime = int.Parse(pairs[1]);
                             break;

+ 1 - 0
VirgoRT/Modules/EFEMs/EfemEntity.cs

@@ -224,6 +224,7 @@ namespace VirgoRT.Modules
             AnyStateTransition(MSG.Online,                          fnOnline,       FSM_STATE.SAME);
             AnyStateTransition(MSG.Abort,                           fnAbortRobot,   STATE.Idle);
             AnyStateTransition(MSG.ToInit,                          fnToInit,       STATE.Init);
+            AnyStateTransition((int)FSM_MSG.ALARM,                  fnError,        (int)STATE.Error);
 
             EnterExitTransition<STATE, FSM_MSG>(STATE.Initializing, fnEnterExecute, FSM_MSG.NONE, fnExitExecute);
             EnterExitTransition<STATE, FSM_MSG>(STATE.InitingRB,    fnEnterExecute, FSM_MSG.NONE, null);

BIN
VirgoUI/Controls/Assets/Image1/pm2_0_.png


BIN
VirgoUI/Controls/Assets/Image1/pm2_1.png


BIN
VirgoUI/Controls/Assets/Image1/pm2_2.png


BIN
VirgoUI/Controls/Assets/Image1/pm2_3.png


BIN
VirgoUI/Controls/Assets/Image1/pm2_4.png


BIN
VirgoUI/Controls/Assets/Image1/pm2_5.png


BIN
VirgoUI/Controls/Assets/Image1/station_0.png


BIN
VirgoUI/Controls/Assets/Image1/station_1.png


BIN
VirgoUI/Controls/Assets/Image1/station_2.png


+ 287 - 0
VirgoUI/Controls/Parts/WaferCtrl.xaml

@@ -4,9 +4,296 @@
              xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
              xmlns:local="clr-namespace:Aitex.UI.RecipeEditor;assembly=RecipeEditorControl"
              xmlns:cal="http://www.caliburn.org"     
+             xmlns:sys="clr-namespace:System;assembly=mscorlib"
              xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation">
 
     <UserControl.Resources>
+        <!--<Style x:Key="{x:Type ctrl:Wafer}" TargetType="{x:Type ctrl:Wafer}">
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="{x:Type ctrl:Wafer}">
+                        <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
+                            <FrameworkElement.ToolTip>
+                                <ToolTip Name="tb_tooltip">
+                                    <StackPanel Orientation="Vertical">
+                                        <TextBlock Text="{Binding WaferTooltip, RelativeSource={RelativeSource TemplatedParent}}" />
+                                    </StackPanel>
+                                </ToolTip>
+                            </FrameworkElement.ToolTip>
+                            <Grid>
+                                <Rectangle Name="WaferCtrl_FrontView" Width="90" Height="11" Stroke="#FF232200">
+                                    <Shape.Fill>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="#FFB88700" Offset="0" />
+                                            <GradientStop Color="#FFB88700" Offset="1" />
+                                            <GradientStop Color="#FFF7E0A0" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Shape.Fill>
+                                </Rectangle>
+                                <Grid Name="WaferCtrl_TopView" Width="65" Height="65" Visibility="Collapsed">
+                                    <Rectangle Name="SSC_WaferBG" Stroke="#FF232200" Fill="#FFFFBB00" RadiusX="15" RadiusY="15"/>
+                                    <Rectangle Name="SSC_Wafer1" RenderTransformOrigin="0.5,0.5" Margin="1" RadiusX="15" RadiusY="15">
+                                        --><!--<UIElement.RenderTransform>
+                                            <TransformGroup>
+                                                <ScaleTransform />
+                                                <SkewTransform />
+                                                <RotateTransform Angle="75" />
+                                                <TranslateTransform />
+                                            </TransformGroup>
+                                        </UIElement.RenderTransform>--><!--
+                                        <Shape.Fill>
+                                            --><!--<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                                <GradientStop Color="#00E6E4AD" Offset="0" />
+                                                <GradientStop Color="#00E6E4AD" Offset="1" />
+                                                <GradientStop Color="White" Offset="0.45" />
+                                                <GradientStop Color="White" Offset="0.55" />
+                                            </LinearGradientBrush>--><!--
+                                            <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                                <GradientStop Color="#FFB88700" Offset="0" />
+                                                <GradientStop Color="#FFB88700" Offset="1" />
+                                                <GradientStop Color="#FFF7E0A0" Offset="0.5" />
+                                            </LinearGradientBrush>
+                                        </Shape.Fill>
+                                    </Rectangle>
+                                    <Rectangle Name="SSC_Wafer2" Opacity="0.75" Margin="1" RenderTransformOrigin="0.5,0.5">
+                                        <Shape.Fill>
+                                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                                <GradientStop Color="#00E6E4AD" Offset="0" />
+                                                <GradientStop Color="#00E6E4AD" Offset="1" />
+                                                <GradientStop Color="#FFAF8100" Offset="0.5" />
+                                            </LinearGradientBrush>
+                                        </Shape.Fill>
+                                    </Rectangle>
+                                </Grid>
+                                <TextBlock Name="Border_Txt" TextWrapping="NoWrap" FontSize="10" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="{DynamicResource FG_Black}" FontFamily="Arial" Text="{Binding Path=SourceName, RelativeSource={RelativeSource TemplatedParent}}" />
+                                <TextBlock Name="Border_question" TextWrapping="NoWrap" Text="?" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#FFFF0000" FontWeight="Bold" FontFamily="Arial" Visibility="{Binding Path=DuplicatedVisibility, RelativeSource={RelativeSource TemplatedParent}}">
+                <UIElement.Effect>
+                  <DropShadowEffect ShadowDepth="0" Color="White" BlurRadius="6" />
+                </UIElement.Effect>
+                                </TextBlock>
+                            </Grid>
+                        </Border>
+                        <ControlTemplate.Triggers>
+                            <Trigger Value="{x:Static sys:String.Empty}" Property="ctrl:Wafer.SourceName">
+                                <Setter TargetName="Border_Txt" Property="Visibility" Value="Collapsed" />
+                            </Trigger>
+                            <Trigger Value="{x:Static sys:String.Empty}" Property="ctrl:Wafer.WaferTooltip">
+                                <Setter TargetName="tb_tooltip" Property="Visibility" Value="Collapsed" />
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.ViewType" Value="Front">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Visibility" Value="Visible" />
+                                <Setter TargetName="WaferCtrl_TopView" Property="Visibility" Value="Collapsed" />
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.ViewType" Value="Top">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Visibility" Value="Collapsed" />
+                                <Setter TargetName="WaferCtrl_TopView" Property="Visibility" Value="Visible" />
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.WaferStatus" Value="0">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Stroke" Value="#002F4E48" />
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="#00B88700" Offset="0" />
+                                            <GradientStop Color="#00B88700" Offset="1" />
+                                            <GradientStop Color="#00F7E0A0" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Stroke" Value="#002F4E48" />
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Fill" Value="#00FFBB00" />
+                                <Setter TargetName="SSC_Wafer1" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00E6E4AD" Offset="0" />
+                                            <GradientStop Color="#00E6E4AD" Offset="1" />
+                                            <GradientStop Color="#00E6E4AD" Offset="0.45" />
+                                            <GradientStop Color="#00E6E4AD" Offset="0.55" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_Wafer2" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00E6E4AD" Offset="0" />
+                                            <GradientStop Color="#00E6E4AD" Offset="1" />
+                                            <GradientStop Color="#00AF8100" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="tb_tooltip" Property="Visibility" Value="Collapsed" />
+                                <Setter TargetName="Border_Txt" Property="Visibility" Value="Collapsed" />
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.WaferStatus" Value="1">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Stroke" Value="#FF232200" />
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="#FFB88700" Offset="0" />
+                                            <GradientStop Color="#FFB88700" Offset="1" />
+                                            <GradientStop Color="#FFF7E0A0" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Stroke" Value="#FF232200" />
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Fill" Value="#FFFFBB00" />
+                                <Setter TargetName="SSC_Wafer1" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00E6E4AD" Offset="0" />
+                                            <GradientStop Color="#00E6E4AD" Offset="1" />
+                                            <GradientStop Color="White" Offset="0.45" />
+                                            <GradientStop Color="White" Offset="0.55" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_Wafer2" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00E6E4AD" Offset="0" />
+                                            <GradientStop Color="#00E6E4AD" Offset="1" />
+                                            <GradientStop Color="#FFAF8100" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="tb_tooltip" Property="Visibility" Value="Collapsed" />
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.WaferStatus" Value="2">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Stroke" Value="#FF000B14" />
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="#FF3333FF" Offset="0" />
+                                            <GradientStop Color="#FF3333FF" Offset="1" />
+                                            <GradientStop Color="#FFE1E1FF" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Stroke" Value="#FF001154" />
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Fill" Value="#FF6E6EFF" />
+                                <Setter TargetName="SSC_Wafer1" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00E1E1FF" Offset="0" />
+                                            <GradientStop Color="#00E1E1FF" Offset="1" />
+                                            <GradientStop Color="#FFE1E1FF" Offset="0.45" />
+                                            <GradientStop Color="#FFE1E1FF" Offset="0.55" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_Wafer2" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#000000FF" Offset="0" />
+                                            <GradientStop Color="#000000FF" Offset="1" />
+                                            <GradientStop Color="#FF3D3DFF" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.WaferStatus" Value="3">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Stroke" Value="#FF000B14" />
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="Cyan" Offset="0" />
+                                            <GradientStop Color="Cyan" Offset="1" />
+                                            <GradientStop Color="#FFE7F5F9" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Stroke" Value="#FF001154" />
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Fill" Value="#FF00E4E4" />
+                                <Setter TargetName="SSC_Wafer1" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#0000FFFF" Offset="0" />
+                                            <GradientStop Color="#0000FFFF" Offset="1" />
+                                            <GradientStop Color="White" Offset="0.45" />
+                                            <GradientStop Color="White" Offset="0.55" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_Wafer2" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#0000FFFF" Offset="0" />
+                                            <GradientStop Color="#0000FFFF" Offset="1" />
+                                            <GradientStop Color="#FF00B2B2" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.WaferStatus" Value="4">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Stroke" Value="#FF000B14" />
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="#FF00B400" Offset="0" />
+                                            <GradientStop Color="#FF00B400" Offset="1" />
+                                            <GradientStop Color="#FFA9FFA9" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Stroke" Value="#FF002700" />
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Fill" Value="#FF19FF19" />
+                                <Setter TargetName="SSC_Wafer1" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Offset="0" Color="#00B3FFB3" />
+                                            <GradientStop Offset="1" Color="#00B3FFB3" />
+                                            <GradientStop Color="White" Offset="0.45" />
+                                            <GradientStop Color="White" Offset="0.55" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_Wafer2" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00008000" Offset="0" />
+                                            <GradientStop Color="#00008000" Offset="1" />
+                                            <GradientStop Color="#FF00A300" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                            </Trigger>
+                            <Trigger Property="ctrl:Wafer.WaferStatus" Value="5">
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Stroke" Value="#FF000B14" />
+                                <Setter TargetName="WaferCtrl_FrontView" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
+                                            <GradientStop Color="Red" Offset="0" />
+                                            <GradientStop Color="Red" Offset="1" />
+                                            <GradientStop Color="#FFFFD7D7" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Stroke" Value="#FF500000" />
+                                <Setter TargetName="SSC_WaferBG" Property="Shape.Fill" Value="#FFFF5D5D" />
+                                <Setter TargetName="SSC_Wafer1" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00FF0000" Offset="1" />
+                                            <GradientStop Color="White" Offset="0.45" />
+                                            <GradientStop Color="White" Offset="0.55" />
+                                            <GradientStop Color="#00FF0000" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                                <Setter TargetName="SSC_Wafer2" Property="Shape.Fill">
+                                    <Setter.Value>
+                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
+                                            <GradientStop Color="#00FF0000" Offset="0" />
+                                            <GradientStop Color="#00FF0000" Offset="1" />
+                                            <GradientStop Color="Red" Offset="0.5" />
+                                        </LinearGradientBrush>
+                                    </Setter.Value>
+                                </Setter>
+                            </Trigger>
+                        </ControlTemplate.Triggers>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>-->
         <local:TimeSpanConverter x:Key="timeSpanConverter" />
         <local:NumConverter x:Key="numConverter" />
         <local:BoolConverter x:Key="boolConverter" />

+ 13 - 0
VirgoUI/VirgoUI.csproj

@@ -1046,6 +1046,19 @@
       <SubType>Designer</SubType>
     </None>
   </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Controls\Assets\Image1\pm2_0_.png" />
+    <Resource Include="Controls\Assets\Image1\pm2_1.png" />
+    <Resource Include="Controls\Assets\Image1\pm2_2.png" />
+    <Resource Include="Controls\Assets\Image1\pm2_3.png" />
+    <Resource Include="Controls\Assets\Image1\pm2_4.png" />
+    <Resource Include="Controls\Assets\Image1\pm2_5.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Controls\Assets\Image1\station_0.png" />
+    <Resource Include="Controls\Assets\Image1\station_1.png" />
+    <Resource Include="Controls\Assets\Image1\station_2.png" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PreBuildEvent>