西門子plc可以使用的“程序變量”包括程序參數(shù)、局部變量(又稱臨時(shí)變量temp)、靜態(tài)變量(stat)3種基本類型。
(1)程序參數(shù)
s7的程序參數(shù)用于傳遞邏輯塊之間的數(shù)據(jù)。當(dāng)采用調(diào)用式結(jié)構(gòu)時(shí),應(yīng)通過(guò)參數(shù)定義執(zhí)行被調(diào)用的邏輯塊所需要的數(shù)據(jù):也可以通過(guò)參數(shù)將被調(diào)用的邏輯塊的執(zhí)行結(jié)果返回給調(diào)用的塊。
在s7中,從參數(shù)的用途與功能上,程序參數(shù)可以分為輸入?yún)?shù)(in)、輸出參數(shù)(out)、輸入/輸出參數(shù)(in out)3種;從參數(shù)的性質(zhì)上可以分為形式參數(shù)(format parameter)與實(shí)際參數(shù)( actual parameter)2種。
①輸入?yún)?shù)(in):它是邏輯塊執(zhí)行所需要的基本輸入?yún)?shù),在邏輯塊中只能進(jìn)行“讀”操作,必須由調(diào)用它的其他邏輯塊予以賦值。
例如,在圖11-2.1中,信號(hào)a、b在邏輯塊中為“觸點(diǎn)”信號(hào),它必須由調(diào)用它的塊將其定義為io.1、i0.2或il.l、i1.2等具體而明確的輸入地址(可以是絕對(duì)地址或符號(hào)地址,參見(jiàn)圖11-2.2)。
②輸出參數(shù)(out):它是邏輯塊執(zhí)行結(jié)果存儲(chǔ)所需要的基本輸出參數(shù),在邏輯塊中只能進(jìn)行“寫(xiě)”操作,必須由調(diào)用它的其他邏輯塊定義地址,執(zhí)行結(jié)果可以用于其他邏輯塊。
例如,在圖11-2.2中的信號(hào)c在邏輯塊中為輸出“線圈”信號(hào),同樣必須由調(diào)用它的邏輯塊將其定義為qo.1或ql.l等具體而明確的輸出地址(可以是絕對(duì)地址或符號(hào)地址,參見(jiàn)圖11-2.2)。
③輸入/輸出參數(shù)(in- out):它是邏輯塊執(zhí)行所需要的基本輸入/輸出參數(shù),在邏輯塊中可以進(jìn)行“讀/寫(xiě)”操作,在邏輯塊中一方面要求有“初始值”輸入(初始值可以在變量表中設(shè)定),另一方面又可以進(jìn)行結(jié)果輸出。因此,必須由調(diào)用它的其他邏輯塊或變量表給定“初始值”;但在邏輯塊的執(zhí)行過(guò)程中將改變參數(shù)值,改變后的輸入/輸出參數(shù)同樣可以用于其他邏輯塊。
例如,在圖11-2.2中的d在邏輯塊中需要進(jìn)行加“1”運(yùn)算,它必須由調(diào)用它的塊給定初始值( mw10),運(yùn)算結(jié)果同時(shí)又保存在mw10中(參見(jiàn)圖11-2.2)。
④形式參數(shù)與實(shí)際參數(shù):在使用了變量后,功能塊中所使用的信號(hào)與數(shù)據(jù)只能以“符號(hào)”的形式出現(xiàn),如圖11-2.2中的a、b、c、d等,這些“符號(hào)”稱為形式參數(shù)(format parameter)。而在調(diào)用塊中對(duì)“符號(hào)”所賦予的實(shí)際地址或?qū)嶋H數(shù)值,如圖11-2.2中的io.1、i0.2、qo.1、mw10等稱為實(shí)際參數(shù)(actual parameter)。
(2)局部變量
s7中的局部變量又稱為“臨時(shí)變量(temporary)”,它用于存儲(chǔ)邏輯塊內(nèi)部中間狀態(tài)暫存的寄存器(堆棧l),堆棧的狀態(tài)僅在所在的邏輯塊內(nèi)部生效,不可以用于其他邏輯塊。
(3)靜態(tài)變量
靜態(tài)變量( static)只能用于功能塊fb,它存儲(chǔ)在與功能塊配套的即時(shí)數(shù)據(jù)塊di中,僅對(duì)所調(diào)用的fb塊有效,結(jié)果可以記憶,但只能與fb配套使用,不能用于其他邏輯塊。
(4)變量的使用范圍
程序變量在邏輯塊中的使用有規(guī)定的范圍,具體如下:
組織塊ob:只能使用臨時(shí)變量(temp);
程序塊fc:可以使用臨時(shí)變量(temp)與程序參數(shù)輸入(in)、輸出(out)與輸入/輸出(in_out):
功能塊fb:可以使用全部變量。