volcanol的工控博客
Email : lilinly225@126.com 索要资料加QQ 点击进入 或 点击左侧的资料分享专用帖

volcanol ---- View OF Linux Can Appreciate Nature OF Linux

天行健,君子以自强不息

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

        感谢管理员没有删除前面的那篇文章。 因此为了兑现我的承诺,继续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      

posted on 2011-06-22 20:04  volcanol  阅读(2580)  评论(0编辑  收藏  举报
volcanol ----View OF Linux Can Appreciate Nature OF Linux。