| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using SHJX.Service.Control.Extends;
- using SHJX.Service.Control.Common.Assets;
- namespace SHJX.Service.Control.MoveTime.Interface
- {
- public abstract class ICalculator
- {
- /// <summary>
- /// 电机移动所需时间
- /// </summary>
- /// <param name="task"></param>
- /// <returns></returns>
- protected double MotorMoveTimeCalculate(string fromPosition_goBack, string toPosition_goBack)
- {
- DissolveDate dissolveDates_goBack = DataManagerInstance.GetDissolveDateByEnable();
- if (dissolveDates_goBack is null)
- {
- return 0;
- }
- double fromTime_goBack = FromCurrentPositionArriveFromPosition(fromPosition_goBack);
- double toTime_goBack = FromPositionArriveToPosition(fromPosition_goBack, toPosition_goBack);
- var dissolvePosition_goBack = dissolveDates_goBack.PositionName;
- double dissolveMoveTime_goBack = FromPositionArriveToPosition(toPosition_goBack, dissolvePosition_goBack);
- double dateTime = fromTime_goBack + toTime_goBack + dissolveMoveTime_goBack;
- return dateTime;
- }
- /// <summary>
- /// 从当前位置到达From点位需要时间
- /// </summary>
- /// <param name="fromPosition"></param>
- /// <returns>返回结果单位是秒</returns>
- protected double FromCurrentPositionArriveFromPosition(string fromPosition)
- {
- TaskRuntime.Calculate(fromPosition, out double xNeedTime, out double yNeedTime, out _, out _);
- double time = Math.Abs(xNeedTime) + Math.Abs(yNeedTime);
- return time;
- }
- /// <summary>
- /// From到To所需时间
- /// </summary>
- /// <param name="fromPosition"></param>
- /// <param name="toPosition"></param>
- /// <returns>返回结果单位是秒</returns>
- protected double FromPositionArriveToPosition(string fromPosition, string toPosition)
- {
- FromMoveTo(fromPosition, toPosition, out double xSpendTime, out double ySpendTime, out double zSpendTime, out double zfSpendTime);
- double toTime = Math.Abs(xSpendTime) + Math.Abs(ySpendTime) + zSpendTime * 4;
- return toTime;
- }
- /// <summary>
- /// From到To
- /// </summary>
- /// <param name="fromPosition"></param>
- /// <param name="toPosition"></param>
- /// <param name="xSpendTime"></param>
- /// <param name="ySpendTime"></param>
- /// <param name="zSpendTime"></param>
- private void FromMoveTo(string fromPosition, string toPosition, out double xSpendTime, out double ySpendTime, out double zSpendTime, out double zfSpendTime)
- {
- EquipmentArea fromArea = DataManagerInstance.GetAreaByPoint(fromPosition);
- EquipmentArea toArea = DataManagerInstance.GetAreaByPoint(toPosition);
- xSpendTime = (toArea.LocationX - fromArea.LocationX) * 4000 / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisX);
- ySpendTime = (toArea.LocationY - fromArea.LocationY) * 4000 / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisY);
- zSpendTime = toArea.LocationZ * 4000 / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisZ);
- zfSpendTime = toArea.LocationZF * 4000 / 20000 / 1000 * SpeedSleep.Calculation(EquipmentNames.AxisZ);
- }
- /// <summary>
- /// 计算
- /// </summary>
- /// <param name="positionName"></param>
- /// <returns>返回值为秒</returns>
- public abstract double Calculate(string positionName);
- }
- }
|