发布于 2011-09-03 18:03:46
6楼
呵呵,张侠和Z版这次看问题有些想当然了。
I点是可以做为线圈使用的。
从原理上讲,I是输入映像区,不是输入端口。输入湍口是只读的,但映像区是内存区,是可读也可写的。
I点的状态在每次程序扫描周期开始前从输入端口读入,在程序扫描周期开始时表示的是输入端口的实际状态。但如果在程序中对I点赋值,则从赋值语句往后,I点的状态就不再是输入端口的实际状态,而是赋值指令赋给其的状态。当然下次扫描周期开始之前,I点的值又被复位了。
这种方式我在实际应用中做为应急使用过,所以不用怀疑。如果谁不相信的话,可以找个PLC自己试一下。
对于楼主的程序,如果了解其设备的情况,就可以理解为什么会这么编写了。
我的分析如下:
程序设计之初,该阀门的开到位和关到位分别有反馈信号到PLC,分别对应I0.0和I0.1,反馈信号可能用于后续设备的互锁控制。但设备实际情况,或许是阀门订错了型号,订成不带反馈的了,或者反馈信号坏了,总之少了反馈信号,按原来的程序设备不能正常运行。而要把程序中所有的I0.0和I0.1都删除的话,要对程序做大量的改动,而以后如果恢复成带反馈的阀门,又得重新改程序,会产生很多问题。
而采用楼主这段程序:
LD Q0.0
= I0.1
LDN Q0.0
=I0.0
只要阀门输出点接通,就将阀门开到位信号置位;阀门输出点断开,就将阀门关到位信号置位;这样I0.0、I0.1基本上能够反映阀门的开闭状态 ,不用修改后面的代码,就可以使设备正常运行。
这就是当初编程者写这段代码的目的。
当然这种方法只应做为应急的手段,如反馈信号坏了,在没有修复之前,用这种方法使设备能够运行起来。但应在反馈信号修复后将程序恢复。
没有