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