| 123456789101112131415161718192021222324252627282930313233343536 |
- namespace SHJX.Service.Control.Extends
- {
- public class TaskRuntime
- {
- private static IDataManager _dataManager;
- public TaskRuntime(IDataManager dataManager)
- {
- _dataManager = dataManager;
- }
- /// <summary>
- /// 计算时间
- /// </summary>
- /// <param name="point"></param>
- /// <param name="xNeedTime"></param>
- /// <param name="yNeedTime"></param>
- /// <param name="zNeedTime"></param>
- public static void Calculate(string point, out double xNeedTime, out double yNeedTime, out double zNeedTime, out double zfNeedTime)
- {
- List<MotorConvert> motorConvert = _dataManager.Query<MotorConvert>().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<MotorMoveStatus> moveStatus = _dataManager.Query<MotorMoveStatus>().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<EquipmentArea>().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);
- }
- }
- }
|