Copyright: ISaGRAF V3.4


 FBD語言

功能方塊圖 (Functional Block Diagram，FBD) 是一種繪圖式語言。在方塊圖編輯區裡，使用者可以利用ISaGRAF程式庫中的內建函數來撰寫複雜的程序，並且將這些程序用線連在一起。

FBD方塊圖的主要格式

跳回 (RETURN) 敘述

跳躍和標籤 (Jumps and labels)

布林反相 (Boolean negation)

在FBD程式中呼叫函式或功能方塊


FBD方塊圖的主要格式

FBD方塊圖是用來撰寫介於輸入變數和輸出變數之間的函數，此函數是以一連串基本的功能方塊所組成的。輸入和輸出變數與功能方塊是以連接線連接起來。功能方塊的輸出可以是另一個功能方塊的輸入。

FBD程式中的完整函數都是用ISaGRAF程式庫中的標準的基本功能方塊所撰寫的。每一個功能方塊都有固定數目的輸入連接點和固定數目的輸出連接點。功能方塊是以單一的長方形來表示，左邊連接輸入，右邊連接輸出，而長方形符號中是功能方塊執行的單一函數名稱。功能方塊的每一筆輸入和輸出型態都已事先定義好了。

FBD程式的輸入變數必須連接到功能方塊的輸入連接點，而且每一個變數的型態都必須與功能方塊定義好的輸入型態相同。FBD程式的輸入可以是常數形態、任何內部 (internal) 變數、輸入 (input) 變數或輸出 (output) 變數。

FBD程式的輸出變數必須連接到功能方塊的輸出連接點，而且每一個變數的型態都必須與功能方塊定義好的輸出型態相同。FBD程式的輸出可以是任何內部 (internal) 變數、輸出 (output) 變數或程式名稱 (此情形只適用於FBD副程式)。當輸出被指定為目前編輯的副程式名稱時，此輸出就是此副程式的回傳值 (傳給呼叫程式)。

輸入和輸出變數，功能方塊的輸入和輸出是以連接線連接在一起。連結線可以將以下所述的任兩個邏輯點連接起來：

-	輸入變數與功能方塊的輸入點

-	功能方塊的輸出點與另一個功能方塊的輸入點

-	功能方塊的輸出點與輸出變數

這種連接線是有方向性的，也就是說，程式的執行方向是從連接線的左端到連接線的右端。而且連接線兩端的資料型態必須相同。

多數右連接線可以將左端點的訊號傳送給所有右端點，而這些右端點必須具有相同型態。


跳回 (RETURN) 敘述

"<RETURN>"  關鍵字可以是一個圖表的輸出。它必須連接到功能方塊的布林輸出連接點。RETURN敘述表示程式有條件的結束：假如連接到RETURN敘述的功能方塊輸出布林值是真 (TRUE) 時，則方塊圖的剩餘部份就不會執行。

(*使用RETURN敘述的FBD程式*)

(* ST相等式：*)

If auto_mode OR alarm Then

Return;

End_if;

bo67 := (bi10 AND bi23) OR x_cmd;


跳躍和標籤 (Jumps and labels)

標籤和跳躍可以用來控制方塊圖的執行。跳躍和標籤符號的右邊不可以連接任何物件。使用下面的記號：

>>LAB	跳躍至一個標籤 (標籤名稱是 "LAB" )

LAB:	標籤的定義 (標籤名稱是 "LAB" )

假如跳躍符號左邊連接線的布林狀態是真 (TRUE) 時，程式就會直接跳躍到對應的標籤符號程式中執行。

(* 使用標籤和跳躍的FBD程式 *)

(* IL相等式：*)

ld	manual

and	b1

jmpc	NOMODIF

ld	input1

or	input2

st	result

NOMODIF:	ld	result

and	valid

st	cmd10


布林反相 (Boolean negation)

連接於功能方塊輸入的連接線可以是布林反相。反相是用一個小圓圈來表示。當使用布林反相時，連接線的左右兩端必須具有布林型態。

(* 使用布林反相的FBD程式 *)

(* ST相等式：*)

output1 := input1 AND NOT (input2);


在FBD程式中呼叫函式或功能方塊

FBD語言可以呼叫副程式、函式或功能方塊。而副程式、函式或功能方塊是以函式方塊來表示，名稱標示於方塊中。

若呼叫的是副程式或函式，回傳值就是函式方塊唯一的輸出。若呼叫的是功能方塊，函式方塊的輸出就不只一個了。

(* 使用副程式方塊的FBD程式 *)

(* ST相等式：*)

net_weight := Weighing (mode, delta); (* 呼叫副程式 *)

If (net_weight = 0) Then Return; End_if;

weight := net_weight + tare_weight;