每類本地變量或參數(shù),都有用各自關(guān)鍵字對(duì)標(biāo)識(shí)的自己的聲明子域。每個(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
存?。?a target="_blank">Access)
從如下代碼部分存取變量:
塊內(nèi)存?。ˋccess within the block):在功能塊的代碼部分能夠存取在聲明部分聲明的變量。詳細(xì)的解釋在標(biāo)題為“賦值語句(Value Assignment)”節(jié)。
用實(shí)例DB進(jìn)行外部存?。‥xternal 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
存?。ˋccess)
變量總是從邏輯塊的代碼部分存取,變量是在聲明部分聲明的(內(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ù)類型。初始化只可能對(duì)一個(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ù)。
責(zé)任編輯:haq
-
西門子
+關(guān)注
關(guān)注
98文章
3173瀏覽量
118243 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28950
原文標(biāo)題:西門子SCL-聲明子域概述
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
西門子發(fā)布關(guān)于美國(guó)解除近期對(duì)中國(guó)EDA出口限制的聲明
工業(yè)智能網(wǎng)關(guān)可以采集西門子PLC嗎
在西門子TIA Portal中使用CFC語言實(shí)現(xiàn)電機(jī)控制的全流程

西門子TIA Portal中函數(shù)FC和函數(shù)塊FB的相互轉(zhuǎn)換

西門子PID控制算法-FB塊封裝

西門子流量累計(jì)FB塊介紹

NPN和PNP器件與西門子PLC的連接與選型

評(píng)論