在回答你的問題之前,有必要對變數宣告表有一個基本瞭解。在STEP7中有兩種用來定義符號地址的表格形式:符號表(共享符號)和變數宣告表(局域符號),其本質都是為了建立絕對地址與符號地址之間的內在聯絡,但表格針對的物件不同。共享符號是整個程式所使用的共同符號(用於全域性符號定義的表為符號表);而局域符號是某一特定邏輯快(OB、FB、FC等)所使用的臨時性標記,只能在特定的邏輯塊中進行臨時性定義。用於臨時性的、局域符號定義的表被稱為變數宣告表,又稱區域性變數宣告表。
區域性變數宣告表分為引數(輸入引數IN、輸出引數OUT、輸入/輸出引數IN_OUT)和區域性變數。區域性變數又包括靜態變數(STAT)和臨時變數(TEMP)兩種。引數可在呼叫塊(邏輯塊,塊中的形參)和被呼叫塊(功能FB有自己自動生成的背景資料塊DI,而功能FC只能使用共享資料塊,提供呼叫塊的形參的實際引數值,與呼叫塊形式引數一一對應,資料型別必需一致)。靜態變數和臨時變數是僅供邏輯塊本身使用資料,不能用作不同程式塊之間的資料介面。
透過以上分析,我們知道所謂區域性變數(包括靜態變數和暫態變數)都是指對特定的邏輯塊而言的,區域性變數只是在它所在的塊中有效,離開具體的邏輯塊談上述變數是沒有意義的,你不能在其他塊中呼叫利用變數(包括靜態變數和暫態變數),這是與共享符號不一致的,共享符號可以被任意塊呼叫。在每個邏輯塊的前上面部分就是變數宣告表的區域,在變數宣告表中,使用者宣告本塊中專用的變數,即區域性變數包括塊的形參和引數的系統屬性。你可以在不同的塊中使用相同的區域性變數符號不會產生衝突。
靜態變數(STAT)在PLC執行期間始終被儲存。S7 將靜態變數定義在背景資料塊(針對FB而言,FC和OB無靜態變數),當被呼叫塊執行時,能讀出或修改靜態變數;被呼叫塊結束後,靜態變數保留在資料塊中;
臨時變數(TEMP)是一種在塊執行時,用來暫時儲存資料的變數,這些資料儲存在CPU工作儲存區的區域性資料堆疊(L堆疊)中。臨時變數可以在組織快OB、功能FC和功能塊FB中使用,當塊執行時它們被用來臨時儲存資料,一旦塊執行介紹,堆疊重新分配,臨時變數中的資料將丟失。
在程式塊中,如果在塊的變數宣告表中有區域性變數符號,程式設計是STEP7軟化自動在區域性變數名前加一個“#”號,如果要訪問與區域性變數重名的全域性變數(在符號表中定義),則全域性變數必須使用雙引號(如“Symbol”)
在回答你的問題之前,有必要對變數宣告表有一個基本瞭解。在STEP7中有兩種用來定義符號地址的表格形式:符號表(共享符號)和變數宣告表(局域符號),其本質都是為了建立絕對地址與符號地址之間的內在聯絡,但表格針對的物件不同。共享符號是整個程式所使用的共同符號(用於全域性符號定義的表為符號表);而局域符號是某一特定邏輯快(OB、FB、FC等)所使用的臨時性標記,只能在特定的邏輯塊中進行臨時性定義。用於臨時性的、局域符號定義的表被稱為變數宣告表,又稱區域性變數宣告表。
區域性變數宣告表分為引數(輸入引數IN、輸出引數OUT、輸入/輸出引數IN_OUT)和區域性變數。區域性變數又包括靜態變數(STAT)和臨時變數(TEMP)兩種。引數可在呼叫塊(邏輯塊,塊中的形參)和被呼叫塊(功能FB有自己自動生成的背景資料塊DI,而功能FC只能使用共享資料塊,提供呼叫塊的形參的實際引數值,與呼叫塊形式引數一一對應,資料型別必需一致)。靜態變數和臨時變數是僅供邏輯塊本身使用資料,不能用作不同程式塊之間的資料介面。
透過以上分析,我們知道所謂區域性變數(包括靜態變數和暫態變數)都是指對特定的邏輯塊而言的,區域性變數只是在它所在的塊中有效,離開具體的邏輯塊談上述變數是沒有意義的,你不能在其他塊中呼叫利用變數(包括靜態變數和暫態變數),這是與共享符號不一致的,共享符號可以被任意塊呼叫。在每個邏輯塊的前上面部分就是變數宣告表的區域,在變數宣告表中,使用者宣告本塊中專用的變數,即區域性變數包括塊的形參和引數的系統屬性。你可以在不同的塊中使用相同的區域性變數符號不會產生衝突。
靜態變數(STAT)在PLC執行期間始終被儲存。S7 將靜態變數定義在背景資料塊(針對FB而言,FC和OB無靜態變數),當被呼叫塊執行時,能讀出或修改靜態變數;被呼叫塊結束後,靜態變數保留在資料塊中;
臨時變數(TEMP)是一種在塊執行時,用來暫時儲存資料的變數,這些資料儲存在CPU工作儲存區的區域性資料堆疊(L堆疊)中。臨時變數可以在組織快OB、功能FC和功能塊FB中使用,當塊執行時它們被用來臨時儲存資料,一旦塊執行介紹,堆疊重新分配,臨時變數中的資料將丟失。
在程式塊中,如果在塊的變數宣告表中有區域性變數符號,程式設計是STEP7軟化自動在區域性變數名前加一個“#”號,如果要訪問與區域性變數重名的全域性變數(在符號表中定義),則全域性變數必須使用雙引號(如“Symbol”)