Exemple #1
0
        private void SendStepResolution(FeedRate.StepResolutions resolution)
        {
            _resolution = resolution;
            string resolutionCmd = "StepResolution:" + ((int)_resolution).ToString();

            SendCommand(resolutionCmd);
        }
        /// <summary>
        /// Converts the supplied targetFeedRate to a millisecond delay value to be used between step pulses, and a step resolution
        /// </summary>
        /// <param name="targetFeedRate">Desired Feed Rate in IPM</param>
        /// <param name="resolution">Resulting feed rate to be used</param>
        /// <returns>millisecond step pulse delay value to pass to the machine</returns>
        public int CalculateStepDelayFromFeedRate(int targetFeedRate, out FeedRate.StepResolutions resolution)
        {
            //TODO: These need to be stored as settings with the ability to measure them and determine their values.. right now everything
            //      is hard coded from the charting of my manual trial and error

            if (targetFeedRate > FeedRateMaximum)
            {
                targetFeedRate = FeedRateMaximum;
            }
            if (targetFeedRate < 5)
            {
                targetFeedRate = 5;
            }

            resolution = FeedRate.StepResolutions.Half;     //TODO: We've calculated these all on half steps which seem to work great for the full range
            // (Really making me wonder why I support changing resolutions)

            if (targetFeedRate > 50)
            {
                return(LinearInterpolation(50, 17, targetFeedRate, 60, 9));                              // 51 to 60
            }
            if (targetFeedRate > 40)
            {
                return(LinearInterpolation(40, 28, targetFeedRate, 50, 17));                              // 41 to 50
            }
            if (targetFeedRate > 30)
            {
                return(LinearInterpolation(30, 42, targetFeedRate, 40, 28));                              // 31 to 40
            }
            if (targetFeedRate > 20)
            {
                return(LinearInterpolation(20, 80, targetFeedRate, 30, 42));                              // 21 to 30
            }
            if (targetFeedRate > 10)
            {
                return(LinearInterpolation(10, 170, targetFeedRate, 20, 80));                              // 11 to 20
            }
            if (targetFeedRate >= 5)
            {
                return(LinearInterpolation(5, 350, targetFeedRate, 10, 170)); // 5 to 10
            }
            return(40);                                                       //Not used
        }
Exemple #3
0
 private void SendStepResolution(FeedRate.StepResolutions resolution)
 {
     _resolution = resolution;
     string resolutionCmd = "StepResolution:" + ((int)_resolution).ToString();
     SendCommand(resolutionCmd);
 }