TaskRuntime.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. namespace SHJX.Service.Control.Extends
  2. {
  3. public class TaskRuntime
  4. {
  5. private static IDataManager _dataManager;
  6. public TaskRuntime(IDataManager dataManager)
  7. {
  8. _dataManager = dataManager;
  9. }
  10. /// <summary>
  11. /// 计算时间
  12. /// </summary>
  13. /// <param name="point"></param>
  14. /// <param name="xNeedTime"></param>
  15. /// <param name="yNeedTime"></param>
  16. /// <param name="zNeedTime"></param>
  17. public static void Calculate(string point, out double xNeedTime, out double yNeedTime, out double zNeedTime, out double zfNeedTime)
  18. {
  19. List<MotorConvert> motorConvert = _dataManager.Query<MotorConvert>().ToList();
  20. MotorConvert convertX = motorConvert.Where(item => item.MotorName.Equals(EquipmentNames.AxisX)).FirstOrDefault();
  21. MotorConvert convertY = motorConvert.Where(item => item.MotorName.Equals(EquipmentNames.AxisY)).FirstOrDefault();
  22. MotorConvert convertZ = motorConvert.Where(item => item.MotorName.Equals(EquipmentNames.AxisZ)).FirstOrDefault();
  23. List<MotorMoveStatus> moveStatus = _dataManager.Query<MotorMoveStatus>().ToList();
  24. MotorMoveStatus currentMotorX = moveStatus.Where(item => item.MotorName.Equals(EquipmentNames.AxisX)).FirstOrDefault();
  25. MotorMoveStatus currentMotorY = moveStatus.Where(item => item.MotorName.Equals(EquipmentNames.AxisY)).FirstOrDefault();
  26. MotorMoveStatus currentMotorZ = moveStatus.Where(item => item.MotorName.Equals(EquipmentNames.AxisZ)).FirstOrDefault();
  27. EquipmentArea area = _dataManager.Query<EquipmentArea>().Where(it => it.PointName.Equals(point)).First();
  28. xNeedTime = (area.LocationX - currentMotorX.CurrentPosition) * convertX.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisX);
  29. yNeedTime = (area.LocationY - currentMotorY.CurrentPosition) * convertY.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisY);
  30. zNeedTime = area.LocationZ * convertZ.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisZ);
  31. zfNeedTime = area.LocationZF * convertZ.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisZ);
  32. }
  33. }
  34. }