定義
可通過賦值運(yùn)算,可以將一個(gè)表達(dá)式的值分配給一個(gè)變量。賦值表達(dá)式的左側(cè)為變量,右側(cè)為表達(dá)式的值。
函數(shù)名稱也可以作為表達(dá)式。賦值運(yùn)算將調(diào)用該函數(shù),并返回其函數(shù)值,賦給左側(cè)的變量。
賦值運(yùn)算的數(shù)據(jù)類型取決于左邊變量的數(shù)據(jù)類型。右邊表達(dá)式的數(shù)據(jù)類型必須與該數(shù)據(jù)類型一致。
可通過以下方式編程賦值運(yùn)算:
單賦值運(yùn)算
執(zhí)行單賦值運(yùn)算時(shí),僅將一個(gè)表達(dá)式或變量分配給單個(gè)變量:
示例:a := b;
多賦值運(yùn)算
執(zhí)行多賦值運(yùn)算時(shí),一個(gè)指令中可執(zhí)行多個(gè)賦值運(yùn)算。
示例:a := b := c;
此時(shí),將執(zhí)行以下操作:
b := c;
a := b;
組合賦值運(yùn)算
執(zhí)行組合賦值運(yùn)算時(shí),可在賦值運(yùn)算中組合使用操作符“+”、“-”、“*”和“/”:
示例:a += b;
此時(shí),將執(zhí)行以下操作:
a := a + b;
也可多次組合賦值運(yùn)算:
a += b += c *= d;
此時(shí),將按以下順序執(zhí)行賦值運(yùn)算:
c := c * d;
b := b + c;
a := a + b;
STRUCT 數(shù)據(jù)類型或 PLC 數(shù)據(jù)類型的賦值運(yùn)算
如果結(jié)構(gòu)相同而且結(jié)構(gòu)中成員的數(shù)據(jù)類型和名稱也相同,則可以將整個(gè)結(jié)構(gòu)分配給另一個(gè)結(jié)構(gòu)。
可以為單個(gè)結(jié)構(gòu)元素分配一個(gè)變量、一個(gè)表達(dá)式或另一個(gè)結(jié)構(gòu)元素。
ARRAY 數(shù)據(jù)類型的賦值運(yùn)算
如果兩者的 ARRAY 元素?cái)?shù)據(jù)類型以及 ARRAY 限值都匹配,則可以將整個(gè) ARRAY 分配給另一個(gè) ARRAY。
可以為單個(gè) ARRAY 元素分配一個(gè)變量、一個(gè)表達(dá)式或另一個(gè) ARRAY 元素。
STRING 數(shù)據(jù)類型的賦值運(yùn)算
可將整個(gè) STRING 賦值給另一個(gè) STRING。
可以為單個(gè) STRING 元素分配另一個(gè) STRING 元素。
WSTRING 數(shù)據(jù)類型的賦值 (S7-1200/1500)
可將整個(gè) WSTRING 賦值給另一個(gè) WSTRING。
可以為單個(gè) WSTRING 元素分配另一個(gè) WSTRING 元素。
ANY 數(shù)據(jù)類型的賦值運(yùn)算
只能將 ANY 數(shù)據(jù)類型的變量賦值給以下對(duì)象:
同樣為 ANY 數(shù)據(jù)類型的 FB 的輸入參數(shù)或臨時(shí)本地?cái)?shù)據(jù)。
同樣為 ANY 數(shù)據(jù)類型的 FC 的臨時(shí)本地?cái)?shù)據(jù)。
請(qǐng)注意,使用 ANY 指針時(shí),只能指向“標(biāo)準(zhǔn)”訪問模式的存儲(chǔ)區(qū)。
POINTER 數(shù)據(jù)類型的賦值運(yùn)算
在 SCL 的賦值運(yùn)算中不能使用 POINTER。
示例
下表舉例說明了單賦值運(yùn)算的操作:
SCL | |
---|---|
"MyTag1" := "MyTag2"; | (* 變量賦值 *) |
"MyTag1" := "MyTag2" * "MyTag3"; | (* 表達(dá)式賦值 *) |
"MyTag" := "MyFC"(); | (* 調(diào)用一個(gè)函數(shù),并將函數(shù)值賦給 "MyTag" 變量 *) |
#MyStruct.MyStructElement := "MyTag"; | (* 將一個(gè)變量賦值給一個(gè)結(jié)構(gòu)元素 *) |
#MyArray[2] := "MyTag"; | (* 將一個(gè)變量賦值給一個(gè) ARRAY 元素 *) |
"MyTag" := #MyArray[1,4]; | (* 將一個(gè) ARRAY 元素賦值給一個(gè)變量 *) |
#MyString[2] := #MyOtherString[5]; | (* 將一個(gè) STRING 元素賦給另一個(gè) STRING 元素 *) |
下表舉例說明了多賦值運(yùn)算的操作:
SCL | |
---|---|
"MyTag1" := "MyTag2" := "MyTag3"; | (* 變量賦值 *) |
"MyTag1" := "MyTag2" := "MyTag3" * "MyTag4"; | (* 表達(dá)式賦值 *) |
"MyTag1" := "MyTag2" := "MyTag3 := "MyFC"(); | (* 調(diào)用一個(gè)函數(shù),并將函數(shù)值賦值給變量 "MyTag1"、"MyTag1" 和 "MyTag1" *) |
#MyStruct.MyStructElement1 := #MyStruct.MyStructElement2 := "MyTag"; | (* 將一個(gè)變量賦值給兩個(gè)結(jié)構(gòu)元素 *) |
#MyArray[2] := #MyArray[32] := "MyTag"; | (* 將一個(gè)變量賦值給兩個(gè)數(shù)組元素 *) |
"MyTag1" := "MyTag2" := #MyArray[1,4]; | (* 將一個(gè)數(shù)組元素賦值給兩個(gè)變量 *) |
#MyString[2] := #MyString[3]:= #MyOtherString[5]; | (* 將一個(gè) STRING 元素賦值給兩個(gè) STRING 元素 *) |
下表舉例說明了組合賦值運(yùn)算的操作:
SCL | |
---|---|
"MyTag1" += "MyTag2"; | (* "MyTag1" 和 "MyTag2" 相加,并將相加的結(jié)果賦值給 "MyTag1"。*) |
"MyTag1" -= "MyTag2" += "MyTag3"; | (* "MyTag2" 和 "MyTag3" 相加。將相加的結(jié)果賦值給操作數(shù)“"MyTag2"”,再從 "MyTag1" 中減去該值。計(jì)算結(jié)果將賦值給 "MyTag1"。*) |
#MyArray[2] += #MyArray[32] += "MyTag"; | (* 數(shù)組元素 "MyArray[32]" 加上 "MyTag"。計(jì)算結(jié)果將賦值給 "MyArray[32]"。這個(gè)數(shù)組中的各個(gè)元素將相加,然后將結(jié)果分配給數(shù)組元素 "MyArray[2]"。在該運(yùn)算中,相應(yīng)的數(shù)據(jù)類型必需兼容。*) |
#MyStruct.MyStructElement1 /= #MyStruct.MyStructElement2 *= "MyTag"; | (* 結(jié)構(gòu)化元素 "MyStructElement2" 乘以 "MyTag"。計(jì)算結(jié)果將賦值給 "MyStructElement2"。之后,將結(jié)構(gòu)化元素 "MyStructElement1" 除以 "MyStructElement2",并將計(jì)算結(jié)果賦值給 "MyStructElement1"。在該運(yùn)算中,相應(yīng)的數(shù)據(jù)類型必需兼容。*) |
審核編輯:湯梓紅
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4327瀏覽量
62573 -
運(yùn)算
+關(guān)注
關(guān)注
0文章
130瀏覽量
25785 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17057
原文標(biāo)題:博途:SCL的賦值運(yùn)算
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論