上一篇文章我們對(duì)西門(mén)子SCL語(yǔ)言進(jìn)行了簡(jiǎn)單的介紹,今天這篇文章,我們來(lái)介紹下SCL語(yǔ)言的變量。 變量(Variable),是指在程序運(yùn)行過(guò)程中其值可以被改變的量。與“變量”相對(duì)應(yīng)的是“常量(Constant)”。顧名思義,常量的值在程序運(yùn)行過(guò)程中保持不變。 與變量相關(guān)的幾個(gè)概念包括:
變量的名稱(chēng)簡(jiǎn)稱(chēng)為變量名,用來(lái)唯一標(biāo)識(shí)該變量。變量名必須滿足編程語(yǔ)言的命名約定,比如S7-200 SMART規(guī)定變量名稱(chēng)不能以數(shù)字開(kāi)頭,不能使用關(guān)鍵詞,長(zhǎng)度不能超過(guò)23個(gè)字符等等。 變量的數(shù)據(jù)類(lèi)型用來(lái)表明其占用存儲(chǔ)區(qū)的大小及支持的操作方式。比如,布爾型數(shù)據(jù)占用存儲(chǔ)區(qū)的一個(gè)位,而字節(jié)型數(shù)據(jù)占用一個(gè)字節(jié),整型數(shù)據(jù)占用兩個(gè)字節(jié)等等。 變量的作用域是指變量的作用范圍。根據(jù)作用域的不同,變量可分為全局變量和局部變量; 變量的生命周期是指變量的存在時(shí)間。全局變量和靜態(tài)變量的生命周期與系統(tǒng)程序相同,即在整個(gè)系統(tǒng)程序運(yùn)行期間都有效;而臨時(shí)變量只在其所屬的程序塊被執(zhí)行期間有效。一旦該程序塊退出運(yùn)行,該變量的內(nèi)存就被釋放;當(dāng)程序塊再次運(yùn)行時(shí),其值重新被初始化。更多關(guān)于靜態(tài)變量與臨時(shí)變量的內(nèi)容,請(qǐng)參考我之前寫(xiě)的這篇文章: 什么是靜態(tài)變量?它與臨時(shí)變量有什么區(qū)別?(深入解讀) 編程的本質(zhì),是通過(guò)各種指令,對(duì)數(shù)據(jù)(變量 常量)進(jìn)行操作的過(guò)程。在西門(mén)子SCL的編程中,變量必須先聲明才能使用。 下面這張圖是西門(mén)子博途V14中SCL編輯器對(duì)功能(FC)的編輯界面。 編輯器的上部是變量的聲明部分。其中包括:輸入(Input)、輸出(Output)、輸入及輸出(InOut)、臨時(shí)變量(Temp)、常量(Consta)及返回值(Return)。 在輸入(Input)、輸出(Output)、輸入及輸出(InOut)中聲明的變量作為函數(shù)塊(FC)的形參,可以在上級(jí)調(diào)用中賦予不同的值。 比如下面這張圖為該功能(FC)添加電機(jī)啟停控制的變量參數(shù): 在OB1中調(diào)用該FC的代碼如下圖: 臨時(shí)變量只在本程序塊中有效,它一般用來(lái)保存程序運(yùn)行過(guò)程的中間值,當(dāng)FC的調(diào)用結(jié)束后,其存儲(chǔ)空間被釋放。也就是說(shuō),臨時(shí)變量的值不能一直保存。 但有時(shí)候,我們需要程序運(yùn)行的中間結(jié)果也能保存。比如,做一個(gè)累加器,我們希望其累加的結(jié)果在下一次調(diào)用時(shí)也是存在的,而不是每次都從0開(kāi)始累加。 怎么辦呢?這就要用到靜態(tài)變量。 在西門(mén)子SCL編程中,F(xiàn)C中不能聲明靜態(tài)變量。要使用靜態(tài)變量,必須使用功能塊(FB)。 下面這張圖是FB的編輯界面,其中Static欄就是用來(lái)聲明靜態(tài)變量的。 變量的聲明還必須為其指定數(shù)據(jù)類(lèi)型。明確了數(shù)據(jù)類(lèi)型,編譯器才知道需要為該變量分配多大的地址空間;明確了數(shù)據(jù)類(lèi)型,才能知道該變量支持哪些指令。 更多關(guān)于數(shù)據(jù)類(lèi)型的文章,可以在本站內(nèi)部搜索一下。 歡迎掃描下方的二維碼關(guān)注我們的微信公眾號(hào)。 西門(mén)子SCL編程入門(mén)教程連載(2)-變量 來(lái)源:本站| 大小:519KB| 下載次數(shù):499次 |
|
來(lái)自: zlp96 > 《待分類(lèi)》