恭喜,你发布的帖子
发布于 2022-11-23 18:23:56
9楼
其实就是两种编程方法。
不使用Set/Reset的方法,就是从(后面)输出往前写。就是楼主说的那样。一个输出一行:
泵1 := not 停止位 and (状态S1 or 状态S3 or 标志位2 ) or .... ; 分好程序结构,表达式就简单些。
有多少输出点,就写多少行。
当然,添加、编辑,只对这个点,逻辑上自然不易出错。需要再添加一个点,也与其他点无关。
但是,这里有个前提条件:上面所有粗体变量,都不得被跳转(就是说,所有程序段需要全被扫描。)
例如:上述的 状态S1,被程序跳转越过没有被执行时,它将保持前一个周期的状态。(除非是SCR 自动复位。)
在LAD编程中,这种写法会显得占据很多页面;而在SCL中,仅是一行。
当从前面(输入端状态)向后(输出端)写时,可能就是:
输入1 or 输入2 and 输入3时,泵1、泵2、驱动3 开(SET);
not 输入4 or 输入5 and 输入3时,泵1关(Reset)、泵2开(Set)、驱动3关(Reset) ;
not 输入1 and not 输入2 and 输入3时,泵1、泵2、驱动3 关(Reset);
这种写法,就允许跳转。要逻辑完备,就需要每一状态都要枚举所有输出点Set/Reset ;那样才是完备的。
如果不能枚举所有输出点,就可能需要“补漏”。而且修改不容易。(因为,需要查找前面的Set/Reset )
请填写推广理由:
分享
只看
楼主