| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
							- using Aitex.Core.RT.Device;
 
- using Aitex.Core.RT.Log;
 
- using Aitex.Core.RT.SCCore;
 
- using CyberX8_RT.Devices.Metal;
 
- using MECF.Framework.Common.CommonData.Metal;
 
- using MECF.Framework.Common.CommonData.Reservoir;
 
- using MECF.Framework.Common.RecipeCenter;
 
- using MECF.Framework.Common.ToolLayout;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- namespace CyberX8_RT.Devices.Reservoir
 
- {
 
-     public class ReservoirPumpSpeedHelper
 
-     {
 
-         #region 内部变量
 
-         /// <summary>
 
-         /// 时间
 
-         /// </summary>
 
-         private DateTime _updateTime=DateTime.Now;
 
-         /// <summary>
 
-         /// 模块名称
 
-         /// </summary>
 
-         private string _moduleName;
 
-         /// <summary>
 
-         /// AN流量总和
 
-         /// </summary>
 
-         private double _anTotalFlow = 0;
 
-         /// <summary>
 
-         /// CA流量总和
 
-         /// </summary>
 
-         private double _caTotalFlow = 0;
 
-         /// <summary>
 
-         /// 设备对象
 
-         /// </summary>
 
-         StandardHotReservoirDevice _device;
 
-         #endregion
 
-         /// <summary>
 
-         /// 构造函数
 
-         /// </summary>
 
-         /// <param name="moduleName"></param>
 
-         public ReservoirPumpSpeedHelper(string moduleName, StandardHotReservoirDevice reservoirDevice)
 
-         {
 
-             _moduleName = moduleName;
 
-             _device = reservoirDevice;
 
-         }
 
-         /// <summary>
 
-         /// 监控
 
-         /// </summary>
 
-         public void Monitor(ResRecipe resRecipe)
 
-         {
 
-             int cellFlowUpdatePeriod = SC.GetValue<int>("Reservoir.CellFlowUpdatePeriod");
 
-             if(DateTime.Now.Subtract(_updateTime).TotalSeconds > cellFlowUpdatePeriod)
 
-             {
 
-                 _updateTime = DateTime.Now;
 
-                 AdjustCAPumpSpeed(resRecipe);
 
-             }
 
-         }
 
-         
 
-         /// <summary>
 
-         /// 调节阴极泵速
 
-         /// </summary>
 
-         private void AdjustCAPumpSpeed(ResRecipe resRecipe)
 
-         {
 
-             if (_device.ReservoirData.RegulatePumpSignalIn)
 
-             {
 
-                 double caPumpSpeed = _device.ReservoirData.RegulatePumpSpeed;
 
-                 double averageCAFlow = GetAverageCAFlow();
 
-                 if (averageCAFlow == 0)
 
-                 {
 
-                     return;
 
-                 }
 
-                 double caPumpMaxSpeed = SC.GetValue<double>("Reservoir.MaxPumpSpeed");
 
-                 double caFlowDelta = resRecipe.CAFlowSetPoint - averageCAFlow;
 
-                 double newCAPumpSpeed = 330 * caFlowDelta + caPumpSpeed;
 
-                 if (newCAPumpSpeed <= 0 || newCAPumpSpeed > caPumpMaxSpeed)
 
-                 {
 
-                     return;
 
-                 }
 
-                 if (Math.Abs(newCAPumpSpeed - caPumpSpeed) >= 10)
 
-                 {
 
-                     _device.RegulatePumpSpeed(newCAPumpSpeed);
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 获取平均阳极流量 
 
-         /// </summary>
 
-         /// <returns></returns>
 
-         private double GetAverageCAFlow()
 
-         {
 
-             int count = 0;
 
-             _caTotalFlow = 0;
 
-             ReservoirItem reservoirItem = ReservoirItemManager.Instance.GetReservoirItem(_moduleName);
 
-             if (reservoirItem != null)
 
-             {
 
-                 List<MetalItem> metalItems = reservoirItem.MetalCells;
 
-                 if (metalItems != null && metalItems.Count > 0)
 
-                 {
 
-                     foreach (MetalItem metalItem in metalItems)
 
-                     {
 
-                         StandardHotMetalDevice metalDevice = DEVICE.GetDevice<StandardHotMetalDevice>(metalItem.ModuleName);
 
-                         if (metalDevice != null&&metalDevice.IsAuto)
 
-                         {
 
-                              count++;
 
-                              _caTotalFlow += metalDevice.MetalDeviceData.CellFlow;
 
-                         }
 
-                     }
 
-                 }
 
-                 if (count != 0)
 
-                 {
 
-                     return _caTotalFlow / count;
 
-                 }
 
-             }
 
-             return 0;
 
-         }
 
-     }
 
- }
 
 
  |