調(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)用選項(xiàng)取決于函數(shù)是否將函數(shù)值返回到調(diào)用塊。 在 RET_VAL 參數(shù)中定義函數(shù)值。如果 RET_VAL 參數(shù)為 VOID 數(shù)據(jù)類型,則函數(shù)不會(huì)向調(diào)用塊返回值。如果 RET_VAL 參數(shù)為另一種數(shù)據(jù)類型,則函數(shù)會(huì)返回該數(shù)據(jù)類型的函數(shù)值。 在 SCL 中,RET_VAL 參數(shù)可以使用除 ANY、ARRAY、STRUCT 和 VARIANT,以及 TIMER 和 COUNTER 參數(shù)類型之外的所有數(shù)據(jù)類型。 調(diào)用選項(xiàng) SCL 中的調(diào)用函數(shù)有兩種可能:
遞歸塊調(diào)用 用戶可采用遞歸方式進(jìn)行塊調(diào)用。即,塊可以自我調(diào)用。請(qǐng)注意,此類調(diào)用的深度限值為 24 級(jí),且不支持多重背景。 參數(shù)列表 如果要從 SCL 塊調(diào)用另一個(gè)代碼塊,則需要為被調(diào)用塊的形參提供實(shí)參。 可以通過賦值指令指定這些參數(shù)。該賦值指令可以為被調(diào)用塊中定義的參數(shù)進(jìn)行賦值(實(shí)參)。 調(diào)用后將在括號(hào)內(nèi)直接列出被調(diào)用代碼代的形參。輸入?yún)?shù)和輸入輸出參數(shù)的賦值標(biāo)識(shí)符為“:=”,輸出參數(shù)的賦值標(biāo)識(shí)符為“=>”。參數(shù)后面的灰色占位符表示所需的數(shù)據(jù)類型和參數(shù)類型。 參數(shù)的指定規(guī)則 下列規(guī)則適用于為函數(shù)指定參數(shù):
以單個(gè)背景或多重背景的方式調(diào)用 可以單個(gè)背景或多重背景方式調(diào)用函數(shù)塊。
關(guān)于調(diào)用類型的更多信息,請(qǐng)參見“另請(qǐng)參見”。 遞歸塊調(diào)用 用戶可采用遞歸方式進(jìn)行塊調(diào)用。即,塊可以自我調(diào)用。請(qǐng)注意,此類調(diào)用的深度限值為 24 級(jí),且不支持多重背景。 參數(shù)列表 如果要從 SCL 塊調(diào)用另一個(gè)代碼塊,可以為被調(diào)用塊的形參提供實(shí)參。 可以通過賦值指令指定這些參數(shù)。該賦值指令可以為被調(diào)用塊中定義的參數(shù)進(jìn)行賦值(實(shí)參)。 調(diào)用后將在括號(hào)內(nèi)直接列出被調(diào)用代碼代的形參。輸入?yún)?shù)和輸入輸出參數(shù)的賦值標(biāo)識(shí)符為“:=”,輸出參數(shù)的賦值標(biāo)識(shí)符為“=>”。參數(shù)后面的占位符表示所需的數(shù)據(jù)類型和參數(shù)類型。 參數(shù)的指定規(guī)則 下列規(guī)則適用于指定參數(shù):
標(biāo)準(zhǔn)調(diào)用 以下為標(biāo)準(zhǔn)函數(shù)調(diào)用 FB 的示例:
結(jié)果 執(zhí)行 'MyFC' 塊之后,輸入/輸出參數(shù) 'MyInOut' 中確定的值可用于調(diào)用塊的 'Tag1' 中,而且需要在此做進(jìn)一步處理。 以賦值方式調(diào)用 以下為以賦值方式調(diào)用函數(shù)的示例:
結(jié)果 'MyFC' 的函數(shù)值將傳輸?shù)?'#MyOperand' 中。 以算術(shù)表達(dá)式方式進(jìn)行調(diào)用 以下為以算術(shù)表達(dá)式的方式調(diào)用函數(shù)的示例:
結(jié)果 'MyFC' 的函數(shù)值將加到 'Tag2' 上,并將結(jié)果傳送到 'MyOperand'。 結(jié)果 執(zhí)行調(diào)用之后,輸入/輸出參數(shù) 'MyInout' 中確定的值可用于 'MyDB' 數(shù)據(jù)塊的 'Tag1' 中。 以多重背景方式進(jìn)行調(diào)用 以下為以多重背景方式調(diào)用 FB 的示例:
結(jié)果 執(zhí)行 '#MyFB' 塊之后,in/out 參數(shù) 'MyInout' 中確定的值可用于調(diào)用代碼塊中該數(shù)據(jù)塊內(nèi)的 'Tag1'。 |
|