局部變量聲明表分為參數(輸入參數in、輸出參數out、輸入/輸出參數IN_OUT)和局部變量。局部變量包括靜態變量(STAT)和臨時變量(TEMP)。參數可以在調用塊(邏輯塊,塊中的形參)和被調用塊中(函數FB有自己自動生成的後臺數據塊DI,而函數FC只能使用* * *共享數據塊,提供調用塊形參的實際參數值,與調用塊的形參壹壹對應,數據類型必須壹致)。靜態變量和臨時變量是僅由邏輯塊本身使用的數據,不能用作不同程序塊之間的數據接口。
通過上面的分析,我們知道所謂的局部變量(包括靜態變量和瞬態變量)是指特定的邏輯塊,局部變量只在其所在的塊中有效。如果沒有具體的邏輯塊,談論上述變量是沒有意義的。不能在其他塊中調用利用率變量(包括靜態變量和瞬態變量),這與* * *的符號不壹致,* *的符號可以被任何塊調用。每個邏輯塊的頂部是變量聲明表的區域。在變量聲明表中,用戶聲明該塊中的特殊變量,即局部變量包括塊的形式參數和參數的系統屬性。您可以在不同的塊中使用相同的局部變量符號而不會發生沖突。
靜態變量(STAT)總是在PLC運行期間存儲。S7在後臺數據塊中定義了靜態變量(對於FB,FC和OB沒有靜態變量),可以在被調用的塊運行時讀取或修改靜態變量;被調用的塊結束後,靜態變量保留在數據塊中;
臨時變量(TEMP)是塊執行時用於臨時存儲數據的變量。這些數據存儲在CPU工作存儲區的本地數據堆棧(L堆棧)中。臨時變量可用於組織表達式OB、功能FC和功能塊FB。它們用於在塊執行時臨時存儲數據。壹旦引入塊並重新分配堆棧,臨時變量中的數據將會丟失。
在程序塊中,如果塊的變量聲明表中有壹個局部變量符號,編程將在STEP7中軟化並自動在局部變量名稱前添加壹個#符號。如果要訪問與局部變量(在符號表中定義)同名的全局變量,則全局變量必須使用雙引號(如“symbol”)。