zoukankan      html  css  js  c++  java
  • Object_Pascal_西门子SCL应用_系列2_SCL中的块_1

            哎, 现在真是,有心学习,却没有时间啊..........本来昨天打算弄这个的,结果没有时间啊

            感谢管理员没有删除前面的那篇文章。 因此为了兑现我的承诺,继续SCL的旅程.....

           在此声明一点: 本系列——即西门子SCL应用——文章,欢迎转载和指正,但是请务应用于任何商业目的。在博客园写

    文章,是为了分享和交流,不是为了商业目的。 所以请务将本系列的文章用于任何商业目的。

          不闲扯了,下面开始这一次的SCL旅程:

          上次课程说到了块的开始和结束的定义, 同时也说到了块开始的定义部分,今天继续将块的有关内容:

    4.4.1 块名
        如系列1的文章描述的,xx_name当做块名, 参照以下语法:
        
          块关键字                      数字
       DB FB FC OB UDT            n
           标识符
           符号

    数字可以是0到65535之间的值, 但是数据块标识符DB0 被保留,用户不能定义和使用
    若使用符号名,必须为在Step7中为块定义一个标识符或符号名
    Exp:
    函数块
       FUNCTION_BLOCK  FB10  //利用块关键字定义
       ...
       END_FUNCTION_BLOCK

       FUNCTION_BLOCK  Cotroll_Block  //利用标识符进行定义
       ...
       END_FUNCTION_BLOCK

       FUNCTION_BLOCK  "Control block"  //利用全局符号进行定义
       ...
       END_FUNCTION_BLOCK 

    这里需要说明一点: 利用块关键字和全局符号定义的块全局可见。

    4.4.2 块的属性
       块的属性即能有的块特性, 块的属性有:
          1)块的类型
          2)块的版本
          3)块的保护特性
          4)块的作者
          5)块名
          6)块的系列名称:通常用于快速查找
    如下所列:
    关键字                               作用                                       实例
    TITLE='可打印字符'             块的标题                                 TITLE='SORT'
                                           通常用来说明块功能


    VERSION:'数字.数字'          指定块的版本号                          VERSION:'3.01'  
                                          Tip: 数据块的版本属性不             //DB
                                          需要在引号中限定                        VERSION:3.01

    KNOW_HOW_PROTECT       块保护属性;带此选项的块如        KNOW_HOW_PROTECT
                                           编译成STL语句并将源代码删除
                                           后将不能被Step 7的LAD编辑器
                                           打开

    AUTHOR                          作者的名字,主要用来反映一            AUTHOR:Siemens
                                          些作者的相关信息

    NAME                              块名,用来指定开的名称                NAME:PID

    FAMILY                            块系列的名称,如马达,用于       FAMILY:volcanol
                                          将块分类保存。   

    使用块属性的规则:
    1、在块的定义开始后,用关键字直接定义块属性
    2、标识符最多8个字符

    Exp:
    FUNCTION_BLOCK   "Start_Motor"
    TITLE=电机启动控制功能块'   //这个标题会出现在Step 7的资源管理其的注释列
    VERSION='0.01'
    KNOW_HOW_PROTECT
    AUTHOR:volcnol
    NAME:StartM
    FAMILY:

    4.4.3 块的注释
       西门子SCL的的注释兼容Object Pascal的注释,同时利用TITLE定义的属性会在LAD
    编辑器中出现在块的注释中。
    用:
         // 表示注释       

    如上面:
       //这个标题会出现在Step 7的资源管理器的注释列
       TITLE='电机启动控制功能块'  

    4.4.4  声明部分
        既然SCL和Pascal语言类似,并且FC本来就是Function函数块, 那么函数的声明
    部分在SCL中也是一样存在的。
        块的声明部分用来声明本地(局部)变量、参数、常量和标号
    声明部分遵循以下几个规则:
        1)在逻辑块的声明部分定义的本地变量、参数、常量和标号的作用域仅在块内部有效。
        2)要定义全局有效的变量或存储区需要在数据块DB中定义
        3)UDT只是提供一个符合的数据类型,如果不用UDT定义用户变量则UDT不可用

    声明部分的结构:
        声明部分通过不同的关键字定义不同的子区,每个子区包含同类型的变量或数据的声明,子区
    顺序不定义,可自由排列。
    1) 常量声明区域
        关键字:
           CONST
              声明列表
           END_CONST
         常量区用来声明常量,相当于C语言中的const变量。
    Exp:
        CONST
           Number      := 10 ;
           TIMEOFDAY1  := TIME#1D_1H_10M_22S_2MS ;
           NAME        := 'SIEMENS' ;
           NUMBER2     := 2 * 5 + 10 * 4 ;
           NUMBER3     := 3 + NUMBER2 ;
        END_CONST
    编译器根据数据类型自动检测常量的数据类型。

    2)标号
       标号用来标识GOTO语句的目标,在逻辑块的声明部分用符号名声明
       关键字:
         LABEL
             LAB1,LAB2,LAB3;
         END_LABEL
    Exp:
         LABEL
           ERR;
         END_LABEL

         在代码部分
              if devsion=0 then
                 goto err;
              end if
    3)零时变量
        临时变量相当于C语言中的局部变量
        关键字:
          VAR_TEMP
          ....
          END_VAR
    Exp:
          VAR_TEMP
             Add:INT;
             Factor:Real;
          END_VAR

    4:静态变量
       静态变量是本地变量,其值贯穿所有块循环一直保留。用来存贮功能块的值,存贮在实例数据块中。

    这个地方定义的变量相当于C语言中的Static变量。在FC定义的静态变量不具有静态属性,这也是FB

    和FC间最大的区别。

     关键字:
         VAR
         ....
         END_VAR
     Tip:
         在函数FC中声明的声明的静态变量,在编译时会存储在VAR_TEMP区域。

    Exp:
        VAR
           Count:INT;
        END_VAR
    5、输入参数
       输入参数相当于C语言中的形式参数,也相当于Pascal中的形式参数
       关键字:
       VAR_INPUT
       ...
       END_VAR
    Exp:
       VAR_INPUT
           Estop:BOOL;
       END_VAR;
    Tip:
        在DB块的声明中和UDT的声明中,VAR和END_VAR结构被STRUCT和END_STRUCT代替

    5:输出参数
       输出参数就是FC、FB块用来输出的数据接口区
       关键字:
       VAR_OUTPUT
         ...
       END_VAR
    输出参数在目前的程序设计语言中算是非常独特的了, 它可以将FC和FB的计算结果
    输出到一个别的存储位置。
    6:输入/输出参数
       输入输出参数相当于指针结构, 可以接受实参,并且在经过FC和FB的处理后,其
    实参值会被改变。
       关键字:
       VAR_IN_OUT
       ....
       END_VAR

    4.4.5  语句部分
        语句部分是FB、FC、OB块的核心部分,通过语句部分实现函数、函数块和组织块的功能。
    数据块的语句部分包含初始化变量的语句。
      语句规则:
         1)在FC、FB和OB块中可以使用BEGIN标识语句的开始,也可以不使用。
         2)数据块初始化变量的语句必须用BEGIN标识其开始。
         3)语句的结束部分用块结束关键字标识结束
         4)每个语句必须用分号;标识结束
         5)语句部分使用的标识符必须声明过
         6)在语句部分可以使用已经定义的标号LABEL
    Exp:
       BEGIN     // 利用Begin表示语句开始
          INITIAL_VALUE:=0;
          FINAL_VALUE:=200;  //语句结束用:分号表示单个语句的结束
        SORTE:                    //使用标号
            RESUALT:=SETPOINT;
       END_FUNCTION_BLOCK    //快结束标识符、关键字

    1)语句的定义
       语句是用户程序的最小逻辑结构,描述一个执行指定操作的处理器(CPU)指令
    2)语句的类型
       赋值语句: 指定数值给一个变量
       控制语句: 控制语句的执行流程
       调用语句: 调用特定的函数和函数块(FC、FB块)
    Exp:
       // 赋值语句的例子
        iLength:= 0 ;

       // 子程序调用的例子
       FB1.DB1 (Temprature:= 10) ; //需要注意FB块的调用规则
                                  //FC可能有返回值, 返回值的调用同Pascal语言函
                                  //数的调用规则

       // 控制语句的例子
       WHILE iCounter < MAX  DO..
       ......
       END_WHILE;

           不知道园子里面的朋友对自动化和工业控制有什么认识,下面给两个链接,

           大家如果闲着没事的话可以看看

           第一个链接:

             5轴联动一次成型的数控机床:

             链接为:http://v.youku.com/v_show/id_XMjM2OTQzMjQw.html

             目前中国在数控机床方面的落后是在是太大了, 在沈阳有个研究中心、华中数控数控床在国内算是一流的了,

    但是和视频展现的来比的话,差距太大了。 如果做过数控的话,应该知道全自由度的数控难度有多大,一般国外

    进口的三轴联动的机器价格均在1000w以上,华中的数控的大型加工中心价格也在1000w左右。

              其他链接:

              卷取机视频:http://v.youku.com/v_show/id_XNDYzOTY3OTY=.html

              轧机视频     http://v.youku.com/v_show/id_XMjY2ODkzOTgw.html

                              http://v.youku.com/v_show/id_XMjE4OTg4MzM2.html

                              http://v.youku.com/v_show/id_XNzcwMzc1OTI=.html      

  • 相关阅读:
    主键为整型数据库设计
    raid1与raid5
    asp.net限时发送手机验证码
    利用jQuery与.ashx完成简单的Ajax
    Solr使用in语法查询
    Solr高效利用:Solr实现SQL的查询与统计
    lucene 的评分机制
    fastcgi配置
    安装elasticsearch及中文IK和近义词配置
    php多进程处理
  • 原文地址:https://www.cnblogs.com/volcanol/p/2087543.html
Copyright © 2011-2022 走看看