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

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

倍福PLC中定時器的使用

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

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

倍福PLC數(shù)據(jù) 轉 IEC61850項目案例

評論