注塑机控制系统命名规范
1. 文档概览
1.1 文档目的
本文档为基于 Luban平台(Beremiz二次开发版本)的注塑机控制系统项目建立统一、规范的命名标准,确保PLC程序代码、功能块、结构体、变量等技术元素的命名具有一致性、可读性和可维护性。通过规范化命名,提高团队协作效率,减少错误,提升代码质量。
1.2 平台说明
本规范专门针对 Luban平台(基于Beremiz的二次开发版本)制定,充分考虑了Luban平台的特性和使用习惯。在实施过程中,应优先遵循Luban平台的命名约定,确保代码在Luban环境中能够正常运行和维护。
1.3 适用范围
本规范适用于基于Luban平台的注塑机控制系统项目中的所有技术元素,包括但不限于:
- 变量(全局变量、局部变量、静态变量、输入输出变量等)
- 功能块(Function Block)
- 结构体(Structure)
- 枚举类型(Enumeration)
- 程序组织单元(POU)
- 文件和文件夹
- 配置项和常量
- 任务和程序
2. 命名基本原则
2.1 核心原则
| 原则 | 说明 |
|---|---|
| 清晰性 | 命名应清晰、准确地反映元素的用途和功能,避免使用模糊、歧义的名称,优先使用描述性名称 |
| 一致性 | 在整个项目中保持命名风格的一致性,同一类型的元素应使用相同的命名规则 |
| 简洁性 | 在保证清晰的前提下,尽量使用简洁的名称,避免过长的命名(一般不超过30个字符) |
| 可读性 | 使用大小写、下划线等分隔符提高可读性,避免使用连续的大写字母(除非是常量) |
| 兼容性 | 遵循IEC 61131-3标准的命名约定,确保命名在Luban/Beremiz平台中的兼容性 |
| 国际化 | 使用一致的英语语言进行命名,确保命名在国际项目中具有可理解性 |
3. 具体命名规则
3.1 变量命名
3.1.1 全局变量(VAR_GLOBAL)
- 格式:
gvl_<类型标识><描述>或gvl_<模块>_<类型标识><描述> - 风格:小写字母,下划线分隔
- 示例:
gvl_bMotorStartState,gvl_iSystemStatus,gvl_rCurrentPressure - 反例:
GLOBAL_VAR,g_Mold,globalMold
3.1.2 局部变量(VAR)
- 格式:
<类型标识><描述> - 风格:驼峰式(camelCase)
- 示例:
bIsRunning,iCurrentPosition,rTargetTemperature - 反例:
CurrentPosition,TARGET_TEMP,is_running
3.1.3 临时变量(VAR_TEMP)
- 格式:
temp<类型标识><描述> - 风格:驼峰式(camelCase),前缀"temp"
- 示例:
tempbFlag,tempiValue,temprResult - 反例:
TempValue,temp_value
3.1.4 静态变量(VAR_STATIC)
- 格式:
stat<类型标识><描述> - 风格:驼峰式(camelCase),前缀"stat"
- 示例:
statbInitialized,statiCounter,statrAverageValue - 反例:
StatCount,stat_count
3.1.5 输入变量(VAR_INPUT)
- 格式:
i_<类型标识><描述>或<类型标识><描述> - 风格:驼峰式(camelCase)
- 示例:
i_bExecute,i_rTargetPos,i_iPressure - 反例:
Input_Execute,target_pos
3.1.6 输出变量(VAR_OUTPUT)
- 格式:
o_<类型标识><描述>或<类型标识><描述> - 风格:驼峰式(camelCase)
- 示例:
o_bDone,o_bBusy,o_iStatus - 反例:
Output_Done,busy_status
3.1.7 输入输出变量(VAR_IN_OUT)
- 格式:
io_<类型标识><描述> - 风格:驼峰式(camelCase)
- 示例:
io_stAxisRef,io_aDataArray - 反例:
InOut_Axis,io_axis_ref
3.1.8 常量(VAR CONSTANT)
- 格式:
CONST_<类型标识>_<描述>或CONST_<模块>_<类型标识>_<描述>或CONST_<描述> - 风格:全大写,下划线分隔
- 示例:
CONST_MAX_PRESSURE,CONST_i_MAX_COUNT,CONST_r_MAX_PRESSURE - 反例:
maxPressure,CONSTMinTemp,const_max_pressure
3.1.9 结构体成员
- 格式:
<类型标识><描述>或<描述> - 风格:驼峰式(camelCase)(首选)
- 示例:
rPressure,iPosition或pressure,flowRate,targetPosition - 反例:
Pressure,FLOW_RATE,r_pressure,flow_rate
3.2 数据类型标识规范
| 数据类型 | 类型标识前缀 | 示例 | 说明 |
|---|---|---|---|
| BOOL | b | bExecute, bRunning | 布尔类型 |
| INT | i | iCount, iPosition | 整数类型 |
| UINT | ui | uiIndex, uiCounter | 无符号整数类型 |
| DINT | di | diLargeCount, diPosition | 双整数类型 |
| UDINT | udi | udiLargeIndex, udiCounter | 无符号双整数类型 |
| SINT | si | siSmallCount, siOffset | 短整数类型 |
| USINT | usi | usiSmallIndex, usiFlag | 无符号短整数类型 |
| REAL | r | rPressure, rTemperature | 浮点类型 |
| LREAL | lr | lrPreciseValue | 双精度浮点类型 |
| STRING | s | sName, sMessage | 字符串类型 |
| BYTE | by | byData | 字节类型 |
| WORD | w | wValue | 字类型 |
| DWORD | dw | dwAddress | 双字类型 |
| TIME | t | tDelay, tDuration | 时间类型 |
| DATE | d | dDate | 日期类型 |
| DATE_AND_TIME | dt | dtTimestamp | 日期时间类型 |
| ARRAY | a | aValues, aPositions | 数组类型 |
| STRUCT | st | stParams, stData | 结构体类型 |
| ENUM | e | eMode, eStatus | 枚举类型 |
3.3 状态类型标识规范
| 状态类型 | 类型标识前缀 | 示例 | 说明 |
|---|---|---|---|
| 上升沿 | r_ | r_Edge, r_Trigger | 上升沿触发 |
| 下降沿 | f_ | f_Edge, f_Trigger | 下降沿触发 |
3.4 类型标识使用说明
- 类型标识前缀应紧跟在作用域前缀(如
gvl_,temp,stat等)之后 - 类型标识前缀应使用小写字母
- 类型标识前缀后面的描述应使用驼峰式命名
- 状态类型标识可与基本类型标识组合使用,如
r_bStart(上升沿布尔信号) - 对于长整型等数值类型,应根据实际需要选择合适的类型标识,确保数据范围足够且内存使用合理
3.5 功能块命名(Function Block)
- 格式:
FB_<功能描述> - 风格:帕斯卡式(PascalCase)
- 示例:
FB_Clamp,FB_MoldControl,FB_TemperaturePID - 反例:
fb_clamp,MoldControl,FB_mold_control
3.6 函数命名(Function)
- 格式:
F_<动词><名词>或<动词><名词> - 风格:帕斯卡式(PascalCase)
- 示例:
F_CalculatePressure,F_CheckLimit,MoveAbsolute - 反例:
f_calculate_pressure,calculatePressure,check_limit
3.7 结构体命名(Structure)
- 格式:
ST_<描述>或type<描述> - 风格:帕斯卡式(PascalCase)
- 示例:
ST_MoldParams,ST_AxisRef,typeMoldParameters - 反例:
StMoldParams,struct_mold,ST_mold_params
3.8 枚举类型命名(Enumeration)
- 格式:
E_<描述> - 风格:帕斯卡式(PascalCase)
- 枚举值格式:
e<描述>_<值> - 示例:
- 类型:
E_ClampMode,E_AxisState,E_ErrorCode - 值:
eMode_Manual,eMode_Auto,eState_Idle,eState_Running
- 类型:
- 反例:
enumClampMode,E_CLAMP_MODE,manual_mode
3.9 程序组织单元(POU)命名
3.9.1 程序(Program)
- 格式:
PRG_<描述> - 风格:帕斯卡式(PascalCase)
- 示例:
PRG_MainControl,PRG_MoldSequence,PRG_AlarmHandler - 反例:
prg_main,MainControl,PRG_main_control
3.9.2 功能(Function)
- 格式:
F_<描述> - 风格:帕斯卡式(PascalCase)
- 示例:
F_ScaleAnalog,F_LimitValue,F_CalculateChecksum - 反例:
f_scale,ScaleAnalog,F_scale_analog
3.10 文件和文件夹命名
3.10.1 文件命名
- 格式:
<功能描述>.<扩展名> - 风格:帕斯卡式(PascalCase)
- 扩展名:
- 结构化文本:
.st - 功能块图:
.fbd - 梯形图:
.ld - 顺序功能图:
.sfc - 指令表:
.il
- 结构化文本:
- 示例:
FB_Clamp.st,MoldControl.st,PRG_Main.st - 反例:
fb_clamp.st,MOLD_CONTROL.st,clamp.st
3.10.2 文件夹命名
- 格式:
<功能描述> - 风格:小写字母,下划线分隔
- 示例:
function_blocks,programs,data_types,docs - 反例:
FunctionBlocks,PROGRAMS,DataTypes
3.11 任务命名(Task)
- 格式:
TASK_<描述>或<描述> - 风格:帕斯卡式(PascalCase)或全大写
- 示例:
TASK_Main,TASK_Fast,TASK_Background - 反例:
task_main,MainTask,task_Main
3.12 资源命名(Resource)
- 格式:
RES_<描述> - 风格:帕斯卡式(PascalCase)
- 示例:
RES_PLC1,RES_MainController - 反例:
res_plc1,PLC1,resource_main
3.13 实例命名
- 格式:
inst<描述>或Inst<描述> - 风格:驼峰式(camelCase),前缀"inst"或"Inst"
- 说明:单个实例使用"Inst"前缀,多重实例和参数实例使用"inst"前缀
- 示例:
- 单个实例:
InstClamp,InstTemperatureControl - 多重实例:
instMold,instPump
- 单个实例:
- 反例:
clamp_instance,ClampInst
3.14 配置项命名
- 格式:
<模块>.<配置项> - 风格:小写字母,点号分隔
- 示例:
mold.close.pressure,temperature.setpoint,pump.max_flow - 反例:
MOLD_CLOSE_PRESSURE,TemperatureSetpoint,pumpMaxFlow
4. 代码格式规范
4.1 缩进与空格
- 使用两个空格进行缩进,避免使用制表符
- 在操作符两侧添加空格,在逗号后添加空格
- 在括号内不添加空格,保持代码块的缩进一致性
4.2 注释规范
- 使用英文编写注释,为复杂逻辑添加详细注释
- 为函数和功能块添加头部注释,使用统一的头部注释模板
4.3 头部注释模板
pascal
//==================================================================================
// 公司: [公司名称]
// 标题: [块名称]
// 功能: [功能简要描述]
// 作者: [作者姓名]
// 目标系统: [PLC型号及固件版本]
// 工程平台: Luban [版本]
// 日期: [YYYY-MM-DD]
// 版本: [版本号]
//==================================================================================5. 平台特定考虑
5.1 Luban平台特性
- 遵循Luban(基于Beremiz二次开发版本)的默认命名约定
- 考虑Luban的代码生成和导入导出功能对命名的影响
- 确保命名在Luban的图形化界面中显示清晰
- 注意Luban平台对变量名长度和特殊字符的限制
- 遵循Luban平台的项目结构和文件命名规范
5.2 外部依赖处理
- 对于第三方库、框架等外部依赖,应遵循其原有的命名规范
- 在项目内部封装外部依赖时,应使用本规范的命名规则
6. 命名审查与最佳实践
6.1 审查机制
- 自行检查:开发者在编写代码时,应参考本规范确保命名符合要求
- 团队沟通:团队成员之间可互相提醒,确保命名风格一致
- 经验分享:定期分享命名规范的最佳实践,提高团队整体代码质量
6.2 最佳实践
- 优先使用描述性名称,避免过度使用缩写
- 保持命名的一致性,确保同一类型的元素使用相同的命名规则
- 考虑变量的作用域和生命周期,选择合适的命名前缀
- 为复杂的数据结构和功能块提供清晰的注释说明
7. 术语表
| 术语 | 解释 |
|---|---|
| gvl_ | 全局变量前缀(Global Variable List) |
| FB_ | 功能块前缀(Function Block) |
| F_ | 函数前缀(Function) |
| ST_ | 结构体前缀(Structure) |
| E_ | 枚举类型前缀(Enumeration) |
| PRG_ | 程序前缀(Program) |
| TASK_ | 任务前缀(Task) |
| RES_ | 资源前缀(Resource) |
| CONST_ | 常量前缀(Constant) |
| temp | 临时变量前缀 |
| stat | 静态变量前缀 |
| inst | 实例前缀(多重实例和参数实例) |
| Inst | 实例前缀(单个实例) |
| type | PLC数据类型前缀 |
| POU | 程序组织单元(Program Organization Unit) |
| GVL | 全局变量列表(Global Variable List) |
| IEC 61131-3 | 工业控制编程语言国际标准 |
| Luban | 基于Beremiz的国产PLC编程软件 |
8. 版本控制
| 版本 | 日期 | 作者 | 变更说明 |
|---|---|---|---|
| 1.0 | 2025-09-16 | 汪工 | 初始版本,针对Luban平台优化 |
| 1.1 | 2025-10-09 | 汪工 | 参考西门子编程规范指南,增加代码格式规范和头部注释模板,增加数据类型标识规范,完善变量命名规则,添加类型标识前缀系统;优化常量命名规则,允许按需保留类型标识 |
| 1.2 | 2026-03-17 | 周工/汪工 | 调整结构体成员命名风格为驼峰式(camelCase)作为首选风格;补充完善数据类型标识规范,增加DINT、UDINT、SINT、USINT等数值类型;调整状态类型标识规范,将前缀从pos/neg改为r_/f_,使上升沿和下降沿的标识更加清晰直观;明确说明开发平台为Luban(基于Beremiz的二次开发版本),并补充Luban平台特定考虑的详细内容 |
9. 审批流程
本规范需经过以下审批流程:
- 技术团队内部评审
- 项目经理审批
- 部门负责人批准
- 发布实施
10. 参考资料
- IEC 61131-3 标准文档
- Luban软件用户手册
- Beremiz官方文档
- 西门子SIMATIC S7-1200/S7-1500编程风格指南
- 注塑机控制系统需求规格说明书
备注:本规范应根据项目实际情况和Luban平台特性进行调整和补充,确保其与项目需求和团队习惯相适应。如有疑问或建议,请联系技术团队负责人。
