StockerModuleDevice.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using Aitex.Core.RT.DataCenter;
  5. using Aitex.Core.RT.Device;
  6. using Aitex.Core.RT.Device.Unit;
  7. using Aitex.Core.RT.Event;
  8. using Aitex.Core.RT.Fsm;
  9. using Aitex.Core.RT.OperationCenter;
  10. using Aitex.Core.RT.Routine;
  11. using Aitex.Core.RT.SCCore;
  12. using Aitex.Core.Utilities;
  13. using Aitex.Sorter.Common;
  14. using MECF.Framework.Common.Alarms;
  15. using MECF.Framework.Common.Equipment;
  16. using MECF.Framework.Common.Event;
  17. using MECF.Framework.Common.Schedulers;
  18. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts;
  19. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
  20. namespace FurnaceRT.Equipments.Stockers
  21. {
  22. public partial class StockerModule
  23. {
  24. #region fields
  25. private IoSensor _diStationCassettePresent;
  26. private int _alarmNumber;
  27. #endregion
  28. private List<AlarmEventItem> _triggeredAlarmList = new List<AlarmEventItem>();
  29. public void InitDevice()
  30. {
  31. _diStationCassettePresent = DEVICE.GetDevice<IoSensor>($"PM1.Sensor{Module}");
  32. this.OnDeviceAlarmStateChanged += OnModuleDeviceAlarmStateChanged;
  33. }
  34. public void OnModuleDeviceAlarmStateChanged(string deviceId, AlarmEventItem alarmItem)
  35. {
  36. if (alarmItem.IsTriggered)
  37. {
  38. EventLevel level = alarmItem.Level;
  39. _triggeredAlarmList.Add(alarmItem);
  40. if (level == EventLevel.Alarm)
  41. {
  42. try
  43. {
  44. EV.PostAlarmLog(Module, alarmItem);
  45. }
  46. catch (Exception ex)
  47. {
  48. EV.WriteEvent(ex.Message.ToString());
  49. }
  50. }
  51. else
  52. {
  53. EV.PostWarningLog(Module, alarmItem);
  54. }
  55. }
  56. else
  57. {
  58. }
  59. }
  60. private void SetDisplayName()
  61. {
  62. if (!SC.ContainsItem($"System.Stocker.{Module}WaferType"))
  63. return;
  64. var type = SC.GetStringValue($"System.Stocker.{Module}WaferType");
  65. if (type.Contains("P"))
  66. type = "P";
  67. else if (type.Contains("M"))
  68. type = "M";
  69. else if (type.Contains("SD"))
  70. type = "SD";
  71. else if (type.Contains("ED"))
  72. type = "ED";
  73. int display = 0;
  74. for(int i = 1; i < 30; i++)
  75. {
  76. if (!SC.ContainsItem($"System.Stocker.Stocker{i}WaferType"))
  77. continue;
  78. if (SC.GetStringValue($"System.Stocker.Stocker{i}WaferType").Contains(type))
  79. display++;
  80. if (Module == $"Stocker{i}")
  81. break;
  82. }
  83. SC.SetItemValue($"System.StockerDisplayName.{Module}", $"{display}");
  84. }
  85. }
  86. }