今天這篇文章,我們基于倍福(Beckhoff)TwinCAT3編程開(kāi)發(fā)環(huán)境,對(duì)PLC的變量進(jìn)行介紹。本文包括如下幾個(gè)主題:
變量的名稱;
變量的數(shù)據(jù)類型;
變量的存儲(chǔ)區(qū);
變量的類別;
變量的作用域與生命周期;
1、變量的名稱
變量的名稱,簡(jiǎn)稱變量名,也稱為變量標(biāo)識(shí)符(Identifier),用來(lái)唯一標(biāo)識(shí)某個(gè)變量。TwinCAT3(以下簡(jiǎn)稱TC3)的變量命名需遵循如下規(guī)則:
①變量名由字母(a~z和A~Z)、數(shù)字(0~9)和下劃線組成,比如abc,ab10,a_b10等都是合法的變量名。字母不區(qū)分大小寫,比如abc和ABC表示相同的變量;
②變量名不能以數(shù)字開(kāi)頭,比如 0ab 是非法的變量名;
③變量名中間不能有空格;
④變量名不能使用系統(tǒng)關(guān)鍵字;
⑤不建議以兩個(gè)下劃線開(kāi)頭,比如__ab,因?yàn)檫@是系統(tǒng)內(nèi)部變量的命名約定;
⑥變量名的長(zhǎng)度沒(méi)有特殊限制;
⑦不同命名空間(namespace)下的變量名可以相同。比如全局變量列表GVL1和GVL2中可以有重名的變量,在使用時(shí)通過(guò)引用命名空間來(lái)區(qū)分;
2、變量的數(shù)據(jù)類型
每個(gè)變量在聲明時(shí)都必須指定數(shù)據(jù)類型。包括如下一些種類:
標(biāo)準(zhǔn)數(shù)據(jù)類型,比如:布爾型(BOOL)、整數(shù)型(BYTE、INT等)、實(shí)數(shù)型(REAL)、字符串(STRING)、寬字符串(WSTRING)、時(shí)間日期(Time、Date_and_Time)等;
IEC61131-3的擴(kuò)展數(shù)據(jù)類型:比如位(BIT)、任意(ANY)、特殊類型(XINT、UXINT、XWORD)、數(shù)組(ARRAY)、引用(REFERENCE)、聯(lián)合體(UNION)、指針(POINTER)等;
用戶自定義數(shù)據(jù)類型,結(jié)構(gòu)體(Structure)、枚舉(Enumerations)、別名(Alias)等;
由于本文的主旨是介紹變量,因此數(shù)據(jù)類型就不展開(kāi)講了;
3、變量的存儲(chǔ)區(qū)
倍福嵌入式控制器與個(gè)人計(jì)算機(jī)類似,其數(shù)據(jù)存儲(chǔ)器包括非易失性存儲(chǔ)器(硬盤、CF卡、CFast卡等)和易失性存儲(chǔ)器(內(nèi)存)。為了與傳統(tǒng)PLC兼容,將內(nèi)存的一部分劃分出輸入映像區(qū)(Input)、輸出映像區(qū)(Output)和位存儲(chǔ)區(qū)(Memory)。這三種存儲(chǔ)區(qū)均可以絕對(duì)地址訪問(wèn),默認(rèn)大小均為128KB。用戶可通過(guò)下面的文件修改其大?。?/p>
C:TwinCAT3.1ComponentsPlcdevices40961002 00011.0.0.4device.xml
如下圖所示:
4、變量的類別
使用不同的聲明方式可以定義不同的變量類型,比如局部變量、臨時(shí)變量、靜態(tài)變量、外部變量等。它們中有的只能在指定的POU(程序組織單元)中聲明,比如臨時(shí)變量只能在函數(shù)塊(FB)和程序(PROGRAM)中聲明。下面來(lái)具體介紹下:
①局部變量:在VAR .. END_VAR之間聲明的變量,適用于所有程序組織單元,比如:
VAR byte0:BYTE;//字節(jié)0 byte1:BYTE;//字節(jié)1 END_VAR
②全局變量:在VAR_GLOBAL .. END_VAR之間聲明的變量,僅適用于全局變量列表(Global variable list),比如:
VAR_GLOBAL gVinNumber : STRING;//全局VIN碼變量 END_VAR
③臨時(shí)變量,在VAR_TEMP .. END_VAR之間聲明的變量,可在FB和PROGRAM中聲明,比如:
VAR_TEMP tmpStart:BOOL; tmpStop:BOOL; END_VAR
④靜態(tài)變量:在VAR_STAT .. END_VAR之間聲明的變量,可在FB/FC中聲明,比如:
VAR_STAT statStartRisingEdge:BOOL;//啟動(dòng)信號(hào)上升沿 statStartRisingEdgeHF:BOOL;//啟動(dòng)信號(hào)上升沿輔助變量 END_VAR
⑤外部變量:在VAR_EXTERNAL .. END_VAR之間聲明的變量,用于導(dǎo)入外部全局變量列表中已經(jīng)聲明的變量,比如:
VAR_EXTERNAL gVinNumber : STRING;//全局VIN碼變量 END_VAR
POU的形參包括三種:輸入、輸入-輸出、輸出,以變量的形式進(jìn)行定義,聲明方式如下:
⑥輸入變量(形參):在VAR_INPUT .. END_VAR之間聲明的變量,比如:
VAR_INPUT start :BOOL;//啟動(dòng)信號(hào) stop :BOOL;//停止信號(hào) END_VAR
⑦輸出變量(形參):在VAR_OUTPUT .. END_VAR之間聲明的變量,比如:
VAR_OUTPUT coil :BOOL;//線圈 END_VAR
⑧輸入-輸出變量(形參):在VAR_IN_OUT .. END_VAR之間聲明的變量,比如:
VAR_IN_OUT status :WORD;//狀態(tài) END_VAR
5、變量的作用域與生命周期
變量的作用域是指變量在哪些范圍內(nèi)有效,分為全局和局部?jī)煞N。
全局變量在整個(gè)CPU項(xiàng)目范圍內(nèi)有效。在全局變量列表中聲明的變量屬于全局變量;
局部變量?jī)H在當(dāng)前POU范圍內(nèi)有效。在POU內(nèi)部聲明的變量屬于局部變量;
變量的生命周期是指變量值的保持時(shí)間。臨時(shí)變量?jī)H在當(dāng)前POU運(yùn)行過(guò)程中有效,當(dāng)POU運(yùn)行結(jié)束后將被釋放;局部變量、全局變量和靜態(tài)變量的值在系統(tǒng)運(yùn)行中均能保持,不被釋放(非掉電狀態(tài))。
在系統(tǒng)掉電或冷啟動(dòng)的情況下,未擴(kuò)展的局部變量、全局變量和靜態(tài)變量會(huì)被初始化(不能保持)。如果希望系統(tǒng)掉電或冷啟動(dòng)的情況下變量值依然能夠保持,應(yīng)使用關(guān)鍵字RETAIN或PERSISTENT對(duì)變量進(jìn)行擴(kuò)展,比如:
VAR_GLOBAL gVinNumber : STRING;//全局VIN碼變量 END_VAR VAR_GLOBAL RETAIN gCounter :DWORD;//全局計(jì)數(shù)器,掉電保持 END_VAR
上面的例子中,變量gCounter由于使用了RETAIN關(guān)鍵字進(jìn)行屬性擴(kuò)展,它會(huì)在掉電的情況下保持?jǐn)?shù)據(jù);而變量gVinNumber未進(jìn)行擴(kuò)展,在掉電的情況下會(huì)被初始化(不能保持原來(lái)的值)。
好了,關(guān)于倍福TC3編程開(kāi)發(fā)環(huán)境下變量及其屬性就先介紹到這里。
審核編輯:湯梓紅
-
plc
+關(guān)注
關(guān)注
5036文章
13892瀏覽量
473976 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28930 -
TwinCAT3
+關(guān)注
關(guān)注
1文章
9瀏覽量
10963 -
倍福
+關(guān)注
關(guān)注
1文章
116瀏覽量
10181
原文標(biāo)題:倍福PLC學(xué)習(xí):變量概述
文章出處:【微信號(hào):方正智芯,微信公眾號(hào):方正智芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
倍福PLC數(shù)據(jù) 轉(zhuǎn) CCLink IE Field Basic項(xiàng)目案例

倍福 plc怎么與labview 實(shí)現(xiàn)mudbus tcp 協(xié)議通訊
利用labview 與倍福DLL通訊
倍福和西門子哪個(gè)更好_倍福PLC與西門子主要區(qū)別在哪里
倍福PLC學(xué)習(xí):編寫函數(shù)塊及簡(jiǎn)單調(diào)試
倍福BECKHOFF PLC:自動(dòng)化編程入門

PLC結(jié)構(gòu)概述

倍福PLC中定時(shí)器的使用

EtherCAT轉(zhuǎn)Profinet協(xié)議網(wǎng)關(guān)使西門子和倍福的PLC實(shí)現(xiàn)通訊的方法

倍福PLC數(shù)據(jù)采集通過(guò)MQTT協(xié)議對(duì)接云組態(tài)平臺(tái)

倍福PLC數(shù)據(jù)采集網(wǎng)關(guān)有什么功能

倍福PLC數(shù)據(jù) 轉(zhuǎn) IEC61850項(xiàng)目案例

評(píng)論