使用共享数据块做为背景数据调用FB功能块的实验

已锁定

youhm

  • 帖子

    4924
  • 精华

    81
  • 被关注

    51

论坛等级:至圣

注册时间:2008-06-28

普通 普通 如何晋级?

使用共享数据块做为背景数据调用FB功能块的实验

4587

3

2011-05-31 16:56:04

实验目的:加深对FB的调用机制的理解
实验内容:以SFB4为例,使用共享数据块DB1为SFB4提供背景数据实现输入输出参数的传递,在DB1里定义SFB4的接口参数数据类型结构和SFB4的背景数据块完全一致,如果要多次调用可以新建一个自定义类型UDT1,在DB1里直接使用UDT1,用UC无条件调用SFB4。
A I 0.0 //SFB4的使能EN
JNB _001 //不使能则跳过
OPN DI 1 //打开数据块
LAR2 P#DBX0.0 //背景数据指向定义的区域,这里定义在DB1开始的22个字节
A I 0.1
= DIX [AR2,P#0.0] //SFB4的输入IN,也就是定时器的启停
L T#15S
T DID [AR2,P#2.0] //SFB4的输入PT,也就是定时时间
UC SFB4 //无条件调用SFB4
A DIX [AR2,P#6.0] //SFB4的输出Q,也就是定时器位
= Q 0.0
L DID [AR2,P#8.0] //SFB4的输出ET,也就是实时时间输出
T MD 0
_001: NOP 0

实验结果:通过在PLCSIM里测试,实际调用和CALL SFB4,DB1效果等同,FB的调用自动使用了DINO数据块寄存器和AR2地址寄存器用于接口参数的定位,这种方法调用可以使用共享数据块,多次调用等同于FB里的多重背景,在OB、FC里都可以使用,缺点是接口参数都要用指针的方式寻址,不太直观。
——————————————————————————————————
2011-06-20补充:
使用CALL调用FB或SFB,调用后DBNO会变成对应的背景数据块号,DINO和AR2则保持调用前的,使用UC调用FB则和调用FC一样,DBNO和DINO保持调用前的,AR1和AR2则根据改变而变。
使用共享数据块做为背景数据调用FB功能块的实验 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54619条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。