
在回答這個(gè)問題之前,有必要對(duì)變量聲明表有一個(gè)基本了解。在STEP7中有兩種用來定義符號(hào)地址的表格形式:符號(hào)表(共享符號(hào))和變量聲明表(局域符號(hào)),其本質(zhì)都是為了建立絕對(duì)地址與符號(hào)地址之間的內(nèi)在聯(lián)系,但表格針對(duì)的對(duì)象不同。共享符號(hào)是整個(gè)程序所使用的共同符號(hào)(用于全局符號(hào)定義的表為符號(hào)表);而局域符號(hào)是某一特定邏輯快(OB、FB、FC等)所使用的臨時(shí)性標(biāo)記,只能在特定的邏輯塊中進(jìn)行臨時(shí)性定義。用于臨時(shí)性的、局域符號(hào)定義的表被稱為變量聲明表,又稱局部變量聲明表。
局部變量聲明表分為參數(shù)(輸入?yún)?shù)IN、輸出參數(shù)OUT、輸入/輸出參數(shù)IN_OUT)和局部變量。局部變量又包括靜態(tài)變量(STAT)和臨時(shí)變量(TEMP)兩種。參數(shù)可在調(diào)用塊(邏輯塊,塊中的形參)和被調(diào)用塊(功能FB有自己自動(dòng)生成的背景數(shù)據(jù)塊DI,而功能FC只能使用共享數(shù)據(jù)塊,提供調(diào)用塊的形參的實(shí)際參數(shù)值,與調(diào)用塊形式參數(shù)一一對(duì)應(yīng),數(shù)據(jù)類型必需一致)。靜態(tài)變量和臨時(shí)變量是僅供邏輯塊本身使用數(shù)據(jù),不能用作不同程序塊之間的數(shù)據(jù)接口。
通過以上分析,我們知道所謂局部變量(包括靜態(tài)變量和暫態(tài)變量)都是指對(duì)特定的邏輯塊而言的,局部變量只是在它所在的塊中有效,離開具體的邏輯塊談上述變量是沒有意義的,你不能在其他塊中調(diào)用利用變量(包括靜態(tài)變量和暫態(tài)變量),這是與共享符號(hào)不一致的,共享符號(hào)可以被任意塊調(diào)用。在每個(gè)邏輯塊的前上面部分就是變量聲明表的區(qū)域,在變量聲明表中,用戶聲明本塊中專用的變量,即局部變量包括塊的形參和參數(shù)的系統(tǒng)屬性。你可以在不同的塊中使用相同的局部變量符號(hào)不會(huì)產(chǎn)生沖突。
靜態(tài)變量(STAT)在PLC運(yùn)行期間始終被存儲(chǔ)。S7 將靜態(tài)變量定義在背景數(shù)據(jù)塊(針對(duì)FB而言,F(xiàn)C和OB無靜態(tài)變量),當(dāng)被調(diào)用塊運(yùn)行時(shí),能讀出或修改靜態(tài)變量;被調(diào)用塊結(jié)束后,靜態(tài)變量保留在數(shù)據(jù)塊中;
臨時(shí)變量(TEMP)是一種在塊執(zhí)行時(shí),用來暫時(shí)存儲(chǔ)數(shù)據(jù)的變量,這些數(shù)據(jù)存儲(chǔ)在CPU工作存儲(chǔ)區(qū)的局部數(shù)據(jù)堆棧(L堆棧)中。臨時(shí)變量可以在組織快OB、功能FC和功能塊FB中使用,當(dāng)塊執(zhí)行時(shí)它們被用來臨時(shí)存儲(chǔ)數(shù)據(jù),一旦塊執(zhí)行介紹,堆棧重新分配,臨時(shí)變量中的數(shù)據(jù)將丟失。
在程序塊中,如果在塊的變量聲明表中有局部變量符號(hào),編程是STEP7軟化自動(dòng)在局部變量名前加一個(gè)“#”號(hào),如果要訪問與局部變量重名的全局變量(在符號(hào)表中定義),則全局變量必須使用雙引號(hào)(如“Symbol”)。
上一篇 :plc的通訊方式詳解
下一篇 :PT100熱電阻溫度變送器接線方法