电工学习网

 找回密码
 立即注册
查看: 2054|回复: 0

西门子编程风格指南的八个重要规则

[复制链接]
发表于 2019-9-4 18:14:49 | 显示全部楼层 |阅读模式
       使用SIMATIC控制器或者SIMOTION编程时,程序员的任务是创建一个尽可能清晰可读的用户程序。 每个程序员都会使用自己的方法和策略,例如命名变量或程序块甚至是注释的写法。 不同的程序员的方法和策略创建了非常不同的用户程序,最终会产生各种不同的代码。
        这对程序维护和协作工作会造成一定的困难。因此可以考虑采用一致的编程风格。

       *使用一致的编程风格的优势
        如果有几个程序员在同一个程序上工作,建议坚持使用统一协调的编程风格。 这提供了以下优点:

  • ·一致的连续风格
  • ·易于阅读和理解
  • ·简单的维护和可重用性
  • ·轻松快速的故障排除和纠错
  • ·多个程序员在同一项目中高效工作

  • 规则1: camelCasing表示法定义标识符-比如tempMaxLength
        1. 如果编程风格中没有注明标识符表示法的其他规则
        2. 指南,各自的标识符写在camelCasing中。
        3. 以下规则适用于camelCasing:
                a. 首字母以小字体书写。
                b. 不使用分隔符(如连字符或下划线)。
        4. 如果标识符由多个单词组成,则每个单词的首字母为写成大写字母。

  • 规则2:块的标识符以大写字母开头;实例DB块的前缀使用'inst'/'Inst'
块(OB,FB,FC,DB,背景数据块,TO等)的标识符以大写字母开头
        例如: ConveyorControl
        实例DB块的前缀使用'inst'/'Inst':
        例如:
        单次实例:InstHeater (大写→自己的块)
        多重实例: instTimerMotor(小写→在一个实例中)

  • 规则3:在程序中初始化临时变量
        临时变量(TEMP)必须由用户进行初始化。通常,必须确保在读取临时变量之前始终先初始化或者写入临时变量值。
        Example
        #tempAcceleration := 0.0;
        #tempVelocity := #MAX

  • 规则4:在FC或者FB中,仅使用本地数据变量.FC和FB中不允许访问全局数据
        1. FC和FB中不允许访问全局数据。这包括以下内容:
                a. 访问全局数据块和使用其他实例数据块
                b. 访问标签(标签表)。
        2. 访问数据通过接口进行。

  • 规则5:始终评估错误代码
        如果程序中调用的FC,FB或系统函数提供错误信息和标识,则始终需要对这些信息和标识进行评估。通过设置布尔错误变量来指示错误。

  • 规则6:常量的定义使用大写字母和下划线
        常量的定义使用大写字母和下划线,常量的名称总是以大写字母书写要检测单个单词或缩写,应在单个单词或缩写之间使用下划线。 比如:MAX_VELOCITY。而且应该尽量使用本地常量。

  • 规则7:对于复杂的变量比如需要使用结构体的情况下定义为用户数据类型
        用户定义数据类型的标识符前面带有前缀“type”。

  • 规则8:在程序的开始进行重要信息的注释
        程序代码(SCL,LAD,FBD),需要描述重要的信息,例如:
        //============================================
        // Company// (c)Copyright (year)
        //-----------------------------------------------------------------------------
        // Library: (that the source is dedicated to)
        // Tested with: (test system with FW version)
        // Engineering: TIA Portal (SW version)
        // Restrictions: (OB types, etc.)
        // Requirements: (hardware, technological package, memory needed, etc.)
        // Functionality:(that is implemented in the block)
        //-----------------------------------------------------------------------------
        // Change log table:
        // Version Date Expert in charge Changes applied
        // 01.00.00 dd.mm.yyyy (Name of expert) First released version //============================================

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-3-29 22:33

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表