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

倍福 plc怎么與labview 實現mudbus tcp 協議通訊
倍福PLC學習:編寫函數塊及簡單調試
倍福BECKHOFF PLC:自動化編程入門

倍福PLC中定時器的使用

倍福PLC數據采集通過MQTT協議對接云組態平臺

評論