TIA V17 CFC功能块FB初始化,你会使用哪一种?

已锁定

宁超

西门子1847工业学习平台

  • 帖子

    1028
  • 精华

    39
  • 被关注

    346

论坛等级:至圣

注册时间:2012-12-11

黄金 黄金 如何晋级?

TIA V17 CFC功能块FB初始化,你会使用哪一种?

978

1

2022-03-07 20:57:48


我们通常需要在编写的FB块的CPU首次扫描调用时需要初始化各种参数,或者该块还可能包含只需要执行一次的附加任务,具体取决于你的块功能。如果你的块是这种情况,你必须实现初始启动序列。下面介绍三种常见的初始化方式。


  1  

通过在静态变量区定义一个 BOOLEAN 变量来完成的,例如 SxFirstScan,其初始值为True,在初始程序内完成功能后复位。


但TIA Portal对于S7-1500中FB的保持性与经典STEP 7的S7-300/400不同,TIA如果勾选了优化块的访问,则FB编辑列会出现保持选项。如果选择不保持,CPU在暖启动Stop到Run时,SxFirstScan会有0到1的跳变,如果选择保持,当复位后,下次CPU暖启动等会保持为0,并不会执行你认为的初始化程序段。对于STEP 7中S7-300/400来说,所有的静态变量区都是保持的。



  2  

鉴于上述情况,如果我们希望静态变量区的数值都是保持的,可以取消块的优化访问,可以通过SFC6 “RD_SINFO”读取CPU当前执行的OB来进行程序初始化。如图在Temp临时变量区创建以下变量:

SI_Current: SI_None

SI_StartupLast: SI_Startup

SFC6_RetVal: INT

xOB_Cycle: Bool

xOB_Startup: Bool


调用SFC6,在变量SI_Current.OB_Nr中的值就是程序在CPU当前执行OB的编号,对于TIA CFC的OB编号来说,OB编号需要增加1000,如启动OB100在CFC的编号是1100,因此下图程序中xOB_StartUp只会在功能块被OB调用后接通一周期。


回到CFC,我们拖拽FB功能块到CFC编辑界面,在块属性中S7 specific > Task extensions > Additional task 中勾选Startup,为块添加启动附加任务后,功能块FB会被在CPU启动执行一次调用。


双击Chart sequence & extras后,在task assignment中可以看到FB既被OB1035调用,也被OB1100调用。


运行测试:



  3  

另外我们可以使用CPU属性中“Enable the use of system memory byte”,

如图设置后M1.0即为系统初始位。


基于面向过程对象编写实例,不建议在FB内使用M和T区域,因此推荐1和2两种方式。在第一种方法中,可以考虑是否需要将SxFirstScan设置为不保持,以保证每次暖启动等都能执行某些初始化程序。


TIA V17 CFC功能块FB初始化,你会使用哪一种? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8655条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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