程序编译问题
刘玉蓉
发布于2014-10-14 17:52
24
0
标签:
S7-300程序,在STEP7里编译程序时,在FC1里的两个不同程序段里写了2个相同地址的线圈输出,为何在编译全部300程序时,会对象已无错编译。
是不是能理解为S7-300程序里面允许出现多个相同地址的线圈输出。
佳答案
由于PLC采用循环扫描方式执行用户程序,在程序执行阶段,PLC按顺序对程序进行扫描,即从上到下,从左到右地扫描每条指令,并分别从输入映像寄存器、内部元件寄存器(内部继电器、定时器、计数器等)和输出映像寄存器中获得所需的数据进行运算、处理,再将程序的执行结果写入寄存执行结果的输出映像寄存器中保存。
如果在FC1里的在FC1里的两个不同程序段里写了2个相同地址的线圈输出,程序在按顺序从上往下扫描到个线圈时,检查该指令前面的逻辑运算结果(RLO),如果RLO为’1”,线圈有电,如果RLO为“0”,其输出线圈为失电;接着继续执行FC1下面的指令,如果扫描到第二个相同的线圈时,也是检查其前面指令的运算结果决定其线圈的输出,与个线圈的输出是没有关系的;它们就像两端不同的指令运算结果并联去控制同一个线圈,只不过有执行时间的差别。其本身并没有语法错误,所以执行“编译”时不回提示错误。
虽然可以S7-300程序里面允许出现多个相同地址的线圈输出,但必须根据你的设定具体的工作条件,考虑到指令执行前后的逻辑结果对设备和人生的伤害,并不可取。