技术论坛

 边沿指令的使用,我的经验

返回主题列表
作者 主题
yanxiao
版主

经验值:28601
发帖数:12143
精华帖:46
楼主    2007-03-24 23:06:44
主题:边沿指令的使用,我的经验 精华帖 
边沿指令的使用,我的经验

边沿指令,指上升沿指令EU和下降沿指令ED:
1、边沿指令针对位逻辑值操作,因此凡是操作结果为位逻辑的,都可以在后面跟边沿指令,比如I、Q、M、V、C、T、比较指令等等;
2、每条边沿指令都是相互独立的,它只跟程序执行到该指令时,被操作的位逻辑值有关;
3、程序从RUN开始后,第一次执行到该边沿指令时,总是输出0,并记下此次的位逻辑值;
4、以后程序每执行到该边沿指令,用记下的前一次的位逻辑值和当前的位逻辑值,以决定输出结果,同时再记下当前的位逻辑值,供下次使用。
5、上升沿指令在前前次位逻辑值为0而本次位逻辑值为1时,输出为1
6、下降沿指令在前前次位逻辑值为1而本次位逻辑值为0时,输出为1
7、不受边沿指令在主程序、子程序的位置限制
8、若在子程序中,同一扫描同期内调用多次,不影响边沿指令的行为;
9、多个扫描周期只调用一次,也不影响边沿指令的行为;
10、8/9两条说明,边沿指令不受扫描周期影响,只与最近两次执行情况有关。

以上几点,是本人使用边沿指令的经验、认识及原则,供S7-200论坛朋友参考,并欢迎深入讨论。
yanxiao
版主

经验值:28601
发帖数:12143
精华帖:46
    2008-03-21 23:27:25
精华帖  主题:回复:边沿指令的使用,我的经验
这个问题好,有兴趣。试分析如下:
1、两个EU的情况,假如:
LD I0.0
EU
EU
程序刚开始运行的第一次扫描,两个EU的输出均为0;
I0.0为第一个EU的输入,第一个EU的输出成为第二个EU的输入;
在I0.0没有上升沿时,第一个EU输出为0,自然第二个EU的输出也为0;
当I0.0出现上升沿,第一个EU输出1,这个1成为第二EU的上升沿,因此第二EU也输出1;
因此,两个EU的输出结果是一样的。
2、一个EU和一个ED,假如:
LD I0.0
EU
ED
同样,ED的输入来自EU的输出。当EU输出为1时,再一次扫到时必然输出0,从而成为一个下降沿输出给ED,所以ED在EU输出1后延时一次扫描输出1。
3、2个ED,假如:
LD I0.0
ED
ED
当I0.0出现下降沿,第一个ED输出1,第二个ED输出0;再次扫到时,第一个ED输出0,成为下降沿输出给第二个ED,第二个ED输出1。
4、结论:
EU跟在别的边沿指令之后,输出和前一个边沿指令相同;
ED跟在别的边沿指令之后,输出相当于是前一个边沿指令的输出延时一次扫描后的效果。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。