#input data move_type = [0] #type of trajectory for each block (0 - linear, 1 - circular, 2 - curve) trajectory = [[0,0], [100, 100], [100, 90], [100, 0]] #trajectory points feedrate = [30, 15, 30] #list of feedrates for each block feedrate_max = [30, 30, 30] acceleration = [25, 25] #allowable acceleration for each block deceleration = [25, 25] #allowable deceleration for each block jerk = [50, 10] tsample = 0.01 #tolerance linearErr = 0.01 #corner parameters #расчет длины пути blocklen = Interpolation.LengthLinear(trajectory[0], trajectory[1]) print("Длина пути: " + str(blocklen) + " мм.") #предварительный расчет длины разгона и торможения Nm = floor(acceleration[0]/(jerk[0]*tsample)) LengthAcc = AccDecControl.AccDecDisplacement (3, feedrate[1], jerk[0], acceleration[0], tsample, Nm) #LengthDec = AccDecControl.AccDecDisplacement (feedrate[1], 0, jerk[0], acceleration[0], tsample, Nm) print("Предварительная длина разгона: " + str(LengthAcc) + " мм.") #print("кол-во шагов на разгоне " + str(LengthAcc[4][0])) #print("кол-во шагов на постоянн " + str(LengthAcc[4][1])) #print("кол-во шагов на торможе " + str(LengthAcc[4][2])) Profile = AccDecControl.AccVelProfiles (3, feedrate[1], jerk[0], acceleration[0], tsample, Nm) #вывод графического материала timelist = [] time = 0
feedrate_max = [60, 75, 60, 50, 60] acceleration = [500, 500, 30, 30, 5000] #allowable acceleration for each block deceleration = [5000, 5000, 5000, 5000, 5000] #allowable deceleration for each block jerk = [5000, 5000, 50000, 50000, 50000] #период интерполяции tsample = Decimal(0.004).quantize(Decimal("1.0000")) #tolerance linearErr = Decimal(0.001).quantize(Decimal("1.0000")) radiusErr = Decimal(0.005).quantize(Decimal("1.0000")) #corner parameters velocity_list = [] for i in range (1,2): #расчет длины пути blocklen = Decimal(Interpolation.LengthLinear(trajectory[i], trajectory[i+1])).quantize(Decimal("1.0000")) print("Участок " + str(i+1) + ". Длина пути: " + str(blocklen) + " мм.") #предварительный расчет длины разгона и торможения Nm = floor(acceleration[i]/(jerk[i]*tsample)) LengthAcc = AccDecControl.AccDecDisplacement (4, feedrate[i], jerk[i], acceleration[i], tsample, Nm) LengthDec = AccDecControl.AccDecDisplacement (feedrate[i], 5, jerk[i], acceleration[i], tsample, Nm) print(" Длина разгона: " + str(LengthAcc) + " мм.") print(" Длина торможения: " + str(LengthDec) + " мм.") #расчет реальной максимальной скорости MaxFeedrate = AccDecControl.RealMaxFeedrate (4, 5, feedrate[i], blocklen, Nm, LengthAcc, LengthDec, linearErr, jerk[i], acceleration[i], tsample) print(" Макс. скорость: " + str(MaxFeedrate[0]) + " мм/c.") #print("Длина разгона и торможения: " + str(MaxFeedrate[1]) + " мм.")
deceleration = [5000, 5000, 5000, 5000, 5000] #allowable deceleration for each block jerk = [5000, 5000, 5000, 5000, 5000] #период интерполяции tsample = Decimal(0.004).quantize(Decimal("1.0000")) #tolerance linearErr = Decimal(0.01).quantize(Decimal("1.0000")) radiusErr = Decimal(0.005).quantize(Decimal("1.0000")) #corner parameters velocity_list = [] for i in range(0, 2): #расчет длины пути blocklen = Decimal( Interpolation.LengthLinear(trajectory[i], trajectory[i + 1])).quantize( Decimal("1.0000")) print("Участок " + str(i + 1) + ". Длина пути: " + str(blocklen) + " мм.") #print("Участок " + str(i+1) + ".") #предварительный расчет длины разгона и торможения Nm = floor(acceleration[i] / (jerk[i] * tsample)) LengthAcc = AccDecControl.AccDecDisplacement(0, feedrate[i], jerk[i], acceleration[i], tsample, Nm) LengthDec = AccDecControl.AccDecDisplacement(feedrate[i], 0, jerk[i], acceleration[i], tsample, Nm) print(" Длина разгона: " + str(LengthAcc) + " мм.") print(" Длина торможения: " + str(LengthDec) + " мм.") """ #расчет реальной максимальной скорости MaxFeedrate = AccDecControl.RealMaxFeedrate (0, 0, feedrate[i], blocklen, Nm, LengthAcc, LengthDec, linearErr, jerk[i], acceleration[i], tsample)
feedrate = [50, 25, 100, 100, 100] #list of feedrates for each block feedrate_max = [60, 75, 60, 50, 60] acceleration = [500, 500, 5000, 5000, 5000] #allowable acceleration for each block deceleration = [5000, 5000, 5000, 5000, 5000] #allowable deceleration for each block jerk = [5000, 5000, 50000, 50000, 50000] #период интерполяции tsample = Decimal(0.01).quantize(Decimal("1.0000")) #tolerance linearErr = Decimal(0.01).quantize(Decimal("1.0000")) radiusErr = Decimal(0.005).quantize(Decimal("1.0000")) #corner parameters #расчет длины пути blocklen = Decimal(Interpolation.LengthLinear(trajectory[0], trajectory[1])).quantize( Decimal("1.0000")) #предварительный расчет длины разгона и торможения Nm = floor(acceleration[0] / (jerk[0] * tsample)) length_list = [] length_list1 = [] feedlist = [] i = Decimal(6).quantize(Decimal("1.0000")) while i <= feedrate[1]: LengthAcc = AccDecControl.AccDecDisplacement(3, i, jerk[0], acceleration[0], tsample, Nm) LengthDec = AccDecControl.AccDecDisplacement(i, 3, jerk[0], acceleration[0], tsample, Nm)