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

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

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

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

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

圖5接口參數區

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

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

圖8 給形參賦值
在主程序中調用在FC 內部定義的變量時,為各個形參指定對應的實參。然后雙擊主程序“Main[OB1]”,將項目樹下的“塊_2”拖到右側的程序區的水平“導線”上,在程序中可以對函數進行多次調用,并賦予不同的實參,由此對多個變量重復 相同操作,實現模塊化編程,極大程度上簡化了程序結構。如圖9所示。

圖9 函數子程序調用
-
plc
+關注
關注
5051文章
14591瀏覽量
486851 -
西門子
+關注
關注
98文章
3310瀏覽量
120365 -
函數
+關注
關注
3文章
4417瀏覽量
67499
原文標題:西門子PLC子程序-函數FC建立及使用方法
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
西門子PLC在板坯連鑄系統中的應用
西門子PLC編程中FB和FC的區別
西門子plc數據類型_西門子plc通訊方式
MODBUS轉PROFINE網關接入西門子PLC1500 PROFINET網絡的使用方法
西門子PLC中OB塊的功能詳解
西門子TIA Portal中函數FC和函數塊FB的相互轉換
西門子PLC中函數FC的使用方法
評論