調(diào)用函數(shù)的語法
以下語法用于調(diào)用函數(shù):
<函數(shù)名稱> (參數(shù)列表); //標(biāo)準(zhǔn)調(diào)用
<操作數(shù)>:=<函數(shù)名稱> (參數(shù)列表); //在表達(dá)式中調(diào)用
函數(shù)值
在 SCL 中,提供返回值的函數(shù)可在任何表達(dá)式中代替操作數(shù)。因此,返回值也稱為 SCL 中的“函數(shù)值”。
函數(shù)的調(diào)用選項取決于函數(shù)是否將函數(shù)值返回到調(diào)用塊。
在 RET_VAL 參數(shù)中定義函數(shù)值。如果 RET_VAL 參數(shù)為 VOID 數(shù)據(jù)類型,則函數(shù)不會向調(diào)用塊返回值。如果 RET_VAL 參數(shù)為另一種數(shù)據(jù)類型,則函數(shù)會返回該數(shù)據(jù)類型的函數(shù)值。
在 SCL 中,RET_VAL 參數(shù)可以使用除 ANY、ARRAY、STRUCT 和 VARIANT,以及 TIMER 和 COUNTER 參數(shù)類型之外的所有數(shù)據(jù)類型。
調(diào)用選項
SCL 中的調(diào)用函數(shù)有兩種可能:
函數(shù)(有和沒有函數(shù)值)的標(biāo)準(zhǔn)調(diào)用
使用標(biāo)準(zhǔn)調(diào)用,可以將函數(shù)的結(jié)果作為輸出參數(shù)或輸入輸出參數(shù)。
在有函數(shù)值的函數(shù)中調(diào)用表達(dá)式
返回函數(shù)值的函數(shù)可以在任何表達(dá)式中代替操作數(shù),例如,在賦值表達(dá)式中。
函數(shù)計算函數(shù)值(與函數(shù)同名),并將其返回到調(diào)用塊。這里,該值可替換此函數(shù)調(diào)用。
調(diào)用后,函數(shù)的結(jié)果將作為函數(shù)值或作為 output 和 in-out 參數(shù)提供。
遞歸塊調(diào)用
用戶可采用遞歸方式進(jìn)行塊調(diào)用。即,塊可以自我調(diào)用。請注意,此類調(diào)用的深度限值為 24 級,且不支持多重背景。
參數(shù)列表
如果要從 SCL 塊調(diào)用另一個代碼塊,則需要為被調(diào)用塊的形參提供實參。
可以通過賦值指令指定這些參數(shù)。該賦值指令可以為被調(diào)用塊中定義的參數(shù)進(jìn)行賦值(實參)。
調(diào)用后將在括號內(nèi)直接列出被調(diào)用代碼代的形參。輸入?yún)?shù)和輸入輸出參數(shù)的賦值標(biāo)識符為“:=”,輸出參數(shù)的賦值標(biāo)識符為“=>”。參數(shù)后面的灰色占位符表示所需的數(shù)據(jù)類型和參數(shù)類型。
參數(shù)的指定規(guī)則
下列規(guī)則適用于為函數(shù)指定參數(shù):
必須提供該函數(shù)的所有參數(shù)。
賦值的順序不重要。
常數(shù)、變量和表達(dá)式可作為實參。
形參和實參的數(shù)據(jù)類型需匹配。也選擇某些特定實參,其數(shù)據(jù)類型可隱式轉(zhuǎn)換為形參的數(shù)據(jù)類型。
各賦值操作通過逗號進(jìn)行分隔。
如果被調(diào)用的塊中只有一個參數(shù),那么在括號中指定的就是實參。無需再指定形參。
在 SCL 中調(diào)用函數(shù)時,無法通過 EN 使用釋放機制??梢允褂?IF 聲明代替有條件調(diào)用函數(shù)。
調(diào)用函數(shù)快的語法 下列語法用于以單個背景或多重背景方式調(diào)用函數(shù)塊:
單個背景:
如果函數(shù)塊來自項目:
如果函數(shù)塊來自“指令”(Instructions) 任務(wù)卡:
多重背景 <#背景名稱> (參數(shù)列表)
以單個背景或多重背景的方式調(diào)用
可以單個背景或多重背景方式調(diào)用函數(shù)塊。
以單個背景方式進(jìn)行調(diào)用
調(diào)用的函數(shù)塊將其數(shù)據(jù)存儲在自身的數(shù)據(jù)塊中。
以多重背景方式進(jìn)行調(diào)用
調(diào)用的函數(shù)塊將其數(shù)據(jù)存儲在調(diào)用函數(shù)塊的背景數(shù)據(jù)塊中。
關(guān)于調(diào)用類型的更多信息,請參見“另請參見”。
遞歸塊調(diào)用
用戶可采用遞歸方式進(jìn)行塊調(diào)用。即,塊可以自我調(diào)用。請注意,此類調(diào)用的深度限值為 24 級,且不支持多重背景。
參數(shù)列表
如果要從 SCL 塊調(diào)用另一個代碼塊,可以為被調(diào)用塊的形參提供實參。
可以通過賦值指令指定這些參數(shù)。該賦值指令可以為被調(diào)用塊中定義的參數(shù)進(jìn)行賦值(實參)。
調(diào)用后將在括號內(nèi)直接列出被調(diào)用代碼代的形參。輸入?yún)?shù)和輸入輸出參數(shù)的賦值標(biāo)識符為“:=”,輸出參數(shù)的賦值標(biāo)識符為“=>”。參數(shù)后面的占位符表示所需的數(shù)據(jù)類型和參數(shù)類型。
參數(shù)的指定規(guī)則
下列規(guī)則適用于指定參數(shù):
常數(shù)、變量和表達(dá)式可作為實參。
賦值的順序不重要。
形參和實參的數(shù)據(jù)類型需匹配。也選擇某些特定實參,其數(shù)據(jù)類型可隱式轉(zhuǎn)換為形參的數(shù)據(jù)類型。
各賦值操作通過逗號進(jìn)行分隔。
如果被調(diào)用的塊中只有一個參數(shù),那么在括號中指定的就是實參。無需再指定形參。
SCL 中調(diào)用函數(shù)的示例
標(biāo)準(zhǔn)調(diào)用
以下為標(biāo)準(zhǔn)函數(shù)調(diào)用 FB 的示例:
SCL |
---|
// 標(biāo)準(zhǔn)函數(shù)調(diào)用 "MyFC" (MyInput := 10, MyInOut := "Tag1"); |
結(jié)果
執(zhí)行 "MyFC" 塊之后,輸入/輸出參數(shù) "MyInOut" 中確定的值可用于調(diào)用塊的 "Tag1" 中,而且需要在此做進(jìn)一步處理。
以賦值方式調(diào)用
以下為以賦值方式調(diào)用函數(shù)的示例:
SCL |
---|
(*在賦值表達(dá)式中調(diào)用,為 "MyFC" 定義了函數(shù)值*) #MyOperand := "MyFC" (MyInput1 := 3, MyInput2 := 2, MyInput3 := 8.9, MyInOut := "Tag1"); |
結(jié)果
"MyFC" 的函數(shù)值將傳輸?shù)?"#MyOperand" 中。
以算術(shù)表達(dá)式方式進(jìn)行調(diào)用
以下為以算術(shù)表達(dá)式的方式調(diào)用函數(shù)的示例:
SCL |
---|
(*在數(shù)學(xué)表達(dá)式中調(diào)用,為 "MyFC" 定義了函數(shù)值*) #MyOperand := "Tag2" + "MyFC" (MyInput1 := 3, MyInput2 := 2, MyInput3 := 8.9); |
結(jié)果
"MyFC" 的函數(shù)值將加到 "Tag2" 上,并將結(jié)果傳送到 "MyOperand"。
在 SCL 中調(diào)用函數(shù)塊的示例 |
以單個背景方式進(jìn)行調(diào)用 以下為以單個背景方式調(diào)用 FB 的示例:
SCL |
---|
// 以單個背景方式調(diào)用 "MyDB" (MyInput:=10, MyInout:= "Tag1"); |
結(jié)果
執(zhí)行調(diào)用之后,輸入/輸出參數(shù) "MyInout" 中確定的值可用于 "MyDB" 數(shù)據(jù)塊的 "Tag1" 中。
以多重背景方式進(jìn)行調(diào)用
以下為以多重背景方式調(diào)用 FB 的示例:
SCL |
---|
// 以多重背景方式進(jìn)行調(diào)用 #MyFB (MyInput:= 10, MyInout:= "Tag1"); |
結(jié)果
執(zhí)行 "#MyFB" 塊之后,in/out 參數(shù) "MyInout" 中確定的值可用于調(diào)用代碼塊中該數(shù)據(jù)塊內(nèi)的 "Tag1"。
審核編輯:劉清
-
西門子
+關(guān)注
關(guān)注
93文章
2996瀏覽量
115491 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17025
原文標(biāo)題:西門子博途:SCL編程調(diào)用函數(shù)/調(diào)用函數(shù)塊
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論