常量的基本知識
定義
常量是具有固定值的數(shù)據(jù),其值在程序運(yùn)行期間不能更改。常量在程序執(zhí)行期間可由各種程序元素讀取,但不能被覆蓋。不同的常量值通常會指定相應(yīng)的表示方式,具體取決于數(shù)據(jù)類型和數(shù)據(jù)格式。類型與非類型表示方式不同。
無類型的常量
在無類型的表示法中,僅輸入常量值即可,無需輸入數(shù)據(jù)類型。對于無類型的常量,只有在首次算術(shù)運(yùn)算和邏輯運(yùn)算中使用后,才會獲得數(shù)據(jù)類型。
以下示例為無類型的表示法:
SCL | |
---|---|
#My_Int1 := #My_Int2 + 12345 |
(*常量“12345”的數(shù)據(jù)類型 取決于加數(shù) My_Int。2.此時,“12345”的數(shù)據(jù)類型為 INT。*) |
#My_Real1 := #My_Real2 + 12345 | (*常量“12345”的數(shù)據(jù)類型取決于加數(shù) My_Real2。此時,“12345”的數(shù)據(jù)類型為 REAL。*) |
帶有數(shù)據(jù)類型的常量
在有類型的表示法中,除指定常量值外還指定數(shù)據(jù)類型。
以下示例為有類型的表示法:
SCL | |
---|---|
#My_Int1 := INT#12345 | (*The data type of the constant is always INT.*) |
說明 LAD/FBD 中的 BOOL 型常量 僅 S7-1200 系列 CPU(固件 V4.0 或更高版本)和 S7-1500 系列 CPU(固件 V1.8 或更高版本),LAD / FBD 中的指令輸入才能使用 BOOL 型常量。 在較早的固件版本中,BOOL 型常量僅適用于系統(tǒng)內(nèi)部函數(shù)塊 (FB) 的指令。如果在程序段中插入該指令時“調(diào)用選項”(Call options) 對話框打開,則表示使用這些指令。對于其它指令,均不得將布爾型常量用作輸入。 在 S7-300/400 中,不允許使用布爾型常量。 |
符號常量名稱的聲明
符號常量
可以選擇聲明常量符號名,從而使程序中名稱下的常量值可用。這使得在更改常量值時,程序更具有可讀性并且更易于維護(hù)。
符號常量由以下元素組成:
名稱
數(shù)據(jù)類型
符號常量始終有數(shù)據(jù)類型;無類型表示法不適用于符號常量。
常量值
可以選擇指定數(shù)據(jù)類型值范圍內(nèi)的任意值作為常量值。有關(guān)值范圍的信息,請參見“數(shù)據(jù)類型”一章。
常量聲明
可以定義具有不同適用范圍的常量:
全局常量適用于 CPU 的所有區(qū)域
局部常量僅在塊內(nèi)適用
下表顯示常量類型之間的區(qū)別:
全局常量 | 局部常量 | |
---|---|---|
適用范圍 |
在整個 CPU 中有效。 該名稱在 CPU 中唯一。 |
僅在聲明它們的塊中有效。 該名稱在塊中唯一。 |
允許的字符 | 常量名稱允許使用的字符包括字母、數(shù)字和特殊字符。 | 常量名稱允許使用的字符包括字母、數(shù)字和特殊字符。 |
定義位置 | PLC 變量表的“常量”(Constants) 選項卡 | 塊接口 |
表示法 |
括在引號中,例如: "Glob_Const" |
帶有數(shù)字符號前綴,例如: #Loc_Const |
如果聲明的局部常量和全局常量具有相同的符號名稱,并將此重復(fù)指定的名稱用作變量的默認(rèn)值,則會發(fā)生名稱沖突。此時,系統(tǒng)將自動使用局部常量。
常量的數(shù)據(jù)類型
允許的數(shù)據(jù)類型
對于常量,允許使用所有基本數(shù)據(jù)類型和所有衍生數(shù)據(jù)類型:
二進(jìn)制數(shù)
位字符串
整數(shù)
浮點數(shù)
日期和時間
字符串
所有顯式和隱式類型轉(zhuǎn)換的通用規(guī)則均適用。
無類型常量的數(shù)據(jù)類型
無類型常量不顯式指定數(shù)據(jù)類型。只有在首次算術(shù)運(yùn)算和邏輯運(yùn)算中使用后,才會獲得數(shù)據(jù)類型。
以下示例說明如何使用無類型常量:
SCL | |
---|---|
#My_Int1 := #My_Int2 + 12345 |
(*常量“12345”的數(shù)據(jù)類型 取決于加數(shù) My_Int。2.此時,“12345”的數(shù)據(jù)類型為 INT。*) |
#My_Real1 := #My_Real2 + 12345 | (*常量“12345”的數(shù)據(jù)類型取決于加數(shù) My_Real2。此時,“12345”的數(shù)據(jù)類型為 REAL。*) |
使用常量的示例 |
在指令、賦值語句和表達(dá)式中使用
在指令或賦值語句中,常量可代替變量使用。也可以在 SCL 的表達(dá)式中使用常量。但是,由于常量無法寫入,常量只能用作輸入。
以下示例說明常量可能的用途:
SCL | |
---|---|
#My_Int := 3; | |
#My_Real1 := #My_Real2 * 3; | |
#My_Real1 := #My_Real2 * #My_local_const; | |
#My_Real1 := #My_Real2 * "My_global_const"; |
用作默認(rèn)值
可以將常量用作變量的默認(rèn)值。為此,在塊接口的“默認(rèn)值”(Default value) 列中輸入常量的值或常量的符號名稱。常量的數(shù)據(jù)類型必須與變量的數(shù)據(jù)類型相匹配,或能夠根據(jù)帶有 IEC 檢查的隱式轉(zhuǎn)換進(jìn)行轉(zhuǎn)換。
用作最大 STRING 長度
數(shù)據(jù)類型為 UINT、UDINT、ULINT、SINT、INT、DINT、LINT 的局部或全局常量,可用作最大 STRING 長度。
以下示例說明了如何將常量作為最大 STRING 長度:
SCL | |
---|---|
STRING[#My_local_const1] STRING["My_global_const1"] |
用作 ARRAY 限值
數(shù)據(jù)類型為 UINT、UDINT、ULINT、SINT、INT、DINT、LINT 的局部或全局常量,可用作 ARRAY 限值。
以下示例展示將常量用作 ARRAY 限值:
SCL | |
---|---|
Array[#My_local_const1..#My_local_const2] of REAL Array["My_global_const1".."My_global_const1"] of REAL |
-
plc
+關(guān)注
關(guān)注
5006文章
13107瀏覽量
461455 -
cpu
+關(guān)注
關(guān)注
68文章
10804瀏覽量
210829 -
定時器
+關(guān)注
關(guān)注
23文章
3231瀏覽量
114327 -
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13596
原文標(biāo)題:使用常量的示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論