发表于:2004-02-26 10:55:00
楼主
1.问题的由来
其实这是一个简单数学问题,但是问的人却很多,因此在这里解答,下面是一个例子:
2.解决方法
if(old_ciPulse <> ciPulse)then
inc_ciPulse = ciPulse - old_ciPulse;计算增量
old_ciPulse = ciPulse
;转化为32位整数
aiPulse = aiPulse + inc_ciPulse + ref_aiPulse;
endif
;复位计数器
if(reset = 1) then
ref_aiPulse = 0 - aiPulse
reset = 0
endif
3. 变量声明:
3.1 ciPulse,USINT,global,硬件计数器变量
3.2 old_ciPulse,USINT,global,变化以前的值
3.3 inc_ciPulse,USINT,global,本次变化后对变化前的增量
3.4 aiPulse,DINT,global,转化到32位后的值.
3.5 old_ciPulse,inc_ciPulse必须和ciPulse同类型,且为无符号;
3.6 ref_aiPulse,aiPulse必须同类型,且为有符号;
4.注意事项
4.1 初始部分中,
old_ciPulse = ciPulse
ref_aiPulse = 0 - aiPulse
4.2 有符号的计数器处理不同,请想想怎么做?