程序編譯問題
劉玉蓉
發(fā)布于2014-10-14 17:52
24
0
標簽:
S7-300程序,在STEP7里編譯程序時,在FC1里的兩個不同程序段里寫了2個相同地址的線圈輸出,為何在編譯全部300程序時,會對象已無錯編譯。
是不是能理解為S7-300程序里面允許出現(xiàn)多個相同地址的線圈輸出。
佳答案
由于PLC采用循環(huán)掃描方式執(zhí)行用戶程序,在程序執(zhí)行階段,PLC按順序對程序進行掃描,即從上到下,從左到右地掃描每條指令,并分別從輸入映像寄存器、內部元件寄存器(內部繼電器、定時器、計數(shù)器等)和輸出映像寄存器中獲得所需的數(shù)據進行運算、處理,再將程序的執(zhí)行結果寫入寄存執(zhí)行結果的輸出映像寄存器中保存。
如果在FC1里的在FC1里的兩個不同程序段里寫了2個相同地址的線圈輸出,程序在按順序從上往下掃描到個線圈時,檢查該指令前面的邏輯運算結果(RLO),如果RLO為’1”,線圈有電,如果RLO為“0”,其輸出線圈為失電;接著繼續(xù)執(zhí)行FC1下面的指令,如果掃描到第二個相同的線圈時,也是檢查其前面指令的運算結果決定其線圈的輸出,與個線圈的輸出是沒有關系的;它們就像兩端不同的指令運算結果并聯(lián)去控制同一個線圈,只不過有執(zhí)行時間的差別。其本身并沒有語法錯誤,所以執(zhí)行“編譯”時不回提示錯誤。
雖然可以S7-300程序里面允許出現(xiàn)多個相同地址的線圈輸出,但必須根據你的設定具體的工作條件,考慮到指令執(zhí)行前后的邏輯結果對設備和人生的傷害,并不可取。