#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]) + " мм.")
Exemple #3
0
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)
Exemple #4
0
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)