| 作者 | 主题 |
|---|---|
|
yanxiao 版主
经验值:28601 发帖数:12143 精华帖:46 |
楼主
主题:边沿指令的使用,我的经验
边沿指令的使用,我的经验
边沿指令,指上升沿指令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 |
楼
主题:回复:边沿指令的使用,我的经验
这个问题好,有兴趣。试分析如下:
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跟在别的边沿指令之后,输出相当于是前一个边沿指令的输出延时一次扫描后的效果。 |