标示符的命名建议

(1) (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

-263

263 - 1

64 位

li

 

ULINT

0

264 - 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) (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) (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) (7)可视化名称

提示!

目前,请尽量避免可视化的名称与其他项目中的对象重复,因为如果这样会在改变可视化的时候出现问题。