发布于 2014-04-02 23:43:56
3楼
变量应该置位但没有置位,可能原因有
1、干扰,我们不考虑
2、压根没被置位
3、只为了又被复位了
我们一个一个排除
原因1、不考虑
原因2、没被置位
程序是不是在BackGround里面执行?BackGround执行周期多长?
假设你的执行周期8ms,然后出现了一个2ms的信号,有可能程序没反应的。
因为硬件的刷新时间可能比BackGround块。而Trace也比BackGround快。
原因3、置位了又被复位
只能够是"ob_valve"发生了改变,您如果Trace过,就能排除这个可能。
建议1:
所以我觉得原因2最大,为了确定这个问题。
可以建个变量,i32_CommandCounter,
放在 var_b:=true;下面
i32_CommandCounter:=i32_CommandCounter+1;这样可以检查命令是否真的执行了。
建议2:
您的传感器信号可能很快,很短暂。
如果确定传感器信号 > ipo周期,那么把程序放到ipo程序里去执行。
建议3:
如果传感器信号可能小于ipo周期,需要用Measuring Input.
把Measuring input放到任何一个轴下面,程序里使能Measuring input.
然后用Measuring input里面的Counter Value(就是个计数器)的值,取个上升沿来作触发。
http://www.cnblogs.com/lion-zheng/