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

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

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

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

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

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

圖6 接口參數(shù)的定義
雙擊新建立的 FC,進(jìn)行程序編寫(xiě),如圖 7 所示,此時(shí)的“輸出”不是單純意義上的輸出,同時(shí)對(duì)該變量賦予了一個(gè)常開(kāi)觸點(diǎn),因此需要在 InOut下定義該變量。(Inout既做輸入又做輸出,在FC中做自鎖時(shí),要把這個(gè)“輸出”放在inout中。因?yàn)樽鲎枣i時(shí),有需要讀入“輸出”這個(gè)參數(shù)的原因,然后形成自鎖)

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

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

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

西門(mén)子PLC中函數(shù)FC的使用方法
評(píng)論