Browse Source

fix add minics报警机制触发

jiangjy 2 weeks ago
parent
commit
902ab69782

+ 1 - 1
FrameworkLocal/Common/Common.csproj

@@ -343,7 +343,6 @@
     <Compile Include="Fsm\ModuleEntity.cs" />
     <Compile Include="Jobs\EnumTransferJobState.cs" />
     <Compile Include="Jobs\TransferJobInfo.cs" />
-    <Compile Include="Minics\MinicsManager.cs" />
     <Compile Include="ParameterCenter\DefaultParameterFileContext.cs" />
     <Compile Include="ParameterCenter\IParameterFileContext.cs" />
     <Compile Include="ParameterCenter\IParameterService.cs" />
@@ -788,6 +787,7 @@
   </ItemGroup>
   <ItemGroup>
     <Folder Include="FAServices\E90s\" />
+    <Folder Include="Minics\" />
     <Folder Include="Schedulers\" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

BIN
Furnace/FurnaceRT/Config/VIDs/Equipment_VIDs_20250616.xlsx


+ 2 - 2
Furnace/FurnaceRT/Devices/IoFFU.cs

@@ -222,10 +222,10 @@ namespace FurnaceRT.Devices
         {
 
             //和TIN不一致
-            if (_aiSwitch != null && _aiSwitch.FloatValue == 0)
+            if (_aiSwitch != null && _aiSwitch.FloatValue == 1)
                 return FFUStatusEnum.OFF;
 
-            if (_aiSwitch != null && _aiSwitch.FloatValue == 1)
+            if (_aiSwitch != null && _aiSwitch.FloatValue == 2)
                 return FFUStatusEnum.ON;
 
             if (_aiStatus != null && (_aiStatus.FloatValue == 2 || _aiStatus.FloatValue == 3))

+ 1 - 1
Furnace/FurnaceRT/Equipments/PMs/PMAux.cs

@@ -9,9 +9,9 @@ using Aitex.Core.RT.SCCore;
 using Aitex.Core.Util;
 using Aitex.Core.Utilities;
 using FurnaceRT.Devices;
+using FurnaceRT.Extraction;
 using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.Event;
-using MECF.Framework.Common.Minics;
 using MECF.Framework.Common.OperationCenter;
 using System;
 using System.Collections;

+ 53 - 1
Furnace/FurnaceRT/Equipments/PMs/PMModuleAlarmDefine.cs

@@ -1,4 +1,5 @@
-using Aitex.Core.RT.Event;
+using Aitex.Core.RT.Device.Unit;
+using Aitex.Core.RT.Event;
 using Aitex.Core.RT.IOCore;
 using Aitex.Core.RT.Log;
 using Aitex.Core.RT.OperationCenter;
@@ -249,12 +250,25 @@ namespace FurnaceRT.Equipments.PMs
         public AlarmEventItem UserDefineInterlockAlarm { get; set; }
         public AlarmEventItem InterlockAlarm { get; set; }
         public AlarmEventItem BoatMoveToLoadPositionTimeoutWarning { get; set; }
+        public AlarmEventItem Mini8ConnectAlarm { get; set; }
         #endregion
         public Dictionary<int, Tuple<AlarmEventItem, AlarmEventItem>> AUXAlarmDic { get; set; }
+
         #endregion
 
         private void InitAlarmEvent()
         {
+            Mini8ConnectAlarm = SubscribeAlarm(new AlarmEventItem()
+            {
+                EventEnum = $"{Name}.Mini8ConnectAlarm",
+                Description = $"{Name} mini8 DisConnect Alarm",
+                Solution = "No information available. Press[Clear] to delete alarm message.",
+                Explaination = "No information available.",
+                AutoRecovery = false,
+                Level = EventLevel.Alarm,
+                Action = EventAction.Clear,
+                Category = "TubeAlarm",
+            }, () => { return true; });
             N2PurgeFaileAlarm = SubscribeAlarm(new AlarmEventItem()
             {
                 EventEnum = $"{Name}.N2PurgeFaileAlarm",
@@ -7560,6 +7574,44 @@ namespace FurnaceRT.Equipments.PMs
                 AlarmCSourceAVMFCHeaterINHIBITLOWAlarm.AlarmTriggered = alarm;
             }
         }
+        public Tuple<AlarmEventItem, AlarmEventItem, AlarmEventItem> AddMini8ChannelAlarm(int mini8Index, int ChannelIndex)
+        {
+            var auxAlarm = SubscribeAlarm(new AlarmEventItem()
+            {
+                EventEnum = $"{Name}.GasLineHeaterUnit{mini8Index}CH{ChannelIndex}Alarm",
+                Description = $"",
+                Solution = "No information available. Press[Clear] to delete alarm message.",
+                Explaination = "No information available.",
+                AutoRecovery = false,
+                Level = EventLevel.Alarm,
+                Action = EventAction.Clear,
+                Category = "TubeAlarm",
+            }, () => { return true; });
+            var auxWarning = SubscribeAlarm(new AlarmEventItem()
+            {
+                EventEnum = $"{Name}.GasLineHeaterUnit{mini8Index}CH{ChannelIndex}Warning",
+                Description = "",
+                Solution = "No information available. Press[Clear] to delete alarm message.",
+                Explaination = "No information available.",
+                AutoRecovery = false,
+                Level = EventLevel.Warning,
+                Action = EventAction.Clear,
+                Category = "TubeAlarm",
+            }, () => { return true; });
+            var tcAlarm = SubscribeAlarm(new AlarmEventItem()
+            {
+                EventEnum = $"{Name}.GasLineHeaterUnit{mini8Index}CH{ChannelIndex}TcBrokenAlarm",
+                Description = "",
+                Solution = "No information available. Press[Clear] to delete alarm message.",
+                Explaination = "No information available.",
+                AutoRecovery = false,
+                Level = EventLevel.Alarm,
+                Action = EventAction.Clear,
+                Category = "TubeAlarm",
+            }, () => { return true; });
+
+            return Tuple.Create(auxWarning, auxAlarm, tcAlarm);
+        }
 
 
         private bool ResetRecipeErrorAlarm()

+ 1 - 1
Furnace/FurnaceRT/Equipments/PMs/PMN2Purge.cs

@@ -282,7 +282,7 @@ namespace FurnaceRT.Equipments.PMs
             }
             if (_N2PurgeMode == N2PurgeModeEnum.ManualMode || _N2PurgeMode == N2PurgeModeEnum.Auto)
             {
-
+                _currentPhase = _N2PurgeMode;
             }
             //switch (_N2PurgeMode)
             //{

+ 135 - 94
FrameworkLocal/Common/Minics/MinicsManager.cs

@@ -1,94 +1,135 @@
-using Aitex.Core.RT.Event;
-using Aitex.Core.RT.RecipeCenter;
-using Aitex.Core.Util;
-using MECF.Framework.Common.Equipment;
-using MECF.Framework.Common.Event;
-using MECF.Framework.Common.SCCore;
-using Microsoft.VisualBasic.Devices;
-using RTCommunicatorBase;
-using RTCommunicatorTLV;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MECF.Framework.Common.Minics
-{
-    public class MinicsManager : Singleton<MinicsManager>, IRTMini8Provider
-    {
-        public void Connected(string ip, int port)
-        {
-            Console.WriteLine($"DisconnectedNotify {ip} {port}");
-
-        }
-        public void DisConnected(string ip, int port)
-        {
-            Console.WriteLine($"DisconnectedNotify {ip} {port}");
-        }
-        private RTCommunicator_TLV communicator = new RTCommunicator_TLV();
-        public void Initialize(string ip = "127.0.0.1", int port = 50052)
-        {
-            communicator.Initialize(this);
-            SWJConnectedMinics(ip, port);
-        }
-        public void SWJConnectedMinics(string ip, int port)
-        {
-            if (communicator.StartService(ip, port))
-            {
-                EV.PostInfoLog(ModuleName.Minics.ToString(), $"minics  Connected {ip}:{port} sucessful");
-            }
-            else
-            {
-                for (int i = 1; i <= 3; i++)
-                {
-                    var status = this.communicator.StartService(ip, port);
-
-                    try
-                    {
-                        if (status)
-                            break;
-                    }
-                    catch
-                    {
-                        if (i == 3)
-                            return;
-                        Thread.Sleep(300);
-                        EV.PostAlarmLog(ModuleName.Minics.ToString(), $"retry minics  Connected {ip}:{port} error {i} times");
-                    }
-                }
-
-            }
-        }
-        public void End()
-        {
-
-        }
-        public void SelectMinicsConfig(string minicsConfigName)
-        {
-            bool result = communicator.SelectConfigFile(minicsConfigName);
-            if (!result)
-            {
-                EV.PostAlarmLog(ModuleName.Minics.ToString(), $"SelectMinicsConfig {minicsConfigName} fail!");
-            }
-        }
-
-        public void CurrentTempConfigFile(string fileName)
-        {
-        }
-
-        public void ChannelAlarmNotify(ST_ALARM alarm)
-        {
-        }
-
-        public void Mini8ConnectNotify(byte mini8Index)
-        {
-        }
-
-        public void Mini8DisconnectNotify(byte mini8)
-        {
-        }
-    }
-}
+using Aitex.Core.RT.Event;
+using Aitex.Core.Util;
+using DocumentFormat.OpenXml.Wordprocessing;
+using FurnaceRT.Equipments.PMs;
+using FurnaceRT.Equipments.Systems;
+using MECF.Framework.Common.Equipment;
+using MECF.Framework.Common.Event;
+using MECF.Framework.UI.Client.CenterViews.Editors.Recipe;
+using RTCommunicatorBase;
+using RTCommunicatorTLV;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FurnaceRT.Extraction
+{
+    public class MinicsManager : Singleton<MinicsManager>, IRTMini8Provider
+    {
+        public void Connected(string ip, int port)
+        {
+            Console.WriteLine($"DisconnectedNotify {ip} {port}");
+
+        }
+        public void DisConnected(string ip, int port)
+        {
+            Console.WriteLine($"DisconnectedNotify {ip} {port}");
+        }
+        private RTCommunicator_TLV communicator = new RTCommunicator_TLV();
+        public void Initialize(string ip = "127.0.0.1", int port = 50052)
+        {
+            communicator.Initialize(this);
+            SWJConnectedMinics(ip, port);
+
+            AlarmIndefinx();
+        }
+
+        public void SWJConnectedMinics(string ip, int port)
+        {
+            if (communicator.StartService(ip, port))
+            {
+                EV.PostInfoLog(ModuleName.Minics.ToString(), $"minics  Connected {ip}:{port} sucessful");
+            }
+            else
+            {
+                for (int i = 1; i <= 3; i++)
+                {
+                    var status = this.communicator.StartService(ip, port);
+
+                    try
+                    {
+                        if (status)
+                            break;
+                    }
+                    catch
+                    {
+                        if (i == 3)
+                            return;
+                        Thread.Sleep(300);
+                        EV.PostAlarmLog(ModuleName.Minics.ToString(), $"retry minics  Connected {ip}:{port} error {i} times");
+                    }
+                }
+
+            }
+        }
+        public void End()
+        {
+
+        }
+        public void SelectMinicsConfig(string minicsConfigName)
+        {
+            bool result = communicator.SelectConfigFile(minicsConfigName);
+            if (!result)
+            {
+                EV.PostAlarmLog(ModuleName.Minics.ToString(), $"SelectMinicsConfig {minicsConfigName} fail!");
+            }
+        }
+        public Dictionary<string, Tuple<AlarmEventItem, AlarmEventItem, AlarmEventItem>> MinicsAlarmDic { get; set; } = new Dictionary<string, Tuple<AlarmEventItem, AlarmEventItem, AlarmEventItem>>();
+
+        public void AlarmIndefinx()
+        {
+            var pm = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
+            for (int i = 1; i < 9; i++)
+            {
+                for (int j = 1; j < 17; j++)
+                {
+                    MinicsAlarmDic.Add($"{i}_{j}", pm.AddMini8ChannelAlarm(i, j));
+                }
+            }
+        }
+        public void CurrentTempConfigFile(string fileName)
+        {
+
+        }
+
+        public void ChannelAlarmNotify(ST_ALARM alarm)
+        {
+
+
+            var gasLineHeaterIndex = $"{alarm.Mini8Index}_{alarm.ChannelIndex}";
+            if (!MinicsAlarmDic.TryGetValue(gasLineHeaterIndex, out var alarmValue))
+                return;
+
+            if (alarm.AlarmType == RTCommunicatorBase.AlarmType.CapsOverFlow)
+            {
+                var msg = $"{gasLineHeaterIndex} {alarm.PV} limit is ({alarm.Caps}~{alarm.Floor}) ";
+                alarmValue.Item1.Set(msg);
+            }
+            if (alarm.AlarmType == RTCommunicatorBase.AlarmType.FloorOverFlow)
+            {
+                var msg = $"{gasLineHeaterIndex} {alarm.PV} limit is ({alarm.Caps}~{alarm.Floor}) ";
+                alarmValue.Item2.Set(msg);
+            }
+            if (alarm.AlarmType == RTCommunicatorBase.AlarmType.TcBroken)
+            {
+                var msg = $"{gasLineHeaterIndex} is TcBroken";
+                alarmValue.Item3.Set(msg);
+            }
+        }
+
+        public void Mini8ConnectNotify(byte mini8Index)
+        {
+            var pm = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
+            pm.Mini8ConnectAlarm.Reset();
+        }
+
+        public void Mini8DisconnectNotify(byte mini8)
+        {
+            var pm = Singleton<EquipmentManager>.Instance.Modules[ModuleName.PM1] as PMModule;
+            pm.Mini8ConnectAlarm.Set();
+        }
+    }
+}

+ 9 - 0
Furnace/FurnaceRT/FurnaceRT.csproj

@@ -76,6 +76,14 @@
     <Reference Include="Microsoft.DwayneNeed">
       <HintPath>..\..\ThirdParty\dlls\Microsoft.DwayneNeed.dll</HintPath>
     </Reference>
+    <Reference Include="RTCommunicatorBase, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\ThirdParty\Minices\RTCommunicatorBase.dll</HintPath>
+    </Reference>
+    <Reference Include="RTCommunicatorTLV, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\ThirdParty\Minices\RTCommunicatorTLV.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Configuration" />
     <Reference Include="System.Data" />
@@ -250,6 +258,7 @@
     <Compile Include="Equipments\WaferRobots\WaferRobotPick.cs" />
     <Compile Include="Equipments\WaferRobots\WaferRobotPlace.cs" />
     <Compile Include="Extraction\ExtractionMethods.cs" />
+    <Compile Include="Extraction\MinicsManager.cs" />
     <Compile Include="FAs\VIDMap.cs" />
     <Compile Include="Properties\Annotations.cs" />
     <Compile Include="Equipments\PMs\RecipeExecutions\FurnaceRecipeFileContext.cs" />

+ 1 - 1
Furnace/FurnaceRT/Instances/ToolLoader.cs

@@ -36,8 +36,8 @@ using FurnaceRT.Recipes;
 using Aitex.Core.RT.ParameterCenter;
 using FurnaceRT.Parameter;
 using Aitex.Core.RT.SCCore;
-using MECF.Framework.Common.Minics;
 using DocumentFormat.OpenXml.Drawing.Charts;
+using FurnaceRT.Extraction;
 
 namespace FurnaceRT.Instances
 {