temp(臨時變量)為暫時保存在局部數據區(qū)中的變量。只有在執(zhí)行該pou時,定義的臨時變量才被使用,pou執(zhí)行完后,不再使用臨時變量的數值。在主程序或中斷程序中,局部變量表只包含temp變量。子程序的局部變量表中還有三種變量:in(輸入變量)、out(輸出變量)、in_out(輸入/輸出變量)。
在局部變量表中賦值時,只需指定聲明局部變量的類型(temp、in、in_out或out)和數據類型(參見simatic和iec1131-3的數據類型),但不指定存儲器地址,程序編輯器自動地在l存儲區(qū)中為所有局部變量指定存儲器位置。起始地址為lo,每字節(jié)8位,能訪問到位。字節(jié)、字和雙字在局部存儲器中按字節(jié)順序分配,例如lbx、lwx或ldx。
局部變量作為參數向子程序傳遞時,在該子程序的局部變量表中指定的數據類型必須與調用pou中的數據類型值匹配。例如,在主程序ob1中調用子程序sbr0,使用名為input1的全局符號作為子程序的輸入參數。在sbr0的局部變量表中,已經定義了一個名為first的局部變量作為該輸入參數。當ob1調用sbro時,input1的數值被傳入first,input1和first的數據類型必須匹配。
在程序中使用符號名時,程序編輯器首先檢查有關pou的局部變量表,然后檢查符號表/全局變量表。如果某符號名在兩處都沒有定義,程序編輯器則將其視為全局符號,程序編輯器指定一條綠色波浪狀下劃線,并將名稱括在雙引號中,例如“undefinedlocalvar”(未定義的局部變量)。如果后來對該符號名賦了值,則程序編輯器不會自動再次讀取局部變量表并修改它。為了將該符號名作為局部變量使用,必須手工刪除程序代碼中的引號,并在符號名前插入#號,例如改為#undefinedlocalvar。
各子程序最多可調用16個輸入/輸出參數,如果超出16個,將返回錯誤。選擇希望的變量類型所在的行,并在名稱域中鍵入變量名稱,在數據類型域中鍵入數據類型。不需在局部變量表中的變量名稱前加#號,#號只在程序代碼中的局部變量名之前使用。
局部變量名可包含數字、字母和下劃線(_),也可以包含擴展字符(ascii128~255)。第一個字符必須是字母或擴展字符,關鍵字不能作為符號名。
局部變量表中的變量名被下載和存儲在cpu存儲器中,使用較長的變量名將占用較多的存儲空間。