我在一个FC中创建了一些局部变量,局部变量的功能就是做上升沿或下降沿来用的就像图片中所示。但用着用着就有些变量会置1,不能复位。我写了一个用这个变量的常开点来复位它自己有时也不行,真不知是怎么回事。
那些原因会使局部变量置1呢?我用做上升沿的变量只会用一次其它地方不会用的。请高手解答。谢谢。
问题补充:
我用的P,N指令是TEMP里的变量。
图片说明:
最佳答案
1、转帖:上升沿下降沿能不能使用局部变量:
上升沿、下降沿检测指令的功能需要至少两个扫描循环周期才能完成,即通过比较前后两个扫描周期同一BOOL变量或RLO的状态来判断是否是上升沿、下降沿。
同一级的逻辑块的临时局部数据区是公用的,结束对FB1的调用后,它的临时变量的值可能被FC2的临时变量覆盖掉,网友youhm的测试很说明问题。因此用块的临时变量作上升沿、下降沿检测指令的边沿存储位是极其危险的,稍有不慎,可能会出现灾难性的后果。
边沿存储位的确允许使用L区,但是请注意,块的局部变量区(L区)中有静态变量和临时变量,允许用L区并不说明用临时变量作边沿存储位的合法性。
2、为了不引起混乱,上升沿下降沿使用全局变量。
3、有关这个问题的讨论:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=856741&s_id=&num=&pno=2#anch
4、摘自:
http://o20l19vht.blog.163.com/blog/static/205948128201251442716186/
提问者对于答案的评价:
感谢。
感谢大家的回复。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc240828.html