今天給大家講一下什么是局部變量、全局變量、臨時(shí)變量、靜態(tài)變量,這些變量都有什么區(qū)別,以及在西門子S7-1200中這些變量如何來使用。
在編寫帶參數(shù)子程序時(shí)需要使用局部變量。在PLC變量表和DB塊中定義的變量稱為全局變量,在全部程序中都有效。在某個(gè)塊的變量聲明表中定義的變量稱為局部變量,只在創(chuàng)建它的塊中有效。
為了增強(qiáng)通用性,方便移植到別的項(xiàng)目,子程序FC和FB中一般只有局部變量。在局部變量表中,名稱列用來定義局部變量的符號(hào)名,數(shù)據(jù)類型列用來定義局部變量的數(shù)據(jù)類型。
在FC和FB的變量聲明表中,形式變量也就是形式參數(shù),用來在子程序塊和調(diào)用它的程序塊之間傳遞數(shù)據(jù)。形式參數(shù)INPUT是指輸入到子程序塊的參數(shù),在子程序塊中只能讀取輸入值。OUTPUT是指從子程序塊返回的參數(shù),在子程序塊中只能寫入返回值。INOUT是輸入并從子程序塊返回的參數(shù),在子程序塊中既可以讀也可以寫,輸入值和返回值使用同一個(gè)地址。FC中的RETURN返回值只有一個(gè),主要用于FC和調(diào)用該FC的其它程序交換數(shù)據(jù),反應(yīng)該FC的執(zhí)行情況。在TEMP行下定義的變量稱為臨時(shí)變量,用來在該程序塊執(zhí)行時(shí)暫時(shí)存儲(chǔ)數(shù)據(jù),當(dāng)退出該程序塊時(shí),這些程序?qū)G失。請(qǐng)注意,臨時(shí)變量不能賦予初始值。如果有一些變量在調(diào)用結(jié)束后仍需要保持原值,則必須將這些變量定義為靜態(tài)變量,即在STATIC行下定義的變量,靜態(tài)變量只能用在FB中。
賦值給FB的背景數(shù)據(jù)塊用作靜態(tài)變量的存儲(chǔ)區(qū)。因?yàn)镕B帶有存儲(chǔ)區(qū),即背景數(shù)據(jù)塊,所以形式變量和靜態(tài)變量可以賦予初始值。在FB中定義的靜態(tài)變量不在生成的指令塊中顯示。
在程序中用符號(hào)名訪問變量時(shí),全局變量的符號(hào)名加引號(hào)、局部變量的符號(hào)名前帶#號(hào)以示區(qū)分。
調(diào)用FC時(shí)必須用實(shí)際參數(shù)代替形式參數(shù)。調(diào)用FB時(shí)必須指定背景數(shù)據(jù)塊,實(shí)際參數(shù)的值被存儲(chǔ)在該FB的背景數(shù)據(jù)塊中。如果在塊調(diào)用時(shí)沒有實(shí)際參數(shù)分配給形式參數(shù),則在程序執(zhí)行時(shí)將采用上一次存儲(chǔ)在背景數(shù)據(jù)塊中的參數(shù)值。
以上就是今天給大家講解的內(nèi)容,我們簡單介紹了局部變量、全局變量、臨時(shí)變量、靜態(tài)變量,這些變量都有什么區(qū)別,以及在西門子S7-1200中這些變量如何來使用。
聯(lián)系客服