標示符的命名建議
. 標示符由變量 (變量名) 中的聲明, 用戶自定義數據類型 以及建立POUs (功能,功能塊,程序)來定義。除了定義的標識符,爲了使命名儘可能的唯一性,你可能會考慮遵循一些建議。
在 CODESYS V3 庫中的用戶定義屬性類型(DUTs)
(1)變量名
程序和庫中的變量命名儘可能遵循 匈牙利標記法:
對於每一個變量,都需在 基礎名中含有有意義的簡短的描述。
基礎命名的每個單詞 的首字母必須大寫,其他字母小寫(例如:FileSize)
數據類型 |
最小值 |
最大值 |
信息 |
前綴 |
說明 |
BOOL |
FALSE |
TRUE |
1位 |
x* |
|
|
|
|
|
b |
預留 |
BYTE |
|
|
8 位 |
by |
位字符, 不用於計算, 操作符 |
WORD |
|
|
16位 |
w |
位字符, 不用於計算,操作符 |
DWORD |
|
|
32 位 |
dw |
位字符, 不用於計算,操作符 |
LWORD |
|
|
64位 |
lw |
不用於計算,操作符 |
|
|
|
|
|
|
SINT |
-128 |
127 |
8 位 |
si |
|
USINT |
0 |
255 |
8 位 |
usi |
|
INT |
-32.768 |
32.767 |
16位 |
i |
|
UINT |
0 |
65.535 |
16 位 |
ui |
|
DINT |
-2.147.483.648 |
2.147.483.647 |
32 位 |
di |
|
UDINT |
0 |
4.294.967.295 |
32 位 |
udi |
|
LINT |
-2^63 |
2^63 - 1 |
64 位 |
li |
|
ULINT |
0 |
2^64 - 1 |
64 位 |
uli |
|
|
|
|
|
|
|
REAL |
|
|
32 位 |
r |
|
LREAL |
|
|
64 位 |
lr |
|
|
|
|
|
|
|
STRING |
|
|
|
s |
|
|
|
|
|
|
|
TIME |
|
|
|
tim |
|
TIME_OF_DAY |
|
|
|
tod |
|
DATE_AND_TIME |
|
|
|
dt |
|
DATE |
|
|
|
date |
|
ENUM
|
|
|
16 位
|
e
|
|
POINTER |
|
|
|
p |
|
ARRAY
|
|
|
|
a
|
|
*針對布爾變量,我們使用X做前綴,是爲了於BYTE區別開,也是爲了適應IEC程序員的觀念(見"%IX0.0"編址)。
例子:
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;
在嵌套聲明中,前綴按照聲明的順序互相連接。
例子:
pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE;
功能塊示例和用戶自定義類型的變量 作爲前綴,可使用FB-resp的快捷鍵。數據類型名(例如:sdo)。
例子:
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* prefix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
本地常量 (c)以前綴 c 開頭,並帶有下劃線, 帶有類型前綴和變量名。
示例:
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
對於 全局變量(g) 和全局常量 (gc),在庫前綴上附加前綴+下劃線。
例子:
VAR_GLOBAL
CAN_g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
CAN_gc_dwExample: DWORD;
END_VAR
(2) CODESYS V3.x 庫中的變量名稱
一般遵循(1)中的規則,以下情況例外:全局變量和常量不需要庫前綴,因爲使 命名空間代替了前綴的功能。
例子:
g_iTest: INT; (聲明)
CAN.g_iTest (補充, 在應用程序中調用)
(3)用戶自定義數據類型(DUT)
結構: 每個結構數據類型的名稱包含一個庫前綴(例如:CAN)、一個下劃線和結
例子:
TYPE CAN_SDOTelegram : (* prefix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
abyData: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
枚舉 由庫前綴開頭(例如:CAL),後加下劃線和大寫的標識符。
請注意,在以前版本的 CODESYS 中的ENUM 值> 16#7FFF 有不一致的地方,因爲他們沒有自動轉換爲INT值。出於這個原因,應以正確的INT值定義ENUM。
例子:
TYPE CAL_Day :(
CAL_MONDAY,
CAL_TUESDAY,
CAL_WEDNESDAY,
CAL_THIRSDAY,
CAL_FRIDAY,
CAL_SATURDAY,
CAL_SUNDAY);
聲明:
eToday: CAL_Day;
(4)CODESYS V3庫中用戶定義的數據類型(DUT)
在 CODESYS V3庫中DUT名沒有庫前綴,因爲使用命名空間代替了前綴的功能。枚舉定義組 件也沒有庫前綴。
例子 (在庫中的命名空間 CAL):
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THIRSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
聲明:
eToday: CAL.Day;
在應用中的使用:
IF eToday = CAL.Day.MONDAY THEN
(5)功能,功能塊,程序(POU),動作
功能,功能塊和程序的名稱包括 庫前綴 (例子: CAN), 下劃線 和 POU的縮寫簡稱 (如: SendTelegram),就像POU變量名稱的每一個詞的第一個字母都應該是大寫字母,其他的應該是小字母。建POU名稱由一個動詞 和一個 實詞組成。
例子:
FUNCTION_BLOCK CAN_SendTelegram (* prefix: canst *)
在聲明部分,需要包含POU的簡介,並以此作爲一個說明。另外,所有的輸入和輸出都必須要有說明。如果有功能塊,建立實例的相關前綴需要加在名稱後面。
動作沒有前綴;只有僅在內部由POU自身調動的動作,是以prv_爲前綴的。
爲了與之前的CODESYS版本作對比,每個 功能 至少要包含一個參數。外部功能 不能使用結構作爲返回值。
(6) CODESYS V3庫中的POU
CODESYS V3 庫中的POU名稱不含庫前綴,因爲使用命名空間代替前綴的功能。創建路徑名稱的規則與動作相同。可能的路徑輸入需要有英文的批註。另外,也需要在聲明中添加簡短說明。接口名稱以“I”開頭,例如:ICANDevice.
(7)可視化名稱
提示! 目前,請儘量避免可視化的名稱與其他項目中的對象重複,因爲如果這樣會在改變可視化的時候出現問題。 |