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);
}
}
}