namespace SHJX.Service.Control.Extends { public class TaskRuntime { private static IDataManager _dataManager; public TaskRuntime(IDataManager dataManager) { _dataManager = dataManager; } /// /// 计算时间 /// /// /// /// /// public static void Calculate(string point, out double xNeedTime, out double yNeedTime, out double zNeedTime, out double zfNeedTime) { List motorConvert = _dataManager.Query().ToList(); MotorConvert convertX = motorConvert.Where(item => item.MotorName.Equals(EquipmentNames.AxisX)).FirstOrDefault(); MotorConvert convertY = motorConvert.Where(item => item.MotorName.Equals(EquipmentNames.AxisY)).FirstOrDefault(); MotorConvert convertZ = motorConvert.Where(item => item.MotorName.Equals(EquipmentNames.AxisZ)).FirstOrDefault(); List moveStatus = _dataManager.Query().ToList(); MotorMoveStatus currentMotorX = moveStatus.Where(item => item.MotorName.Equals(EquipmentNames.AxisX)).FirstOrDefault(); MotorMoveStatus currentMotorY = moveStatus.Where(item => item.MotorName.Equals(EquipmentNames.AxisY)).FirstOrDefault(); MotorMoveStatus currentMotorZ = moveStatus.Where(item => item.MotorName.Equals(EquipmentNames.AxisZ)).FirstOrDefault(); EquipmentArea area = _dataManager.Query().Where(it => it.PointName.Equals(point)).First(); xNeedTime = (area.LocationX - currentMotorX.CurrentPosition) * convertX.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisX); yNeedTime = (area.LocationY - currentMotorY.CurrentPosition) * convertY.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisY); zNeedTime = area.LocationZ * convertZ.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisZ); zfNeedTime = area.LocationZF * convertZ.ConvertRatio / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisZ); } } }