| 作者 | 主题 |
|---|---|
|
飘凡尘 游侠 经验值:396 发帖数:31 精华帖:0 |
楼主
主题:关于SET和RESET的疑惑 最近阅读一篇国内某著名上市公司的编程规范文件,收获不少。但是其中有一条不太理解,如图: “程序中如无必要,尽量减少SET和RESET指令的使用。” 平时编程时,这两个指令没少用,不太理解这句话的初衷是什么,是多用有什么不利影响吗? 烦请解惑!
当你排除了所有的不可能,无论剩下的是什么,即使再不可能也一定是真相
|
|
yanxiao 版主 经验值:28601 发帖数:12143 精华帖:46 |
22楼
主题:回复:关于SET和RESET的疑惑这架可能真打起来了。 对于一个输出点,我一开始一般是这样描述: 1、置位条件: 若干个; 2、复位条件:若干个。 归纳整理之后,写成一个逻辑式,方便注释。 用SET/RESET还是逻辑电路搭接,我遇到的情况,有一点点区别。 在顺控指令分支处理框架内,上面两种写法,对外表现可能会不同。 原因在于,逻辑电路搭接采用的是无条件执行指令,SET/RESET属于条件执行指令。 |
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
44楼
主题:回复:关于SET和RESET的疑惑我猜,喜欢使用SET/RESET的工程师,肯定大量使用IF ...THEN;使用 JP跳转;使用顺控指令。 就像版主杨工说的那样,条件执行。就是说,会有很多不执行的程序段。 这就带来一个问题:当不执行程序段中,使用线圈、赋值这类语句时,因为不执行,所以,此变量保持上一周期的结果。(语句计算结果应该是FALSE,但没有执行,仍是上一周期的TRUE)而且交叉引用检查,不仔细,就很容易蒙圈。 此时,就会觉得SET/RESET比较可靠了。由此,一发不可收拾地使用它们。 所以,出问题的关键:就是把程序指令写在了可跳过的程序段中。没有做到全扫描! 在200/300中有SCR/主控继电器MCR,有指令状态位S可用,能确保“唯一”性。 把(顺控)状态执行写在外面,就不会跳过了,自然就不需要SET/RESET了。 1200/1500没有这种顺控指令。就是用 CASE OF来做,若把程序指令写在其中,同样有这个问题。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|