/// <summary> /// Возвращает число импульсов, выдаваемых УЧПУ, которое необходимо для достижения точки <paramref name="newValue"/> /// плеча <paramref name="lever"/> робота-манипулятора. /// </summary> public static long GetPulsesCount(HorizontalLeverDesignParameters lever, double newValue) { if (!lever.Workspace.IsBetweenMinAndMax(newValue)) { throw new DesignParametersException("Новое значение координаты Z не удовлетворяет конструктивным параметрам робота или рабочей зоны"); } var stepsCount = ((newValue - lever.AB) * lever.Coefficient); return(Convert.ToInt64(stepsCount) * (lever.IsABIncreasesOnStepperCW ? 1 : -1)); }
/// <summary> /// Рассчитывает значение AB в зависимости от числа импульсов и текущего значения AB. /// </summary> /// <param name="lever">Конструктивные параметры плеча робота-манипулятора</param> /// <param name="pulsesCount">Число импульсов</param> /// <returns>Новое значение AB</returns> public static double GetNewAB(HorizontalLeverDesignParameters lever, long pulsesCount) { double newValue = Math.Round(lever.AB + ((lever.IsABIncreasesOnStepperCW ? 1 : -1) * (pulsesCount / lever.Coefficient)), 0); if (!lever.Workspace.IsBetweenMinAndMax(newValue)) { throw new DesignParametersException("Новое значение координаты Z не удовлетворяет конструктивным параметрам робота или рабочей зоны"); } return(newValue); }