逐级加速,逐级减速(各个位置、速度值可以在0到最大值范围内自行设定)
位置为 0 mm时, 速度为 0 mm/s
位置在 0~200 mm 之间, 速度为 10 mm/s
位置在 200~500 mm 之间, 速度为 30 mm/s
位置在 500~800 mm 之间, 速度为 50 mm/s
位置在 800~1000 mm 之间,速度为 20 mm/s
位置为 1000 mm时, 速度为 0 mm/s
如下列表所示
位置(mm): 0 200 500 800 1000
速度(mm/s): 0 10 30 50 20 0
===================================================
本人已实现的加速过程的设计方法:
程序循环执行的周期:1ms
写入设定的位置N,速度N
开始:读取电子尺反馈的实际位置 S'n
判断实际位置是否到达位置N?
是,写入位置N+1,速度N+1,回到“开始:”处往下执行
否,则
结合前一周期(1ms)保存的实际位置值
计算出当前周期实际速度 Vn' = (S'n - S'n-1) / dt ( dt = 1 )
保存当前实际位置以备计算下一周期(1ms)的实际速度
*******************************************************************
判断实际速度是否达到速度N?
是,则
根据匀速直线运动公式,计算出当前周期(1ms)应到达的理论位置 Sn = a * t
否,则
根据匀加速直线运动公式,计算出当前周期(1ms)应到达的理论位置 Sn = a * t^2 / 2
*******************************************************************
由当前理论位置和实际位置,计算出位置偏差 dSn = Sn - S'n
由当前实际速度和位置偏差,计算出相应的输出速度进行控制调节 Vn =Vn' + dSn / dt
为精确控制可以将PID算法应用于输出速度的计算上
====================================================
====================================================
以上是逐级加速过程的设计思路,由于逐级减速过程,本人能想到的方法因为涉及到每次减速前要先确定实际的减速距离,而实际减速距离的确定相当困难(设计要求实际速度必须在到达下一个指定位置时达到设定值,不能从到达下一个指定位置后开始减速),所以恳请论坛里的各位前辈和大侠不吝赐教,能够提供一个逐级减速的设计思路给在下,相互学习一下
====================================================