标示符由变量 ( ⇘ 变量名) 中的 ⇘ 声明, 用户自定义 ⇘ 数据类型 以及建立 ⇘ POUs (功能,功能块,程序)来定义。除了定义的标识符(见: ⇘ “变量定义”),为了使命名尽可能的唯一性,你可能会考虑遵循一些建议。
程序和库中的变量命名尽可能遵循 匈牙利标记法:
对于每一个变量,都需在 基础名中含有有意义的简短的描述。
基础命名的每个单词 的首字母必须大写,其他字母小写(例如: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"编址)。
在嵌套声明中,前缀按照声明的顺序互相连接。
功能块示例和用户自定义类型的变量 作为前缀,可使用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 开头,并带有下划线, 带有类型前缀和变量名。
对于 全局变量(g) 和全局常量 (gc),在库前缀上附加前缀+下划线。
结构: 每个结构数据类型的名称包含一个库前缀(例如: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。
功能,功能块和程序的名称包括 库前缀 (例子: CAN), 下划线 和 POU的缩写简称 (如: SendTelegram),就像POU变量名称的每一个词的第一个字母都应该是大写字母,其他的应该是小字母。建POU名称由一个动词 和一个 实词组成。
在声明部分,需要包含POU的简介,并以此作为一个说明。另外,所有的输入和输出都必须要有说明。如果有功能块,建立实例的相关前缀需要加在名称后面。
动作没有前缀;只有仅在内部由POU自身调动的动作,是以prv_为前缀的。
为了与之前的CoDeSys版本作对比,每个 功能 至少要包含一个参数。外部功能 不能使用结构作为返回值。