調用函數(FC)
通過說明函數名(FC, SFC標識符)和參數表來調用函數。能夠用絕對或符號形式指定標識返回值的函數名稱:
FC31 (X1:=5, Q1:=Checksum) ; // 絕對形式
DISTANCE (X1:=5, Q1=:Checksum) ; // 符號形式
調用之后,函數的結果可用作為返回值或作為輸出和輸入/輸出參數(實際參數)。
對比功能塊,函數提供一個結果當作返回值。基于這個原因,函數能夠被子當作地址來對待(VOID類型的函數除外)。
函數計算與函數有同樣名稱的返回值,且將其返回給調用它的塊。在那里,值代替函數調用。
例如,在下面的賦值中,DISTANCE函數被調用,且結果賦值給LENGTH變量。
LENGTH:= DISTANCE (X1:=-3, Y1:=2);
返回值能夠用在下面的函數或功能塊元素:
-
在一個賦值語句中,
-
在一個邏輯、算術或比較表達式或
-
作為更進一步的功能塊或函數調用的參數。
函數的參數
對比功能塊,函數沒有任何他們保存參數值的內存。在函數激活時,本地數據只中臨時地貯存。由于這個原因,當調用函數時,所有在函數聲明部分定義的形式輸入、輸入/輸出和輸出參數必須賦予實際參數。
例子(Example)
帶為輸入、輸出和輸入/輸出參數賦值的調用如下:
FC32 (E_Param1:=5,D_Param1:=LENGTH,
A_Param1:=Checksum)
函數調用舉例:
計算在使用笛卡爾坐標系統的同一平面中兩點(X1,Y1)和(X2,Y2)之間距離的函數DISTANCE可以是下面的形式(此例假設符號DISTANCE在符號表中為FC37已經聲明)。
FUNCTION DISTANCE: REAL // 符號
VAR_INPUT
X1 : REAL;
X2 : REAL;
Y1 : REAL;
Y2 : REAL;
END_VAR
VAR_OUTPUT
Q2 : REAL;
END_VAR
BEGIN 開始
DISTANCE := SQRT( (X2-X1)**2 + (Y2-Y1)**2 );
Q2 := X1+X2+Y1+Y2;
END_FUNCTION
調用塊(Calling Block)
下例顯示更多函數值的使用的可選擇的形式:
FUNCTION_BLOCK CALL
VAR
LENGTH : REAL ;
CHECKSUM : REAL ;
RADIUS : REAL;
Y : REAL;
END_VAR
BEGIN
. . .
// 在賦值語句中調用:
LENGTH := DISTANCE (X1:=3, Y1:=2, X2:=8.9, Y2:= 7.4, Q2:=CHECKSUM) ;
// 在算術或邏輯表達式中調用,如:
Y := RADIUS + DISTANCE (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4, Q2:=Checksum)
// 用來為進一步的被調用的塊提供參數
FB32.DB32 (DIST:= DISTANCE (X1:=-3, Y1:=2, X2:=8.9, Y2:=7.4), Q2:=Checksum)
. . .
END_FUNCTION_BLOCK
審核編輯 :李倩
-
參數
+關注
關注
11文章
1785瀏覽量
32086 -
函數
+關注
關注
3文章
4306瀏覽量
62431
原文標題:函數的參數
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論