DCS我不清楚,但是大致的思路也可以提供您参考:
首先你需要生成一个系统变量,用来产生一个毫秒的累积时间,当然你所使用的系统如果有类似的功能提供,你就不需要自己来做。
如我在富士的SPH系列PLC中的1毫秒定时中断中编写如下程序:
IF System_RunTime = UDINT#4294967295 THEN
System_RunTime := UDINT#0;
END_IF;
System_RunTime := System_RunTime + UDINT#1;
然后,就是一个类似于单按钮起停的方法,读取两次System_RunTime的时间,然后做减法,当然,需要注意的是:当System_RunTime超越了最大值时,它会被清零以防止溢出而导致程序的错误,因此,如果你的两次定时在最大值的左右分别记录到,你需要确保第一次的记录值小于第二次,否则,就发生了溢出,因此最后的时间间隔需要将最大值减去第一次记录值+第一次记录值。
就如同这里如果第一次记录在4000000000,而第二次在2000,那么最终值将应该是:
4294967295-4000000000+2000
而如果第一次记录比第二次小,那么只需要做减法即可。
至于速度,你知道了时间与距离,套用 速度=距离除以时间,我想也应该会做的。
至少要你的控制器具有足够快的速度你才能获得相对准确的结果。
Good Luck~