目标
《TIA程序设计规范指南》中描述的规则和建议可以帮助您创建一个统一的、可维护和可重用的程序代码。特别在多个开发人员共同开发的情况下, 建议规定项目范围内的术语以及统一的编程风格。通过这种方式,您可以在项目早期阶段检测并避免错误。
出于可维护性和可读性的考虑,程序需要遵循一定的格式,更重要的是定义规则, 这些规则可为开发人员带来如下益处:
• 避免编译器无法识别的错误,例如错别字等不经意的错误 目标:编译器应识别尽可能多的错误
• 支持开发人员诊断编程错误,例如临时变量的重复使用超过一个周期 目标:尽早指出标识的问题
• 应用程序和库的标准化目的:使培训变得容易,增加程序代码的可重用性
• 易于维护和简化下一步开发目标:因为程序的更改可能是由不同的程序员在执行,所以要求在程序代码单 个模块中所做的更改,应该对整个程序产生最小的影响
统一规则的优点
• 风格统一一致
• 易于阅读和理解
• 易于维护,可重用性强
• 简单快速的错误识别和纠正 • 多个程序员的高效协作
适用性
本文件适用于 TIA 博途中的项目和库,这些项目和库是使用符合 IEC 61131-3 的编 程语言编写的(DIN EN 61131-3),它们是结构化文本(SCL/ST),梯形图 (LAD/KOP)和函数块图(FBD/FUP)。本文件还适用于软件单元,文件夹,组,组织块(OB),函数(FC),函数块(FB),工 艺对象(TO),数据块(DB),PLC 数据类型(UDT),变量,常量,PLC 消息文本列 表,监视表,强制表以及外部源。
范围
此文档不包含以下内容的描述:
- 使用TIA博途的STEP 7编程
-
SIMATIC 控制器的调试 在以上内容有足够的知识和经验,是正确理解和使用既定规则及建议的先决条件。本文档仅作为参考,并不取代软件开发领域的相关知识。
目录:
TIA 博途中的设置
ES001 规则:用户界面语言“English”
ES002 规则:助记符“International”
ES003 建议:编辑器中的非比例字体
ES004 规则:带有两个空格的智能缩进
ES005 规则:操作数的符号表示
ES006 规则:符合 IEC 的编程
ES007 规则:通过 HMI/OPC UA/Web API 显式数据访问
ES008 规则:启用自动值计算(ENO)
ES009 规则:自动计算数组边界
![https://ctfiot.oss-cn-beijing.aliyuncs.com/uploads/2021/11/2-1635812817.png]
全球化
GL001 规则:使用一致的语言
GL002 规则:设置编辑参考语言为“English(US)”
GL003 规则:提供所有项目语言的文本
命名和格式
NF001 规则:唯一且一致的英文标识符
NF002 规则:使用有意义的注释和属性
NF003 规则:记录开发人员信息
NF004 规则:遵守库的前缀和结构
NF005 规则:使用帕斯卡(PascalCasing)命名法
NF006 规则:对代码元素使用驼峰命名规则
NF007 规则:使用前缀
NF008 规则:用大写字母表示常量标识符
NF009 规则:限制标识符的字符集
NF010 建议:限制标识符的长度
NF011 建议:每个标识符仅使用一个缩写
NF012 规则:以对应的格式初始化变量
NF013 建议:隐藏可选形参
NF014 规则:有意义地格式化 SCL 代码
可重用性
RU001 规则:提供可以仿真的
RU002 规则:完全使用库进行版本控制
RU003 规则:在已发布的项目中只保留已发布的类型
RU004 规则:只使用局部变量
RU005 规则:使用本地符号常量
RU006 规则:程序完全符号化
RU007 建议:独立于硬件编程
RU008 建议:使用模板
引用对象(分配)
AL001 规则:使用多重实例而不是单个实例
AL002 建议:定义从 0 到常数值的数组边界
AL003 建议:将数组参数声明为数组[*]
AL004 建议:指定所需的字符串长度
安全
SE001 规则:验证实际值
SE002 规则:初始化临时变量
SE003 规则:处理 ENO
SE004 规则:有选择地激活 HMI/OPC UA/Web API 数据访问
SE005 规则:评估错误代码
SE006 规则:用评估逻辑写错误 OB
设计指南/体系架构
DA001 规则:对项目/库进行结构化和分组
DA002 建议:使用适当的编程语言
DA003 规则:设置/评估块属性
DA004 规则:使用 PLC 数据类型
DA005 规则:只通过形参交换数据
DA006 规则:仅从块内访问静态变量
DA007 建议:形参组
DA008 规则:输出参数只写一次
DA009 规则:仅保留使用过的代码
DA010 规则:根据 PLCopen 开发异步块
DA011 规则:带“enable”的连续异步执行
DA012 规则:带“execute”的单次异步执行
DA013 规则:通过“status”/“error”返回状态/错误
DA014 规则:“status” 使用标准化的取值范围
DA015 建议:传递下层信息
DA016 建议:用 CASE 指令代替 ELSIF 分支
DA017 规则:在 CASE 指令中创建 ELSE 分支
DA018 建议:避免跳转和标签
性能
PE001 建议:禁用“创建扩展状态信息”
PE002 建议:避免“在 IDB 中设置”
PE003 建议:使用引用传递结构化参数
PE004 建议:避免 Variant 形参
PE005 建议:避免形参 “mode”
PE006 建议:首选临时变量
PE007 建议:将重要的测试变量声明为静态
PE008 建议:将控制/索引变量声明为“DInt”
PE009 建议:避免多个相同的索引访问
PE010 建议:使用片段访问代替掩码
PE011 建议:简化 IF/ELSE 指令
PE012 建议:根据预期对 IF/ELSIF 分支进行排序
PE013 建议:避免内存密集型指令
PE014 建议:避免运行时密集指令
PE015 建议:SCL/LAD/FBD 用于运行时间敏感的应用
PE016 建议:检查最小循环时间的设置
文档下载链接:https://pan.baidu.com/s/17HHiNuF60qiGUu6AknwHIA
提取码: 加入剑指工控微信技术群,从管理员获取。
原文始发于微信公众号(剑指工控):西门子发布《TIA程序设计规范指南》