臨時變量是臨時存儲在本地數(shù)據(jù)區(qū)的變量。只有在執(zhí)行POU時,才使用定義的臨時變量,而在執(zhí)行POU后,不再使用臨時變量的值。在主程序或中斷程序中,局部變量表只包含TEMP變量。子程序的局部變量表中也有三個變量:輸入變量、輸出變量和輸入輸出變量。
在局部變量表中賦值時,只需要指定聲明的局部變量的類型(TEMP、in、IN_OUT或OUT)和數(shù)據(jù)類型(參見SIMATIC和IEC1131-3數(shù)據(jù)類型),但不需要指定內(nèi)存地址。程序編輯器自動為L存儲區(qū)中的所有局部變量指定存儲位置。起始地址為LO,每字節(jié)8位,可就地訪問。字節(jié)、字和雙字在本地內(nèi)存中按字節(jié)順序分配,如LBx、LWx或LDx。
當局部變量作為參數(shù)傳遞給子例程時,子例程的局部變量表中指定的數(shù)據(jù)類型必須與調(diào)用POU中的數(shù)據(jù)類型值匹配。比如在主程序OB1中調(diào)用子程序SBR0,使用全局符號INPUT1作為子程序的輸入?yún)?shù)。在SBR0的局部變量表中,已經(jīng)定義了一個名為FIRST的局部變量作為輸入?yún)?shù)。OB1調(diào)用SBRO時,INPUT1的值傳入FIRST,INPUT1和FIRST的數(shù)據(jù)類型必須匹配。
在程序中使用符號名時,程序編輯器首先檢查關于POU的局部變量表,然后檢查符號表/全局變量表。如果符號名稱在兩個地方都沒有定義,程序編輯器會將其視為全局符號。程序編輯器指定一條綠色波浪下劃線,并用雙引號將名稱括起來,例如“UndefinedLocalVar”(未定義的局部變量)。如果符號名稍后被賦值,程序編輯器將不會再次自動讀取局部變量表并對其進行修改。為了將符號名用作局部變量,您必須手動刪除程序代碼中的引號,并在符號名前面插入#符號,例如,將其更改為#UndefinedLocalVar。
每個子程序最多可以調(diào)用16個輸入/輸出參數(shù)。如果超過16個,將返回一個錯誤。選擇所需變量類型所在的行,并在名稱字段中鍵入變量名,在數(shù)據(jù)類型字段中鍵入數(shù)據(jù)類型。在局部變量表中無需在變量名前加#號,程序代碼中只在局部變量名前加。
局部變量名可以包含數(shù)字、字母、下劃線(_)或擴展字符(ASCII128~255)。第一個字符必須是字母或擴展字符,關鍵字不能用作符號名稱。
本地變量表中的變量名下載存儲在CPU內(nèi)存中,使用較長的變量名會占用更多的存儲空間。以上是基本內(nèi)容。不懂的朋友可以先看一個plc視頻教程,比較容易理解。本文來源:www.jcpeixun.com。
?
審核編輯:ymf
評論
查看更多