數據塊間接尋址方式,僅供參考。
STATUS_1:= DB11.DW[COUNTER]; //字節間接尋址
STATUS_2:= DB12.DX[WNO, BITNO]; //位間接尋址,用戶改變WNO,BITNO數值即可
STATUS_1:= Database1.DW[COUNTER]; // Database1為DB類型的本地變量
STATUS_2:= Database2.DX[WNO, BITNO];
STATUS_1:= WORD_TO_BLOCK_DB(INDEX).DW[COUNTER];
//INDEX被定義為 BLOCK_DB 數據類型,COUNTER為整數數據類型,這樣可以實現/數據塊編號,
字節地址同時間接尋址,此功能是一種功能很強間接尋址方式。
數據塊直接尋址方式,僅供參考。
STATUSBYTE :=DB101.DB10; //字節直接尋址格式
STATUS_3 :=DB30.D1.1; //位直接尋址格式
MEASVAL :=DB25.DW20; //字直接尋址格式
STATUSBYTE :=Status_data.DB10;
STATUS_3 :="New data".D1.1;
MEASVAL :=Measdata.DW20;
STATUS_1 :=WORD_TO_BLOCK_DB (INDEX).DW10;
BLOCK_DB類型使用。
1. copy the individual variables:
In this case every variable is read one by one from the user data blocks. The addressing in the data blocks is
absolutely. This is particularly suitable for small amounts of data.
1. Kopieren der einzelnen Variablen:
In diesem Fall wird jede Variable einzeln aus dem Anwenderdatenbaustein gelesen. Die Adressierung im
Datenbaustein erfolgt absolut. Dies ist besonders für kleine Datenmengen geeignet.
addressing with Block-number / Adressierung über DB-Nummer
FUNCTION_BLOCK FB1
VAR_INPUT
DB_NO : BLOCK_DB; //Number of the Data-Block / DB-Nummer先聲明一個BLOCK_DB類型
END_VAR
VAR
S : STRUCT
// internal structure / interne Struktur
VALUE1 : WORD;
VALUE2 : REAL;
VALUE3 : BYTE;
VALUE4 : BYTE;
END_STRUCT;
END_VAR
S.VALUE1 := DB_NO.DW8;//對於WORD類型的,直接這樣訪問即可
S.VALUE2 := DWORD_TO_REAL(DB_NO.DD10);//對於其它類型的數據,由於DB_N0的塊號不定,
//系統不知道DD10是什么數據類型,前邊要用雙字轉成實數類型的語句,不能直接用DB_NO.xxx訪問,
//否則會報無效的數據類型
S.VALUE3 := DB_NO.DBB14 ;
S.VALUE4 := DB_NO.DBB15;
END_FUNCTION_BLOCK
addressing with Any-pointer / Adressierung über Any-Pointer
FUNCTION_BLOCK FB2
VAR_INPUT
DB_ANY : ANY; // Any-Pointer of the Data-Block / Any-pointer für DB
AnyPointer AT DB_ANY: STRUCT
BYTE0 :BYTE; // Byte 0
TYP :BYTE; // Byte 1 Data-/Parametertype / Byte 1 Daten- / Parametertyp
ANZ :WORD; // Byte 2+3 Lenth of data / Byte 2-3 Datenlnge
DBNO :WORD; // Byte 4+5 DB-Number / Byte 4+5 DB-Nummer
BZ :DWORD; // Byte 6 to 10 Pointer / Byte 6 bis 10 Bereichszeiger
END_STRUCT;
END_VAR
VAR
S : STRUCT
//internal stucture / interne Struktur
VALUE1 : WORD;
VALUE2 : REAL;
VALUE3 : BYTE;
VALUE4 : BYTE;
END_STRUCT;
END_VAR
S.VALUE1 := WORD_TO_BLOCK_DB(AnyPointer.DBNO).DW8;
S.VALUE2 := DWORD_TO_REAL(WORD_TO_BLOCK_DB(AnyPointer.DBNO).DD10);
S.VALUE3 := WORD_TO_BLOCK_DB(AnyPointer.DBNO).DBB14 ;
http://www.360doc.com/content/12/0505/13/7023119_208807550.shtml