FortrendPLUS500.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. using Aitex.Core.RT.DataCenter;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.RT.SCCore;
  4. using MECF.Framework.Common.Communications;
  5. using MECF.Framework.Common.Equipment;
  6. using MECF.Framework.RT.ModuleLibrary.Commons;
  7. using SecsGem.Core;
  8. using SecsGemSerial.Application;
  9. using SecsGemSerial.Core;
  10. using SecsGemSerial.Core.EnumData;
  11. using SecsGemSerial.Core.Model;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Data;
  15. using System.IO.Ports;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. namespace Venus_RT.Devices.SMIF
  20. {
  21. /// <summary>
  22. /// Fortrend PLUS 500
  23. /// Loader/Unloader
  24. /// 执行标准 E84
  25. /// </summary>
  26. public class FortrendPLUS500
  27. {
  28. public enum StreamType
  29. {
  30. SMIFState = 1,
  31. SMIFControl = 2,
  32. LP = 3,
  33. TAG = 4,
  34. ALARM = 5,
  35. DVDATA = 6,
  36. COMMANDERROR = 9,
  37. RFIDCOMMAND = 18,
  38. SMARTTAG8400COMMAND = 100,
  39. }
  40. private AsyncSerialPort _serialport;
  41. private string _portname;
  42. //connect status
  43. public bool IsConnected;
  44. //online status
  45. public bool IsOnline;
  46. //Load
  47. public bool IsLoaded;
  48. //Lock
  49. public bool IsLocked;
  50. //Error
  51. public bool IsError;
  52. private SecsGemSerialApplication _serial = null;
  53. private ModuleName _smifbelong;
  54. /// <summary>
  55. /// 构造函数
  56. /// </summary>
  57. /// <param name="VCEName">从属的设备 如VCE1 LP1</param>
  58. public FortrendPLUS500(ModuleName VCEName)
  59. {
  60. _smifbelong = VCEName;
  61. _portname = SC.GetStringValue($"{VCEName}.SMIF.Port");
  62. SerialOptions serialOptions = new SerialOptions()
  63. {
  64. Port = _portname ?? "COM81",
  65. BaudRate = 9600,
  66. DataBits = 8,
  67. Parity = Parity.None,
  68. StopBits = StopBits.One,
  69. };
  70. GlobalData.DeviceId = 0;
  71. SecsGemSerialOptions secsGemSerialOptions = new SecsGemSerialOptions()
  72. {
  73. DeviceId = GlobalData.DeviceId
  74. };
  75. _serial = new SecsGemSerialApplication(VCEName.ToString(), serialOptions, secsGemSerialOptions);
  76. _serial.OnAlarm += _serial_OnAlarm;
  77. }
  78. private void _serial_OnAlarm(string alarm)
  79. {
  80. //Console.WriteLine(alarm);
  81. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"SMIF({_smifbelong}) received Alarm:{alarm}");
  82. }
  83. public void Initialize()
  84. {
  85. _serial.Initialize();
  86. _serial.RemoteControl(out string reason);
  87. }
  88. private void OnSMIFDataChanged(string oneLineMessage)
  89. {
  90. }
  91. public void Query()
  92. {
  93. SmifData smifdata = _serial.QueryAllSvids(out string reason);
  94. List<EnumSlot> mapdata = smifdata?.WaferMap;
  95. int? wafercount = smifdata?.WaferCount;
  96. E84Signals SmifIO = smifdata?.E84Signals;
  97. }
  98. public void Home()
  99. {
  100. if (!_serial.RemoteCommand(EnumRemoteCmd.HomeSmif, out string reason))
  101. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Home Command Failed for {reason}!Please Check SMIF({_smifbelong})");
  102. else
  103. LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send Home Command to SMIF({_smifbelong})");
  104. }
  105. public void Load()
  106. {
  107. if (!_serial.RemoteCommand(EnumRemoteCmd.StartLoadOpenCycle, out string reason))
  108. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Load Command Failed for {reason}!Please Check SMIF({_smifbelong})");
  109. else
  110. LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send Load Command to SMIF({_smifbelong})");
  111. }
  112. public void Unload()
  113. {
  114. if (!_serial.RemoteCommand(EnumRemoteCmd.StartUnloadCloseCycle, out string reason))
  115. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Unload Command Failed for {reason}!Please Check SMIF({_smifbelong})");
  116. else
  117. LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send UnLoad Command to SMIF({_smifbelong})");
  118. }
  119. public void Lock()
  120. {
  121. if (!_serial.RemoteCommand(EnumRemoteCmd.KeepPrtLocked, out string reason))
  122. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Lock Command Failed for {reason}!Please Check SMIF({_smifbelong})");
  123. else
  124. LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send Lock Command to SMIF({_smifbelong})");
  125. }
  126. public void Unlock()
  127. {
  128. if (!_serial.RemoteCommand(EnumRemoteCmd.UnlockPort, out string reason))
  129. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Unlock Command Failed for {reason}!Please Check SMIF({_smifbelong})");
  130. else
  131. LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send UnLock Command to SMIF({_smifbelong})");
  132. }
  133. public void Reset()
  134. {
  135. if (!_serial.RemoteCommand(EnumRemoteCmd.HomeSmif, out string reason))
  136. LOG.Write(eEvent.ERR_VCE_COMMON_Failed, _smifbelong, $"Send Unlock Command Failed for {reason}!Please Check SMIF({_smifbelong})");
  137. else
  138. LOG.Write(eEvent.EV_VCE_COMMON_INFO, _smifbelong, $"Send UnLock Command to SMIF({_smifbelong})");
  139. }
  140. /// <summary>
  141. /// 中断SMIF正在执行的操作
  142. /// </summary>
  143. public void Abort()
  144. {
  145. }
  146. }
  147. }