温柔的郎
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 293 点
下载积分: 909 分
在线时间: 78(小时)
注册时间: 2008-05-02
最后登录: 2024-12-17
查看温柔的郎的 主题 / 回贴
楼主  发表于: 2009-08-12 17:51
STEP7怎样使用多重背景数据块?

多重数据块是数据块的一种特殊形式,如在OB1中调用FB10,在FB10中又调用FB1和FB2,则只要FB10的背景数据块选择为多重背景数据块就可以了,FB1和FB2不需要建立背景数据块,其接口参数都保存在FB10的多重背景数据块中。建立多重背景数据块的方法是:在建立数据块只要在数据类型选项中选择“实例的DB”就可以了,见下例。
下面通过一例简单介绍一下多重背景数据块使用的一些注意事项和方法。
    例如,PLC控制两台电机,且控制两台电机的接口参数均相同。一般的作法,我们可以编写功能块FB1控制两台电机,当控制不同的电机时,分别使用不同的背景数据块就可以控制不同的电机了(如第一台电机的控制参数保存在DB1中,第二台电机的控制参数保存在DB2中,我们可以在控制第一台电机调用FB1时以 DB1为背景数据就可以了,第二台同样以DB2为背景数据块)。这样就需要使用两个背景数据,如果控制的电机台数更多,则会使用更多的数据块。使用多重背景数据块就是为了减少数据块的数量。
    像这种情况,我们就可以利用多重背景数据块来减少数据块的使用量。拿本例来说,我们就可以在OB1中调用FB10,再在FB10中分别调用(每台电机各调用一次)FB1来控制两台电机的运转。对于每次调用,FB1都将它的数据存储在FB1的背景数据块DB1中。这样就无需再为FB1分配数据块,所有的功能块都指向FB10的数据块DB10。原理图如下:

    首先,我们需要先后插入一个功能块FB10和数据块DB10,DB10就为FB10的多重背景多重数据块。如下图:

         其次,需要在FB10中指定其所包含的背景数据块。方法如下:在FB10局部变量定义窗口中,在“STAT”变量区中(必须在此变量区中)为每台电机的控制取好名称后,数据类型选择FB ,确认后,再把改为1,即功能块FB1。如果你在变量表中已经定义了FB1的符号,则会自动出现其符号名。地址一般由CPU根据FB1的接口参数数量自动计算得到,采用默认值就可以了。

        因为控制两台电机,所以需要在STAT中定义两个这样的变量。结果如下:

 
[ 此帖被sjm213在2009-08-13 08:52重新编辑 ]
温柔的郎
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 293 点
下载积分: 909 分
在线时间: 78(小时)
注册时间: 2008-05-02
最后登录: 2024-12-17
查看温柔的郎的 主题 / 回贴
1楼  发表于: 2009-08-12 18:03
经过以上步骤,FB的背景数据块DB10中就完全包含了1#和2#电机所需的数据,如下图,其中地址2.0~8.0是第一台电机的接口区控制参数,10.0~16.0是第二台电机接口区控制参数。

        这时,在FB10的指令列表中“多重实例”中就会出现已经添加的两个局部背景,如下图。


        在程序中就可以分别调用这两个局部背景控制1号和2号电机了。程序如下:



     这样,就可以在OB1中通过调用OB10就可以分别控制1#和2#电机了。如下图:
[ 此帖被sjm213在2009-08-13 08:52重新编辑 ]
温柔的郎
级别: 略有小成
精华主题: 0
发帖数量: 112 个
工控威望: 293 点
下载积分: 909 分
在线时间: 78(小时)
注册时间: 2008-05-02
最后登录: 2024-12-17
查看温柔的郎的 主题 / 回贴
2楼  发表于: 2009-08-12 18:10
这是网上一个说调用多重北京数据块的方法,参见
http://www.51plc.com/thread-13159-1-1.html
但是我又有疑问了,注意图3处,选数据类型时选择了FB<nr>,可我选中这个类型后系统一直显示红色,提示有错误,为什么呀???弄了一下午弄不懂!!网上那个实力错了吧??大家来分析一下。
[ 此帖被sjm213在2009-08-13 08:51重新编辑 ]
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 158993 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-22
查看sjm213的 主题 / 回贴
3楼  发表于: 2009-08-13 08:50
数据类型选为FB<nr>后,还要把<nr>改为您需要的号码。例如直接写为FB1就没问题了。