Пример #1
0
        /// <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));
        }
Пример #2
0
        /// <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);
        }