恭喜,你发布的帖子
发布于 2020-10-30 14:36:09
8楼
你可以测得指定的伺服读取得到数据的时刻,两次之间的时差。利用一个虚拟时间轴上面的某个统一测试时间点对两次读取的值进行插值解释出两此读取之间的某一个值,作为结果。
举例:
……
第n0秒读到伺服1的值是100。时间轴同时是4100
第n1秒读到伺服2的值是300。时间轴同时是4200
第n2秒读……此时产生ID信号了。时间发生在时间轴上的4234时刻上。暂时记住。
……到伺服3的值是600。时间轴4400
第n3秒读到伺服4的值是800 。时间轴4600
读完了。现在算一下在刚才4234时刻的时候每一个伺服可能在什么值的范围。结合上一轮(不是我上面抄写的这一轮)的读取履历,
上一轮
轴1 50 3300
轴2 200 3400
轴3 500 3500
轴4 700 3600
并且假设两轮之间伺服的速度是不变的,(因为两次读取之间的实际时间非常短,暂且看做速度不变)那么就插值。已知直线上的两个点,求某一值x对应的Y值,所有轴都可以获得插值点的值。无论所求点在已知点以内还是在外,都可以求得Y值。直线上两个点(50,3300)和(100,4100)求4234对应的值。这个是初二知识,不详说了。
仅提供思路。这个方法我用过。而且还是用modbus读4个伺服,可以想象多慢!但是计算结果令我满意。
请填写推广理由:
分享
只看
楼主