函數(shù)和函數(shù)塊作為模塊化編程的重要組成部分,在PLC 用戶程序中有著相當(dāng)頻繁的應(yīng)用。兩者在生成與使用的過程中都有一定的相似,且都不能單獨使用。而需要賦予特定的功能,由組織塊(OB)直接或者間接進行調(diào)用。
函數(shù)(FC)是用戶程序中不帶存儲器的代碼塊,可以視為具有一定功能的獨立子程序,可以在OB 中進行調(diào)用。其內(nèi)的程序編寫與在 OB 主程序中相同,用戶在函數(shù)中編寫程序,在其他代碼塊中調(diào)用該函數(shù)時將執(zhí)行此程序。函數(shù)FC有兩個作用:
1)作為子程序使用,即將相互獨立的控制設(shè)備分成不同的FC編寫,統(tǒng)一由OB塊調(diào)用,這樣就實現(xiàn)了對整個程序進行結(jié)構(gòu)化劃分,便于程序調(diào)試及修改,使整個程序的條理性和易讀性增強。
2)可以在程序的不同位置多次調(diào)用同一個函數(shù),即函數(shù)中通常帶有形參,通過多次調(diào)用,并對形參賦值不同的實參,可實現(xiàn)對功能類似的設(shè)備統(tǒng)一編程和控制。
函數(shù)接口區(qū):
每個函數(shù)都帶有形參接口區(qū),在接口區(qū)可以自定義函數(shù)的局部變量。FC 接口區(qū)的參數(shù)表中包括 Input(輸入?yún)?shù))、Output(輸出參數(shù))、InOut(輸入/輸出參數(shù))、Temp(臨時變量)、Constant(常數(shù))、Return(返回值),每種形參類型可以定義多個變量,形參接口用于進行數(shù)據(jù)傳遞。本地數(shù)據(jù)包括臨時數(shù)據(jù)及本地常量。函數(shù)接口區(qū)如圖1所示。
?Input(輸入?yún)?shù)):只讀參數(shù),調(diào)用函數(shù)時將用戶程序的數(shù)據(jù)傳遞到函數(shù)中,調(diào)用的實參可以為常數(shù)或 I0.0、IB1 此類具體輸入地址。
?Output(輸出參數(shù)):只寫參數(shù),調(diào)用函數(shù)時將函數(shù)執(zhí)行結(jié)果傳遞到用戶程序中,調(diào)用的實參只能為 Q0.0、QB1 此類具體輸出地址。
?InOut(輸入/輸出參數(shù)):讀/寫參數(shù),接收數(shù)據(jù)后進行運算,然后將結(jié)果返回。調(diào)用的實參不能為常數(shù),可用于函數(shù)、函數(shù)塊。
?Temp(臨時變量):用于存儲臨時中間結(jié)果的變量,不參與數(shù)據(jù)的傳遞,臨時變量在函數(shù)調(diào)用時生效。應(yīng)遵循先賦值后使用的原則。
?Constant(常數(shù)):在塊中使用,且?guī)в新暶鞣柕某A???捎糜诤瘮?shù)、函數(shù)塊和組織塊。注:局部常量不顯示在背景數(shù)據(jù)塊中。
?Return(返回值):返回到調(diào)用塊的值。

圖1 函數(shù)接口區(qū)
1.無形參函數(shù)(子程序功能)
在函數(shù)的接口數(shù)據(jù)區(qū)中可以不定義形參變量,即調(diào)用程序與函數(shù)之間沒有數(shù)據(jù)交換,只是運行函數(shù)中的程序,這樣的函數(shù)可作為子程序調(diào)用。使用子程序可將整個控制程序進行結(jié)構(gòu)化劃分,清晰明了,便于設(shè)備的調(diào)試及維護。例如控制三個相互獨立的控制設(shè)備,可將程序分別編寫在三個子程序中,然后在主程序中分別調(diào)用各個子程序,實現(xiàn)對設(shè)備的控制,程序結(jié)構(gòu)如圖2所示。
注意:子程序中也可以帶有形參,是否帶有形參應(yīng)根據(jù)實際應(yīng)用而定。

圖2 無形參函數(shù)FC調(diào)用
2.帶有形參的函數(shù)
在應(yīng)用中常常遇到對許多相似功能的設(shè)備進行編程。例如控制三組電機,每個電機的運行參數(shù)相同,如果分別對每一個電機編程,則除輸入輸出地址不同外,每個電機控制程序基本相同,重復(fù)編程的工作量比較大。使用函數(shù)可以將一個電機的控制程序作為模板,在程序中多次調(diào)用該函數(shù),并賦值不同的參數(shù),即可實現(xiàn)對多個電機的控制。注意:函數(shù)的形參只能用符號名尋址,不能用絕對地址。下面以創(chuàng)建的一個例子進行說明。
函數(shù)的創(chuàng)建
打開博途軟件的項目視圖,創(chuàng)建一個新項目。用鼠標(biāo)雙擊項目樹下的“添加新設(shè)備”,添加CPU 1215C,如圖3 所示。

圖3 添加PLC
單擊項目視圖下的“PLC_1”,繼續(xù)單擊“程序塊”,用鼠標(biāo)雙擊下邊的“添加新塊”,打開“添加新塊”對話框后,單擊其中的“函數(shù)”標(biāo)志,F(xiàn)C 的默認(rèn)編號為 1,默認(rèn)的語言為 LAD(梯形圖),單擊“確定”按鈕。此時返回項目樹文件夾,在其“程序塊”下可以看到新生成的FC1。FC1 的創(chuàng)建過程如圖 4 所示。

圖4 函數(shù)生成
在接口區(qū)可以自定義函數(shù)的參數(shù),如圖5,6所示。

圖5接口參數(shù)區(qū)

圖6 接口參數(shù)的定義
雙擊新建立的 FC,進行程序編寫,如圖 7 所示,此時的“輸出”不是單純意義上的輸出,同時對該變量賦予了一個常開觸點,因此需要在 InOut下定義該變量。(Inout既做輸入又做輸出,在FC中做自鎖時,要把這個“輸出”放在inout中。因為做自鎖時,有需要讀入“輸出”這個參數(shù)的原因,然后形成自鎖)

圖7 程序編寫
在定義變量后,函數(shù)(FC)中所使用的參數(shù)只以“名稱”的形式出現(xiàn),這些由“名稱”給出的參數(shù)被稱為形參。在調(diào)用塊中對“名稱”所賦予的具體數(shù)值或具體地址,如100、I0.0、MB1等,被稱為實參。如圖8所示。

圖8 給形參賦值
在主程序中調(diào)用在FC 內(nèi)部定義的變量時,為各個形參指定對應(yīng)的實參。然后雙擊主程序“Main[OB1]”,將項目樹下的“塊_2”拖到右側(cè)的程序區(qū)的水平“導(dǎo)線”上,在程序中可以對函數(shù)進行多次調(diào)用,并賦予不同的實參,由此對多個變量重復(fù) 相同操作,實現(xiàn)模塊化編程,極大程度上簡化了程序結(jié)構(gòu)。如圖9所示。

圖9 函數(shù)子程序調(diào)用
-
plc
+關(guān)注
關(guān)注
5045文章
14468瀏覽量
484038 -
西門子
+關(guān)注
關(guān)注
98文章
3275瀏覽量
119842 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4409瀏覽量
66983
原文標(biāo)題:西門子PLC子程序-函數(shù)FC建立及使用方法
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
西門子PLC在板坯連鑄系統(tǒng)中的應(yīng)用
西門子PLC編程中FB和FC的區(qū)別
西門子plc數(shù)據(jù)類型_西門子plc通訊方式
MODBUS轉(zhuǎn)PROFINE網(wǎng)關(guān)接入西門子PLC1500 PROFINET網(wǎng)絡(luò)的使用方法
西門子PLC中OB塊的功能詳解
西門子TIA Portal中函數(shù)FC和函數(shù)塊FB的相互轉(zhuǎn)換

西門子PLC中函數(shù)FC的使用方法
評論