0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

西門(mén)子博途:SCL編程調(diào)用函數(shù)/調(diào)用函數(shù)塊介紹

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 2023-06-20 09:41 ? 次閱讀

調(diào)用函數(shù)的語(yǔ)法

以下語(yǔ)法用于調(diào)用函數(shù):

<函數(shù)名稱(chēng)> (參數(shù)列表); //標(biāo)準(zhǔn)調(diào)用

<操作數(shù)>:=<函數(shù)名稱(chēng)> (參數(shù)列表); //在表達(dá)式中調(diào)用

函數(shù)值

在 SCL 中,提供返回值的函數(shù)可在任何表達(dá)式中代替操作數(shù)。因此,返回值也稱(chēng)為 SCL 中的“函數(shù)值”。

函數(shù)的調(diào)用選項(xiàng)取決于函數(shù)是否將函數(shù)值返回到調(diào)用塊。

在 RET_VAL 參數(shù)中定義函數(shù)值。如果 RET_VAL 參數(shù)為 VOID 數(shù)據(jù)類(lèi)型,則函數(shù)不會(huì)向調(diào)用塊返回值。如果 RET_VAL 參數(shù)為另一種數(shù)據(jù)類(lèi)型,則函數(shù)會(huì)返回該數(shù)據(jù)類(lèi)型的函數(shù)值。

在 SCL 中,RET_VAL 參數(shù)可以使用除 ANY、ARRAY、STRUCT 和 VARIANT,以及 TIMER 和 COUNTER 參數(shù)類(lèi)型之外的所有數(shù)據(jù)類(lèi)型。

調(diào)用選項(xiàng)

SCL 中的調(diào)用函數(shù)有兩種可能:

函數(shù)(有和沒(méi)有函數(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ù)計(jì)算函數(shù)值(與函數(shù)同名),并將其返回到調(diào)用塊。這里,該值可替換此函數(shù)調(diào)用。

調(diào)用后,函數(shù)的結(jié)果將作為函數(shù)值或作為 output 和 in-out 參數(shù)提供。

遞歸塊調(diào)用

用戶(hù)可采用遞歸方式進(jìn)行塊調(diào)用。即,塊可以自我調(diào)用。請(qǐng)注意,此類(lèi)調(diào)用的深度限值為 24 級(jí),且不支持多重背景。

參數(shù)列表

如果要從 SCL 塊調(diào)用另一個(gè)代碼塊,則需要為被調(diào)用塊的形參提供實(shí)參。

可以通過(guò)賦值指令指定這些參數(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ù)類(lèi)型和參數(shù)類(lèi)型。

參數(shù)的指定規(guī)則

下列規(guī)則適用于為函數(shù)指定參數(shù):

必須提供該函數(shù)的所有參數(shù)。

賦值的順序不重要。

常數(shù)、變量和表達(dá)式可作為實(shí)參。

形參和實(shí)參的數(shù)據(jù)類(lèi)型需匹配。也選擇某些特定實(shí)參,其數(shù)據(jù)類(lèi)型可隱式轉(zhuǎn)換為形參的數(shù)據(jù)類(lèi)型。

各賦值操作通過(guò)逗號(hào)進(jìn)行分隔。

如果被調(diào)用的塊中只有一個(gè)參數(shù),那么在括號(hào)中指定的就是實(shí)參。無(wú)需再指定形參。

在 SCL 中調(diào)用函數(shù)時(shí),無(wú)法通過(guò) EN 使用釋放機(jī)制??梢允褂?IF 聲明代替有條件調(diào)用函數(shù)。

調(diào)用函數(shù)快的語(yǔ)法 下列語(yǔ)法用于以單個(gè)背景或多重背景方式調(diào)用函數(shù)塊:

單個(gè)背景:

如果函數(shù)塊來(lái)自項(xiàng)目: (參數(shù)列表)

如果函數(shù)塊來(lái)自“指令”(Instructions) 任務(wù)卡: .<指令名稱(chēng)> (參數(shù)列表) 或 <指令名稱(chēng)> (參數(shù)列表)

多重背景 <#背景名稱(chēng)> (參數(shù)列表)

以單個(gè)背景或多重背景的方式調(diào)用

可以單個(gè)背景或多重背景方式調(diào)用函數(shù)塊。

以單個(gè)背景方式進(jìn)行調(diào)用

調(diào)用的函數(shù)塊將其數(shù)據(jù)存儲(chǔ)在自身的數(shù)據(jù)塊中。

以多重背景方式進(jìn)行調(diào)用

調(diào)用的函數(shù)塊將其數(shù)據(jù)存儲(chǔ)在調(diào)用函數(shù)塊的背景數(shù)據(jù)塊中。

關(guān)于調(diào)用類(lèi)型的更多信息,請(qǐng)參見(jiàn)“另請(qǐng)參見(jiàn)”。

遞歸塊調(diào)用

用戶(hù)可采用遞歸方式進(jìn)行塊調(diào)用。即,塊可以自我調(diào)用。請(qǐng)注意,此類(lèi)調(diào)用的深度限值為 24 級(jí),且不支持多重背景。

參數(shù)列表

如果要從 SCL 塊調(diào)用另一個(gè)代碼塊,可以為被調(diào)用塊的形參提供實(shí)參。

可以通過(guò)賦值指令指定這些參數(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ù)類(lèi)型和參數(shù)類(lèi)型。

參數(shù)的指定規(guī)則

下列規(guī)則適用于指定參數(shù):

常數(shù)、變量和表達(dá)式可作為實(shí)參。

賦值的順序不重要。

形參和實(shí)參的數(shù)據(jù)類(lèi)型需匹配。也選擇某些特定實(shí)參,其數(shù)據(jù)類(lèi)型可隱式轉(zhuǎn)換為形參的數(shù)據(jù)類(lèi)型。

各賦值操作通過(guò)逗號(hào)進(jìn)行分隔。

如果被調(diào)用的塊中只有一個(gè)參數(shù),那么在括號(hào)中指定的就是實(shí)參。無(wú)需再指定形參。

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ù)塊的示例

以單個(gè)背景方式進(jìn)行調(diào)用 以下為以單個(gè)背景方式調(diào)用 FB 的示例:

SCL
// 以單個(gè)背景方式調(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"。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 西門(mén)子
    +關(guān)注

    關(guān)注

    94

    文章

    3041

    瀏覽量

    115927
  • SCL
    SCL
    +關(guān)注

    關(guān)注

    1

    文章

    239

    瀏覽量

    17094

原文標(biāo)題:西門(mén)子博途:SCL編程調(diào)用函數(shù)/調(diào)用函數(shù)塊

文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何查看及更改函數(shù)/函數(shù)調(diào)用環(huán)境

    是循環(huán)執(zhí)行,當(dāng)一個(gè)功能被多個(gè)外部函數(shù)/函數(shù)調(diào)用時(shí),我們應(yīng)如何查看某一次調(diào)用時(shí)的內(nèi)部變量呢?這
    的頭像 發(fā)表于 11-17 09:08 ?976次閱讀
    如何查看及更改<b class='flag-5'>函數(shù)</b>/<b class='flag-5'>函數(shù)</b><b class='flag-5'>塊</b>的<b class='flag-5'>調(diào)用</b>環(huán)境

    SIMATIC S7-1500 PLC S7-SCL SCL詳解

    函數(shù)函數(shù)西門(mén)子的大中型PLC編程中,應(yīng)用十分廣泛,前介紹過(guò)
    的頭像 發(fā)表于 12-06 09:17 ?1012次閱讀
    SIMATIC S7-1500 PLC S7-<b class='flag-5'>SCL</b> <b class='flag-5'>SCL</b><b class='flag-5'>塊</b>詳解

    淺談西門(mén)子PLC的“SCL語(yǔ)言”編程

    介紹西門(mén)子PLC的“SCL語(yǔ)言”編程,相關(guān)編程代碼
    發(fā)表于 01-22 17:25 ?0次下載

    高效的C編程函數(shù)調(diào)用

    14.9 函數(shù)調(diào)用 函數(shù)設(shè)計(jì)的基本原則是使其函數(shù)體盡量的小。這樣編譯器可以對(duì)函數(shù)做更多的優(yōu)化。 14.9.1 減少
    發(fā)表于 10-17 16:49 ?6次下載
    高效的C<b class='flag-5'>編程</b>之<b class='flag-5'>函數(shù)</b><b class='flag-5'>調(diào)用</b>

    西門(mén)子SCL編程:滾動(dòng)數(shù)據(jù)記錄

    責(zé)任編輯:xj 原文標(biāo)題:SCL編程實(shí)例:滾動(dòng)數(shù)據(jù)記錄 文章出處:【微信公眾號(hào):PLC技術(shù)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。 ?
    的頭像 發(fā)表于 12-28 09:16 ?4125次閱讀
    <b class='flag-5'>西門(mén)子</b><b class='flag-5'>博</b><b class='flag-5'>途</b><b class='flag-5'>SCL</b><b class='flag-5'>編程</b>:滾動(dòng)數(shù)據(jù)記錄

    西門(mén)子PLC中使用SCL語(yǔ)言編程的技巧

    西門(mén)子PLC中使用SCL語(yǔ)言編程的技巧說(shuō)明。
    發(fā)表于 04-22 11:15 ?65次下載

    淺談西門(mén)子PLC的SCL語(yǔ)言編程

    西門(mén)子PLC的SCL語(yǔ)言編程說(shuō)明。
    發(fā)表于 04-22 14:39 ?47次下載

    淺談西門(mén)子SCL編程

    淺談西門(mén)子SCL編程資料免費(fèi)下載。
    發(fā)表于 04-23 10:44 ?27次下載

    西門(mén)子PLC編程軟件下載

    西門(mén)子PLC編程軟件TIA V13 SP1 SIMATIC_WinCC_Runtime_Professional_SP1_for_V13---江西工控論壇有下載密碼www.jx-g
    發(fā)表于 03-01 11:04 ?68次下載

    SCL調(diào)用函數(shù)的示例

    在此,可插入函數(shù) (FC) 調(diào)用函數(shù) (FB) 調(diào)用函數(shù)
    的頭像 發(fā)表于 06-06 10:18 ?2229次閱讀

    的多重背景調(diào)用

    當(dāng)函數(shù) (FB) 調(diào)用另一個(gè)函數(shù)時(shí),可其實(shí)例數(shù)據(jù)存儲(chǔ)在調(diào)用
    的頭像 發(fā)表于 06-08 15:50 ?3871次閱讀
    <b class='flag-5'>博</b><b class='flag-5'>途</b>的多重背景<b class='flag-5'>調(diào)用</b>

    調(diào)用SCL函數(shù)-事例

    在以下部分中,將在組織“Main” 中調(diào)用 SCL 函數(shù)SCL_Best_before_
    的頭像 發(fā)表于 08-10 09:51 ?868次閱讀
    <b class='flag-5'>調(diào)用</b><b class='flag-5'>SCL</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>塊</b>-事例

    西門(mén)子: SCL函數(shù)調(diào)用方法

    SCL 函數(shù)在內(nèi)部讀取 CPU 的系統(tǒng)時(shí)間,并根據(jù)當(dāng)前日期和輸入的保質(zhì)期限(年數(shù))計(jì)算“保質(zhì)期”的年份。 ② 計(jì)算出的保質(zhì)期年份為一個(gè)整數(shù)值在輸出參數(shù)中輸出。 將計(jì)算出的值存儲(chǔ)在變量
    發(fā)表于 10-16 15:55 ?3540次閱讀
    <b class='flag-5'>西門(mén)子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>: <b class='flag-5'>SCL</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>塊</b>的<b class='flag-5'>調(diào)用</b>方法

    SIMATIC S7-1500 PLC S7-SCL SCL及應(yīng)用

    函數(shù)函數(shù)西門(mén)子的大中型PLC編程中,應(yīng)用十分廣泛,前介紹過(guò)
    的頭像 發(fā)表于 12-15 16:18 ?1014次閱讀
    SIMATIC S7-1500 PLC S7-<b class='flag-5'>SCL</b> <b class='flag-5'>SCL</b><b class='flag-5'>塊</b>及應(yīng)用

    西門(mén)子:手動(dòng)更新調(diào)用

    選擇不一致的調(diào)用,然后在上下文菜單(鼠標(biāo)右鍵)中選擇函數(shù)“Update”。 然后會(huì)出現(xiàn)一個(gè)窗口,其中顯示舊的(不正確的)和新的調(diào)用(帶有已刪除的“ActiveNotAck”參數(shù))。
    的頭像 發(fā)表于 12-25 11:12 ?3190次閱讀
    <b class='flag-5'>西門(mén)子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>:手動(dòng)更新<b class='flag-5'>塊</b><b class='flag-5'>調(diào)用</b>