西門子SCL編程入門教程連載(2)-變量
上一篇文章我們對西門子SCL語言進行了簡單的介紹,今天這篇文章,我們來介紹下SCL語言的變量。

變量(Variable),是指在程序運行過程中其值可以被改變的量。與“變量”相對應(yīng)的是“常量(Constant)”。顧名思義,常量的值在程序運行過程中保持不變。
與變量相關(guān)的幾個概念包括:
-
變量的名稱;
-
變量的數(shù)據(jù)類型;
-
變量的作用域;
-
變量的生命周期;
變量的名稱簡稱為變量名,用來唯一標(biāo)識該變量。變量名必須滿足編程語言的命名約定,比如S7-200 SMART規(guī)定變量名稱不能以數(shù)字開頭,不能使用關(guān)鍵詞,長度不能超過23個字符等等。
變量的數(shù)據(jù)類型用來表明其占用存儲區(qū)的大小及支持的操作方式。比如,布爾型數(shù)據(jù)占用存儲區(qū)的一個位,而字節(jié)型數(shù)據(jù)占用一個字節(jié),整型數(shù)據(jù)占用兩個字節(jié)等等。
變量的作用域是指變量的作用范圍。根據(jù)作用域的不同,變量可分為全局變量和局部變量;
變量的生命周期是指變量的存在時間。全局變量和靜態(tài)變量的生命周期與系統(tǒng)程序相同,即在整個系統(tǒng)程序運行期間都有效;而臨時變量只在其所屬的程序塊被執(zhí)行期間有效。一旦該程序塊退出運行,該變量的內(nèi)存就被釋放;當(dāng)程序塊再次運行時,其值重新被初始化。更多關(guān)于靜態(tài)變量與臨時變量的內(nèi)容,請參考我之前寫的這篇文章:
什么是靜態(tài)變量?它與臨時變量有什么區(qū)別?(深入解讀)
編程的本質(zhì),是通過各種指令,對數(shù)據(jù)(變量+常量)進行操作的過程。在西門子SCL的編程中,變量必須先聲明才能使用。
下面這張圖是西門子博途V14中SCL編輯器對功能(FC)的編輯界面。

編輯器的上部是變量的聲明部分。其中包括:輸入(Input)、輸出(Output)、輸入及輸出(InOut)、臨時變量(Temp)、常量(Consta)及返回值(Return)。
在輸入(Input)、輸出(Output)、輸入及輸出(InOut)中聲明的變量作為函數(shù)塊(FC)的形參,可以在上級調(diào)用中賦予不同的值。
比如下面這張圖為該功能(FC)添加電機啟停控制的變量參數(shù):

在OB1中調(diào)用該FC的代碼如下圖:

臨時變量只在本程序塊中有效,它一般用來保存程序運行過程的中間值,當(dāng)FC的調(diào)用結(jié)束后,其存儲空間被釋放。也就是說,臨時變量的值不能一直保存。
但有時候,我們需要程序運行的中間結(jié)果也能保存。比如,做一個累加器,我們希望其累加的結(jié)果在下一次調(diào)用時也是存在的,而不是每次都從0開始累加。
怎么辦呢?這就要用到靜態(tài)變量。
在西門子SCL編程中,F(xiàn)C中不能聲明靜態(tài)變量。要使用靜態(tài)變量,必須使用功能塊(FB)。
下面這張圖是FB的編輯界面,其中Static欄就是用來聲明靜態(tài)變量的。

變量的聲明還必須為其指定數(shù)據(jù)類型。明確了數(shù)據(jù)類型,編譯器才知道需要為該變量分配多大的地址空間;明確了數(shù)據(jù)類型,才能知道該變量支持哪些指令。關(guān)于數(shù)據(jù)類型,由于無法添加早期文章的鏈接,請到官網(wǎng)(https://www.founderchip.com)搜索一下?;蛘哌M入小程序【李工談工控】,在搜索欄中搜索“數(shù)據(jù)類型”。
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
