CODOSYS之結構化文本(ST)—— 初級篇(六)基礎-標示符命名建議

標示符的命名建議

 

. 標示符由變量 (變量名) 中的聲明, 用戶自定義數據類型 以及建立POUs (功能,功能塊,程序)來定義。除了定義的標識符,爲了使命名儘可能的唯一性,你可能會考慮遵循一些建議。

變量名稱

在 CODESYS V3 庫中的變量名稱

用戶定義數據類型 (DUT)

在 CODESYS V3 庫中的用戶定義屬性類型(DUTs)

功能,功能塊,程序 (POU), 動作

在 CODESYS V3庫中的 POUs

可視化名稱

.

(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)可視化名稱

.

提示!

目前,請儘量避免可視化的名稱與其他項目中的對象重複,因爲如果這樣會在改變可視化的時候出現問題。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章