您现在所在的是:

PLC论坛

回帖:1个,阅读:1677 [上一页] [1] [下一页]
726
工控老鬼
文章数:62
年度积分:50
历史总积分:726
注册时间:2012/5/8
发站内信
2012论坛贡献奖
发表于:2013/4/27 11:18:52
#0楼
附件
  在SIEMENS S7-300/400系列PLC中有多种程序块,如下图(在管理器右边的空白区域点击右键),主要有:组织块(OB),功能块(FB),功能(FC),数据块(DB)及系统功能(SFC)和系统功能块(SFB)等。
 
   注:快捷菜单中的其它两项:数据类型和变量表。数据类型(UDT)用于指定程序中数据元素的大小与格式;变量表(VAT)用来在程序调试和运行时修改和监视变量的内容(在地址栏中输入地址后,符号栏中会自动显示在符号表中定义的符号)。

   这几种程序块的功能简要说明如下:
   说明:
   调用程序块:OB,FB,FC(可以调用除OB块外的其它程序块);
   被调用程序块:FB,FC,SFB,SFC。

1、组织块OB
  OB由系统自动调用,并执行用户在OB块中编写的程序,所以OB的基本作用是调用用户程序。
   在OB块中编写程序的最大容量,S7-300是16KB,S7-400是64KB。
   除主程序循环OB1外,其它OB均是由事件触发的中断。

2、函数FC
  函数FC有两个作用:(1)作为子程序用;(2)作为函数用,函数中通常带形参。
   函数中程序的最大容量,S7-300是16KB,S7-400是64KB。
   FC的形参通常也称为接口区,参数类型分为输入参数,输出参数,输入/输出参数和临时数据区。
   在编写函数FC的输出参数时,应避免没有直接输出(否则,可能输出一个随机值,影响程序的判断)。可以在函数的开始,将字输出参数清0,位输出参数复位。

3、函数块FB
  FB与FC相比,FB每次调用都必须分配一个背景数据块,用来存储接口数据区(TEMP类型除外)和运算的中间数据。其它程序可以直接使用背景数据区中的数据。
   FB中程序的最大容量,S7-300是16KB,S7-400是64KB。
   FB的接口区比FC多了一个静态数据区(STAT),用来存储中间变量。
   程序调用FB时,形参不像FC那样必须赋值,可以通过背景数据块直接赋值。
   由于FB带有背景数据块,输出参数不会输出随机值,可以不在FB中编写初始化程序。

4、数据块DB
  DB用来存储用户数据及程序的中间变量,为全局变量。DB的最大容量,S7-300为32KB,S7-400为64KB。
   DB可分为共享数据块(Share DB)、背景数据块(Instance DB)和用户自定义数据(UDT)类型的数据块。

    ★ 共享数据块可作为所有程序使用的全局变量,在CPU允许的条件下,一个程序可创建任意多个DB,每个DB的最大容量为64KB。默认条件下,共享数据块为掉电保持,在其属性菜单中选中“Non Retain”可以更改为掉电数据丢失。如CPU中无足够的内部存储空间保存数据,可将指定的数据保存到共享数据块。存储在共享数据块中的数据可被其它任意一个块调用(全局变量)。这一点和背景数据块不同,背景数据块只能被指定的功能块(FB)使用,保存在背景数据块中的数据只能在这个功能块中有效。
   ★ 背景数据块与FB和SFB关联,也是全局变量。背景数据块和共享数据块相比,只保存与FB或SFB接口数据区(Temp)相关的数据。背景数据块中有一种比较特殊的数据块,称为多重背景数据块。有关多重背景数据块的用法和使用注意事项请参看《怎样使用多重背景数据块》。
   ★ 基于UDT的数据块为全局变量,提供一个固定格式的数据结构,便于用户使用。

5、系统函数(SFC)和系统函数块(SFB)  
 SFC和SFB集成在CPU中,相当于系统提供的可供用户程序调用的FC或FB,实现与CPU系统相关的一些功能,如读写CPU时钟等功能。调用SFB需要背景数据块。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
启程PLC培训中心 http://www.gongkong8.com/
工控老鬼技术Blog:http://blog.sina.com.cn/wincchome
E-mail:gongkong8@foxmail.com

----------------------------------------
倾听心声,
分享人生。
----------------------------------------
1783
kachakacha
文章数:736
年度积分:50
历史总积分:1783
注册时间:2006/5/24
发站内信
发表于:2013/4/27 11:27:14
#1楼
对于2,FC的作用,需要更加斟酌。

函数FC有两个作用:(1)作为子程序用;(2)作为函数用,函数中通常带形参。

无法解释子程序与函数的区别,子程序不也可以有带参数的子程序,那和函数的区别在什么地方。

因此,在这里,西门子FC,FB并不容易区别,撇开其是否带有独立DB这个区别的话,在西门子中FB与FC的作用看来是一样的,其根本作用都是减少重复代码。

对与3,由于FB带有背景数据块,输出参数不会输出随机值,可以不在FB中编写初始化程序。

在使用FC的重要法则就是,变量遵循先赋值后使用的原则,这这个原则的导引下,输出参数是不可能有随机值的,当然,这个所谓的随机值是因为FC的参数共用临时区而导致的,严格来说,这个随机值是可控的,有时也可以作为一种快速变量加载技巧供使用的,不过这样的取巧破坏了先赋值后使用的原则,对于移植是不利的。

Good Luck~
有问题请在论坛提问……作为CVLSAM的马甲,我亚历山大……
Good Luck~
邮箱是anonymousfa@163.com但是我忘记密码了

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

31.2002