Merge branch 'develop' of http://112.124.35.216:65000/Sic-Software/MoS2 into develop

# Conflicts:
#	App/SicSimulator/Instances/SimulatorSystem.cs
This commit is contained in:
SIC1016\caipeilun 2026-08-19 10:27:39 +08:00
commit 1fc2f27485
11 changed files with 96 additions and 70 deletions

View File

@ -457,7 +457,7 @@
<IoSensor id="SensorScrubberIntlkSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_ScrubberIntlkSW" infoText="" warningText="" alarmText="Alarm27 Scrubber System Error [DI-41]" />
<IoSensor id="SensorFacilityIntlkSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_FacilityIntlkSW" infoText="" warningText="" alarmText="Alarm28 Facility Error [DI-42]" />
<IoSensor id="SensorPMH2SeDetector2SW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMH2SeDetector2SW" infoText="" warningText="" alarmText="Alarm29 PMH2Se Leak Detect2 [DI-43]" />
<IoSensor id="SensorPMSO2Detector2SW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMSO2Detector2SW" infoText="" warningText="" alarmText="Alarm30 PMSO2 Leak Detect2 [DI-43]" />
<IoSensor id="SensorPMSO2Detector2SW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMSO2Detector2SW" infoText="" warningText="" alarmText="Alarm30 PMSO2 Leak Detect2 [DI-44]" />
<IoSensor id="SensorServoDriverFaultSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_ServoDriverFaultSW" infoText="" warningText="" alarmText="Alarm31 Rotation Servo Driver Error [DI-45]" />
<IoSensor id="SensorChamMiddleFlow2SW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_ChamMiddleFlow2SW" infoText="" warningText="" alarmText="Alarm32 Chamber Middle2 Cooling Water Flow Abnormal U4[DI-46]" />
<IoSensor id="SensorSpare2FlowSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_Spare2FlowSW" infoText="" warningText="Warning8 Spare2 Flow Low -U13 [DI-47]" alarmText="" />
@ -466,7 +466,7 @@
<IoSensor id="SensorConfinementRingDown" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_ConfinementRingDown" infoText="Information8 Confinement Ring At Down position [DI-50]" warningText="" alarmText="" />
<IoSensor id="SensorPMGasDetectorFault2SW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMGasDetectorFault2SW" infoText="" warningText="" alarmText="Alarm33 PMGasDetectorFault2 [DI-51]" />
<IoSensor id="SensorPMSO2Detector1SW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_PMSO2Detector1SW" infoText="" warningText="" alarmText="Alarm34 PMSO2Leak Detect1 [DI-52]" />
<IoSensor id="SensorGN2InletPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="true" di="DI_GN2InletPressSW" infoText="" warningText="" alarmText="Alarm35 Gasbox N2 Pressure Low [DI-55]" />
<IoSensor id="SensorGN2InletPressSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GN2InletPressSW" infoText="" warningText="" alarmText="Alarm35 Gasbox N2 Pressure Low [DI-55]" />
<IoSensor id="SensorGBH2SDetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBH2SDetectorSW" infoText="" warningText="" alarmText="Alarm36 GBH2S Leak Detect1 [DI-56]" />
<IoSensor id="SensorGBH2SeDetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBH2SeDetectorSW" infoText="" warningText="" alarmText="Alarm37 GBH2Se Leak Detect1 [DI-57]" />
<IoSensor id="SensorGBSmokeDetectorSW" module="" display="" schematicId="" unit="" aioType="" textOutTrigValue="false" di="DI_GBSmokeDetectorSW" infoText="" warningText="" alarmText="Alarm38 GBSmokeDetector [DI-58]" />

View File

@ -137,7 +137,6 @@
</IoTempMeters>
<IoLift4s classType="Aitex.Core.RT.Device.Unit.IoLift4" assembly="MECF.Framework.RT.EquipmentLibrary">
<IoLift4 id="LLLift" module="LoadLock" display="LLLift" schematicId="LLLift" unit="" aioType="" diUp="DI_LoadLockWaferCYUPFB" diDown="DI_LoadLockWaferCYDownFB" doUp="DO_LoadLockWaferCYUP" doDown="DO_LoadLockWaferCYDown" scTimeout="10"/>
<IoLift4 id="LoadLidLock" module="LoadLock" display="LoadLidLock" schematicId="LoadLidLock" unit="" aioType="" diUp="DI_LoadLidLocked" diDown="DI_LoadLidUnlocked" doUp="DO_LoadLidLock" doDown="DO_LoadLidUnlock" scTimeout="10" />
</IoLift4s>
<TMRobots assembly="SicModules" classType="SicModules.TMs.SicTMRobot">
<TMRobot id="TMRobot" module="TMRobot" display="" schematicId="" unit="" />

View File

@ -345,21 +345,22 @@ namespace SicModules.UnLoads
});*/
DATA.Subscribe($"{Name}.UnderVAC", () =>
{
if (_unLoadDevice.CheckVacuum())
if(_unLoadDevice != null)
{
return true;
return _unLoadDevice.CheckVacuum();
}
return false;
});
DATA.Subscribe($"{Name}.LidState", () =>
{
if (_unLoadDevice.CheckLidClose())
if(_unLoadDevice != null)
{
return "Closed";
return _unLoadDevice.CheckLidClose() ? "Closed" : "Open";
}
return "Open";
return "Closed";
});
}

View File

@ -51,7 +51,7 @@ using System.Windows;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
[assembly: AssemblyVersion("1.1.0.60818")]
[assembly: AssemblyVersion("1.1.0.60819")]
[assembly: AssemblyInformationalVersion("MoS2无EFEM")]

View File

@ -299,38 +299,57 @@ namespace SicSimulator.Instances
IO.DO[$"{mod}.DO_ChamBottomFlowTemp"].Value = true;
IO.DO[$"{mod}.DO_Foreline1FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_PowerRod1FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_PowerRod2FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_ElectrodeWFlowTemp"].Value = true;
IO.DO[$"{mod}.DO_Foreline2FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_TransformerFlowTemp"].Value = true;
IO.DO[$"{mod}.DO_HeaterEnable"].Value = true;
IO.DO[$"{mod}.DO_EPV2"].Value = true;
IO.DO[$"{mod}.DO_Foreline1FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_Foreline2FlowTemp"].Value = true;
IO.DI[$"{mod}.DI_PMGasDetectorSW"].Value = true;
IO.DI[$"{mod}.DI_GBGasDetectorSW"].Value = true;
IO.DI[$"{mod}.DI_PMH2SDetector1SW"].Value = true;
IO.DI[$"{mod}.DI_PMH2SeDetector1SW"].Value = true;
IO.DI[$"{mod}.DI_PMH2SeDetector2SW"].Value = true;
IO.DI[$"{mod}.DI_PMSO2Detector2SW"].Value = true;
IO.DI[$"{mod}.DI_PMGasDetectorFault2SW"].Value = true;
IO.DI[$"{mod}.DI_PMSO2Detector1SW"].Value = true;
IO.DI[$"{mod}.DI_PMH2SDetector2SW"].Value = true;
IO.DI[$"{mod}.DI_GN2InletPressSW"].Value = true;
IO.DI[$"{mod}.DI_GBH2SDetectorSW"].Value = true;
IO.DI[$"{mod}.DI_GBH2SeDetectorSW"].Value = true;
IO.DI[$"{mod}.DI_PMSmokeDetectorSW"].Value = true;
}
private void SetWaterTemp(string mod)
{
#region Water Flow
IO.AI[$"{mod}.AI_ChamMiddleFlow2Temp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_SHFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamTopFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamMiddleFlow1Temp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamBottomFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Foreline2FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod1FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod2FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Foreline1FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ElectrodeWFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMPump1FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TransformerFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Spare1Temp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Spare2Temp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamMiddleFlow2Temp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_SHFlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamTopFlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamMiddleFlow1Temp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamBottomFlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Foreline2FlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod1FlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod2FlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Foreline1FlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ElectrodeWFlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMPump1FlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TransformerFlowTemp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Spare1Temp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Spare2Temp"].Value = (float)(WaterTempBase + _rnd.NextDouble()); ;
//IO.AI[$"{mod}.AI_SpareFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
#endregion Water Flow

View File

@ -243,16 +243,17 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 100,
Root = 99,
Arm = 240,
Hand = -110
Hand = 240
},
EndPosition= new RobotPosition()
{
Root =238,
Root = 239,
Arm = 0,
Hand = 0
Hand = 360
}
}
},
{ "ArmA.PM2",new StationPosition() //ArmA.ReactorB
@ -260,13 +261,13 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 60,
Arm = 120,
Hand = 130
Root = 10,
Arm = 194,
Hand = 99
},
EndPosition= new RobotPosition()
{
Root = -54,
Root = -58,
Arm = 360,
Hand = 0
}
@ -277,14 +278,14 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 5,
Arm = 240,
Hand = -110
Root = 80,
Arm = 190,
Hand = 100
},
EndPosition= new RobotPosition()
{
Root = 137,
Arm = 0,
Root = 13,
Arm = 360,
Hand = 0
}
}
@ -311,15 +312,15 @@ namespace SicUI.Controls.M2C4Parts
StartPosition= new RobotPosition()
{
Z=0,
Root = 170,
Arm = 120,
Hand = 120
Root =-45,
Arm = 240,
Hand = 240
},
EndPosition= new RobotPosition()
{
Root = 47,
Arm = 360,
Hand = 0
Root = 90,
Arm = 0,
Hand = 360
}
}
},

View File

@ -1374,15 +1374,20 @@ namespace SicUI.Client
if (menuInfo.System is "PM1" or "PM2")
{
var rect = FindVisualChildByName<Rectangle>(container, "InnerBG");
if(rect != null)
{
rect.Fill = menuInfo.Selected
? BgActiveContent
: new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF346294"));
}
var bgBorder = FindVisualChildByName<Border>(container, "BG");
if (bgBorder != null)
{
bgBorder.Background = menuInfo.Selected
? BgActiveContent
: new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF346294"));
}
}
}
}

View File

@ -12,6 +12,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace SicUI.Models.PMs
{
@ -23,6 +24,8 @@ namespace SicUI.Models.PMs
public PMOperationView()
{
InitializeComponent();
Loaded += (s, e) => Dispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(() => (s as FrameworkElement)?.UpdateLayout()));
}

View File

@ -1156,8 +1156,13 @@ namespace SicUI.Models.PMs
}
private void GetSC()
{
var mfc5IsInstalled = QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.MFC.Mfc5.IsInstalled");
if (mfc5IsInstalled != null)
{
Mfc5IsInstalled = (bool)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.MFC.Mfc5.IsInstalled");
}
TMAEnable = (bool)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.TMAEnable");
CarbonSource = (string)QueryDataClient.Instance.Service.GetConfig($"PM.{Module}.CarbonSource");

View File

@ -55,6 +55,6 @@ using System.Windows;
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.1.0.60818")]
[assembly: AssemblyVersion("1.1.0.60819")]
[assembly: AssemblyInformationalVersion("MoS2无EFEM")]

View File

@ -1230,30 +1230,23 @@ namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.SiasunPhoenixB
//TM从UnLoad只能取石墨盘
if (sourcemodule == ModuleName.UnLoad)
{
if (_unloadWaferClaw.State == ClawStateEnum.Clamp)
{
WaferManager.Instance.TrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 0);
}
else
{
WaferManager.Instance.WaferTrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 0);
}
//if (_unloadWaferClaw.State == ClawStateEnum.Clamp)
//{
// WaferManager.Instance.TrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 0);
//}
//else
//{
// WaferManager.Instance.WaferTrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 0);
//}
}
else
{
if (BladeSlots == 1)
{
if (arm == RobotArmEnum.Blade1)
{
if (_llWaferClaw.State == ClawStateEnum.Clamp && (sourcemodule == ModuleName.LoadLock || sourcemodule == ModuleName.Load))
{
WaferManager.Instance.TrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 0);
}
else
{
WaferManager.Instance.WaferTrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 0);
}
}
if (arm == RobotArmEnum.Blade2)
WaferManager.Instance.WaferTrayMoved(sourcemodule, SourceslotIndex, RobotModuleName, 1);