.变量标识符规则
.标识符(命名空间)多次使用的规则
我们建议您除了必须专门考虑变量声明的事项外,还应用以下规则。这样,您将在分配名称时实现最佳的协调。
只要有可能,就应在应用程序和库中以匈牙利表示法命名变量。为每个变量找到一个有意义的简短英文名称作为基础名称,该基础名称可以包含多个单词。每个单词的首字母大写,其余字母小写。在基本名称的前面,以小写形式附加前缀以指示变量的数据类型。
示例:iFileSize : INT;
数据类型 | 前缀 | 描述 |
---|---|---|
BOOL | x | 我们强烈推荐使用x作为布尔变量的前缀,以将其与数据类型BYTE的标识符区分开。前缀表示IEC程序员的视图。 |
b | 保留 | |
BYTE | by | 位字符串;不适用于算术运算 |
WORD | w | 位字符串;不适用于算术运算 |
DWORD | dw | 位字符串;不适用于算术运算 |
LWORD | lw | 位字符串;不适用于算术运算 |
SINT | si | 算术整数数据类型,8位 |
USINT | usi | 算术整数数据类型,8位 |
INT | i | 算术整数数据类型,16位 |
UINT | ui | 算术整数数据类型,16位 |
DINT | di | 算术整数数据类型,32位 |
UDINT | udi | 算术整数数据类型,32位 |
LINT | li | 算术整数数据类型,64位 |
ULINT | uli | 算术整数数据类型,64位 |
REAL | r | 算术浮点数据类型,32位 |
LREAL | lr | 算术浮点数据类型,64位 |
STRING | s | 变量长度的单字节字符串(默认设置:80字符) |
WSTRING | ws | 变量长度的双字节字符串(默认设置:80字符) |
TIME | tim | 持续时间,32位 |
LTIME | ltim | 持续时间,64位 |
| tod | 一天中的时间,32位 |
| ltod | 一天中的时间,64位 |
| dt | 日期和时间 |
| ldt | |
DATE |
| 日历时间 |
LDATE |
| 日历时间 |
POINTER | p | |
ARRAY | a | |
枚举 | e |
标识符 | 描述 | 例如 |
---|---|---|
嵌套声明 | 前缀按声明一次附加。 | pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE; |
功能块实例 用户定义数据类型的变量 | 前缀功能块或数据类型名称的缩写 | 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_,后跟类型前缀和变量名 | VAR CONSTANT ᅠc_uiSyncID: UINT := 16#80; END_VAR |
全局变量 | 库前缀附加了一个附加前缀。 g_ | VAR_GLOBAL ᅠCAN_g_iTest: INT; END_VAR |
全局常数 全局常数变量 | 库前缀附加了一个附加前缀。 gc_ | VAR_GLOBAL CONSTANT ᅠCAN_gc_dwExample: DWORD; END_VAR |
标识符 | 描述 | 例如 |
---|---|---|
变量 | 对应于变量名的描述,但全局变量和常量不需要库前缀,因为名称空间会替换函数。 | g_iTest: INT; // Declaration CAN.g_iTest; // Implementation; call in the program |
标识符的 | 描述 | 例如 |
---|---|---|
结构体 | 库前缀,后跟一个下划线和对该结构的简短说明。此结构的已创建变量的关联前缀应在冒号之后作为注释。 | TYPE CAN_SDOTelegram : (* prefix: sdo *) STRUCT ᅠwIndex : WORD; ᅠbySubIndex : BYTE; ᅠbyLen : BYTE; ᅠabyData: ARRAY [0..3] OF BYTE; END_STRUCT END_TYPE |
枚举 | 库前缀,后跟一个下划线和大写标识符。 注意: 在以前的CODESYS版本中,枚举值> 16#7FFF会导致错误,因为它们不会自动转换为INT。因此,枚举应始终使用正确的INT值声明。 | TYPE CAL_Day : ( ᅠCAL_MONDAY, ᅠCAL_TUESDAY, ᅠCAL_WEDNESDAY, ᅠCAL_THURSDAY, ᅠCAL_FRIDAY, ᅠCAL_SATURDAY, ᅠCAL_SUNDAY ); 声明: eToday: CAL_Day; |
标识符的 | 描述 | 例如 |
---|---|---|
CODESYS V3库中的DUT名称 | 命名空间取代了对库前缀的需要。因此,将其省略。枚举值也定义为没有库前缀。 | 具有命名空间CAL的库 TYPE DAY : ( ᅠMONDAY ᅠTUESDAY, ᅠWEDNESDAY, ᅠTHURSDAY, ᅠFRIDAY, ᅠSATURDAY, ᅠSUNDAY ); 声明: eToday: CAL.Day; 应用程序中的使用 IF eToday = CAL.Day.MONDAY THEN |
标识符的 | 描述 | 例如 |
---|---|---|
POUs: 功能,功能块,程序 | 库前缀,后跟一个下划线和简短的,内容丰富的POU名称。与变量一样,每个单词的首字母大写,其他所有字母均为小写。我们建议您从动词和名词组成POU名称。 对于功能块,创建的实例的关联前缀应在名称后加上注释。 | FUNCTION_BLOCK CAN_SendTelegram (* prefix: canst *) |
动作 | 操作仅由块本身调用的操作,以prv_开头。否则,动作不包含前缀。 |
标识符的 | 描述 | 示例 |
---|---|---|
POU | 由于名称空间替换了库前缀的功能,库前缀被省略。 | FUNCTION_BLOCK SendTelegram (* prefix: canst *) |
方法 | 仅由块本身调用的方法,以prv_开头。 否则,方法不包含前缀。 | |
接口 接口 | I | ICANDevice |