SIMATIC控制器编程人员的任务是开发尽可能易读和结构化的应用程序。每个开发人员有自己的策略来实现这个任务,例如变量、块的命名或程序的注释方式。不同的开发人员使用不同的习惯,存在很多不同的程序风格,这些程序通常只能由各自的创建者来说明。以下章节中描述的规则和建议可以帮助您创建一个统一的、可维护和可重用的程序代码。特别在多个开发人员共同开发的情况下,建议规定项目范围内的术语以及统一的编程风格。通过这种方式,您可以在项目早期阶段检测并避免错误。出于可维护性和可读性的考虑,程序需要遵循一定的格式,更重要的是定义规则,这些规则可为开发人员带来如下益处:•避免编译器无法识别的错误,例如错别字等不经意的错误目标:编译器应识别尽可能多的错误•支持开发人员诊断编程错误,例如临时变量的重复使用超过一个周期目标:尽早指出标识的问题•应用程序和库的标准化目的:使培训变得容易,增加程序代码的可重用性•易于维护和简化下一步开发目标:因为程序的更改可能是由不同的程序员在执行,要求在程序代码单个模块中所做的更改,应该对整个程序产生Zui小的影响1.2统一规则的优点• 风格统一一致• 易于阅读和理解• 易于维护,可重用性强• 简单快速的错误识别和纠正• 多个程序员的高效协作1.3适用性本文件适用于 TIA 博途中的项目和库,这些项目和库是使用符合 IEC 61131-3 的编程语言编写的(DIN EN61131-3),它们是结构化文本(SCL/ST),梯形图(LAD/KOP)和函数块图(FBD/FUP)。本文件还适用于软件单元,文件夹,组,组织块(OB),函数(FC),函数块(FB),工艺对象(TO),数据块(DB),PLC数据类型(UDT),变量,常量,PLC 消息文本列表,监视表,强制表以及外部源。1.4 范围此文档不包含以下内容的描述:• 使用TIA 博途的 STEP 7 编程• SIMATIC控制器的调试在以上内容有足够的知识和经验,是正确理解和使用既定规则及建议的先决条件。本文档仅作为参考,并不取代软件开发领域的相关知识。1.5违规及其他规则在客户项目中,应遵循适用的规则、客户或行业特定标准以及技术规则(如安全、运动控制等),并优先于此风格指南或部分使用。当把客户规则与本风格指南中的规则相结合时,必须特别注意保持规则的完整性和一致性。任何违反规则的行为都必须有正当理由并适当记录在用户程序中。客户提供的规章制度必须形成相应的记录。SIMATICS7-1200/S7-1500 编程风格指南条目 ID: 109478084,v2.0,05/2020 8©Siemens AG2020 版权所有2 定义2 定义2.1 规则/建议本文件中的规定包含两个部分,一是建议,二是规则:• 规则有一定约束力,必须遵循,它们对于可重用编程和高效编程是必不可少的。 在特殊情况下,可能会违反规则,这种情况下必须证明是合理的并记录在案。•建议是规定,它支持程序代码的统一性,并起到支持和成档的作用, 总体上应遵循各项建议。也有例外情况,为了更加高效或更佳的可读性,可能不遵守这一建议。2.2 枚举规则对于唯一的规则标识,在类别内,规则和建议用前缀(2个字符)标识,并设置枚举(3 位数字)。如果规则被取消,其编号将不会被重新分配;如果需要更多的规则,您可以使用 901到 999之间的数字。
自动化系统的性能是由程序的执行时间来定义的。当提到性能损失时,这意味着可以通过应用编程规则和有效的编程方式来减少程序执行时间,用户编程的周期时间会有所增加。与变量和参数一起使用的术语当涉及到变量,函数和函数块时,有很多术语,这些术语在不同场景中很可能会被错误的使用,确保对本文档中术语的一致理解是非常必要的。下图会说明这些术语。1变量 变量由标识符声明,并在控制器的内存中分配一个地址。变量总是以某种数据类型(布尔、整数等)定义:● PLC 变量或用户常量●块中的变量或常量● 结构变量(“STRUCT”)和 PLC 数据类型● 数据块/背景数据块● 工艺对象2 当前值当前值是存储在变量中的值(例如,15 作为整数变量的值)实际值3 实际参数 实际参数是与块的形式参数连接的变量4 形式参数形式参数是在块的接口中声明的变量,用于程序调用。形式参数通常被称为“接口参数“或”传递参数“,应该避免这些术语。3 TIA博途中的设置在本章中描述了编程环境初始化设置的规则和建议。注意: 此处列出的 TIA 博途中设置的规则和建议存储在 TIA博途设置文件(tps 文件)中, 您可以找到单独下载的 tps 文件用于本章节。 要应用这些设置,您可以将tps 文件导入 TIA博途。ES001 规则:用户界面语言“English”用户界面语言设置为“English”,保证所有新创建的项目的编辑和参考语言,所有系统常量都设置为英语。说明:如果要求所有系统常量都可用同一种语言,用户界面语言必须设置为一种通用的统一语言。ES002规则:助记符“International”助记符(编程语言的语言设置)应设置为“International”。说明:所有的系统语言和系统参数都是系统独立设置的,保证团队中的编程人员之间能够进行无缝的合作。ES003建议:编辑器中的非比例字体对于编辑器,建议使用非比例字体(等宽字体)。所有字符具有相同的宽度并且代码、单词和缩进是统一的。建议设置的字体为“Consolas”,大小 10 pt。说明:与带有“Consolas”的“Courier New”相比,重点是相似字符之间的区别。它是专门为编程环境设计的。ES004规则:带有两个空格的智能缩进对于指令的缩进,使用两个空格。 可将选项中的“Indent”设置更改为“Smart”。在基于文本的编辑器中不允许使用制表符,因为其宽度的显示方式不同。说明:使用此设置,使用不同的编辑器,也可以提供统一的显示样式。ES006规则:符合 IEC 的编程为了遵守 IEC 编程,默认设置为每个新程序块打开 IEC 检查。说明:启用设置后,每个新的程序块都打开了IEC 检查,这确保了变量的类型安全使用。图 3-7ES007 规则:通过 HMI/OPC UA/Web API 显式数据访问从HMI/OPC UA/Web API禁用接口的可访问性和可写性限制了外部应用程序对内部数据的访问。说明:外部应用程序应该只能在配置显示启用时访问内部数据。图 3-8 图3-9ES008 规则:启用自动值计算(ENO)EN/ENO 机制用于对类型定义的值边界及其操作的自动计算。默认情况下,此机制处于启用状态。说明: 激活此设置后,ENO 评估由系统执行,另请参阅“SE003 规则:处理 ENO”。ES009规则:自动计算数组边界必须打开数组边界的自动计算。说明:编译时检查数组边界,可以避免越界访问。本章介绍用于全球合作的规则和建议。GL001规则:使用一致的语言PLC 和 HMI 编程中使用的语言必须一致。 这意味着,英语文本只能在英语语言设置中找到。GL002规则:设置编辑参考语言为“English(US)”如果客户没有其他要求,则编辑语言和参考语言都必须设置为“English(US)”。包括所有注释整个程序必须用英语创建。GL003规则:提供所有项目语言的文本所有项目文本至少必须提供英语,也可提供其他项目语言。注意:在块编辑器中,文本及其翻译可以很容易在选项卡“Texts”中进行管理。 图 4-2©Siemens AG 2020版权所有SIMATIC S7-1200/S7-1500 编程风格指南条目 ID: 109478084,v2.0,05/202017©Siemens AG 2020 版权所有5 命名和格式5 命名和格式本章描述了命名和编写程序和注释的规则和建议。NF001规则:唯一且一致的英文标识符标识符(块、变量等)的名称必须使用英语(英语-美国)。名称描述了标识符在源代码上下文中的含义,故特此加强了对标识符功能和用法的理解。• 在所有函数块和 PLC数据类型中相同的标识符需保持名称的一致性,并且应尽可能简短• 相同功能的标识符具有相同的标识符名称,这也适用于大写字母•标识符名称可以由多个单词组合而成,单词的顺序必须与口语中的顺序相同•函数(FC)和函数块(FB)标识符应以动词开头,例如“Get”,“Set”,“Put”,“Find”,“Search”,“Calc”•如果使用标识符给数组命名,则名称使用复数,不可数名词保持其单数形式(“data”,“information”,“content”,“management”)•静态和临时布尔变量往往是状态指示变量,在这种情况下,以“is”,“can”或“has”开头的名称Zui容易理解说明:提供程序和其输入输出的快速概览注意:TIA 博途提供的形参是占位符,需要被用户定义的命名替代。
NF002规则:使用有意义的注释和属性注释和属性字段应使用有意义的注释描述和信息, 这包括:• 块标题和块注释(参见“NF003规则:记录开发人员信息”)• 块接口• 网络标题与网络注释• 块及其变量和常量• PLC 数据类型及其变量• PLC 变量表,PLC变量和用户常量• PLC 报警文本列表• PLC 监控和报警• 库属性说明:使用此方法,用户可以在使用组件时获得更多的信息和指导,例如通过工具获取到相关提示。NF003规则:记录开发人员信息每个块在程序代码(SCL/ST)或块注释(LAD,FBD)中包含一个块标题栏,开发过程中Zui重要信息必须记录在案。开发相关信息将被存放于程序内部,隐藏在专有技术保护块中。必须在块属性中提供用户相关信息。在专有技术保护的块中,用户也可以获得此信息。下面这个块标题栏的模板包含块属性中的元素以及与开发相关的信息,它们不需要复制到属性中。模板描述包含以下项目:•(可选)公司名称/(C)版权(年份)版权所有• 标题/块描述• 功能说明• (可选)库的名称• 部门/作者/联系人• 目标系统 -带固件版本的 PLC(例如,1516-3 PN/DP v2.6)• 工程环境 - TIA 博途,包含创建/修改时的博途版本•使用限制(例如特定的 OB 类型)• 要求(如附加硬件)• (可选)其他信息NF004规则:遵守库的前缀和结构库的标识符具有前缀“L”,并且Zui大长度不超过八个字符库的标识符以前缀“L”开头,后跟Zui多七个字符作为名称(例如LGF,LCom)。“L”代表单词库(Library)。在库标识符之后使用下划线(_)作为分隔符(例如LGF_)。库标识符的Zui大长度(包括前缀)限制为八个字符。说明:这一限制的目的是保证其名称紧凑简短。库中的每个元素都带有前缀库中包含的所有类型和主副本都被赋予了库的标识符。一个用于演示的库使用的元素不是标准化库意义上的库元素,它只是一个示例,不一定带有库前缀。说明:在标识符中包含前缀的情况下可避免命名冲突。库中的分组所有的主副本和类型应放在库内的一个子文件夹中,该子文件夹携带库标识符作为其文件夹名。说明:子文件夹支持项目协同工作,并允许同一项目中有多个库的分组。NF007 规则:使用前缀形参不加前缀函数块的形参不带前缀, 传递 PLC数据类型时,标识符也不带前缀。临时变量和静态变量带有前缀“temp”或“stat”为了在代码中区分临时变量和形参,详情参见表 5-4。说明:这个措施使得程序员能够更容易区分形参和局部数据。 有了这个前缀,就可以很容易地定义和识别对变量的访问。注意:全局数据块和数组数据块中的静态变量不加前缀“stat”。前缀为“inst”或“Inst”的实例数据单个实例以及多重实例和参数实例都有一个前缀。单个实例的前缀为“Inst”,而多重实例和参数实例使用前缀“inst”。说明:有了前缀就更容易识别是否已对实例数据进行了有效(无效)访问。前缀为“type”的 PLC 数据类型对于 PLC数据类型,前缀可设置为“type”,需要注意的是, PLC 数据类型中的元素不加前缀。