每類本地變量或參數(shù),都有用各自關(guān)鍵字對標(biāo)識的自己的聲明子域。每個(gè)子域包含允許的詳細(xì)的聲明子域,子域可按任何順序定位。
下表顯示能夠在各種邏輯塊中聲明的變量或參數(shù)類型。
變量作為: 靜態(tài)變量 |
VAR . . . END_VAR |
臨時(shí)變量 |
VAR_TEMP . . . END_VAR |
塊參數(shù)作為: 輸入?yún)?shù) |
VAR_INPUT . . . END_VAR |
輸出參數(shù) |
VAR_OUTPUT . . . END_VAR |
輸入/輸出參數(shù) |
VAR_IN_OUT . . . END_VAR |
靜態(tài)變量
靜態(tài)變量是本地變量,塊運(yùn)行時(shí)其值被保留。用來保存功能塊的值,并包含在相應(yīng)實(shí)例數(shù)據(jù)塊中。
句法(Syntax)
靜態(tài)變量在VAR / END_VAR聲明區(qū)內(nèi)聲明。該聲明子域是FB聲明部分的一部分。編譯之后,該子域和塊參數(shù)子域決定了指定的實(shí)例數(shù)據(jù)塊的結(jié)構(gòu)。
在該子域能夠:
建立變量,指定變量的數(shù)據(jù)類型和初始化變量。
如果要在當(dāng)前FB中作為本地實(shí)例調(diào)(其他的)FB,則將一個(gè)被調(diào)用的FB聲明為靜態(tài)變量。
例子(Example)
VAR
RUN :INT;
MEASARR :ARRAY [1..10] OF REAL;
SWITCH :BOOL;
MOTOR_1,MOTOR_2:FB100;// 實(shí)例聲明
END_VAR
存取(Access)
從如下代碼部分存取變量:
塊內(nèi)存取(Access within the block):在功能塊的代碼部分能夠存取在聲明部分聲明的變量。詳細(xì)的解釋在標(biāo)題為"賦值語句(Value Assignment)"節(jié)。
用實(shí)例DB進(jìn)行外部存取(External access using the instance DB): 用索引存取能夠從其他塊存取變量,如DBx.變量。
臨時(shí)變量
Temporary Variables
臨時(shí)變量在本地屬于邏輯塊,不產(chǎn)生靜態(tài)內(nèi)存區(qū)域,他們位于CPU的堆棧里。本塊正在運(yùn)行時(shí),其值才被保留。臨時(shí)變量不能從聲明它的塊外存取。一個(gè)OB、FB或FC首次執(zhí)行前,臨時(shí)變量的值是不確定的。也不能被初始化。
如果只要求在OB、FB或者FC執(zhí)行時(shí)記錄中間結(jié)果,可以聲明臨時(shí)數(shù)據(jù)。
句法(Syntax)
臨時(shí)變量在VAR_TEMP / END_VAR聲明部分里聲明。該聲明部分是FB、FC或OB的一部分。通過變量聲明以聲明變量名和數(shù)據(jù)類型。
例子(Example)
VAR_TEMP
BUFFER 1: ARRAY [1..10] OF INT ;
AUX1, AUX2: REAL ;
END_VAR
存取(Access)
變量總是從邏輯塊的代碼部分存取,變量是在聲明部分聲明的(內(nèi)部存取)。參見題為“賦值語句(Value Assignment)”節(jié)。
塊參數(shù)
參數(shù)是占位符,塊被實(shí)際地調(diào)用時(shí)才指定一個(gè)值。在塊里聲明的占位符認(rèn)為是指派了作為實(shí)際參數(shù)的值的形式變量。且參數(shù)提供了一個(gè)塊間交換信息的機(jī)制。
塊參數(shù)的類型(Types of Block Parameters)
被實(shí)際參數(shù)指定的形式輸入?yún)?shù)(數(shù)據(jù)流入塊)。
形式輸出參數(shù)用來傳遞輸出參數(shù)(數(shù)據(jù) 從塊流出)。
有輸入和輸出參數(shù)功能的形式輸入/輸出參數(shù)。
句法(Syntax)
在功能塊或函數(shù)的聲明部分制作形式參數(shù)的聲明,根據(jù)在三種聲明子域內(nèi)的參數(shù)類型組合參數(shù)。在變量聲明中,指定參數(shù)名和數(shù)據(jù)類型。初始化只可能對一個(gè)FB的輸入和輸出參數(shù)。
聲明形式參數(shù)時(shí),不僅只能用基本的、復(fù)雜的和用戶定義數(shù)據(jù)類型,也可用參數(shù)數(shù)據(jù)類型。
例子(Example)
VAR_INPUT// 輸入?yún)?shù)
MY_DB: BLOCK_DB ;
CONTROLLER: DWORD ;
TIMEOFDAY: TIME_OF_DAY ;
END_VAR
VAR_OUTPUT// 輸出參數(shù)
SETPOINTS: ARRAY [1..10] of INT ;
END_VAR
VAR_IN_OUT// 輸入/輸出參數(shù)
SETTING : INT ;
END_VAR
存取(Access)
塊參數(shù)可從邏輯塊的代碼部分進(jìn)行存取如下:
內(nèi)部存取: 從在其聲明部分已經(jīng)聲明該參數(shù)的邏輯塊的代碼部分存取。在題為"賦值語句(Value Assignment)"和"表達(dá)式、操作和地址(Expressions, Operations and Addresses)"節(jié)有解釋。
用實(shí)例數(shù)據(jù)塊外部存取: 用特定的DB能夠存取功能塊的塊參數(shù)。
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1838瀏覽量
32263 -
代碼
+關(guān)注
關(guān)注
30文章
4791瀏覽量
68693 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28395
原文標(biāo)題:Block Parameters
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論